| Index: crypto/signature_verifier_unittest.cc
|
| diff --git a/crypto/signature_verifier_unittest.cc b/crypto/signature_verifier_unittest.cc
|
| index adcc88598c0259025919dfccafa06070d3ec263e..d71ea822bed9da878e4f3ddedaf0925960f8753c 100644
|
| --- a/crypto/signature_verifier_unittest.cc
|
| +++ b/crypto/signature_verifier_unittest.cc
|
| @@ -14,9 +14,9 @@
|
| TEST(SignatureVerifierTest, BasicTest) {
|
| // The input data in this test comes from real certificates.
|
| //
|
| - // tbs_certificate ("to-be-signed certificate", the part of a certificate
|
| - // that is signed), signature_algorithm, and algorithm come from the
|
| - // certificate of bugs.webkit.org.
|
| + // tbs_certificate ("to-be-signed certificate", the part of a certificate that
|
| + // is signed), signature, and algorithm come from the certificate of
|
| + // bugs.webkit.org.
|
| //
|
| // public_key_info comes from the certificate of the issuer, Go Daddy Secure
|
| // Certification Authority.
|
| @@ -116,19 +116,6 @@ TEST(SignatureVerifierTest, BasicTest) {
|
| 0x74, 0x2e, 0x6f, 0x72, 0x67, 0x82, 0x0a, 0x77, 0x65, 0x62, 0x6b, 0x69,
|
| 0x74, 0x2e, 0x6f, 0x72, 0x67};
|
|
|
| - // The signature algorithm is specified as the following ASN.1 structure:
|
| - // AlgorithmIdentifier ::= SEQUENCE {
|
| - // algorithm OBJECT IDENTIFIER,
|
| - // parameters ANY DEFINED BY algorithm OPTIONAL }
|
| - //
|
| - const uint8_t signature_algorithm[15] = {
|
| - 0x30, 0x0d, // a SEQUENCE of length 13 (0xd)
|
| - 0x06, 0x09, // an OBJECT IDENTIFIER of length 9
|
| - // 1.2.840.113549.1.1.5 - sha1WithRSAEncryption
|
| - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
|
| - 0x00, // a NULL of length 0
|
| - };
|
| -
|
| // RSA signature, a big integer in the big-endian byte order.
|
| const uint8_t signature[256] = {
|
| 0x1e, 0x6a, 0xe7, 0xe0, 0x4f, 0xe7, 0x4d, 0xd0, 0x69, 0x7c, 0xf8, 0x8f,
|
| @@ -202,12 +189,11 @@ TEST(SignatureVerifierTest, BasicTest) {
|
| crypto::SignatureVerifier verifier;
|
| bool ok;
|
|
|
| - // Test 1: feed all of the data to the verifier at once (a single
|
| + // Test 1: feed all of the data to the verifier at once (a single
|
| // VerifyUpdate call).
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| - signature, sizeof(signature),
|
| - public_key_info, sizeof(public_key_info));
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, signature,
|
| + sizeof(signature), public_key_info,
|
| + sizeof(public_key_info));
|
| EXPECT_TRUE(ok);
|
| verifier.VerifyUpdate(tbs_certificate, sizeof(tbs_certificate));
|
| ok = verifier.VerifyFinal();
|
| @@ -215,12 +201,11 @@ TEST(SignatureVerifierTest, BasicTest) {
|
|
|
| // Test 2: feed the data to the verifier in three parts (three VerifyUpdate
|
| // calls).
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| - signature, sizeof(signature),
|
| - public_key_info, sizeof(public_key_info));
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, signature,
|
| + sizeof(signature), public_key_info,
|
| + sizeof(public_key_info));
|
| EXPECT_TRUE(ok);
|
| - verifier.VerifyUpdate(tbs_certificate, 256);
|
| + verifier.VerifyUpdate(tbs_certificate, 256);
|
| verifier.VerifyUpdate(tbs_certificate + 256, 256);
|
| verifier.VerifyUpdate(tbs_certificate + 512, sizeof(tbs_certificate) - 512);
|
| ok = verifier.VerifyFinal();
|
| @@ -230,10 +215,9 @@ TEST(SignatureVerifierTest, BasicTest) {
|
| uint8_t bad_tbs_certificate[sizeof(tbs_certificate)];
|
| memcpy(bad_tbs_certificate, tbs_certificate, sizeof(tbs_certificate));
|
| bad_tbs_certificate[10] += 1; // Corrupt one byte of the data.
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| - signature, sizeof(signature),
|
| - public_key_info, sizeof(public_key_info));
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, signature,
|
| + sizeof(signature), public_key_info,
|
| + sizeof(public_key_info));
|
| EXPECT_TRUE(ok);
|
| verifier.VerifyUpdate(bad_tbs_certificate, sizeof(bad_tbs_certificate));
|
| ok = verifier.VerifyFinal();
|
| @@ -243,8 +227,7 @@ TEST(SignatureVerifierTest, BasicTest) {
|
| uint8_t bad_signature[sizeof(signature)];
|
| memcpy(bad_signature, signature, sizeof(signature));
|
| bad_signature[10] += 1; // Corrupt one byte of the signature.
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1,
|
| bad_signature, sizeof(bad_signature),
|
| public_key_info, sizeof(public_key_info));
|
|
|
| @@ -260,20 +243,18 @@ TEST(SignatureVerifierTest, BasicTest) {
|
| uint8_t bad_public_key_info[sizeof(public_key_info)];
|
| memcpy(bad_public_key_info, public_key_info, sizeof(public_key_info));
|
| bad_public_key_info[0] += 1; // Corrupt part of the SPKI syntax.
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| - signature, sizeof(signature),
|
| - bad_public_key_info, sizeof(bad_public_key_info));
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, signature,
|
| + sizeof(signature), bad_public_key_info,
|
| + sizeof(bad_public_key_info));
|
| EXPECT_FALSE(ok);
|
|
|
| // Test 6: import a key with extra data.
|
| uint8_t long_public_key_info[sizeof(public_key_info) + 5];
|
| memset(long_public_key_info, 0, sizeof(long_public_key_info));
|
| memcpy(long_public_key_info, public_key_info, sizeof(public_key_info));
|
| - ok = verifier.VerifyInit(signature_algorithm,
|
| - sizeof(signature_algorithm),
|
| - signature, sizeof(signature),
|
| - long_public_key_info, sizeof(long_public_key_info));
|
| + ok = verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, signature,
|
| + sizeof(signature), long_public_key_info,
|
| + sizeof(long_public_key_info));
|
| EXPECT_FALSE(ok);
|
| }
|
|
|
| @@ -1022,7 +1003,7 @@ static bool EncodeRSAPublicKey(const std::vector<uint8_t>& modulus_n,
|
| // algorithm AlgorithmIdentifier,
|
| // subjectPublicKey BIT STRING }
|
| //
|
| - // The signature algorithm is specified as the following ASN.1 structure:
|
| + // The algorithm is specified as the following ASN.1 structure:
|
| // AlgorithmIdentifier ::= SEQUENCE {
|
| // algorithm OBJECT IDENTIFIER,
|
| // parameters ANY DEFINED BY algorithm OPTIONAL }
|
|
|