Mercurial > illumos > illumos-gate
comparison usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp @ 12720:3db6e0082404
PSARC 2010/195 PKCS11 KMS Provider
6944296 Solaris needs a PKCS#11 provider to allow access to KMS keystore functionality
author | Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM> |
---|---|
date | Mon, 28 Jun 2010 16:04:11 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
12719:bd9fb35d09c2 | 12720:3db6e0082404 |
---|---|
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 /////////////////////////////////////////////////////////////////////////////////////// | |
38 CPublicKey::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 */ | |
54 bool 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 | |
66 bool 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 | |
76 bool 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 | |
84 CPublicKey::~CPublicKey() | |
85 { | |
86 if(m_pPublicKeyImpl != NULL) | |
87 { | |
88 FinalizePKeyImpl( m_pPublicKeyImpl ); | |
89 } | |
90 } | |
91 | |
92 /////////////////////////////////////////////////////////////////////////////////////// | |
93 // private key methods | |
94 /////////////////////////////////////////////////////////////////////////////////////// | |
95 | |
96 CPrivateKey::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 */ | |
108 bool 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 | |
122 bool 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 | |
134 CPrivateKey::~CPrivateKey() | |
135 { | |
136 if(m_pPKeyImpl != NULL) | |
137 { | |
138 FinalizePKeyImpl( m_pPKeyImpl ); | |
139 } | |
140 } | |
141 #ifdef KMSUSERPKCS12 | |
142 void | |
143 *CPrivateKey::GetNative() | |
144 { | |
145 return GetPKey(m_pPKeyImpl); | |
146 } | |
147 void | |
148 CPrivateKey::SetNative(void *pKey) | |
149 { | |
150 SetPKey(m_pPKeyImpl, pKey); | |
151 return; | |
152 } | |
153 #endif |