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 |