create a new page, using OOoBasic/Generic/DiditalSignature as a template.
Front page
Search
掲示板
Reload
Help
Browse Log
掲示板の使い方
OOo 掲示板3
OOo 掲示板2
OOo 掲示板
掲示板
雑談掲示板
New
List of pages
Recent changes
Backup
簡単ヘルプ
整形ルール
Start:
* デジタル署名 [#lcd3f064]
デジタル署名。
Windows 環境ではインターネットオプションに登録された証明...
また、そのほかの環境ではまず MOZILLA_CERTIFICATE_FOLDER ...
[[OOoBasic/Generic/MozillaProfile]] を使用して検索されま...
#contents
** 証明書一覧の取得 [#t6f866ee]
利用できる証明書を取得します。com.sun.star.xml.crypto.Sec...
注: 事前に読み込みが必要・・・?
*** Windows 環境 [#m6aa3711]
下記のメモ参照。
*** その他の環境 [#jc6c7071]
初回初期化時には認証ダイアログが表示される可能性がありま...
#code(basic){{
Sub digitalsignature_1
oMoz = CreateUnoService(_
"com.sun.star.mozilla.MozillaBootstrap")
nTYpe = com.sun.star.mozilla.MozillaProductType
sDefault = oMoz.getDefaultProfile(_
nType.Firefox)
sCertDB = oMoz.getProfilePath(nType.Firefox, sDefault)
oSEInit = CreateUnoService( _
"com.sun.star.xml.crypto.SEInitializer")
oXMLSC = oSEInit.createSecurityContext(sCertDB)
If oXMLSC.getSecurityEnvironmentNumber() < 0 Then Exit Sub
oSEnv = oXMLSC.getSecurityEnvironment()
oCertificates = oSEnv.getPersonalCertificates()
oSEInit.freeSecurityContext(oXMLSC)
oXMLSC = nothing
oSEnv = nothing
oSEInit = nothing
oXMLSig = nothing
oXMLEnc = nothing
end sub
}}
** DocumentDigitalSignatures [#td3cd117]
com.sun.star.security.DocumentDigitalSignatures サービス。
oDDS = CreateUnoService(_
"com.sun.star.security.DocumentDigitalSignatures")
*** ドキュメント署名の確認 [#k14fbb7d]
ドキュメントにサインされた署名の有効性を確認します。Docum...
#method{{
[]com.sun.star.security.DocumentSignatureInformation
verifyDocumentContentSignatures
com.sun.star.embed.XStorage xStorage, [in] com.sun.star.i...
com.sun.star.security.XDocumentSignatureInformation
ドキュメントコンテンツに対する全ての署名の有効性を調べま...
:xStorage|確認する署名されたドキュメントのストレージ
:xSignInStream|デジタル署名のファイルストリーム
:返り値|&idlref(com.sun.star.security.DocumentSignatureIn...
}}
ドキュメントのストレージはドキュメントが一度保存された状...
xSignInStream はドキュメントのストレージから META-INF/doc...
たとえば、下記の様にします。(AOO 3.4 付近ではストレージを...
#code(ob){{
Sub signature_1
' verify test
Dim oDoc As Object
oDoc = ThisComponent
msgbox verifyAllDocumentContentSignatures(oDoc)
End Sub
Function verifyAllDocumentContentSignatures( oDoc As Obje...
' verify all Document content signatures
' Arguments:
' oDoc: Document Model
' Return:
' 0: invalid
' 1: valid all
' 2: faild to verify, unable to get its storage
' 4: faild to verify, there is no document signature
Dim nValid As Long
nValid = 2
Dim oDocStorage As Object, oSignatureStream As Object
Dim oDDS As Object
Dim aInfos As Object
Dim i As Integer
' open document storage
If HasUnoInterfaces( _
oDoc, "com.sun.star.document.XStorageBasedDocument"...
oDocStorage = oDoc.getDocumentStorage()
' get document signature
oSignatureStream = GetDocumentContentSignature(oDocSt...
If NOT IsNull(oSignatureStream) Then
oDDS = CreateUnoService(_
"com.sun.star.security.DocumentDigitalSignature...
' get information about signatures
aInfos = oDDS.verifyDocumentContentSignatures( _
oDocStorage, oSignatureStream)
If UBound(aInfos) >= 0 Then
For i = 0 To UBound(aInfos) step 1
If NOT aInfos(i).SignatureIsValid Then
nValid = 0
Exit For
End If
Next
If nValid <> 0 Then nValid = 1
Else
nValid = 4
End If
Else
nValid = 4
End If
End If
verifyAllDocumentContentSignatures = nValid
End Function
Function GetDocumentContentSignature( oDocStorage As Obje...
' get signature file stream
Dim oSignatureStream As Object
Dim oSubStorage As Object
Dim sMETAINF As String, sSignatureName As String
Dim nMode As Long
sMETAINF = "META-INF"
sSignatureName = "documentsignatures.xml"
If oDocStorage.hasByName(sMETAINF) Then
nMode = com.sun.star.embed.ElementModes.READ
oSubStorage = oDocStorage.openStorageElement(sMETAINF...
If oSubStorage.hasByName(sSignatureName) Then
oSignatureStream = _
oSubStorage.openStreamElement(sSignatureName, n...
End If
End If
GetDocumentContentSignature = oSignatureStream
End Function
}}
AOO 3.4 付近以降
#code(ob){{
Sub signature_3
sFileURL = "file:///home/asuka/Downloads/valid_ooo3_2_d...
Dim aProps(0) as new com.sun.star.beans.PropertyValue
aProps(0).Name = "StorageFormat"
aProps(0).Value = "ZipFormat"
sf = CreateUnoService("com.sun.star.embed.StorageFactor...
oDocStorage = sf.createInstanceWithArguments(array(sFil...
if oDocStorage.hasByName("META-INF") Then
metainf = oDocStorage.openStorageElement("META-INF", 3)
if metainf.hasByName("documentsignatures.xml") Then
signio = metainf.openStreamElement("documentsignatu...
oDDS = CreateUnoServiceWithArguments("com.sun.star....
Array("1.2", True))
aInfos = oDDS.verifyDocumentContentSignatures(oDocS...
If UBound(aInfos) >= 0 Then
For i = 0 To UBound(aInfos) step 1
msgbox "SignatureIsValid: " & CStr(aInfos(i).Si...
' oSigner = aInfos(i).Signer
next
End If
End If
End if
End Sub
}
*** 証明書の表示 [#id259dc2]
証明書を表示します。
oCertificate = oCertificates(0)
oDDS.showCertificate(oCertificate)
** メモ [#a1c0afc9]
Windows でデジタル署名一覧を取得する。com.sun.star.xml.cr...
内部で以下の関数が呼ばれているため、下記のものが使用可能...
- http://msdn.microsoft.com/en-us/library/aa376560(VS.85)...
注: 以下のコードでは freeSecurityContext メソッドでクリア...
Sub digitalsignature_1
sCertDB = "MY"
'oXMLSC = CreateUnoService( _
' "com.sun.star.xml.crypto.XMLSecurityContext")
'oXMLSC.addSecurityEnvironment(oSEnv)
oXMLSig = CreateUnoService(_
"com.sun.star.xml.crypto.XMLSignature")
oXMLEnc = CreateUnoService(_
"com.sun.star.xml.crypto.XMLEncryption")
oSEInit = CreateUnoService( _
"com.sun.star.xml.crypto.SEInitializer")
oXMLSC = oSEInit.createSecurityContext(sCertDB)
If oXMLSC.getSecurityEnvironmentNumber() < 0 Then Exit ...
oSEnv = oXMLSC.getSecurityEnvironment()
oCertificates = oSEnv.getPersonalCertificates()
'mri oXMLSC
oSEInit.freeSecurityContext(oXMLSC)
oXMLSC = nothing
oSEnv = nothing
oSEInit = nothing
oXMLSig = nothing
oXMLEnc = nothing
end sub
** メモ2 [#df5e61bd]
デジタル署名が付与されたドキュメントの META-INF/ 以下には...
- documentsignatures.xml
- macrosignatures.xml
- packagesignatures.xml
}}
End:
* デジタル署名 [#lcd3f064]
デジタル署名。
Windows 環境ではインターネットオプションに登録された証明...
また、そのほかの環境ではまず MOZILLA_CERTIFICATE_FOLDER ...
[[OOoBasic/Generic/MozillaProfile]] を使用して検索されま...
#contents
** 証明書一覧の取得 [#t6f866ee]
利用できる証明書を取得します。com.sun.star.xml.crypto.Sec...
注: 事前に読み込みが必要・・・?
*** Windows 環境 [#m6aa3711]
下記のメモ参照。
*** その他の環境 [#jc6c7071]
初回初期化時には認証ダイアログが表示される可能性がありま...
#code(basic){{
Sub digitalsignature_1
oMoz = CreateUnoService(_
"com.sun.star.mozilla.MozillaBootstrap")
nTYpe = com.sun.star.mozilla.MozillaProductType
sDefault = oMoz.getDefaultProfile(_
nType.Firefox)
sCertDB = oMoz.getProfilePath(nType.Firefox, sDefault)
oSEInit = CreateUnoService( _
"com.sun.star.xml.crypto.SEInitializer")
oXMLSC = oSEInit.createSecurityContext(sCertDB)
If oXMLSC.getSecurityEnvironmentNumber() < 0 Then Exit Sub
oSEnv = oXMLSC.getSecurityEnvironment()
oCertificates = oSEnv.getPersonalCertificates()
oSEInit.freeSecurityContext(oXMLSC)
oXMLSC = nothing
oSEnv = nothing
oSEInit = nothing
oXMLSig = nothing
oXMLEnc = nothing
end sub
}}
** DocumentDigitalSignatures [#td3cd117]
com.sun.star.security.DocumentDigitalSignatures サービス。
oDDS = CreateUnoService(_
"com.sun.star.security.DocumentDigitalSignatures")
*** ドキュメント署名の確認 [#k14fbb7d]
ドキュメントにサインされた署名の有効性を確認します。Docum...
#method{{
[]com.sun.star.security.DocumentSignatureInformation
verifyDocumentContentSignatures
com.sun.star.embed.XStorage xStorage, [in] com.sun.star.i...
com.sun.star.security.XDocumentSignatureInformation
ドキュメントコンテンツに対する全ての署名の有効性を調べま...
:xStorage|確認する署名されたドキュメントのストレージ
:xSignInStream|デジタル署名のファイルストリーム
:返り値|&idlref(com.sun.star.security.DocumentSignatureIn...
}}
ドキュメントのストレージはドキュメントが一度保存された状...
xSignInStream はドキュメントのストレージから META-INF/doc...
たとえば、下記の様にします。(AOO 3.4 付近ではストレージを...
#code(ob){{
Sub signature_1
' verify test
Dim oDoc As Object
oDoc = ThisComponent
msgbox verifyAllDocumentContentSignatures(oDoc)
End Sub
Function verifyAllDocumentContentSignatures( oDoc As Obje...
' verify all Document content signatures
' Arguments:
' oDoc: Document Model
' Return:
' 0: invalid
' 1: valid all
' 2: faild to verify, unable to get its storage
' 4: faild to verify, there is no document signature
Dim nValid As Long
nValid = 2
Dim oDocStorage As Object, oSignatureStream As Object
Dim oDDS As Object
Dim aInfos As Object
Dim i As Integer
' open document storage
If HasUnoInterfaces( _
oDoc, "com.sun.star.document.XStorageBasedDocument"...
oDocStorage = oDoc.getDocumentStorage()
' get document signature
oSignatureStream = GetDocumentContentSignature(oDocSt...
If NOT IsNull(oSignatureStream) Then
oDDS = CreateUnoService(_
"com.sun.star.security.DocumentDigitalSignature...
' get information about signatures
aInfos = oDDS.verifyDocumentContentSignatures( _
oDocStorage, oSignatureStream)
If UBound(aInfos) >= 0 Then
For i = 0 To UBound(aInfos) step 1
If NOT aInfos(i).SignatureIsValid Then
nValid = 0
Exit For
End If
Next
If nValid <> 0 Then nValid = 1
Else
nValid = 4
End If
Else
nValid = 4
End If
End If
verifyAllDocumentContentSignatures = nValid
End Function
Function GetDocumentContentSignature( oDocStorage As Obje...
' get signature file stream
Dim oSignatureStream As Object
Dim oSubStorage As Object
Dim sMETAINF As String, sSignatureName As String
Dim nMode As Long
sMETAINF = "META-INF"
sSignatureName = "documentsignatures.xml"
If oDocStorage.hasByName(sMETAINF) Then
nMode = com.sun.star.embed.ElementModes.READ
oSubStorage = oDocStorage.openStorageElement(sMETAINF...
If oSubStorage.hasByName(sSignatureName) Then
oSignatureStream = _
oSubStorage.openStreamElement(sSignatureName, n...
End If
End If
GetDocumentContentSignature = oSignatureStream
End Function
}}
AOO 3.4 付近以降
#code(ob){{
Sub signature_3
sFileURL = "file:///home/asuka/Downloads/valid_ooo3_2_d...
Dim aProps(0) as new com.sun.star.beans.PropertyValue
aProps(0).Name = "StorageFormat"
aProps(0).Value = "ZipFormat"
sf = CreateUnoService("com.sun.star.embed.StorageFactor...
oDocStorage = sf.createInstanceWithArguments(array(sFil...
if oDocStorage.hasByName("META-INF") Then
metainf = oDocStorage.openStorageElement("META-INF", 3)
if metainf.hasByName("documentsignatures.xml") Then
signio = metainf.openStreamElement("documentsignatu...
oDDS = CreateUnoServiceWithArguments("com.sun.star....
Array("1.2", True))
aInfos = oDDS.verifyDocumentContentSignatures(oDocS...
If UBound(aInfos) >= 0 Then
For i = 0 To UBound(aInfos) step 1
msgbox "SignatureIsValid: " & CStr(aInfos(i).Si...
' oSigner = aInfos(i).Signer
next
End If
End If
End if
End Sub
}
*** 証明書の表示 [#id259dc2]
証明書を表示します。
oCertificate = oCertificates(0)
oDDS.showCertificate(oCertificate)
** メモ [#a1c0afc9]
Windows でデジタル署名一覧を取得する。com.sun.star.xml.cr...
内部で以下の関数が呼ばれているため、下記のものが使用可能...
- http://msdn.microsoft.com/en-us/library/aa376560(VS.85)...
注: 以下のコードでは freeSecurityContext メソッドでクリア...
Sub digitalsignature_1
sCertDB = "MY"
'oXMLSC = CreateUnoService( _
' "com.sun.star.xml.crypto.XMLSecurityContext")
'oXMLSC.addSecurityEnvironment(oSEnv)
oXMLSig = CreateUnoService(_
"com.sun.star.xml.crypto.XMLSignature")
oXMLEnc = CreateUnoService(_
"com.sun.star.xml.crypto.XMLEncryption")
oSEInit = CreateUnoService( _
"com.sun.star.xml.crypto.SEInitializer")
oXMLSC = oSEInit.createSecurityContext(sCertDB)
If oXMLSC.getSecurityEnvironmentNumber() < 0 Then Exit ...
oSEnv = oXMLSC.getSecurityEnvironment()
oCertificates = oSEnv.getPersonalCertificates()
'mri oXMLSC
oSEInit.freeSecurityContext(oXMLSC)
oXMLSC = nothing
oSEnv = nothing
oSEInit = nothing
oXMLSig = nothing
oXMLEnc = nothing
end sub
** メモ2 [#df5e61bd]
デジタル署名が付与されたドキュメントの META-INF/ 以下には...
- documentsignatures.xml
- macrosignatures.xml
- packagesignatures.xml
}}
Page: