ドキュメントの共同署名
[CAPICOM は、次のオペレーティング システムで使用できる 32 ビットのみのコンポーネントです: Windows Server 2008、Windows Vista、および Windows XP。 代わりに、.NET Frameworkを使用してセキュリティ機能を実装します。 詳細については、「 CAPICOM を使用する代替手段」を参照してください。
複数の署名者がドキュメントに署名できます。 これは、たとえば、2 人以上の関係者が契約または経費報告書に署名した場合に発生します。 次の例では、既に署名されているドキュメントが 2 番目の署名者によって受信されます。 この署名者は 、CoSign メソッドを使用して、ドキュメントに追加の署名を添付します。
CAPICOM エラーが発生した場合は、 Err.Number プロパティに負の値が返されます。 CAPICOM エラー コードの詳細については、「 CAPICOM_ERROR_CODE」を参照してください。 Err.Number プロパティのエラー コードが正の値である場合、エラーは Windows エラーです。 Windows エラー コードの詳細については、「Winerror.h」を参照してください。
Note
ドキュメントを共同署名するには、署名を作成するために、共同署名者に秘密キーを持つ使用可能な証明書が必要です。 Sign メソッドの呼び出しで署名者が指定されておらず、関連付けられた秘密キーを持つ証明書がCAPICOM_MY_STOREされていない場合、メソッドは失敗します。 CAPICOM_MY_STOREに関連付けられた秘密キーを持つ証明書が 1 つだけ存在する場合は、そのキーと証明書が使用されます。 使用可能な証明書が複数ある場合は、ユーザーが目的の証明書を選択できるようにするプロンプトが表示されます。
Web ベースのアプリケーションで CoSign メソッドを使用する場合、署名者の秘密キーを使用して署名が作成される前に、ユーザーのアクセス許可を取得するためのプロンプトが常に表示されます。
次の例では、署名するドキュメントとそのドキュメントの現在の署名を含むファイルが読み取られ、署名が共同署名され、新しい署名がファイルに書き込まれます。 この例では、デタッチされた署名と、署名されたデータと、別のファイル内の署名を使用します。
Sub CoSignContent(ByVal InputFile1Name As String, ByVal _
InputFile2Name As String, ByVal OutputFileName As String)
On Error GoTo ErrorHandler
Dim c As String
Dim s As String
Dim CS As String
Dim Signobj As New SignedData
Open InputFile1Name for Input as #1
Input #1, s
Close #1
Open InputFileName2 for input as #2
Input #2, c
Close #2
Signobj.Content = c
Signobj.Verify(s)
CS = Signobj.CoSign
Open OutputFileName for output as #3
Write #3, CS
Close # 3
Signobj = Nothing
MsgBox("Cosign finished. Cosignature saved to a file.")
Exit Sub
ErrorHandler:
If err.number > 0 Then
MsgBox("Visual Basic error found:" & err.description)
Else
MsgBox("CAPICOM error found : " & err.number)
End If
End Sub