diff options
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h')
-rw-r--r-- | usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h b/usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h new file mode 100644 index 0000000000..4e506edbe0 --- /dev/null +++ b/usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h @@ -0,0 +1,165 @@ +/* + * 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 KMSAgentPKIimpl.h + */ + +#ifndef K_KMSAgentPKIimpl_h +#define K_KMSAgentPKIimpl_h + +/** + * initializes the implementation environment for an X509 + * certificate implementation and returns an opague handle to any + * resources that should be freed when use of the X.509 + * implementation is complete. This handle is used on all + * subsequent calls that may need to access this resource. + */ +void * InitializeCertImpl(); + +/** + * Save the X.509 Certificate in PEM format to the specified filename + */ +bool SaveX509CertTofile( + void* const i_pImplResource, + const char * const i_pcFileName ); + +/** + * Save the X.509Certificate in PEM format to the specified buffer + * and set the length of the certificate in the location referenced + * by o_pActualLength + */ +bool SaveX509CertToBuffer( + void* const i_pImplResource, + unsigned char * const i_pcBuffer, + int i_iBufferLength, + int * const o_pActualLength ); + +/** + * loads the X.509 certificate from i_pcFileName and keeps a reference to it + * via i_pImplResource + */ +bool LoadX509CertFromFile( + void* const i_pImplResource, + const char * const i_pcFileName ); + +/** + * load the X.509 certificate from i_pX509Buffer and keeps a reference to it + * via i_pImplResource + */ +bool LoadX509CertFromBuffer( + void* const i_pImplResource, + void* const i_pX509Cert, + int i_iLength); + +/** + * frees any resources allocated by <code>InitializeCertImpl</code> + */ +void FinalizeCertImpl( + void* i_pImplResource); + +/** + * print the X.509 certificate to stdout + */ +bool PrintX509Cert( void* const i_pImplResource ); + +/** + * initializes the implementation environment for a public or private key + * and returns an opague handle to any resources that should be freed + * when use of the key is complete. This handle is used + * on all subsequent calls that may need to access this resource. + */ +void * InitializePKeyImpl(); + +/** + * frees any resources allocated by <code>InitializePKeyImpl</code> + */ +void FinalizePKeyImpl( void * i_pPKeyImpl ); + +#ifdef KMSUSERPKCS12 +void *GetPKey( void *i_pImplResource); +void SetPKey( void *i_pImplResource, void *i_pPKey); +void *GetCert( void *i_pImplResource); +void SetCert( void *i_pImplResource, void *cert); +#endif + +/** + * Stores the private key in a memory buffer referenced by + * i_pcBuffer with the length of the key being stored in the area + * referenced by o_pActualLength. + * + */ +bool SavePrivateKeyToBuffer( + void * const i_pPKeyImpl, + unsigned char * const i_pcBuffer, + int i_iBufferLength, + int * const o_pActualLength, + const char * const i_pPassphrase, + int i_iFormat); + +/** + * load the private key into this object from the specified buffer + */ +bool LoadPrivateKeyFromBuffer( + void * const i_pPKeyImpl, + unsigned char * i_pcBuffer, + int i_iLength, + const char * const i_pPassphrase, + int i_iFormat); + +/** + * Stores the pubic key in a memory buffer referenced by + * i_pcBuffer with the length of the key being stored in the area + * referenced by o_pActualLength. + * + */ +bool SavePublicKeyToBuffer( + void * const i_pPKeyImpl, + unsigned char * const i_pcBuffer, + int i_iBufferLength, + int * const o_pActualLength, + int i_iFormat); + +/** + * load a public key into this object from the specified buffer + */ +bool LoadPublicKeyFromBuffer( + void * const i_pPKeyImpl, + unsigned char * i_pcBuffer, + int i_iLength, + int i_iFormat); + +/** + * encrypt the plaintext using RSA encryption with the RSA public + * key provided and return resulting cyphertext + */ +bool PublicKeyEncrypt (int i_iLength, + const unsigned char * const i_pcPlainText, + unsigned char * const o_pcCypherText, + int * const o_pActualLength, + void * i_pRSAPublicKey); + +#endif // K_KMSAgentPKIimpl_h + |