Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1761)

Unified Diff: content/renderer/webcrypto/platform_crypto_openssl.cc

Issue 169193005: Remove some duplicated code for getting the EVP_MP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/webcrypto/platform_crypto_openssl.cc
diff --git a/content/renderer/webcrypto/platform_crypto_openssl.cc b/content/renderer/webcrypto/platform_crypto_openssl.cc
index 45ba541541a2dec7b6cc7e36bcdadd49ec17afaf..3ef6904d033bed5ef6696b852fe127eff8afca0a 100644
--- a/content/renderer/webcrypto/platform_crypto_openssl.cc
+++ b/content/renderer/webcrypto/platform_crypto_openssl.cc
@@ -58,6 +58,23 @@ const EVP_CIPHER* GetAESCipherByKeyLength(unsigned int key_length_bytes) {
}
}
+const EVP_MD* GetDigest(blink::WebCryptoAlgorithmId id) {
+ switch (id) {
+ case blink::WebCryptoAlgorithmIdSha1:
+ return EVP_sha1();
+ case blink::WebCryptoAlgorithmIdSha224:
+ return EVP_sha224();
+ case blink::WebCryptoAlgorithmIdSha256:
+ return EVP_sha256();
+ case blink::WebCryptoAlgorithmIdSha384:
+ return EVP_sha384();
+ case blink::WebCryptoAlgorithmIdSha512:
+ return EVP_sha512();
+ default:
+ return NULL;
+ }
+}
+
// OpenSSL constants for EVP_CipherInit_ex(), do not change
enum CipherOperation { kDoDecrypt = 0, kDoEncrypt = 1 };
@@ -155,27 +172,9 @@ Status DigestSha(blink::WebCryptoAlgorithmId algorithm,
blink::WebArrayBuffer* buffer) {
crypto::OpenSSLErrStackTracer(FROM_HERE);
- const EVP_MD* digest_algorithm;
- switch (algorithm) {
- case blink::WebCryptoAlgorithmIdSha1:
- digest_algorithm = EVP_sha1();
- break;
- case blink::WebCryptoAlgorithmIdSha224:
- digest_algorithm = EVP_sha224();
- break;
- case blink::WebCryptoAlgorithmIdSha256:
- digest_algorithm = EVP_sha256();
- break;
- case blink::WebCryptoAlgorithmIdSha384:
- digest_algorithm = EVP_sha384();
- break;
- case blink::WebCryptoAlgorithmIdSha512:
- digest_algorithm = EVP_sha512();
- break;
- default:
- // Not a SHA algorithm.
- return Status::ErrorUnexpected();
- }
+ const EVP_MD* digest_algorithm = GetDigest(algorithm);
+ if (!digest_algorithm)
+ return Status::ErrorUnexpected();
crypto::ScopedOpenSSL<EVP_MD_CTX, EVP_MD_CTX_destroy> digest_context(
EVP_MD_CTX_create());
@@ -261,34 +260,10 @@ Status SignHmac(SymKey* key,
blink::WebArrayBuffer* buffer) {
blink::WebArrayBuffer result;
- const EVP_MD* evp_sha = 0;
- unsigned int hmac_expected_length = 0;
- // Note that HMAC length is determined by the hash used.
- switch (hash.id()) {
- case blink::WebCryptoAlgorithmIdSha1:
- evp_sha = EVP_sha1();
- hmac_expected_length = SHA_DIGEST_LENGTH;
- break;
- case blink::WebCryptoAlgorithmIdSha224:
- evp_sha = EVP_sha224();
- hmac_expected_length = SHA224_DIGEST_LENGTH;
- break;
- case blink::WebCryptoAlgorithmIdSha256:
- evp_sha = EVP_sha256();
- hmac_expected_length = SHA256_DIGEST_LENGTH;
- break;
- case blink::WebCryptoAlgorithmIdSha384:
- evp_sha = EVP_sha384();
- hmac_expected_length = SHA384_DIGEST_LENGTH;
- break;
- case blink::WebCryptoAlgorithmIdSha512:
- evp_sha = EVP_sha512();
- hmac_expected_length = SHA512_DIGEST_LENGTH;
- break;
- default:
- // Not a digest algorithm.
- return Status::ErrorUnsupported();
- }
+ const EVP_MD* digest_algorithm = GetDigest(hash.id());
+ if (!digest_algorithm)
+ return Status::ErrorUnsupported();
+ unsigned int hmac_expected_length = EVP_MD_size(digest_algorithm);
const std::vector<unsigned char>& raw_key = key->key();
@@ -307,7 +282,7 @@ Status SignHmac(SymKey* key,
crypto::OpenSSLErrStackTracer(FROM_HERE);
unsigned int hmac_actual_length;
- unsigned char* const success = HMAC(evp_sha,
+ unsigned char* const success = HMAC(digest_algorithm,
raw_key_voidp,
raw_key.size(),
data.bytes(),
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698