1*789431f2SAndroid Build Coastguard Worker /* 2*789431f2SAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 3*789431f2SAndroid Build Coastguard Worker * 4*789431f2SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*789431f2SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*789431f2SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*789431f2SAndroid Build Coastguard Worker * 8*789431f2SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*789431f2SAndroid Build Coastguard Worker * 10*789431f2SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*789431f2SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*789431f2SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*789431f2SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*789431f2SAndroid Build Coastguard Worker * limitations under the License. 15*789431f2SAndroid Build Coastguard Worker */ 16*789431f2SAndroid Build Coastguard Worker 17*789431f2SAndroid Build Coastguard Worker #include <keymaster/km_openssl/ec_key.h> 18*789431f2SAndroid Build Coastguard Worker 19*789431f2SAndroid Build Coastguard Worker #if defined(OPENSSL_IS_BORINGSSL) 20*789431f2SAndroid Build Coastguard Worker typedef size_t openssl_size_t; 21*789431f2SAndroid Build Coastguard Worker #else 22*789431f2SAndroid Build Coastguard Worker typedef int openssl_size_t; 23*789431f2SAndroid Build Coastguard Worker #endif 24*789431f2SAndroid Build Coastguard Worker 25*789431f2SAndroid Build Coastguard Worker namespace keymaster { 26*789431f2SAndroid Build Coastguard Worker EvpToInternal(const EVP_PKEY * pkey)27*789431f2SAndroid Build Coastguard Workerbool EcKey::EvpToInternal(const EVP_PKEY* pkey) { 28*789431f2SAndroid Build Coastguard Worker ec_key_.reset(EVP_PKEY_get1_EC_KEY(const_cast<EVP_PKEY*>(pkey))); 29*789431f2SAndroid Build Coastguard Worker return ec_key_.get() != nullptr; 30*789431f2SAndroid Build Coastguard Worker } 31*789431f2SAndroid Build Coastguard Worker InternalToEvp() const32*789431f2SAndroid Build Coastguard WorkerEVP_PKEY_Ptr EcKey::InternalToEvp() const { 33*789431f2SAndroid Build Coastguard Worker EVP_PKEY_Ptr pkey(EVP_PKEY_new()); 34*789431f2SAndroid Build Coastguard Worker if (pkey.get() != nullptr) { 35*789431f2SAndroid Build Coastguard Worker if (EVP_PKEY_set1_EC_KEY(pkey.get(), ec_key_.get()) != 1) { 36*789431f2SAndroid Build Coastguard Worker return {}; 37*789431f2SAndroid Build Coastguard Worker } 38*789431f2SAndroid Build Coastguard Worker } 39*789431f2SAndroid Build Coastguard Worker return pkey; 40*789431f2SAndroid Build Coastguard Worker } 41*789431f2SAndroid Build Coastguard Worker 42*789431f2SAndroid Build Coastguard Worker } // namespace keymaster 43