• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "content/child/webcrypto/openssl/key_openssl.h"
6 
7 #include "content/child/webcrypto/crypto_data.h"
8 #include "content/child/webcrypto/status.h"
9 #include "content/child/webcrypto/webcrypto_util.h"
10 
11 namespace content {
12 
13 namespace webcrypto {
14 
KeyOpenSsl(const CryptoData & serialized_key_data)15 KeyOpenSsl::KeyOpenSsl(const CryptoData& serialized_key_data)
16     : serialized_key_data_(
17           serialized_key_data.bytes(),
18           serialized_key_data.bytes() + serialized_key_data.byte_length()) {
19 }
20 
~KeyOpenSsl()21 KeyOpenSsl::~KeyOpenSsl() {
22 }
23 
AsSymKey()24 SymKeyOpenSsl* KeyOpenSsl::AsSymKey() {
25   return NULL;
26 }
27 
AsAsymKey()28 AsymKeyOpenSsl* KeyOpenSsl::AsAsymKey() {
29   return NULL;
30 }
31 
~SymKeyOpenSsl()32 SymKeyOpenSsl::~SymKeyOpenSsl() {
33 }
34 
Cast(const blink::WebCryptoKey & key)35 SymKeyOpenSsl* SymKeyOpenSsl::Cast(const blink::WebCryptoKey& key) {
36   KeyOpenSsl* platform_key = reinterpret_cast<KeyOpenSsl*>(key.handle());
37   return platform_key->AsSymKey();
38 }
39 
AsSymKey()40 SymKeyOpenSsl* SymKeyOpenSsl::AsSymKey() {
41   return this;
42 }
43 
SymKeyOpenSsl(const CryptoData & raw_key_data)44 SymKeyOpenSsl::SymKeyOpenSsl(const CryptoData& raw_key_data)
45     : KeyOpenSsl(raw_key_data) {
46 }
47 
~AsymKeyOpenSsl()48 AsymKeyOpenSsl::~AsymKeyOpenSsl() {
49 }
50 
Cast(const blink::WebCryptoKey & key)51 AsymKeyOpenSsl* AsymKeyOpenSsl::Cast(const blink::WebCryptoKey& key) {
52   return reinterpret_cast<KeyOpenSsl*>(key.handle())->AsAsymKey();
53 }
54 
AsAsymKey()55 AsymKeyOpenSsl* AsymKeyOpenSsl::AsAsymKey() {
56   return this;
57 }
58 
AsymKeyOpenSsl(crypto::ScopedEVP_PKEY key,const CryptoData & serialized_key_data)59 AsymKeyOpenSsl::AsymKeyOpenSsl(crypto::ScopedEVP_PKEY key,
60                                const CryptoData& serialized_key_data)
61     : KeyOpenSsl(serialized_key_data), key_(key.Pass()) {
62 }
63 
PlatformSerializeKeyForClone(const blink::WebCryptoKey & key,blink::WebVector<uint8_t> * key_data)64 bool PlatformSerializeKeyForClone(const blink::WebCryptoKey& key,
65                                   blink::WebVector<uint8_t>* key_data) {
66   const KeyOpenSsl* openssl_key = static_cast<KeyOpenSsl*>(key.handle());
67   *key_data = openssl_key->serialized_key_data();
68   return true;
69 }
70 
71 }  // namespace webcrypto
72 
73 }  // namespace content
74