summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h
diff options
context:
space:
mode:
authorJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
committerJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
commit04b244dd661c24b510ac22936decfc0972d202d3 (patch)
tree3ebfef98afc303fddf3415d6fba64e8682f495e8 /usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h
parenteac250589e41f1b705e1b7427b02b3379aac9f9e (diff)
parenta69187741b83640a90dd8586195456dd50c016a8 (diff)
downloadillumos-joyent-20120517.tar.gz
Merge git.joyent.com:illumos-joyent20120517
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h')
-rw-r--r--usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h293
1 files changed, 0 insertions, 293 deletions
diff --git a/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h b/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h
deleted file mode 100644
index b9ed831485..0000000000
--- a/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * 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 KMSAgentPKICommon.h
- *
- * X.509 Certificate and Private Key Support Interface
- *
- * This module provides simple interfaces to support SSL communication
- * for the KMS Agent enrollment protocol. Basic classes supporting
- * X.509 certificates, private key management are provided and hide
- * specific implementations from users of these classes.
- */
-/*-------------------------------------------------------------------------*/
-
-#ifndef K_KMSAgentPKICommon_h
-#define K_KMSAgentPKICommon_h
-
-#ifdef WIN32
-#pragma warning(disable: 4786)
-#endif
-
-#define MAX_CERT_SIZE 4096
-#define MAX_KEY_SIZE 4096
-
-#define DEFAULT_KEY_SIZE 2048
-
-#ifdef KMSUSERPKCS12
-enum EnumPKIFileFormat { FILE_FORMAT_DER, FILE_FORMAT_PEM, FILE_FORMAT_PKCS12 };
-#else
-enum EnumPKIFileFormat { FILE_FORMAT_DER, FILE_FORMAT_PEM };
-#endif
-
-/**
- * This class provides a simple interface for the management of
- * public keys. Simple load and store operations are provided for
- * storage and retrieval from memory buffers.
- */
-class CPublicKey
-{
-
-public:
-
- CPublicKey();
-
- /**
- * 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 Save(unsigned char * const i_pcBuffer,
- int i_iBufferLength,
- int * const o_pActualLength,
- int i_iFormat);
- /**
- * This method loads the public key from a buffer
- * @param i_pcBuffer
- * @param i_iLength
- * @param i_iFormat one of the enums from EnumPKIFileFormat,
- * only FILE_FORMAT_PEM is supported.
- * @return true for success, false otherwise
- */
- bool Load (unsigned char * const i_pcBuffer,
- int i_iLength,
- int i_iFormat);
-
- /**
- * use this object's public key to encrypt plaintext buffer
- */
- bool Encrypt (int i_iLength,
- const unsigned char * const i_pcPlainText,
- unsigned char * const o_pcCypherText,
- int * const o_pActualLength);
-
- ~CPublicKey();
-
-private:
- void *m_pPublicKeyImpl;
-};
-
-/**
- * This class provides a simple interface for the management of
- * private keys. Simple load and store operations are provided for
- * storage and retrieval from memory buffers.
- *
- */
-class CPrivateKey
-{
-
- public:
-
- CPrivateKey();
-
- /**
- * Saves the private key to a memory buffer specified by
- * i_pcBuffer. Currently just the PEM format is supported.
- * Specification of a passphrase allows encryption of the private
- * key subject to the choice of the implementation.
- *
- * @param[in] i_pcBuffer
- * @param[in] i_iBufferLength
- * @param[out] o_pActualLength
- * @param[in] i_pPassphrase optional, if non-null the private key is
- * wrapped using this passphrase
- * @param[in] i_iFormat one of the enums from EnumPKIFileFormat,
- * only FILE_FORMAT_PEM is supported.
- * @return true for success, false otherwise
- */
- bool Save( unsigned char * const i_pcBuffer,
- int i_iBufferLength,
- int * const o_pActualLength,
- const char * const i_pPassphrase,
- int i_iFormat );
-
- /**
- * This method loads the private key from a buffer
- * @param i_pcBuffer
- * @param i_iLength
- * @param i_pPassphrase optional, if non-null the private key is
- * unwrapped using this passphrase
- * @param i_iFormat one of the enums from EnumPKIFileFormat,
- * only FILE_FORMAT_PEM is supported.
- * @return true for success, false otherwise
- */
- bool Load(unsigned char * const i_pcBuffer,
- int i_iLength,
- const char * const i_pPassphrase,
- int i_iFormat);
-
- ~CPrivateKey();
-
-#ifdef KMSUSERPKCS12
- void *GetNative();
- void SetNative(void *);
-#endif
- private:
- void *m_pPKeyImpl;
-
-};
-
-/**
- * This class provides a simple interface for managing X.509
- * certificates providing only simple load and save operations for
- * storage and retrieval.
- *
- */
-class CCertificate
-{
-
-public:
- CCertificate();
-
- ~CCertificate();
-
- /**
- * save the certificate to the specified file name. Currently,
- * only FILE_FORMAT_PEM is supported.
- */
- bool Save( const char * const i_pcFileName,
- int i_iFormat);
-
- /**
- * save the certificate to the specified buffer. Currently, only
- * FILE_FORMAT_PEM is supported.
- */
- bool Save( unsigned char * const i_pcBuffer,
- int i_iBufferLength,
- int * const o_pActualLength,
- int i_iFormat);
-
- /**
- * load a certificate from the specified filename. Currently,
- * only FILE_FORMAT_PEM is supported.
- */
- bool Load( const char * const i_pcFileName,
- int i_iFormat );
-
- /**
- * load a certificate from the specified buffer. Currently, only
- * FILE_FORMAT_PEM is supported.
- */
- bool Load( unsigned char * const i_pcBuffer,
- int i_iLength,
- int i_iFormat );
-
- /**
- * prints the certificate to stdout
- */
- bool Dump();
-
-#ifdef KMSUSERPKCS12
- bool LoadPKCS12CertAndKey(char *filename,
- int i_iFormat,
- CPrivateKey *i_pPrivateKey,
- char *i_pPassphrase);
-
- bool SavePKCS12(
- unsigned char *i_pcBuffer,
- int i_iBufferLength,
- int *o_pActualLength,
- CPrivateKey* i_pPrivateKey,
- char* i_sPassphrase );
-#endif
-
-private:
- /**
- * an opague pointer to implementation specific resources to be
- * freed by the Destructor.
- */
- void *m_pCertImpl;
-#ifdef KMSUSERPKCS12
- /**
- * saves certificate to PKCS#12 memory BIO
- * @param i_pPrivateKey
- * @param i_sPassphrase
- * @return pointer to the Memory BIO
- */
- void* SaveCertToPKCS12MemoryBIO(
- CPrivateKey* i_pPrivateKey,
- char *i_sPassphrase);
-#endif
-
-};
-
-
-/**
- * This class provides a method for storing an X.509 certificate and
- * private key to a file. The private key is appended to the
- * certificate and optionally encrypted with the specified passphrase
- * for encoding and storage in PEM format.
- */
-class CPKI
-{
- public:
- CPKI();
- ~CPKI();
-
- public:
-
- /**
- * exports a certificate and associated private key to the
- * specified file.
- * @param i_pCertificate a pointer to an instance of a certificate
- * @param i_pPrivateKey a pointer to an instance of a private key
- * @param i_pcFileName the name of the file to store the cert and private key
- * @param i_sPassphrase optional but when provided supplies a
- * pass phrase to use for encrypting the private key. The cipher
- * used for encryption is determined by the underlying implementation
- * which for the reference implementation uses triple DES by default.
- * @param i_eFileFormat the encoding format to use for the certificate and private key
- */
- bool ExportCertAndKeyToFile(
- CCertificate* const i_pCertificate,
- CPrivateKey* const i_pPrivateKey,
- const char* const i_pcFileName,
- const char* const i_sPassphrase,
- EnumPKIFileFormat i_eFileFormat );
-
- private:
-
- int m_iKeyLength;
-
- CCertificate *m_pCACertificate;
- CPrivateKey *m_pCAPrivateKey;
- };
-
-#endif //K_KMSAgentPKICommon_h