VB6/CAPICOM コンポーネントを使用する既存のクラシック ASP Web サイト用のテスト ハーネスを作成する必要があります。目的は、SignedData.Sign() の結果を再作成して、CAPICOM を使用してペイロードをデコードする Classic Asp Web サイトにこれを POST できるようにすることです。
参照用のVB6 CAPICOM
Function SignContent(ByVal strXmlToSign As String) As String
Dim strSignedString As String
Dim objSign As SignedData ‘ From CAPICOM library
Set objSign = New SignedData
objSign.Content = strXmlToSign
strSignedString = objSign.Sign
Set objSign = Nothing
SignContent = strSignedString
End Function
ここのCAPICOMドキュメントをガイドとして使用しています
C# 相当
public string Sign(string dataToSign)
{
ContentInfo contentInfo = new ContentInfo(Encoding.UTF8.GetBytes(dataToSign));
// Create a new, nondetached SignedCms message.
SignedCms signedCms = new SignedCms(contentInfo);
// get cert from store by Serial Number
X509Certificate2 cert = GetCertificateBy("my-cert-serial-number");
CmsSigner signer = new CmsSigner(cert);
// Sign the message.
signedCms.ComputeSignature(signer);
// Encode the message.
var encoded = signedCms.Encode();
// mimic default EncodingType; CAPICOM_ENCODE_BASE64 Data is saved as a base64 - encoded string.
return Convert.ToBase64String(encoded);
}
これまでのところ、C# で生成された署名を CAPICOM コンポーネントでデコードすることはできません。