diff options
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp')
| -rw-r--r-- | usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp | 153 | 
1 files changed, 153 insertions, 0 deletions
| diff --git a/usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp b/usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp new file mode 100644 index 0000000000..a50446739a --- /dev/null +++ b/usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp @@ -0,0 +1,153 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +/** + * \file KMSAgentPKIKey.cpp + */ +#include <stdio.h> + +#include "SYSCommon.h" +#include "KMSAgentPKICommon.h" +#include "KMSAgentPKIimpl.h" + +/////////////////////////////////////////////////////////////////////////////////////// +// public key methods +/////////////////////////////////////////////////////////////////////////////////////// +CPublicKey::CPublicKey() +{ +   m_pPublicKeyImpl = InitializePKeyImpl(); +    +   FATAL_ASSERT( m_pPublicKeyImpl != NULL ); +    +} + +/** + * This method saves public key into a buffer, + * it also returns the actual used buffer length. + * @param i_pcBuffer Buffer to receive public key + * @param i_iBufferLength length of the buffer provided + * @param o_pActualLength actual length of the public key stored into the buffer + * @param i_iFormat key format, @see EnumPKIFileFormat + */ +bool CPublicKey::Save(  unsigned char * const      i_pcBuffer,  +                        int                        i_iBufferLength, +                        int * const                o_pActualLength, +                        int                        i_iFormat ) +{ +   return SavePublicKeyToBuffer( m_pPublicKeyImpl,  +                                 i_pcBuffer,  +                                 i_iBufferLength,  +                                 o_pActualLength,  +                                 i_iFormat ); +} + +bool CPublicKey::Load(unsigned char * const i_pcBuffer, +                       int                   i_iLength, +                       int                   i_iFormat) +{  +   return LoadPublicKeyFromBuffer( m_pPublicKeyImpl,  +                                    i_pcBuffer,  +                                    i_iLength,  +                                    i_iFormat ); +} + +bool CPublicKey::Encrypt (int i_iLength, +                  const unsigned char * const i_pcPlainText, +                  unsigned char * const o_pcCypherText, +                  int * const o_pActualLength) +{ +    return PublicKeyEncrypt(i_iLength,i_pcPlainText,o_pcCypherText,o_pActualLength, m_pPublicKeyImpl ); +} + +CPublicKey::~CPublicKey() +{ +   if(m_pPublicKeyImpl != NULL) +   { +      FinalizePKeyImpl( m_pPublicKeyImpl ); +   } +} + +/////////////////////////////////////////////////////////////////////////////////////// +// private key methods +/////////////////////////////////////////////////////////////////////////////////////// + +CPrivateKey::CPrivateKey() +{ +   m_pPKeyImpl = InitializePKeyImpl(); +    +   FATAL_ASSERT( m_pPKeyImpl != NULL ); +    +} + +/** + * This method saves private key into a buffer, + * it also returns the actual used buffer length. + */ +bool CPrivateKey::Save( unsigned char * const      i_pcBuffer,  +                        int                        i_iBufferLength, +                        int * const                o_pActualLength, +                        const char * const         i_pPassphrase,  +                        int                        i_iFormat ) +{ +   return SavePrivateKeyToBuffer(m_pPKeyImpl,  +                                 i_pcBuffer,  +                                 i_iBufferLength,  +                                 o_pActualLength,  +                                 i_pPassphrase,  +                                 i_iFormat ); +} + +bool CPrivateKey::Load(unsigned char * const i_pcBuffer, +                       int                   i_iLength, +                       const char * const    i_pPassphrase, +                       int                   i_iFormat) +{  +   return LoadPrivateKeyFromBuffer( m_pPKeyImpl,  +                                    i_pcBuffer,  +                                    i_iLength,  +                                    i_pPassphrase,  +                                    i_iFormat ); +} + +CPrivateKey::~CPrivateKey() +{ +   if(m_pPKeyImpl != NULL) +   { +      FinalizePKeyImpl( m_pPKeyImpl ); +   } +} +#ifdef KMSUSERPKCS12 +void +*CPrivateKey::GetNative() +{ +	return GetPKey(m_pPKeyImpl); +} +void +CPrivateKey::SetNative(void *pKey) +{ +	SetPKey(m_pPKeyImpl, pKey); +	return; +} +#endif | 
