| Index: content/child/webcrypto/shared_crypto.cc
|
| diff --git a/content/child/webcrypto/shared_crypto.cc b/content/child/webcrypto/shared_crypto.cc
|
| index 8f4b05af70a6868e98521a370c5f5a97073dc78f..b4d5931327a31de64f6ec3a9dd5ab5fa2d96823b 100644
|
| --- a/content/child/webcrypto/shared_crypto.cc
|
| +++ b/content/child/webcrypto/shared_crypto.cc
|
| @@ -865,26 +865,15 @@ Status WrapKey(blink::WebCryptoKeyFormat format,
|
| if (wrapping_algorithm.id() != wrapping_key.algorithm().id())
|
| return Status::ErrorUnexpected();
|
|
|
| - switch (format) {
|
| - case blink::WebCryptoKeyFormatRaw:
|
| - if (wrapping_algorithm.id() == blink::WebCryptoAlgorithmIdAesKw) {
|
| - // AES-KW is a special case, due to NSS's implementation only
|
| - // supporting C_Wrap/C_Unwrap with AES-KW
|
| - return WrapKeyRaw(
|
| - key_to_wrap, wrapping_key, wrapping_algorithm, buffer);
|
| - }
|
| - return WrapKeyExportAndEncrypt(
|
| - format, key_to_wrap, wrapping_key, wrapping_algorithm, buffer);
|
| - case blink::WebCryptoKeyFormatJwk:
|
| - return WrapKeyExportAndEncrypt(
|
| - format, key_to_wrap, wrapping_key, wrapping_algorithm, buffer);
|
| - case blink::WebCryptoKeyFormatSpki:
|
| - case blink::WebCryptoKeyFormatPkcs8:
|
| - return Status::ErrorUnsupported(); // TODO(padolph)
|
| - default:
|
| - NOTREACHED();
|
| - return Status::ErrorUnsupported();
|
| + if (format == blink::WebCryptoKeyFormatRaw &&
|
| + wrapping_algorithm.id() == blink::WebCryptoAlgorithmIdAesKw) {
|
| + // AES-KW is a special case, due to NSS's implementation only
|
| + // supporting C_Wrap/C_Unwrap with AES-KW
|
| + return WrapKeyRaw(key_to_wrap, wrapping_key, wrapping_algorithm, buffer);
|
| }
|
| +
|
| + return WrapKeyExportAndEncrypt(
|
| + format, key_to_wrap, wrapping_key, wrapping_algorithm, buffer);
|
| }
|
|
|
| Status UnwrapKey(blink::WebCryptoKeyFormat format,
|
| @@ -908,43 +897,27 @@ Status UnwrapKey(blink::WebCryptoKeyFormat format,
|
| if (status.IsError())
|
| return status;
|
|
|
| - switch (format) {
|
| - case blink::WebCryptoKeyFormatRaw:
|
| - if (wrapping_algorithm.id() == blink::WebCryptoAlgorithmIdAesKw) {
|
| - // AES-KW is a special case, due to NSS's implementation only
|
| - // supporting C_Wrap/C_Unwrap with AES-KW
|
| - return UnwrapKeyRaw(wrapped_key_data,
|
| - wrapping_key,
|
| - wrapping_algorithm,
|
| - algorithm,
|
| - extractable,
|
| - usage_mask,
|
| - key);
|
| - }
|
| - return UnwrapKeyDecryptAndImport(format,
|
| - wrapped_key_data,
|
| - wrapping_key,
|
| - wrapping_algorithm,
|
| - algorithm,
|
| - extractable,
|
| - usage_mask,
|
| - key);
|
| - case blink::WebCryptoKeyFormatJwk:
|
| - return UnwrapKeyDecryptAndImport(format,
|
| - wrapped_key_data,
|
| - wrapping_key,
|
| - wrapping_algorithm,
|
| - algorithm,
|
| - extractable,
|
| - usage_mask,
|
| - key);
|
| - case blink::WebCryptoKeyFormatSpki:
|
| - case blink::WebCryptoKeyFormatPkcs8:
|
| - return Status::ErrorUnsupported(); // TODO(padolph)
|
| - default:
|
| - NOTREACHED();
|
| - return Status::ErrorUnsupported();
|
| + if (format == blink::WebCryptoKeyFormatRaw &&
|
| + wrapping_algorithm.id() == blink::WebCryptoAlgorithmIdAesKw) {
|
| + // AES-KW is a special case, due to NSS's implementation only
|
| + // supporting C_Wrap/C_Unwrap with AES-KW
|
| + return UnwrapKeyRaw(wrapped_key_data,
|
| + wrapping_key,
|
| + wrapping_algorithm,
|
| + algorithm,
|
| + extractable,
|
| + usage_mask,
|
| + key);
|
| }
|
| +
|
| + return UnwrapKeyDecryptAndImport(format,
|
| + wrapped_key_data,
|
| + wrapping_key,
|
| + wrapping_algorithm,
|
| + algorithm,
|
| + extractable,
|
| + usage_mask,
|
| + key);
|
| }
|
|
|
| // Note that this function is called from the target Blink thread.
|
|
|