Merge remote-tracking branch 'origin/master'
[unleashed/lotheac.git] / usr / src / lib / libcryptoutil / common / pkcserror.c
blobb2295491be1774c92b59ad80e1494f8a8918ca35
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 * Copyright 2012 Milan Jurik. All rights reserved.
26 * Copyright 2015 Jason King.
30 * Block comment which describes the contents of this file.
33 #include <stdio.h>
34 #include <security/cryptoki.h>
37 * pkcs11_strerror: returns a string representation of the given return code.
38 * The string returned is static pointer. It doesn't need to be free'd
39 * by the caller.
41 char *
42 pkcs11_strerror(CK_RV rv)
44 static char errstr[128];
46 switch (rv) {
47 case CKR_OK:
48 return ("CKR_OK");
49 case CKR_CANCEL:
50 return ("CKR_CANCEL");
51 case CKR_HOST_MEMORY:
52 return ("CKR_HOST_MEMORY");
53 case CKR_SLOT_ID_INVALID:
54 return ("CKR_SLOT_ID_INVALID");
55 case CKR_GENERAL_ERROR:
56 return ("CKR_GENERAL_ERROR");
57 case CKR_FUNCTION_FAILED:
58 return ("CKR_FUNCTION_FAILED");
59 case CKR_ARGUMENTS_BAD:
60 return ("CKR_ARGUMENTS_BAD");
61 case CKR_NO_EVENT:
62 return ("CKR_NO_EVENT");
63 case CKR_NEED_TO_CREATE_THREADS:
64 return ("CKR_NEED_TO_CREATE_THREADS");
65 case CKR_CANT_LOCK:
66 return ("CKR_CANT_LOCK");
67 case CKR_ATTRIBUTE_READ_ONLY:
68 return ("CKR_ATTRIBUTE_READ_ONLY");
69 case CKR_ATTRIBUTE_SENSITIVE:
70 return ("CKR_ATTRIBUTE_SENSITIVE");
71 case CKR_ATTRIBUTE_TYPE_INVALID:
72 return ("CKR_ATTRIBUTE_TYPE_INVALID");
73 case CKR_ATTRIBUTE_VALUE_INVALID:
74 return ("CKR_ATTRIBUTE_VALUE_INVALID");
75 case CKR_ACTION_PROHIBITED:
76 return ("CKR_ACTION_PROHIBITED");
77 case CKR_DATA_INVALID:
78 return ("CKR_DATA_INVALID");
79 case CKR_DATA_LEN_RANGE:
80 return ("CKR_DATA_LEN_RANGE");
81 case CKR_DEVICE_ERROR:
82 return ("CKR_DEVICE_ERROR");
83 case CKR_DEVICE_MEMORY:
84 return ("CKR_DEVICE_MEMORY");
85 case CKR_DEVICE_REMOVED:
86 return ("CKR_DEVICE_REMOVED");
87 case CKR_ENCRYPTED_DATA_INVALID:
88 return ("CKR_ENCRYPTED_DATA_INVALID");
89 case CKR_ENCRYPTED_DATA_LEN_RANGE:
90 return ("CKR_ENCRYPTED_DATA_LEN_RANGE");
91 case CKR_FUNCTION_CANCELED:
92 return ("CKR_FUNCTION_CANCELED");
93 case CKR_FUNCTION_NOT_PARALLEL:
94 return ("CKR_FUNCTION_NOT_PARALLEL");
95 case CKR_FUNCTION_NOT_SUPPORTED:
96 return ("CKR_FUNCTION_NOT_SUPPORTED");
97 case CKR_KEY_HANDLE_INVALID:
98 return ("CKR_KEY_HANDLE_INVALID");
99 case CKR_KEY_SIZE_RANGE:
100 return ("CKR_KEY_SIZE_RANGE");
101 case CKR_KEY_TYPE_INCONSISTENT:
102 return ("CKR_KEY_TYPE_INCONSISTENT");
103 case CKR_KEY_NOT_NEEDED:
104 return ("CKR_KEY_NOT_NEEDED");
105 case CKR_KEY_CHANGED:
106 return ("CKR_KEY_CHANGED");
107 case CKR_KEY_NEEDED:
108 return ("CKR_KEY_NEEDED");
109 case CKR_KEY_INDIGESTIBLE:
110 return ("CKR_KEY_INDIGESTIBLE");
111 case CKR_KEY_FUNCTION_NOT_PERMITTED:
112 return ("CKR_KEY_FUNCTION_NOT_PERMITTED");
113 case CKR_KEY_NOT_WRAPPABLE:
114 return ("CKR_KEY_NOT_WRAPPABLE");
115 case CKR_KEY_UNEXTRACTABLE:
116 return ("CKR_KEY_UNEXTRACTABLE");
117 case CKR_MECHANISM_INVALID:
118 return ("CKR_MECHANISM_INVALID");
119 case CKR_MECHANISM_PARAM_INVALID:
120 return ("CKR_MECHANISM_PARAM_INVALID");
121 case CKR_OBJECT_HANDLE_INVALID:
122 return ("CKR_OBJECT_HANDLE_INVALID");
123 case CKR_OPERATION_ACTIVE:
124 return ("CKR_OPERATION_ACTIVE");
125 case CKR_OPERATION_NOT_INITIALIZED:
126 return ("CKR_OPERATION_NOT_INITIALIZED");
127 case CKR_PIN_INCORRECT:
128 return ("CKR_PIN_INCORRECT");
129 case CKR_PIN_INVALID:
130 return ("CKR_PIN_INVALID");
131 case CKR_PIN_LEN_RANGE:
132 return ("CKR_PIN_LEN_RANGE");
133 case CKR_PIN_EXPIRED:
134 return ("CKR_PIN_EXPIRED");
135 case CKR_PIN_LOCKED:
136 return ("CKR_PIN_LOCKED");
137 case CKR_SESSION_CLOSED:
138 return ("CKR_SESSION_CLOSED");
139 case CKR_SESSION_COUNT:
140 return ("CKR_SESSION_COUNT");
141 case CKR_SESSION_HANDLE_INVALID:
142 return ("CKR_SESSION_HANDLE_INVALID");
143 case CKR_SESSION_PARALLEL_NOT_SUPPORTED:
144 return ("CKR_SESSION_PARALLEL_NOT_SUPPORTED");
145 case CKR_SESSION_READ_ONLY:
146 return ("CKR_SESSION_READ_ONLY");
147 case CKR_SESSION_EXISTS:
148 return ("CKR_SESSION_EXISTS");
149 case CKR_SESSION_READ_ONLY_EXISTS:
150 return ("CKR_SESSION_READ_ONLY_EXISTS");
151 case CKR_SESSION_READ_WRITE_SO_EXISTS:
152 return ("CKR_SESSION_READ_WRITE_SO_EXISTS");
153 case CKR_SIGNATURE_INVALID:
154 return ("CKR_SIGNATURE_INVALID");
155 case CKR_SIGNATURE_LEN_RANGE:
156 return ("CKR_SIGNATURE_LEN_RANGE");
157 case CKR_TEMPLATE_INCOMPLETE:
158 return ("CKR_TEMPLATE_INCOMPLETE");
159 case CKR_TEMPLATE_INCONSISTENT:
160 return ("CKR_TEMPLATE_INCONSISTENT");
161 case CKR_TOKEN_NOT_PRESENT:
162 return ("CKR_TOKEN_NOT_PRESENT");
163 case CKR_TOKEN_NOT_RECOGNIZED:
164 return ("CKR_TOKEN_NOT_RECOGNIZED");
165 case CKR_TOKEN_WRITE_PROTECTED:
166 return ("CKR_TOKEN_WRITE_PROTECTED");
167 case CKR_UNWRAPPING_KEY_HANDLE_INVALID:
168 return ("CKR_UNWRAPPING_KEY_HANDLE_INVALID");
169 case CKR_UNWRAPPING_KEY_SIZE_RANGE:
170 return ("CKR_UNWRAPPING_KEY_SIZE_RANGE");
171 case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT:
172 return ("CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT");
173 case CKR_USER_ALREADY_LOGGED_IN:
174 return ("CKR_USER_ALREADY_LOGGED_IN");
175 case CKR_USER_NOT_LOGGED_IN:
176 return ("CKR_USER_NOT_LOGGED_IN");
177 case CKR_USER_PIN_NOT_INITIALIZED:
178 return ("CKR_USER_PIN_NOT_INITIALIZED");
179 case CKR_USER_TYPE_INVALID:
180 return ("CKR_USER_TYPE_INVALID");
181 case CKR_USER_ANOTHER_ALREADY_LOGGED_IN:
182 return ("CKR_USER_ANOTHER_ALREADY_LOGGED_IN");
183 case CKR_USER_TOO_MANY_TYPES:
184 return ("CKR_USER_TOO_MANY_TYPES");
185 case CKR_WRAPPED_KEY_INVALID:
186 return ("CKR_WRAPPED_KEY_INVALID");
187 case CKR_WRAPPED_KEY_LEN_RANGE:
188 return ("CKR_WRAPPED_KEY_LEN_RANGE");
189 case CKR_WRAPPING_KEY_HANDLE_INVALID:
190 return ("CKR_WRAPPING_KEY_HANDLE_INVALID");
191 case CKR_WRAPPING_KEY_SIZE_RANGE:
192 return ("CKR_WRAPPING_KEY_SIZE_RANGE");
193 case CKR_WRAPPING_KEY_TYPE_INCONSISTENT:
194 return ("CKR_WRAPPING_KEY_TYPE_INCONSISTENT");
195 case CKR_RANDOM_SEED_NOT_SUPPORTED:
196 return ("CKR_RANDOM_SEED_NOT_SUPPORTED");
197 case CKR_RANDOM_NO_RNG:
198 return ("CKR_RANDOM_NO_RNG");
199 case CKR_DOMAIN_PARAMS_INVALID:
200 return ("CKR_DOMAIN_PARAMS_INVALID");
201 case CKR_CURVE_NOT_SUPPORTED:
202 return ("CLR_CURVE_NOT_SUPPORTED");
203 case CKR_BUFFER_TOO_SMALL:
204 return ("CKR_BUFFER_TOO_SMALL");
205 case CKR_SAVED_STATE_INVALID:
206 return ("CKR_SAVED_STATE_INVALID");
207 case CKR_INFORMATION_SENSITIVE:
208 return ("CKR_INFORMATION_SENSITIVE");
209 case CKR_STATE_UNSAVEABLE:
210 return ("CKR_STATE_UNSAVEABLE");
211 case CKR_CRYPTOKI_NOT_INITIALIZED:
212 return ("CKR_CRYPTOKI_NOT_INITIALIZED");
213 case CKR_CRYPTOKI_ALREADY_INITIALIZED:
214 return ("CKR_CRYPTOKI_ALREADY_INITIALIZED");
215 case CKR_MUTEX_BAD:
216 return ("CKR_MUTEX_BAD");
217 case CKR_MUTEX_NOT_LOCKED:
218 return ("CKR_MUTEX_NOT_LOCKED");
219 case CKR_NEW_PIN_MODE:
220 return ("CKR_NEW_PIN_MODE");
221 case CKR_NEXT_OTP:
222 return ("CKR_NEXT_OTP");
223 case CKR_EXCEEDED_MAX_ITERATIONS:
224 return ("CKR_EXCEEDED_MAX_ITERATIONS");
225 case CKR_FIPS_SELF_TEST_FAILED:
226 return ("CKR_FIPS_SELF_TEST_FAILED");
227 case CKR_LIBRARY_LOAD_FAILED:
228 return ("CKR_LIBRARY_LOAD_FAILED");
229 case CKR_PIN_TOO_WEAK:
230 return ("CKR_PIN_TOO_WEAK");
231 case CKR_PUBLIC_KEY_INVALID:
232 return ("CKR_PUBLIC_KEY_INVALID");
233 case CKR_FUNCTION_REJECTED:
234 return ("CKR_FUNCTION_REJECTED");
235 case CKR_VENDOR_DEFINED:
236 return ("CKR_VENDOR_DEFINED");
237 default:
238 /* rv not found */
239 (void) snprintf(errstr, sizeof (errstr),
240 "Unknown return code: 0x%lx", rv);
241 return (errstr);