Home | History | Annotate | Download | only in openssl
      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 
     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 
     21 KeyOpenSsl::~KeyOpenSsl() {
     22 }
     23 
     24 SymKeyOpenSsl* KeyOpenSsl::AsSymKey() {
     25   return NULL;
     26 }
     27 
     28 AsymKeyOpenSsl* KeyOpenSsl::AsAsymKey() {
     29   return NULL;
     30 }
     31 
     32 SymKeyOpenSsl::~SymKeyOpenSsl() {
     33 }
     34 
     35 SymKeyOpenSsl* SymKeyOpenSsl::Cast(const blink::WebCryptoKey& key) {
     36   KeyOpenSsl* platform_key = reinterpret_cast<KeyOpenSsl*>(key.handle());
     37   return platform_key->AsSymKey();
     38 }
     39 
     40 SymKeyOpenSsl* SymKeyOpenSsl::AsSymKey() {
     41   return this;
     42 }
     43 
     44 SymKeyOpenSsl::SymKeyOpenSsl(const CryptoData& raw_key_data)
     45     : KeyOpenSsl(raw_key_data) {
     46 }
     47 
     48 AsymKeyOpenSsl::~AsymKeyOpenSsl() {
     49 }
     50 
     51 AsymKeyOpenSsl* AsymKeyOpenSsl::Cast(const blink::WebCryptoKey& key) {
     52   return reinterpret_cast<KeyOpenSsl*>(key.handle())->AsAsymKey();
     53 }
     54 
     55 AsymKeyOpenSsl* AsymKeyOpenSsl::AsAsymKey() {
     56   return this;
     57 }
     58 
     59 AsymKeyOpenSsl::AsymKeyOpenSsl(crypto::ScopedEVP_PKEY key,
     60                                const CryptoData& serialized_key_data)
     61     : KeyOpenSsl(serialized_key_data), key_(key.Pass()) {
     62 }
     63 
     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