1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 26/** 27 * \file KMSAgentPKIKey.cpp 28 */ 29#include <stdio.h> 30 31#include "SYSCommon.h" 32#include "KMSAgentPKICommon.h" 33#include "KMSAgentPKIimpl.h" 34 35/////////////////////////////////////////////////////////////////////////////////////// 36// public key methods 37/////////////////////////////////////////////////////////////////////////////////////// 38CPublicKey::CPublicKey() 39{ 40 m_pPublicKeyImpl = InitializePKeyImpl(); 41 42 FATAL_ASSERT( m_pPublicKeyImpl != NULL ); 43 44} 45 46/** 47 * This method saves public key into a buffer, 48 * it also returns the actual used buffer length. 49 * @param i_pcBuffer Buffer to receive public key 50 * @param i_iBufferLength length of the buffer provided 51 * @param o_pActualLength actual length of the public key stored into the buffer 52 * @param i_iFormat key format, @see EnumPKIFileFormat 53 */ 54bool CPublicKey::Save( unsigned char * const i_pcBuffer, 55 int i_iBufferLength, 56 int * const o_pActualLength, 57 int i_iFormat ) 58{ 59 return SavePublicKeyToBuffer( m_pPublicKeyImpl, 60 i_pcBuffer, 61 i_iBufferLength, 62 o_pActualLength, 63 i_iFormat ); 64} 65 66bool CPublicKey::Load(unsigned char * const i_pcBuffer, 67 int i_iLength, 68 int i_iFormat) 69{ 70 return LoadPublicKeyFromBuffer( m_pPublicKeyImpl, 71 i_pcBuffer, 72 i_iLength, 73 i_iFormat ); 74} 75 76bool CPublicKey::Encrypt (int i_iLength, 77 const unsigned char * const i_pcPlainText, 78 unsigned char * const o_pcCypherText, 79 int * const o_pActualLength) 80{ 81 return PublicKeyEncrypt(i_iLength,i_pcPlainText,o_pcCypherText,o_pActualLength, m_pPublicKeyImpl ); 82} 83 84CPublicKey::~CPublicKey() 85{ 86 if(m_pPublicKeyImpl != NULL) 87 { 88 FinalizePKeyImpl( m_pPublicKeyImpl ); 89 } 90} 91 92/////////////////////////////////////////////////////////////////////////////////////// 93// private key methods 94/////////////////////////////////////////////////////////////////////////////////////// 95 96CPrivateKey::CPrivateKey() 97{ 98 m_pPKeyImpl = InitializePKeyImpl(); 99 100 FATAL_ASSERT( m_pPKeyImpl != NULL ); 101 102} 103 104/** 105 * This method saves private key into a buffer, 106 * it also returns the actual used buffer length. 107 */ 108bool CPrivateKey::Save( unsigned char * const i_pcBuffer, 109 int i_iBufferLength, 110 int * const o_pActualLength, 111 const char * const i_pPassphrase, 112 int i_iFormat ) 113{ 114 return SavePrivateKeyToBuffer(m_pPKeyImpl, 115 i_pcBuffer, 116 i_iBufferLength, 117 o_pActualLength, 118 i_pPassphrase, 119 i_iFormat ); 120} 121 122bool CPrivateKey::Load(unsigned char * const i_pcBuffer, 123 int i_iLength, 124 const char * const i_pPassphrase, 125 int i_iFormat) 126{ 127 return LoadPrivateKeyFromBuffer( m_pPKeyImpl, 128 i_pcBuffer, 129 i_iLength, 130 i_pPassphrase, 131 i_iFormat ); 132} 133 134CPrivateKey::~CPrivateKey() 135{ 136 if(m_pPKeyImpl != NULL) 137 { 138 FinalizePKeyImpl( m_pPKeyImpl ); 139 } 140} 141#ifdef KMSUSERPKCS12 142void 143*CPrivateKey::GetNative() 144{ 145 return GetPKey(m_pPKeyImpl); 146} 147void 148CPrivateKey::SetNative(void *pKey) 149{ 150 SetPKey(m_pPKeyImpl, pKey); 151 return; 152} 153#endif 154