4

X509 証明書から Xml の署名を検証するコードを書いていますが、件名に例外メッセージが表示されます。

私のサンプルコード

        Dim cert As X509Certificate2 = GetCertificate("Certificate Name")

        Dim signedXml As SignedXml = New SignedXml(Me.samlResponseXml)
        If (signedXml.CheckSignature(cert, True)) Then
            ' The signature is valid
        Else
            ' The signature is invalid
            Throw New ArgumentException("Invalid signature found in Saml Xml.")
        End If

証明書ストアから証明書を正常にロードしました (コードの 1 行目)。signedXml が正常に読み込まれました (コードの 2 行目)。

関数を呼び出すと例外がスローされsignedXml.CheckSignature(cert, True)ます。メッセージは非常に不明確です。

値を null にすることはできません。
パラメータ名: 名前

ここで何が問題なのか手がかりはありますか?

呼び出しスタック:

System.ArgumentNullException はユーザー コードによって処理され
ませんでした Message=Value を null にすることはできません。パラメーター名: name ParamName = name
Source = mscorlib StackTrace: System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object[] args) at System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) at System. D:\Projects\MyProject\Test の MyNamespace.MyClass.MyFunction() の System.Security.Cryptography.Xml.SignedXml.CheckSignature(X509Certificate2 証明書、ブール値の verifySignatureOnly) の Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm キー)。 vb:117行目

更新 1 .Net Framework ソース デバッグをオンにすると、SignedXml.CheckSignedInfoメソッドから例外がスローされ、コード行があります

SignatureDescription signatureDescription = CryptoConfig.CreateFromName(SignatureMethod) as SignatureDescription;

SignatureMethod がラップであることは明らかです

    public string SignatureMethod  {
        get { return m_signature.SignedInfo.SignatureMethod; }
    }

m_signature.SignedInfo.SignatureMethodヌル値です。MSDN からhttp://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedxml.signaturemethod.aspxの SignatureMethod の説明を再度読み、署名部分を含む Xml コードが以下に貼り付けられていることを確認しました. 値を含むSignatureMethodタグがありますが、SignedXml がそれを処理できないのはなぜですか?

  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="#_ea559faf-417b-407f-bdc2-bccc76dab76c">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
            <InclusiveNamespaces PrefixList="#default samlp saml ds xs xsi" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" />
          </Transform>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>fvQx+J90ZGKhwj8Mfhg6v/esOtI=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>Ft2mQEA3a39uRq5N94pDI8Y6B/UGLXHkZJ+/besOQmEtZoi630vBDzQfIxx5Djgg6YYeF/s67iF+KLgfvBrHxoe3E8xiqTwBigem41+PJdITlwgrOTkLo2sSdj4DaFdxeN+SCy6KfKXpDBvDyN4i/R0hBKodGwytfzK/DMeOhHU=</SignatureValue>
    <KeyInfo>
      <X509Data>
        <X509Certificate>MIICBjCCAXOgAwIBAgIQ3VhOVESMV71O0q5EttLxxDAJBgUrDgMCHQUAMBwxGjAYBgNVBAMTEUlkZW50aXR5UHJvdmlkZXIxMB4XDTExMDkwMTA1MDAwMFoXDTQwMTIzMTA1MDAwMFowHDEaMBgGA1UEAxMRSWRlbnRpdHlQcm92aWRlcjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMBVhtKneTweMOgmvwO+i8AvZ5p0/PGatzLKNXVctTROcXb48u3L9JR3sVPasAFNsafq086xqaWyuFM7jAHtYHTQg/oLt+wGCKd7w/n4s0crxM3NVahDmSUPnBW9RZM2XD4pOs9DTu8aEEQGN/p01jrIMgPYhdlVsTJSg43lLyzjAgMBAAGjUTBPME0GA1UdAQRGMESAEHDoTOJwf2lSgqgCU4TXI2ShHjAcMRowGAYDVQQDExFJZGVudGl0eVByb3ZpZGVyMYIQ3VhOVESMV71O0q5EttLxxDAJBgUrDgMCHQUAA4GBAKvsy5KkU9dDNWDRW55/+s7txFfl4ZmWw45AmZYXEA90g+xzALFtWbX/QGqCOx4C0h5fB5Oco084B7gJK/uf2a8oaYvxYGwlxgRxJ9Dq5XBx5ZhOuobT8G2xVy575cbaGnFbObG6/E33Mva1gAYdw7rvGaz/dYuBeChsEIvzROYU</X509Certificate>
      </X509Data>
    </KeyInfo>
  </Signature>
4

1 に答える 1