xref: /titanic_52/usr/src/lib/libcryptoutil/common/pkcserror.c (revision 4a5d661a82b942b6538acd26209d959ce98b593a)
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, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
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.
13  *
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]
19  *
20  * CDDL HEADER END
21  */
22 /*
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  */
27 
28 /*
29  * Block comment which describes the contents of this file.
30  */
31 
32 #include <stdio.h>
33 #include <security/cryptoki.h>
34 
35 /*
36  * pkcs11_strerror: returns a string representation of the given return code.
37  * The string returned is static pointer.  It doesn't need to be free'd
38  * by the caller.
39  */
40 char *
41 pkcs11_strerror(CK_RV rv)
42 {
43 	static char errstr[128];
44 
45 	switch (rv) {
46 		case CKR_OK:
47 			return ("CKR_OK");
48 		case CKR_CANCEL:
49 			return ("CKR_CANCEL");
50 		case CKR_HOST_MEMORY:
51 			return ("CKR_HOST_MEMORY");
52 		case CKR_SLOT_ID_INVALID:
53 			return ("CKR_SLOT_ID_INVALID");
54 		case CKR_GENERAL_ERROR:
55 			return ("CKR_GENERAL_ERROR");
56 		case CKR_FUNCTION_FAILED:
57 			return ("CKR_FUNCTION_FAILED");
58 		case CKR_ARGUMENTS_BAD:
59 			return ("CKR_ARGUMENTS_BAD");
60 		case CKR_NO_EVENT:
61 			return ("CKR_NO_EVENT");
62 		case CKR_NEED_TO_CREATE_THREADS:
63 			return ("CKR_NEED_TO_CREATE_THREADS");
64 		case CKR_CANT_LOCK:
65 			return ("CKR_CANT_LOCK");
66 		case CKR_ATTRIBUTE_READ_ONLY:
67 			return ("CKR_ATTRIBUTE_READ_ONLY");
68 		case CKR_ATTRIBUTE_SENSITIVE:
69 			return ("CKR_ATTRIBUTE_SENSITIVE");
70 		case CKR_ATTRIBUTE_TYPE_INVALID:
71 			return ("CKR_ATTRIBUTE_TYPE_INVALID");
72 		case CKR_ATTRIBUTE_VALUE_INVALID:
73 			return ("CKR_ATTRIBUTE_VALUE_INVALID");
74 		case CKR_DATA_INVALID:
75 			return ("CKR_DATA_INVALID");
76 		case CKR_DATA_LEN_RANGE:
77 			return ("CKR_DATA_LEN_RANGE");
78 		case CKR_DEVICE_ERROR:
79 			return ("CKR_DEVICE_ERROR");
80 		case CKR_DEVICE_MEMORY:
81 			return ("CKR_DEVICE_MEMORY");
82 		case CKR_DEVICE_REMOVED:
83 			return ("CKR_DEVICE_REMOVED");
84 		case CKR_ENCRYPTED_DATA_INVALID:
85 			return ("CKR_ENCRYPTED_DATA_INVALID");
86 		case CKR_ENCRYPTED_DATA_LEN_RANGE:
87 			return ("CKR_ENCRYPTED_DATA_LEN_RANGE");
88 		case CKR_FUNCTION_CANCELED:
89 			return ("CKR_FUNCTION_CANCELED");
90 		case CKR_FUNCTION_NOT_PARALLEL:
91 			return ("CKR_FUNCTION_NOT_PARALLEL");
92 		case CKR_FUNCTION_NOT_SUPPORTED:
93 			return ("CKR_FUNCTION_NOT_SUPPORTED");
94 		case CKR_KEY_HANDLE_INVALID:
95 			return ("CKR_KEY_HANDLE_INVALID");
96 		case CKR_KEY_SIZE_RANGE:
97 			return ("CKR_KEY_SIZE_RANGE");
98 		case CKR_KEY_TYPE_INCONSISTENT:
99 			return ("CKR_KEY_TYPE_INCONSISTENT");
100 		case CKR_KEY_NOT_NEEDED:
101 			return ("CKR_KEY_NOT_NEEDED");
102 		case CKR_KEY_CHANGED:
103 			return ("CKR_KEY_CHANGED");
104 		case CKR_KEY_NEEDED:
105 			return ("CKR_KEY_NEEDED");
106 		case CKR_KEY_INDIGESTIBLE:
107 			return ("CKR_KEY_INDIGESTIBLE");
108 		case CKR_KEY_FUNCTION_NOT_PERMITTED:
109 			return ("CKR_KEY_FUNCTION_NOT_PERMITTED");
110 		case CKR_KEY_NOT_WRAPPABLE:
111 			return ("CKR_KEY_NOT_WRAPPABLE");
112 		case CKR_KEY_UNEXTRACTABLE:
113 			return ("CKR_KEY_UNEXTRACTABLE");
114 		case CKR_MECHANISM_INVALID:
115 			return ("CKR_MECHANISM_INVALID");
116 		case CKR_MECHANISM_PARAM_INVALID:
117 			return ("CKR_MECHANISM_PARAM_INVALID");
118 		case CKR_OBJECT_HANDLE_INVALID:
119 			return ("CKR_OBJECT_HANDLE_INVALID");
120 		case CKR_OPERATION_ACTIVE:
121 			return ("CKR_OPERATION_ACTIVE");
122 		case CKR_OPERATION_NOT_INITIALIZED:
123 			return ("CKR_OPERATION_NOT_INITIALIZED");
124 		case CKR_PIN_INCORRECT:
125 			return ("CKR_PIN_INCORRECT");
126 		case CKR_PIN_INVALID:
127 			return ("CKR_PIN_INVALID");
128 		case CKR_PIN_LEN_RANGE:
129 			return ("CKR_PIN_LEN_RANGE");
130 		case CKR_PIN_EXPIRED:
131 			return ("CKR_PIN_EXPIRED");
132 		case CKR_PIN_LOCKED:
133 			return ("CKR_PIN_LOCKED");
134 		case CKR_SESSION_CLOSED:
135 			return ("CKR_SESSION_CLOSED");
136 		case CKR_SESSION_COUNT:
137 			return ("CKR_SESSION_COUNT");
138 		case CKR_SESSION_HANDLE_INVALID:
139 			return ("CKR_SESSION_HANDLE_INVALID");
140 		case CKR_SESSION_PARALLEL_NOT_SUPPORTED:
141 			return ("CKR_SESSION_PARALLEL_NOT_SUPPORTED");
142 		case CKR_SESSION_READ_ONLY:
143 			return ("CKR_SESSION_READ_ONLY");
144 		case CKR_SESSION_EXISTS:
145 			return ("CKR_SESSION_EXISTS");
146 		case CKR_SESSION_READ_ONLY_EXISTS:
147 			return ("CKR_SESSION_READ_ONLY_EXISTS");
148 		case CKR_SESSION_READ_WRITE_SO_EXISTS:
149 			return ("CKR_SESSION_READ_WRITE_SO_EXISTS");
150 		case CKR_SIGNATURE_INVALID:
151 			return ("CKR_SIGNATURE_INVALID");
152 		case CKR_SIGNATURE_LEN_RANGE:
153 			return ("CKR_SIGNATURE_LEN_RANGE");
154 		case CKR_TEMPLATE_INCOMPLETE:
155 			return ("CKR_TEMPLATE_INCOMPLETE");
156 		case CKR_TEMPLATE_INCONSISTENT:
157 			return ("CKR_TEMPLATE_INCONSISTENT");
158 		case CKR_TOKEN_NOT_PRESENT:
159 			return ("CKR_TOKEN_NOT_PRESENT");
160 		case CKR_TOKEN_NOT_RECOGNIZED:
161 			return ("CKR_TOKEN_NOT_RECOGNIZED");
162 		case CKR_TOKEN_WRITE_PROTECTED:
163 			return ("CKR_TOKEN_WRITE_PROTECTED");
164 		case CKR_UNWRAPPING_KEY_HANDLE_INVALID:
165 			return ("CKR_UNWRAPPING_KEY_HANDLE_INVALID");
166 		case CKR_UNWRAPPING_KEY_SIZE_RANGE:
167 			return ("CKR_UNWRAPPING_KEY_SIZE_RANGE");
168 		case CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT:
169 			return ("CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT");
170 		case CKR_USER_ALREADY_LOGGED_IN:
171 			return ("CKR_USER_ALREADY_LOGGED_IN");
172 		case CKR_USER_NOT_LOGGED_IN:
173 			return ("CKR_USER_NOT_LOGGED_IN");
174 		case CKR_USER_PIN_NOT_INITIALIZED:
175 			return ("CKR_USER_PIN_NOT_INITIALIZED");
176 		case CKR_USER_TYPE_INVALID:
177 			return ("CKR_USER_TYPE_INVALID");
178 		case CKR_USER_ANOTHER_ALREADY_LOGGED_IN:
179 			return ("CKR_USER_ANOTHER_ALREADY_LOGGED_IN");
180 		case CKR_USER_TOO_MANY_TYPES:
181 			return ("CKR_USER_TOO_MANY_TYPES");
182 		case CKR_WRAPPED_KEY_INVALID:
183 			return ("CKR_WRAPPED_KEY_INVALID");
184 		case CKR_WRAPPED_KEY_LEN_RANGE:
185 			return ("CKR_WRAPPED_KEY_LEN_RANGE");
186 		case CKR_WRAPPING_KEY_HANDLE_INVALID:
187 			return ("CKR_WRAPPING_KEY_HANDLE_INVALID");
188 		case CKR_WRAPPING_KEY_SIZE_RANGE:
189 			return ("CKR_WRAPPING_KEY_SIZE_RANGE");
190 		case CKR_WRAPPING_KEY_TYPE_INCONSISTENT:
191 			return ("CKR_WRAPPING_KEY_TYPE_INCONSISTENT");
192 		case CKR_RANDOM_SEED_NOT_SUPPORTED:
193 			return ("CKR_RANDOM_SEED_NOT_SUPPORTED");
194 		case CKR_RANDOM_NO_RNG:
195 			return ("CKR_RANDOM_NO_RNG");
196 		case CKR_DOMAIN_PARAMS_INVALID:
197 			return ("CKR_DOMAIN_PARAMS_INVALID");
198 		case CKR_BUFFER_TOO_SMALL:
199 			return ("CKR_BUFFER_TOO_SMALL");
200 		case CKR_SAVED_STATE_INVALID:
201 			return ("CKR_SAVED_STATE_INVALID");
202 		case CKR_INFORMATION_SENSITIVE:
203 			return ("CKR_INFORMATION_SENSITIVE");
204 		case CKR_STATE_UNSAVEABLE:
205 			return ("CKR_STATE_UNSAVEABLE");
206 		case CKR_CRYPTOKI_NOT_INITIALIZED:
207 			return ("CKR_CRYPTOKI_NOT_INITIALIZED");
208 		case CKR_CRYPTOKI_ALREADY_INITIALIZED:
209 			return ("CKR_CRYPTOKI_ALREADY_INITIALIZED");
210 		case CKR_MUTEX_BAD:
211 			return ("CKR_MUTEX_BAD");
212 		case CKR_MUTEX_NOT_LOCKED:
213 			return ("CKR_MUTEX_NOT_LOCKED");
214 		case CKR_VENDOR_DEFINED:
215 			return ("CKR_VENDOR_DEFINED");
216 		default:
217 			/* rv not found */
218 			(void) snprintf(errstr, sizeof (errstr),
219 			    "Unknown return code: 0x%lx", rv);
220 			return (errstr);
221 	}
222 }
223