1

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 コンポーネントでデコードすることはできません。

4

1 に答える 1