Chromium Code Reviews| Index: content/child/webcrypto/webcrypto_util.cc |
| diff --git a/content/child/webcrypto/webcrypto_util.cc b/content/child/webcrypto/webcrypto_util.cc |
| index 6dad83fcae7dae6c9cb0bd1ecd7b50139d56c670..60c4083e7730aaa46e263963965a785255c9f9c4 100644 |
| --- a/content/child/webcrypto/webcrypto_util.cc |
| +++ b/content/child/webcrypto/webcrypto_util.cc |
| @@ -262,6 +262,34 @@ Status GetRsaKeyGenParameters( |
| return Status::Success(); |
| } |
| +Status VerifyUsagesBeforeImportAsymmetricKey( |
| + blink::WebCryptoKeyFormat format, |
| + blink::WebCryptoKeyUsageMask all_public_key_usages, |
| + blink::WebCryptoKeyUsageMask all_private_key_usages, |
| + blink::WebCryptoKeyUsageMask usages) { |
| + switch (format) { |
| + case blink::WebCryptoKeyFormatSpki: |
| + return CheckKeyCreationUsages(all_public_key_usages, usages); |
| + case blink::WebCryptoKeyFormatPkcs8: |
| + return CheckKeyCreationUsages(all_private_key_usages, usages); |
| + case blink::WebCryptoKeyFormatJwk: { |
| + // The JWK could represent either a public key or private key. The usages |
| + // must make sense for one of the two. The usages will be checked again by |
| + // ImportKeyJwk() once the key type has been determined. |
| + Status status = CheckKeyCreationUsages(all_public_key_usages, usages); |
| + if (status.IsError()) |
| + return status; |
|
davidben
2014/12/09 20:36:39
I think this got inverted from the original code.
eroman
2014/12/09 20:41:54
Ugh you are right! I will restore the original cod
eroman
2014/12/09 20:46:40
OK Fixed.
I reordered it a bit from the original
|
| + |
| + status = CheckKeyCreationUsages(all_private_key_usages, usages); |
| + if (status.IsError()) |
| + return status; |
| + return Status::Success(); |
| + } |
| + default: |
| + return Status::ErrorUnsupportedImportKeyFormat(); |
| + } |
| +} |
| + |
| } // namespace webcrypto |
| } // namespace content |