| Index: crypto/signature_verifier.h
|
| diff --git a/crypto/signature_verifier.h b/crypto/signature_verifier.h
|
| index b26a0dfb4ae2680a5d9d82392491cd8e60cabdb0..5b7369fb51a1795533560d41c0aa02ef3e765b0a 100644
|
| --- a/crypto/signature_verifier.h
|
| +++ b/crypto/signature_verifier.h
|
| @@ -33,6 +33,13 @@ class CRYPTO_EXPORT SignatureVerifier {
|
| SHA256,
|
| };
|
|
|
| + // The set of supported signature algorithms. Extend as required.
|
| + enum SignatureAlgorithm {
|
| + RSA_PKCS1_SHA1,
|
| + RSA_PKCS1_SHA256,
|
| + ECDSA_SHA256,
|
| + };
|
| +
|
| SignatureVerifier();
|
| ~SignatureVerifier();
|
|
|
| @@ -42,16 +49,7 @@ class CRYPTO_EXPORT SignatureVerifier {
|
| // by one or more VerifyUpdate calls and a VerifyFinal call.
|
| // NOTE: for RSA-PSS signatures, use VerifyInitRSAPSS instead.
|
| //
|
| - // The signature algorithm is specified as a DER encoded ASN.1
|
| - // AlgorithmIdentifier structure:
|
| - // AlgorithmIdentifier ::= SEQUENCE {
|
| - // algorithm OBJECT IDENTIFIER,
|
| - // parameters ANY DEFINED BY algorithm OPTIONAL }
|
| - //
|
| - // The signature is encoded according to the signature algorithm, but it
|
| - // must not be further encoded in an ASN.1 BIT STRING.
|
| - // Note: An RSA signature is actually a big integer. It must be in
|
| - // big-endian byte order.
|
| + // The signature is encoded according to the signature algorithm.
|
| //
|
| // The public key is specified as a DER encoded ASN.1 SubjectPublicKeyInfo
|
| // structure, which contains not only the public key but also its type
|
| @@ -59,8 +57,7 @@ class CRYPTO_EXPORT SignatureVerifier {
|
| // SubjectPublicKeyInfo ::= SEQUENCE {
|
| // algorithm AlgorithmIdentifier,
|
| // subjectPublicKey BIT STRING }
|
| - bool VerifyInit(const uint8_t* signature_algorithm,
|
| - int signature_algorithm_len,
|
| + bool VerifyInit(SignatureAlgorithm signature_algorithm,
|
| const uint8_t* signature,
|
| int signature_len,
|
| const uint8_t* public_key_info,
|
| @@ -98,19 +95,10 @@ class CRYPTO_EXPORT SignatureVerifier {
|
| // error occurred.
|
| bool VerifyFinal();
|
|
|
| - // Note: we can provide a one-shot interface if there is interest:
|
| - // bool Verify(const uint8_t* data,
|
| - // int data_len,
|
| - // const uint8_t* signature_algorithm,
|
| - // int signature_algorithm_len,
|
| - // const uint8_t* signature,
|
| - // int signature_len,
|
| - // const uint8_t* public_key_info,
|
| - // int public_key_info_len);
|
| -
|
| private:
|
| #if defined(USE_OPENSSL)
|
| - bool CommonInit(const EVP_MD* digest,
|
| + bool CommonInit(int pkey_type,
|
| + const EVP_MD* digest,
|
| const uint8_t* signature,
|
| int signature_len,
|
| const uint8_t* public_key_info,
|
|
|