Index: content/child/webcrypto/openssl/key_openssl.h |
diff --git a/content/child/webcrypto/openssl/key_openssl.h b/content/child/webcrypto/openssl/key_openssl.h |
index 34e758d32f2ff893ad4687b22fca85acce5b195d..e25eae4b80a707a714393cd8cbc4b1e0d941f817 100644 |
--- a/content/child/webcrypto/openssl/key_openssl.h |
+++ b/content/child/webcrypto/openssl/key_openssl.h |
@@ -5,10 +5,12 @@ |
#ifndef CONTENT_CHILD_WEBCRYPTO_OPENSSL_KEY_OPENSSL_H_ |
#define CONTENT_CHILD_WEBCRYPTO_OPENSSL_KEY_OPENSSL_H_ |
+#include <openssl/ossl_typ.h> |
#include <stdint.h> |
#include <vector> |
#include "base/macros.h" |
+#include "crypto/scoped_openssl_types.h" |
#include "third_party/WebKit/public/platform/WebCryptoKey.h" |
namespace content { |
@@ -16,6 +18,7 @@ namespace content { |
namespace webcrypto { |
class CryptoData; |
+class AsymKeyOpenSsl; |
class SymKeyOpenSsl; |
// Base key class for all OpenSSL keys, used to safely cast between types. Each |
@@ -28,6 +31,7 @@ class KeyOpenSsl : public blink::WebCryptoKeyHandle { |
virtual ~KeyOpenSsl(); |
virtual SymKeyOpenSsl* AsSymKey(); |
+ virtual AsymKeyOpenSsl* AsAsymKey(); |
const std::vector<uint8_t>& serialized_key_data() const { |
return serialized_key_data_; |
@@ -54,6 +58,24 @@ class SymKeyOpenSsl : public KeyOpenSsl { |
DISALLOW_COPY_AND_ASSIGN(SymKeyOpenSsl); |
}; |
+class AsymKeyOpenSsl : public KeyOpenSsl { |
+ public: |
+ virtual ~AsymKeyOpenSsl(); |
+ AsymKeyOpenSsl(crypto::ScopedEVP_PKEY key, |
+ const CryptoData& serialized_key_data); |
+ |
+ static AsymKeyOpenSsl* Cast(const blink::WebCryptoKey& key); |
+ |
+ virtual AsymKeyOpenSsl* AsAsymKey() OVERRIDE; |
+ |
+ EVP_PKEY* key() { return key_.get(); } |
+ |
+ private: |
+ crypto::ScopedEVP_PKEY key_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AsymKeyOpenSsl); |
+}; |
+ |
} // namespace webcrypto |
} // namespace content |