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..10ce3b6b69816453cae4d66827a3d640ebb6489f 100644 |
--- a/content/renderer/webcrypto/platform_crypto_openssl.cc |
+++ b/content/renderer/webcrypto/platform_crypto_openssl.cc |
@@ -18,6 +18,9 @@ |
#include "third_party/WebKit/public/platform/WebArrayBuffer.h" |
#include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h" |
#include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h" |
+#ifdef WEBCRYPTO_HAS_KEY_ALGORITHM |
+#include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h" |
+#endif |
namespace content { |
@@ -222,10 +225,18 @@ Status GenerateSecretKey(const blink::WebCryptoAlgorithm& algorithm, |
if (!(RAND_bytes(&random_bytes[0], keylen_bytes))) |
return Status::Error(); |
+#ifdef WEBCRYPTO_HAS_KEY_ALGORITHM |
+ blink::WebCryptoKeyAlgorithm key_algorithm; |
+ if (!CreateSecretKeyAlgorithm(algorithm, keylen_bytes, &key_algorithm)) |
+ return Status::ErrorUnexpected(); |
+#else |
+ const blink::WebCryptoAlgorithm key_algorithm = algorithm; |
+#endif |
+ |
*key = blink::WebCryptoKey::create(new SymKey(CryptoData(random_bytes)), |
blink::WebCryptoKeyTypeSecret, |
extractable, |
- algorithm, |
+ key_algorithm, |
usage_mask); |
return Status::Success(); |
@@ -234,6 +245,9 @@ Status GenerateSecretKey(const blink::WebCryptoAlgorithm& algorithm, |
Status GenerateRsaKeyPair(const blink::WebCryptoAlgorithm& algorithm, |
bool extractable, |
blink::WebCryptoKeyUsageMask usage_mask, |
+ unsigned int modulus_length_bits, |
+ const CryptoData& public_exponent, |
+ const blink::WebCryptoAlgorithm& hash, |
blink::WebCryptoKey* public_key, |
blink::WebCryptoKey* private_key) { |
// TODO(padolph): Placeholder for OpenSSL implementation. |
@@ -246,10 +260,20 @@ Status ImportKeyRaw(const blink::WebCryptoAlgorithm& algorithm, |
bool extractable, |
blink::WebCryptoKeyUsageMask usage_mask, |
blink::WebCryptoKey* key) { |
+ |
+#ifdef WEBCRYPTO_HAS_KEY_ALGORITHM |
+ blink::WebCryptoKeyAlgorithm key_algorithm; |
+ if (!CreateSecretKeyAlgorithm( |
+ algorithm, key_data.byte_length(), &key_algorithm)) |
+ return Status::ErrorUnexpected(); |
+#else |
+ const blink::WebCryptoAlgorithm key_algorithm = algorithm; |
+#endif |
+ |
*key = blink::WebCryptoKey::create(new SymKey(key_data), |
blink::WebCryptoKeyTypeSecret, |
extractable, |
- algorithm, |
+ key_algorithm, |
usage_mask); |
return Status::Success(); |
@@ -378,7 +402,6 @@ Status VerifyRsaSsaPkcs1v1_5(PublicKey* key, |
Status ImportKeySpki(const blink::WebCryptoAlgorithm& algorithm_or_null, |
const CryptoData& key_data, |
- bool extractable, |
blink::WebCryptoKeyUsageMask usage_mask, |
blink::WebCryptoKey* key) { |
// TODO(eroman): http://crbug.com/267888 |