Chromium Code Reviews| Index: content/renderer/webcrypto/webcrypto_impl_openssl.cc |
| diff --git a/content/renderer/webcrypto/webcrypto_impl_openssl.cc b/content/renderer/webcrypto/webcrypto_impl_openssl.cc |
| index 3170b28b987aac50f1045c9088816e453c59cb05..fb3d302bf8d474f27f7ddbceda9777f7dde19adb 100644 |
| --- a/content/renderer/webcrypto/webcrypto_impl_openssl.cc |
| +++ b/content/renderer/webcrypto/webcrypto_impl_openssl.cc |
| @@ -157,6 +157,24 @@ bool AesCbcEncryptDecrypt(CipherOperation cipher_operation, |
| return true; |
| } |
| +bool ExportKeyInternalRaw( |
| + const blink::WebCryptoKey& key, |
| + blink::WebArrayBuffer* buffer) { |
| + |
| + DCHECK(key.handle()); |
| + DCHECK(buffer); |
| + |
| + if (key.type() != blink::WebCryptoKeyTypeSecret || !key.extractable()) |
| + return false; |
| + |
| + SymKeyHandle* const sym_key = reinterpret_cast<SymKeyHandle*>(key.handle()); |
| + |
| + *buffer = |
| + webcrypto::CreateArrayBuffer(&sym_key->key()[0], sym_key->key().size()); |
|
eroman
2013/12/05 01:47:53
Is it ever possible for the key length to be 0?
padolph
2013/12/05 02:45:57
Yes. Empty symmetric keys are supported and alread
eroman
2013/12/05 02:53:58
If the key is empty, then I don't think we should
padolph
2013/12/05 03:34:16
Done.
|
| + |
| + return true; |
| +} |
| + |
| } // namespace |
| void WebCryptoImpl::Init() { crypto::EnsureOpenSSLInit(); } |
| @@ -370,10 +388,18 @@ bool WebCryptoImpl::ExportKeyInternal( |
| blink::WebCryptoKeyFormat format, |
| const blink::WebCryptoKey& key, |
| blink::WebArrayBuffer* buffer) { |
| - // TODO(padolph): Implement raw export |
| - // TODO(padolph): Implement spki export |
| - // TODO(padolph): Implement pkcs8 export |
| - // TODO(padolph): Implement jwk export |
| + switch (format) { |
| + case blink::WebCryptoKeyFormatRaw: |
| + return ExportKeyInternalRaw(key, buffer); |
| + case blink::WebCryptoKeyFormatSpki: |
| + // TODO(padolph): Implement spki export |
| + return false; |
| + case blink::WebCryptoKeyFormatPkcs8: |
| + // TODO(padolph): Implement pkcs8 export |
| + return false; |
| + default: |
| + return false; |
| + } |
| return false; |
| } |