File Coverage

blib/lib/Crypt/PKCS11.pm
Criterion Covered Total %
statement 2404 2409 99.9
branch 53 84 66.6
condition 23 24 95.8
subroutine 786 787 99.8
pod 17 17 100.0
total 3283 3321 99.0


line stmt bran cond sub pod time code
1             # Copyright (c) 2015 Jerry Lundström
2             # Copyright (c) 2015 .SE (The Internet Infrastructure Foundation)
3             # All rights reserved.
4             #
5             # Redistribution and use in source and binary forms, with or without
6             # modification, are permitted provided that the following conditions
7             # are met:
8             # 1. Redistributions of source code must retain the above copyright
9             # notice, this list of conditions and the following disclaimer.
10             # 2. Redistributions in binary form must reproduce the above copyright
11             # notice, this list of conditions and the following disclaimer in the
12             # documentation and/or other materials provided with the distribution.
13             #
14             # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15             # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16             # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17             # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18             # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19             # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20             # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21             # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22             # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23             # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24             # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25              
26             package Crypt::PKCS11;
27              
28 6     6   130793 use 5.008000;
  6         23  
  6         331  
29 6     6   3603 use common::sense;
  6         50  
  6         28  
30 6     6   333 use Carp;
  6         13  
  6         568  
31              
32 6     6   35 use constant CRYPTOKI_VERSION_MAJOR => 2;
  6         8  
  6         615  
33 6     6   32 use constant CRYPTOKI_VERSION_MINOR => 30;
  6         10  
  6         267  
34 6     6   28 use constant CRYPTOKI_VERSION_AMENDMENT => 0;
  6         9  
  6         327  
35              
36             # constants since cryptoki v2.20.3
37              
38 6     6   29 use constant CK_TRUE => 1;
  6         7  
  6         276  
39 6     6   29 use constant CK_FALSE => 0;
  6         11  
  6         377  
40 6     6   29 use constant FALSE => CK_FALSE;
  6         11  
  6         370  
41 6     6   90 use constant TRUE => CK_TRUE;
  6         9  
  6         314  
42 6     6   28 use constant CK_UNAVAILABLE_INFORMATION => ~0;
  6         9  
  6         274  
43 6     6   27 use constant CK_EFFECTIVELY_INFINITE => 0;
  6         6  
  6         266  
44 6     6   31 use constant CK_INVALID_HANDLE => 0;
  6         8  
  6         263  
45 6     6   34 use constant CKN_SURRENDER => 0;
  6         5  
  6         287  
46 6     6   27 use constant CKN_OTP_CHANGED => 1;
  6         9  
  6         404  
47 6     6   29 use constant CKF_TOKEN_PRESENT => 0x00000001;
  6         8  
  6         268  
48 6     6   28 use constant CKF_REMOVABLE_DEVICE => 0x00000002;
  6         16  
  6         262  
49 6     6   34 use constant CKF_HW_SLOT => 0x00000004;
  6         8  
  6         297  
50 6     6   30 use constant CKF_RNG => 0x00000001;
  6         6  
  6         272  
51 6     6   26 use constant CKF_WRITE_PROTECTED => 0x00000002;
  6         7  
  6         261  
52 6     6   28 use constant CKF_LOGIN_REQUIRED => 0x00000004;
  6         8  
  6         319  
53 6     6   31 use constant CKF_USER_PIN_INITIALIZED => 0x00000008;
  6         7  
  6         274  
54 6     6   28 use constant CKF_RESTORE_KEY_NOT_NEEDED => 0x00000020;
  6         8  
  6         303  
55 6     6   29 use constant CKF_CLOCK_ON_TOKEN => 0x00000040;
  6         7  
  6         268  
56 6     6   30 use constant CKF_PROTECTED_AUTHENTICATION_PATH => 0x00000100;
  6         8  
  6         301  
57 6     6   35 use constant CKF_DUAL_CRYPTO_OPERATIONS => 0x00000200;
  6         22  
  6         264  
58 6     6   25 use constant CKF_TOKEN_INITIALIZED => 0x00000400;
  6         9  
  6         402  
59 6     6   30 use constant CKF_SECONDARY_AUTHENTICATION => 0x00000800;
  6         7  
  6         269  
60 6     6   27 use constant CKF_USER_PIN_COUNT_LOW => 0x00010000;
  6         8  
  6         278  
61 6     6   29 use constant CKF_USER_PIN_FINAL_TRY => 0x00020000;
  6         11  
  6         283  
62 6     6   30 use constant CKF_USER_PIN_LOCKED => 0x00040000;
  6         99  
  6         344  
63 6     6   35 use constant CKF_USER_PIN_TO_BE_CHANGED => 0x00080000;
  6         7  
  6         301  
64 6     6   31 use constant CKF_SO_PIN_COUNT_LOW => 0x00100000;
  6         9  
  6         346  
65 6     6   32 use constant CKF_SO_PIN_FINAL_TRY => 0x00200000;
  6         7  
  6         271  
66 6     6   28 use constant CKF_SO_PIN_LOCKED => 0x00400000;
  6         25  
  6         259  
67 6     6   26 use constant CKF_SO_PIN_TO_BE_CHANGED => 0x00800000;
  6         18  
  6         266  
68 6     6   28 use constant CKU_SO => 0;
  6         6  
  6         243  
69 6     6   27 use constant CKU_USER => 1;
  6         6  
  6         271  
70 6     6   26 use constant CKU_CONTEXT_SPECIFIC => 2;
  6         46  
  6         425  
71 6     6   30 use constant CKS_RO_PUBLIC_SESSION => 0;
  6         8  
  6         311  
72 6     6   34 use constant CKS_RO_USER_FUNCTIONS => 1;
  6         9  
  6         302  
73 6     6   29 use constant CKS_RW_PUBLIC_SESSION => 2;
  6         6  
  6         571  
74 6     6   32 use constant CKS_RW_USER_FUNCTIONS => 3;
  6         15  
  6         465  
75 6     6   39 use constant CKS_RW_SO_FUNCTIONS => 4;
  6         9  
  6         316  
76 6     6   32 use constant CKF_RW_SESSION => 0x00000002;
  6         7  
  6         275  
77 6     6   27 use constant CKF_SERIAL_SESSION => 0x00000004;
  6         12  
  6         267  
78 6     6   26 use constant CKO_DATA => 0x00000000;
  6         7  
  6         458  
79 6     6   30 use constant CKO_CERTIFICATE => 0x00000001;
  6         8  
  6         269  
80 6     6   29 use constant CKO_PUBLIC_KEY => 0x00000002;
  6         25  
  6         275  
81 6     6   27 use constant CKO_PRIVATE_KEY => 0x00000003;
  6         29  
  6         260  
82 6     6   27 use constant CKO_SECRET_KEY => 0x00000004;
  6         9  
  6         274  
83 6     6   33 use constant CKO_HW_FEATURE => 0x00000005;
  6         8  
  6         279  
84 6     6   29 use constant CKO_DOMAIN_PARAMETERS => 0x00000006;
  6         8  
  6         282  
85 6     6   28 use constant CKO_MECHANISM => 0x00000007;
  6         9  
  6         272  
86 6     6   50 use constant CKO_OTP_KEY => 0x00000008;
  6         16  
  6         294  
87 6     6   26 use constant CKO_VENDOR_DEFINED => 0x80000000;
  6         9  
  6         271  
88 6     6   26 use constant CKH_MONOTONIC_COUNTER => 0x00000001;
  6         12  
  6         347  
89 6     6   91 use constant CKH_CLOCK => 0x00000002;
  6         9  
  6         449  
90 6     6   30 use constant CKH_USER_INTERFACE => 0x00000003;
  6         7  
  6         268  
91 6     6   26 use constant CKH_VENDOR_DEFINED => 0x80000000;
  6         7  
  6         268  
92 6     6   32 use constant CKK_RSA => 0x00000000;
  6         8  
  6         289  
93 6     6   27 use constant CKK_DSA => 0x00000001;
  6         7  
  6         356  
94 6     6   34 use constant CKK_DH => 0x00000002;
  6         7  
  6         360  
95 6     6   39 use constant CKK_ECDSA => 0x00000003;
  6         8  
  6         347  
96 6     6   31 use constant CKK_EC => 0x00000003;
  6         10  
  6         350  
97 6     6   33 use constant CKK_X9_42_DH => 0x00000004;
  6         7  
  6         405  
98 6     6   35 use constant CKK_KEA => 0x00000005;
  6         8  
  6         320  
99 6     6   29 use constant CKK_GENERIC_SECRET => 0x00000010;
  6         6  
  6         283  
100 6     6   28 use constant CKK_RC2 => 0x00000011;
  6         10  
  6         418  
101 6     6   29 use constant CKK_RC4 => 0x00000012;
  6         8  
  6         285  
102 6     6   32 use constant CKK_DES => 0x00000013;
  6         9  
  6         346  
103 6     6   32 use constant CKK_DES2 => 0x00000014;
  6         18  
  6         300  
104 6     6   29 use constant CKK_DES3 => 0x00000015;
  6         8  
  6         272  
105 6     6   201 use constant CKK_CAST => 0x00000016;
  6         15  
  6         308  
106 6     6   28 use constant CKK_CAST3 => 0x00000017;
  6         9  
  6         263  
107 6     6   28 use constant CKK_CAST5 => 0x00000018;
  6         9  
  6         959  
108 6     6   36 use constant CKK_CAST128 => 0x00000018;
  6         11  
  6         313  
109 6     6   56 use constant CKK_RC5 => 0x00000019;
  6         10  
  6         281  
110 6     6   30 use constant CKK_IDEA => 0x0000001A;
  6         9  
  6         300  
111 6     6   28 use constant CKK_SKIPJACK => 0x0000001B;
  6         8  
  6         278  
112 6     6   26 use constant CKK_BATON => 0x0000001C;
  6         6  
  6         266  
113 6     6   31 use constant CKK_JUNIPER => 0x0000001D;
  6         7  
  6         296  
114 6     6   44 use constant CKK_CDMF => 0x0000001E;
  6         7  
  6         260  
115 6     6   36 use constant CKK_AES => 0x0000001F;
  6         14  
  6         257  
116 6     6   25 use constant CKK_BLOWFISH => 0x00000020;
  6         7  
  6         256  
117 6     6   26 use constant CKK_TWOFISH => 0x00000021;
  6         9  
  6         268  
118 6     6   29 use constant CKK_SECURID => 0x00000022;
  6         15  
  6         303  
119 6     6   29 use constant CKK_HOTP => 0x00000023;
  6         8  
  6         486  
120 6     6   32 use constant CKK_ACTI => 0x00000024;
  6         12  
  6         327  
121 6     6   32 use constant CKK_CAMELLIA => 0x00000025;
  6         8  
  6         268  
122 6     6   28 use constant CKK_ARIA => 0x00000026;
  6         10  
  6         246  
123 6     6   26 use constant CKK_VENDOR_DEFINED => 0x80000000;
  6         8  
  6         318  
124 6     6   36 use constant CKC_X_509 => 0x00000000;
  6         10  
  6         268  
125 6     6   33 use constant CKC_X_509_ATTR_CERT => 0x00000001;
  6         7  
  6         259  
126 6     6   30 use constant CKC_WTLS => 0x00000002;
  6         8  
  6         287  
127 6     6   27 use constant CKC_VENDOR_DEFINED => 0x80000000;
  6         11  
  6         262  
128 6     6   33 use constant CKF_ARRAY_ATTRIBUTE => 0x40000000;
  6         7  
  6         266  
129 6     6   29 use constant CK_OTP_FORMAT_DECIMAL => 0;
  6         8  
  6         487  
130 6     6   31 use constant CK_OTP_FORMAT_HEXADECIMAL => 1;
  6         6  
  6         269  
131 6     6   28 use constant CK_OTP_FORMAT_ALPHANUMERIC => 2;
  6         19  
  6         264  
132 6     6   26 use constant CK_OTP_FORMAT_BINARY => 3;
  6         7  
  6         307  
133 6     6   33 use constant CK_OTP_PARAM_IGNORED => 0;
  6         9  
  6         314  
134 6     6   30 use constant CK_OTP_PARAM_OPTIONAL => 1;
  6         9  
  6         440  
135 6     6   30 use constant CK_OTP_PARAM_MANDATORY => 2;
  6         9  
  6         280  
136 6     6   27 use constant CKA_CLASS => 0x00000000;
  6         21  
  6         283  
137 6     6   35 use constant CKA_TOKEN => 0x00000001;
  6         11  
  6         299  
138 6     6   27 use constant CKA_PRIVATE => 0x00000002;
  6         7  
  6         418  
139 6     6   40 use constant CKA_LABEL => 0x00000003;
  6         13  
  6         271  
140 6     6   28 use constant CKA_APPLICATION => 0x00000010;
  6         7  
  6         274  
141 6     6   26 use constant CKA_VALUE => 0x00000011;
  6         11  
  6         284  
142 6     6   27 use constant CKA_OBJECT_ID => 0x00000012;
  6         10  
  6         299  
143 6     6   34 use constant CKA_CERTIFICATE_TYPE => 0x00000080;
  6         8  
  6         287  
144 6     6   31 use constant CKA_ISSUER => 0x00000081;
  6         7  
  6         276  
145 6     6   33 use constant CKA_SERIAL_NUMBER => 0x00000082;
  6         6  
  6         275  
146 6     6   26 use constant CKA_AC_ISSUER => 0x00000083;
  6         8  
  6         240  
147 6     6   26 use constant CKA_OWNER => 0x00000084;
  6         15  
  6         407  
148 6     6   144 use constant CKA_ATTR_TYPES => 0x00000085;
  6         12  
  6         270  
149 6     6   30 use constant CKA_TRUSTED => 0x00000086;
  6         6  
  6         423  
150 6     6   32 use constant CKA_CERTIFICATE_CATEGORY => 0x00000087;
  6         8  
  6         263  
151 6     6   27 use constant CKA_JAVA_MIDP_SECURITY_DOMAIN => 0x00000088;
  6         9  
  6         291  
152 6     6   31 use constant CKA_URL => 0x00000089;
  6         7  
  6         620  
153 6     6   73 use constant CKA_HASH_OF_SUBJECT_PUBLIC_KEY => 0x0000008A;
  6         8  
  6         300  
154 6     6   26 use constant CKA_HASH_OF_ISSUER_PUBLIC_KEY => 0x0000008B;
  6         9  
  6         278  
155 6     6   26 use constant CKA_CHECK_VALUE => 0x00000090;
  6         10  
  6         319  
156 6     6   32 use constant CKA_KEY_TYPE => 0x00000100;
  6         10  
  6         304  
157 6     6   44 use constant CKA_SUBJECT => 0x00000101;
  6         9  
  6         672  
158 6     6   37 use constant CKA_ID => 0x00000102;
  6         9  
  6         356  
159 6     6   30 use constant CKA_SENSITIVE => 0x00000103;
  6         7  
  6         250  
160 6     6   30 use constant CKA_ENCRYPT => 0x00000104;
  6         10  
  6         277  
161 6     6   34 use constant CKA_DECRYPT => 0x00000105;
  6         8  
  6         303  
162 6     6   38 use constant CKA_WRAP => 0x00000106;
  6         11  
  6         263  
163 6     6   29 use constant CKA_UNWRAP => 0x00000107;
  6         9  
  6         493  
164 6     6   32 use constant CKA_SIGN => 0x00000108;
  6         16  
  6         384  
165 6     6   52 use constant CKA_SIGN_RECOVER => 0x00000109;
  6         12  
  6         302  
166 6     6   30 use constant CKA_VERIFY => 0x0000010A;
  6         9  
  6         2614  
167 6     6   88 use constant CKA_VERIFY_RECOVER => 0x0000010B;
  6         8  
  6         1778  
168 6     6   33 use constant CKA_DERIVE => 0x0000010C;
  6         8  
  6         309  
169 6     6   32 use constant CKA_START_DATE => 0x00000110;
  6         8  
  6         269  
170 6     6   772 use constant CKA_END_DATE => 0x00000111;
  6         9  
  6         425  
171 6     6   33 use constant CKA_MODULUS => 0x00000120;
  6         9  
  6         286  
172 6     6   31 use constant CKA_MODULUS_BITS => 0x00000121;
  6         9  
  6         276  
173 6     6   28 use constant CKA_PUBLIC_EXPONENT => 0x00000122;
  6         6  
  6         260  
174 6     6   26 use constant CKA_PRIVATE_EXPONENT => 0x00000123;
  6         8  
  6         249  
175 6     6   71 use constant CKA_PRIME_1 => 0x00000124;
  6         7  
  6         266  
176 6     6   27 use constant CKA_PRIME_2 => 0x00000125;
  6         8  
  6         246  
177 6     6   27 use constant CKA_EXPONENT_1 => 0x00000126;
  6         8  
  6         259  
178 6     6   27 use constant CKA_EXPONENT_2 => 0x00000127;
  6         8  
  6         275  
179 6     6   31 use constant CKA_COEFFICIENT => 0x00000128;
  6         8  
  6         267  
180 6     6   55 use constant CKA_PRIME => 0x00000130;
  6         7  
  6         288  
181 6     6   29 use constant CKA_SUBPRIME => 0x00000131;
  6         11  
  6         403  
182 6     6   31 use constant CKA_BASE => 0x00000132;
  6         9  
  6         284  
183 6     6   27 use constant CKA_PRIME_BITS => 0x00000133;
  6         9  
  6         275  
184 6     6   39 use constant CKA_SUBPRIME_BITS => 0x00000134;
  6         16  
  6         757  
185 6     6   29 use constant CKA_SUB_PRIME_BITS => CKA_SUBPRIME_BITS;
  6         8  
  6         318  
186 6     6   34 use constant CKA_VALUE_BITS => 0x00000160;
  6         9  
  6         309  
187 6     6   31 use constant CKA_VALUE_LEN => 0x00000161;
  6         6  
  6         310  
188 6     6   28 use constant CKA_EXTRACTABLE => 0x00000162;
  6         8  
  6         280  
189 6     6   30 use constant CKA_LOCAL => 0x00000163;
  6         8  
  6         270  
190 6     6   27 use constant CKA_NEVER_EXTRACTABLE => 0x00000164;
  6         387  
  6         309  
191 6     6   29 use constant CKA_ALWAYS_SENSITIVE => 0x00000165;
  6         5  
  6         600  
192 6     6   30 use constant CKA_KEY_GEN_MECHANISM => 0x00000166;
  6         7  
  6         383  
193 6     6   30 use constant CKA_MODIFIABLE => 0x00000170;
  6         5  
  6         308  
194 6     6   31 use constant CKA_ECDSA_PARAMS => 0x00000180;
  6         52  
  6         305  
195 6     6   27 use constant CKA_EC_PARAMS => 0x00000180;
  6         6  
  6         279  
196 6     6   26 use constant CKA_EC_POINT => 0x00000181;
  6         6  
  6         239  
197 6     6   26 use constant CKA_SECONDARY_AUTH => 0x00000200;
  6         11  
  6         291  
198 6     6   26 use constant CKA_AUTH_PIN_FLAGS => 0x00000201;
  6         6  
  6         326  
199 6     6   28 use constant CKA_ALWAYS_AUTHENTICATE => 0x00000202;
  6         5  
  6         450  
200 6     6   32 use constant CKA_WRAP_WITH_TRUSTED => 0x00000210;
  6         6  
  6         511  
201 6     6   40 use constant CKA_WRAP_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000211);
  6         8  
  6         501  
202 6     6   36 use constant CKA_UNWRAP_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000212);
  6         8  
  6         324  
203 6     6   46 use constant CKA_OTP_FORMAT => 0x00000220;
  6         14  
  6         319  
204 6     6   30 use constant CKA_OTP_LENGTH => 0x00000221;
  6         12  
  6         334  
205 6     6   36 use constant CKA_OTP_TIME_INTERVAL => 0x00000222;
  6         7  
  6         327  
206 6     6   32 use constant CKA_OTP_USER_FRIENDLY_MODE => 0x00000223;
  6         7  
  6         327  
207 6     6   31 use constant CKA_OTP_CHALLENGE_REQUIREMENT => 0x00000224;
  6         6  
  6         310  
208 6     6   31 use constant CKA_OTP_TIME_REQUIREMENT => 0x00000225;
  6         7  
  6         298  
209 6     6   30 use constant CKA_OTP_COUNTER_REQUIREMENT => 0x00000226;
  6         6  
  6         443  
210 6     6   29 use constant CKA_OTP_PIN_REQUIREMENT => 0x00000227;
  6         7  
  6         298  
211 6     6   31 use constant CKA_OTP_COUNTER => 0x0000022E;
  6         10  
  6         330  
212 6     6   28 use constant CKA_OTP_TIME => 0x0000022F;
  6         6  
  6         285  
213 6     6   28 use constant CKA_OTP_USER_IDENTIFIER => 0x0000022A;
  6         9  
  6         270  
214 6     6   29 use constant CKA_OTP_SERVICE_IDENTIFIER => 0x0000022B;
  6         6  
  6         304  
215 6     6   31 use constant CKA_OTP_SERVICE_LOGO => 0x0000022C;
  6         6  
  6         554  
216 6     6   34 use constant CKA_OTP_SERVICE_LOGO_TYPE => 0x0000022D;
  6         9  
  6         279  
217 6     6   28 use constant CKA_HW_FEATURE_TYPE => 0x00000300;
  6         10  
  6         583  
218 6     6   40 use constant CKA_RESET_ON_INIT => 0x00000301;
  6         16  
  6         352  
219 6     6   40 use constant CKA_HAS_RESET => 0x00000302;
  6         14  
  6         279  
220 6     6   28 use constant CKA_PIXEL_X => 0x00000400;
  6         10  
  6         259  
221 6     6   26 use constant CKA_PIXEL_Y => 0x00000401;
  6         8  
  6         241  
222 6     6   26 use constant CKA_RESOLUTION => 0x00000402;
  6         6  
  6         256  
223 6     6   27 use constant CKA_CHAR_ROWS => 0x00000403;
  6         6  
  6         296  
224 6     6   29 use constant CKA_CHAR_COLUMNS => 0x00000404;
  6         9  
  6         273  
225 6     6   30 use constant CKA_COLOR => 0x00000405;
  6         7  
  6         290  
226 6     6   28 use constant CKA_BITS_PER_PIXEL => 0x00000406;
  6         22  
  6         328  
227 6     6   34 use constant CKA_CHAR_SETS => 0x00000480;
  6         20  
  6         430  
228 6     6   35 use constant CKA_ENCODING_METHODS => 0x00000481;
  6         9  
  6         359  
229 6     6   29 use constant CKA_MIME_TYPES => 0x00000482;
  6         8  
  6         307  
230 6     6   30 use constant CKA_MECHANISM_TYPE => 0x00000500;
  6         7  
  6         305  
231 6     6   32 use constant CKA_REQUIRED_CMS_ATTRIBUTES => 0x00000501;
  6         7  
  6         294  
232 6     6   28 use constant CKA_DEFAULT_CMS_ATTRIBUTES => 0x00000502;
  6         18  
  6         279  
233 6     6   30 use constant CKA_SUPPORTED_CMS_ATTRIBUTES => 0x00000503;
  6         6  
  6         495  
234 6     6   33 use constant CKA_ALLOWED_MECHANISMS => (CKF_ARRAY_ATTRIBUTE|0x00000600);
  6         6  
  6         290  
235 6     6   29 use constant CKA_VENDOR_DEFINED => 0x80000000;
  6         10  
  6         285  
236 6     6   30 use constant CKM_RSA_PKCS_KEY_PAIR_GEN => 0x00000000;
  6         11  
  6         286  
237 6     6   28 use constant CKM_RSA_PKCS => 0x00000001;
  6         17  
  6         283  
238 6     6   171 use constant CKM_RSA_9796 => 0x00000002;
  6         10  
  6         289  
239 6     6   65 use constant CKM_RSA_X_509 => 0x00000003;
  6         8  
  6         312  
240 6     6   37 use constant CKM_MD2_RSA_PKCS => 0x00000004;
  6         13  
  6         312  
241 6     6   34 use constant CKM_MD5_RSA_PKCS => 0x00000005;
  6         9  
  6         361  
242 6     6   34 use constant CKM_SHA1_RSA_PKCS => 0x00000006;
  6         8  
  6         315  
243 6     6   34 use constant CKM_RIPEMD128_RSA_PKCS => 0x00000007;
  6         13  
  6         318  
244 6     6   36 use constant CKM_RIPEMD160_RSA_PKCS => 0x00000008;
  6         7  
  6         336  
245 6     6   36 use constant CKM_RSA_PKCS_OAEP => 0x00000009;
  6         10  
  6         298  
246 6     6   32 use constant CKM_RSA_X9_31_KEY_PAIR_GEN => 0x0000000A;
  6         10  
  6         325  
247 6     6   33 use constant CKM_RSA_X9_31 => 0x0000000B;
  6         8  
  6         322  
248 6     6   31 use constant CKM_SHA1_RSA_X9_31 => 0x0000000C;
  6         9  
  6         294  
249 6     6   31 use constant CKM_RSA_PKCS_PSS => 0x0000000D;
  6         25  
  6         459  
250 6     6   571 use constant CKM_SHA1_RSA_PKCS_PSS => 0x0000000E;
  6         11  
  6         337  
251 6     6   36 use constant CKM_DSA_KEY_PAIR_GEN => 0x00000010;
  6         8  
  6         276  
252 6     6   32 use constant CKM_DSA => 0x00000011;
  6         7  
  6         259  
253 6     6   27 use constant CKM_DSA_SHA1 => 0x00000012;
  6         10  
  6         554  
254 6     6   27 use constant CKM_DH_PKCS_KEY_PAIR_GEN => 0x00000020;
  6         12  
  6         293  
255 6     6   28 use constant CKM_DH_PKCS_DERIVE => 0x00000021;
  6         7  
  6         321  
256 6     6   36 use constant CKM_X9_42_DH_KEY_PAIR_GEN => 0x00000030;
  6         14  
  6         339  
257 6     6   33 use constant CKM_X9_42_DH_DERIVE => 0x00000031;
  6         9  
  6         319  
258 6     6   35 use constant CKM_X9_42_DH_HYBRID_DERIVE => 0x00000032;
  6         8  
  6         282  
259 6     6   28 use constant CKM_X9_42_MQV_DERIVE => 0x00000033;
  6         9  
  6         282  
260 6     6   28 use constant CKM_SHA256_RSA_PKCS => 0x00000040;
  6         9  
  6         292  
261 6     6   45 use constant CKM_SHA384_RSA_PKCS => 0x00000041;
  6         10  
  6         299  
262 6     6   38 use constant CKM_SHA512_RSA_PKCS => 0x00000042;
  6         8  
  6         264  
263 6     6   33 use constant CKM_SHA256_RSA_PKCS_PSS => 0x00000043;
  6         8  
  6         282  
264 6     6   34 use constant CKM_SHA384_RSA_PKCS_PSS => 0x00000044;
  6         18  
  6         312  
265 6     6   30 use constant CKM_SHA512_RSA_PKCS_PSS => 0x00000045;
  6         11  
  6         382  
266 6     6   34 use constant CKM_SHA224_RSA_PKCS => 0x00000046;
  6         9  
  6         319  
267 6     6   37 use constant CKM_SHA224_RSA_PKCS_PSS => 0x00000047;
  6         6  
  6         280  
268 6     6   31 use constant CKM_RC2_KEY_GEN => 0x00000100;
  6         8  
  6         276  
269 6     6   26 use constant CKM_RC2_ECB => 0x00000101;
  6         8  
  6         333  
270 6     6   28 use constant CKM_RC2_CBC => 0x00000102;
  6         9  
  6         265  
271 6     6   33 use constant CKM_RC2_MAC => 0x00000103;
  6         7  
  6         257  
272 6     6   29 use constant CKM_RC2_MAC_GENERAL => 0x00000104;
  6         6  
  6         278  
273 6     6   29 use constant CKM_RC2_CBC_PAD => 0x00000105;
  6         7  
  6         297  
274 6     6   32 use constant CKM_RC4_KEY_GEN => 0x00000110;
  6         9  
  6         428  
275 6     6   55 use constant CKM_RC4 => 0x00000111;
  6         16  
  6         367  
276 6     6   34 use constant CKM_DES_KEY_GEN => 0x00000120;
  6         9  
  6         377  
277 6     6   40 use constant CKM_DES_ECB => 0x00000121;
  6         9  
  6         298  
278 6     6   34 use constant CKM_DES_CBC => 0x00000122;
  6         10  
  6         382  
279 6     6   38 use constant CKM_DES_MAC => 0x00000123;
  6         13  
  6         394  
280 6     6   42 use constant CKM_DES_MAC_GENERAL => 0x00000124;
  6         11  
  6         689  
281 6     6   41 use constant CKM_DES_CBC_PAD => 0x00000125;
  6         9  
  6         356  
282 6     6   36 use constant CKM_DES2_KEY_GEN => 0x00000130;
  6         7  
  6         329  
283 6     6   40 use constant CKM_DES3_KEY_GEN => 0x00000131;
  6         14  
  6         341  
284 6     6   34 use constant CKM_DES3_ECB => 0x00000132;
  6         9  
  6         297  
285 6     6   33 use constant CKM_DES3_CBC => 0x00000133;
  6         8  
  6         287  
286 6     6   33 use constant CKM_DES3_MAC => 0x00000134;
  6         14  
  6         449  
287 6     6   32 use constant CKM_DES3_MAC_GENERAL => 0x00000135;
  6         14  
  6         531  
288 6     6   35 use constant CKM_DES3_CBC_PAD => 0x00000136;
  6         11  
  6         345  
289 6     6   29 use constant CKM_CDMF_KEY_GEN => 0x00000140;
  6         8  
  6         285  
290 6     6   28 use constant CKM_CDMF_ECB => 0x00000141;
  6         8  
  6         263  
291 6     6   32 use constant CKM_CDMF_CBC => 0x00000142;
  6         10  
  6         354  
292 6     6   30 use constant CKM_CDMF_MAC => 0x00000143;
  6         11  
  6         280  
293 6     6   40 use constant CKM_CDMF_MAC_GENERAL => 0x00000144;
  6         7  
  6         293  
294 6     6   44 use constant CKM_CDMF_CBC_PAD => 0x00000145;
  6         13  
  6         304  
295 6     6   32 use constant CKM_DES_OFB64 => 0x00000150;
  6         9  
  6         308  
296 6     6   37 use constant CKM_DES_OFB8 => 0x00000151;
  6         10  
  6         302  
297 6     6   32 use constant CKM_DES_CFB64 => 0x00000152;
  6         8  
  6         301  
298 6     6   43 use constant CKM_DES_CFB8 => 0x00000153;
  6         8  
  6         299  
299 6     6   38 use constant CKM_MD2 => 0x00000200;
  6         9  
  6         317  
300 6     6   31 use constant CKM_MD2_HMAC => 0x00000201;
  6         9  
  6         352  
301 6     6   114 use constant CKM_MD2_HMAC_GENERAL => 0x00000202;
  6         15  
  6         346  
302 6     6   35 use constant CKM_MD5 => 0x00000210;
  6         9  
  6         304  
303 6     6   42 use constant CKM_MD5_HMAC => 0x00000211;
  6         17  
  6         322  
304 6     6   36 use constant CKM_MD5_HMAC_GENERAL => 0x00000212;
  6         9  
  6         319  
305 6     6   34 use constant CKM_SHA_1 => 0x00000220;
  6         7  
  6         281  
306 6     6   31 use constant CKM_SHA_1_HMAC => 0x00000221;
  6         8  
  6         314  
307 6     6   35 use constant CKM_SHA_1_HMAC_GENERAL => 0x00000222;
  6         13  
  6         314  
308 6     6   37 use constant CKM_RIPEMD128 => 0x00000230;
  6         7  
  6         313  
309 6     6   31 use constant CKM_RIPEMD128_HMAC => 0x00000231;
  6         9  
  6         316  
310 6     6   30 use constant CKM_RIPEMD128_HMAC_GENERAL => 0x00000232;
  6         14  
  6         309  
311 6     6   33 use constant CKM_RIPEMD160 => 0x00000240;
  6         7  
  6         297  
312 6     6   35 use constant CKM_RIPEMD160_HMAC => 0x00000241;
  6         7  
  6         430  
313 6     6   38 use constant CKM_RIPEMD160_HMAC_GENERAL => 0x00000242;
  6         12  
  6         313  
314 6     6   76 use constant CKM_SHA256 => 0x00000250;
  6         20  
  6         350  
315 6     6   43 use constant CKM_SHA256_HMAC => 0x00000251;
  6         9  
  6         335  
316 6     6   35 use constant CKM_SHA256_HMAC_GENERAL => 0x00000252;
  6         10  
  6         329  
317 6     6   39 use constant CKM_SHA224 => 0x00000255;
  6         9  
  6         327  
318 6     6   33 use constant CKM_SHA224_HMAC => 0x00000256;
  6         10  
  6         309  
319 6     6   32 use constant CKM_SHA224_HMAC_GENERAL => 0x00000257;
  6         9  
  6         265  
320 6     6   30 use constant CKM_SHA384 => 0x00000260;
  6         8  
  6         276  
321 6     6   31 use constant CKM_SHA384_HMAC => 0x00000261;
  6         9  
  6         280  
322 6     6   32 use constant CKM_SHA384_HMAC_GENERAL => 0x00000262;
  6         12  
  6         284  
323 6     6   31 use constant CKM_SHA512 => 0x00000270;
  6         9  
  6         274  
324 6     6   29 use constant CKM_SHA512_HMAC => 0x00000271;
  6         10  
  6         276  
325 6     6   36 use constant CKM_SHA512_HMAC_GENERAL => 0x00000272;
  6         8  
  6         410  
326 6     6   57 use constant CKM_SECURID_KEY_GEN => 0x00000280;
  6         10  
  6         292  
327 6     6   35 use constant CKM_SECURID => 0x00000282;
  6         9  
  6         287  
328 6     6   32 use constant CKM_HOTP_KEY_GEN => 0x00000290;
  6         10  
  6         313  
329 6     6   33 use constant CKM_HOTP => 0x00000291;
  6         9  
  6         289  
330 6     6   34 use constant CKM_ACTI => 0x000002A0;
  6         8  
  6         303  
331 6     6   34 use constant CKM_ACTI_KEY_GEN => 0x000002A1;
  6         7  
  6         311  
332 6     6   39 use constant CKM_CAST_KEY_GEN => 0x00000300;
  6         12  
  6         278  
333 6     6   31 use constant CKM_CAST_ECB => 0x00000301;
  6         10  
  6         313  
334 6     6   32 use constant CKM_CAST_CBC => 0x00000302;
  6         16  
  6         331  
335 6     6   34 use constant CKM_CAST_MAC => 0x00000303;
  6         9  
  6         310  
336 6     6   35 use constant CKM_CAST_MAC_GENERAL => 0x00000304;
  6         7  
  6         277  
337 6     6   33 use constant CKM_CAST_CBC_PAD => 0x00000305;
  6         9  
  6         317  
338 6     6   36 use constant CKM_CAST3_KEY_GEN => 0x00000310;
  6         10  
  6         387  
339 6     6   30 use constant CKM_CAST3_ECB => 0x00000311;
  6         8  
  6         316  
340 6     6   32 use constant CKM_CAST3_CBC => 0x00000312;
  6         13  
  6         278  
341 6     6   27 use constant CKM_CAST3_MAC => 0x00000313;
  6         9  
  6         339  
342 6     6   36 use constant CKM_CAST3_MAC_GENERAL => 0x00000314;
  6         10  
  6         311  
343 6     6   30 use constant CKM_CAST3_CBC_PAD => 0x00000315;
  6         7  
  6         306  
344 6     6   28 use constant CKM_CAST5_KEY_GEN => 0x00000320;
  6         7  
  6         312  
345 6     6   61 use constant CKM_CAST128_KEY_GEN => 0x00000320;
  6         10  
  6         302  
346 6     6   43 use constant CKM_CAST5_ECB => 0x00000321;
  6         23  
  6         276  
347 6     6   32 use constant CKM_CAST128_ECB => 0x00000321;
  6         7  
  6         293  
348 6     6   29 use constant CKM_CAST5_CBC => 0x00000322;
  6         9  
  6         279  
349 6     6   52 use constant CKM_CAST128_CBC => 0x00000322;
  6         9  
  6         291  
350 6     6   33 use constant CKM_CAST5_MAC => 0x00000323;
  6         11  
  6         291  
351 6     6   31 use constant CKM_CAST128_MAC => 0x00000323;
  6         12  
  6         357  
352 6     6   35 use constant CKM_CAST5_MAC_GENERAL => 0x00000324;
  6         9  
  6         332  
353 6     6   30 use constant CKM_CAST128_MAC_GENERAL => 0x00000324;
  6         69  
  6         281  
354 6     6   29 use constant CKM_CAST5_CBC_PAD => 0x00000325;
  6         18  
  6         309  
355 6     6   30 use constant CKM_CAST128_CBC_PAD => 0x00000325;
  6         9  
  6         284  
356 6     6   66 use constant CKM_RC5_KEY_GEN => 0x00000330;
  6         11  
  6         309  
357 6     6   32 use constant CKM_RC5_ECB => 0x00000331;
  6         9  
  6         316  
358 6     6   37 use constant CKM_RC5_CBC => 0x00000332;
  6         11  
  6         298  
359 6     6   32 use constant CKM_RC5_MAC => 0x00000333;
  6         8  
  6         278  
360 6     6   31 use constant CKM_RC5_MAC_GENERAL => 0x00000334;
  6         9  
  6         446  
361 6     6   1275 use constant CKM_RC5_CBC_PAD => 0x00000335;
  6         21  
  6         337  
362 6     6   34 use constant CKM_IDEA_KEY_GEN => 0x00000340;
  6         8  
  6         564  
363 6     6   29 use constant CKM_IDEA_ECB => 0x00000341;
  6         12  
  6         291  
364 6     6   29 use constant CKM_IDEA_CBC => 0x00000342;
  6         8  
  6         276  
365 6     6   152 use constant CKM_IDEA_MAC => 0x00000343;
  6         8  
  6         279  
366 6     6   30 use constant CKM_IDEA_MAC_GENERAL => 0x00000344;
  6         6  
  6         284  
367 6     6   158 use constant CKM_IDEA_CBC_PAD => 0x00000345;
  6         8  
  6         279  
368 6     6   30 use constant CKM_GENERIC_SECRET_KEY_GEN => 0x00000350;
  6         8  
  6         293  
369 6     6   29 use constant CKM_CONCATENATE_BASE_AND_KEY => 0x00000360;
  6         9  
  6         392  
370 6     6   37 use constant CKM_CONCATENATE_BASE_AND_DATA => 0x00000362;
  6         11  
  6         385  
371 6     6   29 use constant CKM_CONCATENATE_DATA_AND_BASE => 0x00000363;
  6         8  
  6         299  
372 6     6   38 use constant CKM_XOR_BASE_AND_DATA => 0x00000364;
  6         12  
  6         276  
373 6     6   28 use constant CKM_EXTRACT_KEY_FROM_KEY => 0x00000365;
  6         12  
  6         255  
374 6     6   34 use constant CKM_SSL3_PRE_MASTER_KEY_GEN => 0x00000370;
  6         7  
  6         293  
375 6     6   29 use constant CKM_SSL3_MASTER_KEY_DERIVE => 0x00000371;
  6         7  
  6         289  
376 6     6   29 use constant CKM_SSL3_KEY_AND_MAC_DERIVE => 0x00000372;
  6         7  
  6         304  
377 6     6   27 use constant CKM_SSL3_MASTER_KEY_DERIVE_DH => 0x00000373;
  6         11  
  6         303  
378 6     6   29 use constant CKM_TLS_PRE_MASTER_KEY_GEN => 0x00000374;
  6         8  
  6         270  
379 6     6   28 use constant CKM_TLS_MASTER_KEY_DERIVE => 0x00000375;
  6         7  
  6         288  
380 6     6   30 use constant CKM_TLS_KEY_AND_MAC_DERIVE => 0x00000376;
  6         8  
  6         289  
381 6     6   29 use constant CKM_TLS_MASTER_KEY_DERIVE_DH => 0x00000377;
  6         18  
  6         259  
382 6     6   27 use constant CKM_TLS_PRF => 0x00000378;
  6         6  
  6         279  
383 6     6   29 use constant CKM_SSL3_MD5_MAC => 0x00000380;
  6         10  
  6         354  
384 6     6   29 use constant CKM_SSL3_SHA1_MAC => 0x00000381;
  6         9  
  6         328  
385 6     6   34 use constant CKM_MD5_KEY_DERIVATION => 0x00000390;
  6         12  
  6         306  
386 6     6   32 use constant CKM_MD2_KEY_DERIVATION => 0x00000391;
  6         9  
  6         321  
387 6     6   39 use constant CKM_SHA1_KEY_DERIVATION => 0x00000392;
  6         9  
  6         318  
388 6     6   31 use constant CKM_SHA256_KEY_DERIVATION => 0x00000393;
  6         12  
  6         307  
389 6     6   34 use constant CKM_SHA384_KEY_DERIVATION => 0x00000394;
  6         13  
  6         336  
390 6     6   34 use constant CKM_SHA512_KEY_DERIVATION => 0x00000395;
  6         8  
  6         315  
391 6     6   30 use constant CKM_SHA224_KEY_DERIVATION => 0x00000396;
  6         10  
  6         291  
392 6     6   32 use constant CKM_PBE_MD2_DES_CBC => 0x000003A0;
  6         9  
  6         292  
393 6     6   30 use constant CKM_PBE_MD5_DES_CBC => 0x000003A1;
  6         9  
  6         329  
394 6     6   33 use constant CKM_PBE_MD5_CAST_CBC => 0x000003A2;
  6         10  
  6         287  
395 6     6   27 use constant CKM_PBE_MD5_CAST3_CBC => 0x000003A3;
  6         24  
  6         280  
396 6     6   28 use constant CKM_PBE_MD5_CAST5_CBC => 0x000003A4;
  6         11  
  6         300  
397 6     6   30 use constant CKM_PBE_MD5_CAST128_CBC => 0x000003A4;
  6         8  
  6         387  
398 6     6   34 use constant CKM_PBE_SHA1_CAST5_CBC => 0x000003A5;
  6         7  
  6         280  
399 6     6   34 use constant CKM_PBE_SHA1_CAST128_CBC => 0x000003A5;
  6         8  
  6         346  
400 6     6   140 use constant CKM_PBE_SHA1_RC4_128 => 0x000003A6;
  6         10  
  6         312  
401 6     6   29 use constant CKM_PBE_SHA1_RC4_40 => 0x000003A7;
  6         7  
  6         368  
402 6     6   34 use constant CKM_PBE_SHA1_DES3_EDE_CBC => 0x000003A8;
  6         8  
  6         366  
403 6     6   38 use constant CKM_PBE_SHA1_DES2_EDE_CBC => 0x000003A9;
  6         6  
  6         291  
404 6     6   30 use constant CKM_PBE_SHA1_RC2_128_CBC => 0x000003AA;
  6         9  
  6         291  
405 6     6   28 use constant CKM_PBE_SHA1_RC2_40_CBC => 0x000003AB;
  6         8  
  6         257  
406 6     6   35 use constant CKM_PKCS5_PBKD2 => 0x000003B0;
  6         13  
  6         253  
407 6     6   27 use constant CKM_PBA_SHA1_WITH_SHA1_HMAC => 0x000003C0;
  6         22  
  6         397  
408 6     6   30 use constant CKM_WTLS_PRE_MASTER_KEY_GEN => 0x000003D0;
  6         8  
  6         347  
409 6     6   33 use constant CKM_WTLS_MASTER_KEY_DERIVE => 0x000003D1;
  6         12  
  6         324  
410 6     6   51 use constant CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC => 0x000003D2;
  6         9  
  6         314  
411 6     6   29 use constant CKM_WTLS_PRF => 0x000003D3;
  6         8  
  6         269  
412 6     6   27 use constant CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE => 0x000003D4;
  6         5  
  6         298  
413 6     6   25 use constant CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE => 0x000003D5;
  6         13  
  6         246  
414 6     6   25 use constant CKM_KEY_WRAP_LYNKS => 0x00000400;
  6         8  
  6         260  
415 6     6   28 use constant CKM_KEY_WRAP_SET_OAEP => 0x00000401;
  6         9  
  6         262  
416 6     6   27 use constant CKM_CMS_SIG => 0x00000500;
  6         8  
  6         257  
417 6     6   26 use constant CKM_KIP_DERIVE => 0x00000510;
  6         7  
  6         258  
418 6     6   28 use constant CKM_KIP_WRAP => 0x00000511;
  6         19  
  6         276  
419 6     6   27 use constant CKM_KIP_MAC => 0x00000512;
  6         5  
  6         256  
420 6     6   27 use constant CKM_CAMELLIA_KEY_GEN => 0x00000550;
  6         8  
  6         266  
421 6     6   27 use constant CKM_CAMELLIA_ECB => 0x00000551;
  6         9  
  6         250  
422 6     6   33 use constant CKM_CAMELLIA_CBC => 0x00000552;
  6         8  
  6         298  
423 6     6   32 use constant CKM_CAMELLIA_MAC => 0x00000553;
  6         11  
  6         351  
424 6     6   32 use constant CKM_CAMELLIA_MAC_GENERAL => 0x00000554;
  6         9  
  6         400  
425 6     6   33 use constant CKM_CAMELLIA_CBC_PAD => 0x00000555;
  6         8  
  6         322  
426 6     6   36 use constant CKM_CAMELLIA_ECB_ENCRYPT_DATA => 0x00000556;
  6         12  
  6         400  
427 6     6   36 use constant CKM_CAMELLIA_CBC_ENCRYPT_DATA => 0x00000557;
  6         7  
  6         302  
428 6     6   34 use constant CKM_CAMELLIA_CTR => 0x00000558;
  6         13  
  6         354  
429 6     6   34 use constant CKM_ARIA_KEY_GEN => 0x00000560;
  6         9  
  6         304  
430 6     6   30 use constant CKM_ARIA_ECB => 0x00000561;
  6         8  
  6         1063  
431 6     6   29 use constant CKM_ARIA_CBC => 0x00000562;
  6         9  
  6         290  
432 6     6   29 use constant CKM_ARIA_MAC => 0x00000563;
  6         11  
  6         271  
433 6     6   36 use constant CKM_ARIA_MAC_GENERAL => 0x00000564;
  6         9  
  6         382  
434 6     6   37 use constant CKM_ARIA_CBC_PAD => 0x00000565;
  6         15  
  6         330  
435 6     6   33 use constant CKM_ARIA_ECB_ENCRYPT_DATA => 0x00000566;
  6         10  
  6         306  
436 6     6   29 use constant CKM_ARIA_CBC_ENCRYPT_DATA => 0x00000567;
  6         14  
  6         294  
437 6     6   31 use constant CKM_SKIPJACK_KEY_GEN => 0x00001000;
  6         7  
  6         290  
438 6     6   33 use constant CKM_SKIPJACK_ECB64 => 0x00001001;
  6         15  
  6         292  
439 6     6   30 use constant CKM_SKIPJACK_CBC64 => 0x00001002;
  6         10  
  6         318  
440 6     6   35 use constant CKM_SKIPJACK_OFB64 => 0x00001003;
  6         8  
  6         292  
441 6     6   31 use constant CKM_SKIPJACK_CFB64 => 0x00001004;
  6         8  
  6         348  
442 6     6   34 use constant CKM_SKIPJACK_CFB32 => 0x00001005;
  6         14  
  6         343  
443 6     6   32 use constant CKM_SKIPJACK_CFB16 => 0x00001006;
  6         10  
  6         295  
444 6     6   32 use constant CKM_SKIPJACK_CFB8 => 0x00001007;
  6         10  
  6         302  
445 6     6   41 use constant CKM_SKIPJACK_WRAP => 0x00001008;
  6         13  
  6         317  
446 6     6   32 use constant CKM_SKIPJACK_PRIVATE_WRAP => 0x00001009;
  6         8  
  6         368  
447 6     6   30 use constant CKM_SKIPJACK_RELAYX => 0x0000100a;
  6         13  
  6         293  
448 6     6   29 use constant CKM_KEA_KEY_PAIR_GEN => 0x00001010;
  6         10  
  6         291  
449 6     6   33 use constant CKM_KEA_KEY_DERIVE => 0x00001011;
  6         14  
  6         290  
450 6     6   28 use constant CKM_FORTEZZA_TIMESTAMP => 0x00001020;
  6         8  
  6         338  
451 6     6   32 use constant CKM_BATON_KEY_GEN => 0x00001030;
  6         8  
  6         279  
452 6     6   28 use constant CKM_BATON_ECB128 => 0x00001031;
  6         10  
  6         290  
453 6     6   28 use constant CKM_BATON_ECB96 => 0x00001032;
  6         9  
  6         288  
454 6     6   29 use constant CKM_BATON_CBC128 => 0x00001033;
  6         14  
  6         286  
455 6     6   30 use constant CKM_BATON_COUNTER => 0x00001034;
  6         8  
  6         285  
456 6     6   30 use constant CKM_BATON_SHUFFLE => 0x00001035;
  6         14  
  6         338  
457 6     6   29 use constant CKM_BATON_WRAP => 0x00001036;
  6         9  
  6         280  
458 6     6   29 use constant CKM_ECDSA_KEY_PAIR_GEN => 0x00001040;
  6         17  
  6         278  
459 6     6   30 use constant CKM_EC_KEY_PAIR_GEN => 0x00001040;
  6         9  
  6         330  
460 6     6   33 use constant CKM_ECDSA => 0x00001041;
  6         11  
  6         303  
461 6     6   33 use constant CKM_ECDSA_SHA1 => 0x00001042;
  6         9  
  6         285  
462 6     6   38 use constant CKM_ECDH1_DERIVE => 0x00001050;
  6         10  
  6         328  
463 6     6   38 use constant CKM_ECDH1_COFACTOR_DERIVE => 0x00001051;
  6         8  
  6         325  
464 6     6   37 use constant CKM_ECMQV_DERIVE => 0x00001052;
  6         12  
  6         334  
465 6     6   34 use constant CKM_JUNIPER_KEY_GEN => 0x00001060;
  6         8  
  6         322  
466 6     6   46 use constant CKM_JUNIPER_ECB128 => 0x00001061;
  6         8  
  6         309  
467 6     6   30 use constant CKM_JUNIPER_CBC128 => 0x00001062;
  6         9  
  6         280  
468 6     6   30 use constant CKM_JUNIPER_COUNTER => 0x00001063;
  6         8  
  6         274  
469 6     6   28 use constant CKM_JUNIPER_SHUFFLE => 0x00001064;
  6         11  
  6         263  
470 6     6   32 use constant CKM_JUNIPER_WRAP => 0x00001065;
  6         9  
  6         282  
471 6     6   30 use constant CKM_FASTHASH => 0x00001070;
  6         7  
  6         333  
472 6     6   35 use constant CKM_AES_KEY_GEN => 0x00001080;
  6         9  
  6         255  
473 6     6   32 use constant CKM_AES_ECB => 0x00001081;
  6         9  
  6         270  
474 6     6   30 use constant CKM_AES_CBC => 0x00001082;
  6         11  
  6         275  
475 6     6   30 use constant CKM_AES_MAC => 0x00001083;
  6         10  
  6         326  
476 6     6   32 use constant CKM_AES_MAC_GENERAL => 0x00001084;
  6         11  
  6         275  
477 6     6   31 use constant CKM_AES_CBC_PAD => 0x00001085;
  6         15  
  6         304  
478 6     6   33 use constant CKM_AES_CTR => 0x00001086;
  6         7  
  6         282  
479 6     6   33 use constant CKM_BLOWFISH_KEY_GEN => 0x00001090;
  6         14  
  6         347  
480 6     6   38 use constant CKM_BLOWFISH_CBC => 0x00001091;
  6         9  
  6         335  
481 6     6   31 use constant CKM_TWOFISH_KEY_GEN => 0x00001092;
  6         12  
  6         278  
482 6     6   30 use constant CKM_TWOFISH_CBC => 0x00001093;
  6         10  
  6         288  
483 6     6   36 use constant CKM_DES_ECB_ENCRYPT_DATA => 0x00001100;
  6         10  
  6         308  
484 6     6   31 use constant CKM_DES_CBC_ENCRYPT_DATA => 0x00001101;
  6         15  
  6         282  
485 6     6   37 use constant CKM_DES3_ECB_ENCRYPT_DATA => 0x00001102;
  6         12  
  6         323  
486 6     6   36 use constant CKM_DES3_CBC_ENCRYPT_DATA => 0x00001103;
  6         9  
  6         312  
487 6     6   33 use constant CKM_AES_ECB_ENCRYPT_DATA => 0x00001104;
  6         12  
  6         307  
488 6     6   27 use constant CKM_AES_CBC_ENCRYPT_DATA => 0x00001105;
  6         11  
  6         279  
489 6     6   30 use constant CKM_DSA_PARAMETER_GEN => 0x00002000;
  6         9  
  6         258  
490 6     6   27 use constant CKM_DH_PKCS_PARAMETER_GEN => 0x00002001;
  6         10  
  6         317  
491 6     6   31 use constant CKM_X9_42_DH_PARAMETER_GEN => 0x00002002;
  6         8  
  6         271  
492 6     6   28 use constant CKM_VENDOR_DEFINED => 0x80000000;
  6         12  
  6         290  
493 6     6   32 use constant CKF_HW => 0x00000001;
  6         11  
  6         286  
494 6     6   32 use constant CKF_ENCRYPT => 0x00000100;
  6         8  
  6         275  
495 6     6   48 use constant CKF_DECRYPT => 0x00000200;
  6         8  
  6         283  
496 6     6   36 use constant CKF_DIGEST => 0x00000400;
  6         8  
  6         296  
497 6     6   30 use constant CKF_SIGN => 0x00000800;
  6         10  
  6         265  
498 6     6   30 use constant CKF_SIGN_RECOVER => 0x00001000;
  6         8  
  6         269  
499 6     6   31 use constant CKF_VERIFY => 0x00002000;
  6         10  
  6         342  
500 6     6   37 use constant CKF_VERIFY_RECOVER => 0x00004000;
  6         9  
  6         286  
501 6     6   29 use constant CKF_GENERATE => 0x00008000;
  6         8  
  6         319  
502 6     6   33 use constant CKF_GENERATE_KEY_PAIR => 0x00010000;
  6         16  
  6         306  
503 6     6   31 use constant CKF_WRAP => 0x00020000;
  6         39  
  6         388  
504 6     6   35 use constant CKF_UNWRAP => 0x00040000;
  6         8  
  6         291  
505 6     6   44 use constant CKF_DERIVE => 0x00080000;
  6         7  
  6         265  
506 6     6   28 use constant CKF_EC_F_P => 0x00100000;
  6         10  
  6         280  
507 6     6   30 use constant CKF_EC_F_2M => 0x00200000;
  6         8  
  6         262  
508 6     6   28 use constant CKF_EC_ECPARAMETERS => 0x00400000;
  6         6  
  6         283  
509 6     6   30 use constant CKF_EC_NAMEDCURVE => 0x00800000;
  6         12  
  6         298  
510 6     6   31 use constant CKF_EC_UNCOMPRESS => 0x01000000;
  6         10  
  6         314  
511 6     6   33 use constant CKF_EC_COMPRESS => 0x02000000;
  6         9  
  6         364  
512 6     6   33 use constant CKF_EXTENSION => 0x80000000;
  6         8  
  6         276  
513 6     6   34 use constant CKR_OK => 0x00000000;
  6         16  
  6         301  
514 6     6   28 use constant CKR_CANCEL => 0x00000001;
  6         9  
  6         322  
515 6     6   58 use constant CKR_HOST_MEMORY => 0x00000002;
  6         9  
  6         292  
516 6     6   33 use constant CKR_SLOT_ID_INVALID => 0x00000003;
  6         8  
  6         352  
517 6     6   36 use constant CKR_GENERAL_ERROR => 0x00000005;
  6         10  
  6         294  
518 6     6   43 use constant CKR_FUNCTION_FAILED => 0x00000006;
  6         9  
  6         268  
519 6     6   72 use constant CKR_ARGUMENTS_BAD => 0x00000007;
  6         8  
  6         285  
520 6     6   64 use constant CKR_NO_EVENT => 0x00000008;
  6         12  
  6         309  
521 6     6   31 use constant CKR_NEED_TO_CREATE_THREADS => 0x00000009;
  6         14  
  6         289  
522 6     6   31 use constant CKR_CANT_LOCK => 0x0000000A;
  6         9  
  6         349  
523 6     6   35 use constant CKR_ATTRIBUTE_READ_ONLY => 0x00000010;
  6         9  
  6         319  
524 6     6   30 use constant CKR_ATTRIBUTE_SENSITIVE => 0x00000011;
  6         7  
  6         307  
525 6     6   31 use constant CKR_ATTRIBUTE_TYPE_INVALID => 0x00000012;
  6         10  
  6         320  
526 6     6   31 use constant CKR_ATTRIBUTE_VALUE_INVALID => 0x00000013;
  6         18  
  6         466  
527 6     6   33 use constant CKR_DATA_INVALID => 0x00000020;
  6         8  
  6         286  
528 6     6   30 use constant CKR_DATA_LEN_RANGE => 0x00000021;
  6         11  
  6         284  
529 6     6   29 use constant CKR_DEVICE_ERROR => 0x00000030;
  6         8  
  6         405  
530 6     6   33 use constant CKR_DEVICE_MEMORY => 0x00000031;
  6         10  
  6         278  
531 6     6   29 use constant CKR_DEVICE_REMOVED => 0x00000032;
  6         10  
  6         283  
532 6     6   30 use constant CKR_ENCRYPTED_DATA_INVALID => 0x00000040;
  6         13  
  6         491  
533 6     6   33 use constant CKR_ENCRYPTED_DATA_LEN_RANGE => 0x00000041;
  6         9  
  6         312  
534 6     6   40 use constant CKR_FUNCTION_CANCELED => 0x00000050;
  6         12  
  6         450  
535 6     6   30 use constant CKR_FUNCTION_NOT_PARALLEL => 0x00000051;
  6         10  
  6         321  
536 6     6   33 use constant CKR_FUNCTION_NOT_SUPPORTED => 0x00000054;
  6         11  
  6         1070  
537 6     6   36 use constant CKR_KEY_HANDLE_INVALID => 0x00000060;
  6         8  
  6         275  
538 6     6   33 use constant CKR_KEY_SIZE_RANGE => 0x00000062;
  6         7  
  6         315  
539 6     6   31 use constant CKR_KEY_TYPE_INCONSISTENT => 0x00000063;
  6         7  
  6         422  
540 6     6   41 use constant CKR_KEY_NOT_NEEDED => 0x00000064;
  6         12  
  6         302  
541 6     6   57 use constant CKR_KEY_CHANGED => 0x00000065;
  6         20  
  6         379  
542 6     6   36 use constant CKR_KEY_NEEDED => 0x00000066;
  6         12  
  6         672  
543 6     6   35 use constant CKR_KEY_INDIGESTIBLE => 0x00000067;
  6         7  
  6         323  
544 6     6   31 use constant CKR_KEY_FUNCTION_NOT_PERMITTED => 0x00000068;
  6         10  
  6         285  
545 6     6   28 use constant CKR_KEY_NOT_WRAPPABLE => 0x00000069;
  6         10  
  6         278  
546 6     6   30 use constant CKR_KEY_UNEXTRACTABLE => 0x0000006A;
  6         9  
  6         288  
547 6     6   33 use constant CKR_MECHANISM_INVALID => 0x00000070;
  6         10  
  6         354  
548 6     6   38 use constant CKR_MECHANISM_PARAM_INVALID => 0x00000071;
  6         16  
  6         330  
549 6     6   33 use constant CKR_OBJECT_HANDLE_INVALID => 0x00000082;
  6         10  
  6         293  
550 6     6   28 use constant CKR_OPERATION_ACTIVE => 0x00000090;
  6         12  
  6         277  
551 6     6   29 use constant CKR_OPERATION_NOT_INITIALIZED => 0x00000091;
  6         14  
  6         297  
552 6     6   30 use constant CKR_PIN_INCORRECT => 0x000000A0;
  6         10  
  6         286  
553 6     6   31 use constant CKR_PIN_INVALID => 0x000000A1;
  6         9  
  6         284  
554 6     6   31 use constant CKR_PIN_LEN_RANGE => 0x000000A2;
  6         9  
  6         298  
555 6     6   31 use constant CKR_PIN_EXPIRED => 0x000000A3;
  6         10  
  6         304  
556 6     6   50 use constant CKR_PIN_LOCKED => 0x000000A4;
  6         10  
  6         306  
557 6     6   37 use constant CKR_SESSION_CLOSED => 0x000000B0;
  6         8  
  6         350  
558 6     6   36 use constant CKR_SESSION_COUNT => 0x000000B1;
  6         11  
  6         328  
559 6     6   37 use constant CKR_SESSION_HANDLE_INVALID => 0x000000B3;
  6         15  
  6         317  
560 6     6   32 use constant CKR_SESSION_PARALLEL_NOT_SUPPORTED => 0x000000B4;
  6         12  
  6         330  
561 6     6   32 use constant CKR_SESSION_READ_ONLY => 0x000000B5;
  6         12  
  6         279  
562 6     6   29 use constant CKR_SESSION_EXISTS => 0x000000B6;
  6         7  
  6         575  
563 6     6   34 use constant CKR_SESSION_READ_ONLY_EXISTS => 0x000000B7;
  6         10  
  6         314  
564 6     6   30 use constant CKR_SESSION_READ_WRITE_SO_EXISTS => 0x000000B8;
  6         22  
  6         338  
565 6     6   29 use constant CKR_SIGNATURE_INVALID => 0x000000C0;
  6         14  
  6         271  
566 6     6   28 use constant CKR_SIGNATURE_LEN_RANGE => 0x000000C1;
  6         9  
  6         263  
567 6     6   32 use constant CKR_TEMPLATE_INCOMPLETE => 0x000000D0;
  6         8  
  6         349  
568 6     6   36 use constant CKR_TEMPLATE_INCONSISTENT => 0x000000D1;
  6         9  
  6         340  
569 6     6   36 use constant CKR_TOKEN_NOT_PRESENT => 0x000000E0;
  6         14  
  6         294  
570 6     6   31 use constant CKR_TOKEN_NOT_RECOGNIZED => 0x000000E1;
  6         9  
  6         287  
571 6     6   31 use constant CKR_TOKEN_WRITE_PROTECTED => 0x000000E2;
  6         7  
  6         314  
572 6     6   29 use constant CKR_UNWRAPPING_KEY_HANDLE_INVALID => 0x000000F0;
  6         11  
  6         429  
573 6     6   38 use constant CKR_UNWRAPPING_KEY_SIZE_RANGE => 0x000000F1;
  6         9  
  6         300  
574 6     6   32 use constant CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT => 0x000000F2;
  6         7  
  6         289  
575 6     6   31 use constant CKR_USER_ALREADY_LOGGED_IN => 0x00000100;
  6         8  
  6         274  
576 6     6   32 use constant CKR_USER_NOT_LOGGED_IN => 0x00000101;
  6         8  
  6         295  
577 6     6   31 use constant CKR_USER_PIN_NOT_INITIALIZED => 0x00000102;
  6         30  
  6         303  
578 6     6   31 use constant CKR_USER_TYPE_INVALID => 0x00000103;
  6         9  
  6         282  
579 6     6   39 use constant CKR_USER_ANOTHER_ALREADY_LOGGED_IN => 0x00000104;
  6         9  
  6         348  
580 6     6   33 use constant CKR_USER_TOO_MANY_TYPES => 0x00000105;
  6         11  
  6         301  
581 6     6   31 use constant CKR_WRAPPED_KEY_INVALID => 0x00000110;
  6         11  
  6         423  
582 6     6   31 use constant CKR_WRAPPED_KEY_LEN_RANGE => 0x00000112;
  6         10  
  6         331  
583 6     6   35 use constant CKR_WRAPPING_KEY_HANDLE_INVALID => 0x00000113;
  6         13  
  6         368  
584 6     6   38 use constant CKR_WRAPPING_KEY_SIZE_RANGE => 0x00000114;
  6         9  
  6         361  
585 6     6   31 use constant CKR_WRAPPING_KEY_TYPE_INCONSISTENT => 0x00000115;
  6         15  
  6         315  
586 6     6   30 use constant CKR_RANDOM_SEED_NOT_SUPPORTED => 0x00000120;
  6         11  
  6         293  
587 6     6   31 use constant CKR_RANDOM_NO_RNG => 0x00000121;
  6         22  
  6         286  
588 6     6   33 use constant CKR_DOMAIN_PARAMS_INVALID => 0x00000130;
  6         9  
  6         318  
589 6     6   34 use constant CKR_BUFFER_TOO_SMALL => 0x00000150;
  6         6  
  6         275  
590 6     6   30 use constant CKR_SAVED_STATE_INVALID => 0x00000160;
  6         10  
  6         282  
591 6     6   31 use constant CKR_INFORMATION_SENSITIVE => 0x00000170;
  6         15  
  6         294  
592 6     6   29 use constant CKR_STATE_UNSAVEABLE => 0x00000180;
  6         9  
  6         272  
593 6     6   30 use constant CKR_CRYPTOKI_NOT_INITIALIZED => 0x00000190;
  6         8  
  6         314  
594 6     6   31 use constant CKR_CRYPTOKI_ALREADY_INITIALIZED => 0x00000191;
  6         12  
  6         305  
595 6     6   31 use constant CKR_MUTEX_BAD => 0x000001A0;
  6         12  
  6         274  
596 6     6   37 use constant CKR_MUTEX_NOT_LOCKED => 0x000001A1;
  6         18  
  6         339  
597 6     6   32 use constant CKR_NEW_PIN_MODE => 0x000001B0;
  6         7  
  6         294  
598 6     6   34 use constant CKR_NEXT_OTP => 0x000001B1;
  6         17  
  6         291  
599 6     6   33 use constant CKR_FUNCTION_REJECTED => 0x00000200;
  6         11  
  6         276  
600 6     6   403 use constant CKR_VENDOR_DEFINED => 0x80000000;
  6         10  
  6         637  
601 6     6   32 use constant CKF_LIBRARY_CANT_CREATE_OS_THREADS => 0x00000001;
  6         7  
  6         292  
602 6     6   38 use constant CKF_OS_LOCKING_OK => 0x00000002;
  6         9  
  6         312  
603 6     6   34 use constant CKF_DONT_BLOCK => 1;
  6         10  
  6         300  
604 6     6   36 use constant CKG_MGF1_SHA1 => 0x00000001;
  6         7  
  6         290  
605 6     6   29 use constant CKG_MGF1_SHA256 => 0x00000002;
  6         10  
  6         271  
606 6     6   32 use constant CKG_MGF1_SHA384 => 0x00000003;
  6         7  
  6         321  
607 6     6   29 use constant CKG_MGF1_SHA512 => 0x00000004;
  6         9  
  6         277  
608 6     6   33 use constant CKG_MGF1_SHA224 => 0x00000005;
  6         7  
  6         281  
609 6     6   35 use constant CKZ_DATA_SPECIFIED => 0x00000001;
  6         11  
  6         303  
610 6     6   35 use constant CKD_NULL => 0x00000001;
  6         8  
  6         354  
611 6     6   37 use constant CKD_SHA1_KDF => 0x00000002;
  6         9  
  6         324  
612 6     6   36 use constant CKD_SHA1_KDF_ASN1 => 0x00000003;
  6         15  
  6         302  
613 6     6   36 use constant CKD_SHA1_KDF_CONCATENATE => 0x00000004;
  6         9  
  6         289  
614 6     6   30 use constant CKP_PKCS5_PBKD2_HMAC_SHA1 => 0x00000001;
  6         8  
  6         395  
615 6     6   42 use constant CKZ_SALT_SPECIFIED => 0x00000001;
  6         15  
  6         335  
616 6     6   33 use constant CK_OTP_VALUE => 0;
  6         10  
  6         273  
617 6     6   27 use constant CK_OTP_PIN => 1;
  6         13  
  6         284  
618 6     6   29 use constant CK_OTP_CHALLENGE => 2;
  6         9  
  6         266  
619 6     6   29 use constant CK_OTP_TIME => 3;
  6         9  
  6         268  
620 6     6   29 use constant CK_OTP_COUNTER => 4;
  6         12  
  6         300  
621 6     6   28 use constant CK_OTP_FLAGS => 5;
  6         11  
  6         290  
622 6     6   32 use constant CK_OTP_OUTPUT_LENGTH => 6;
  6         10  
  6         327  
623 6     6   33 use constant CK_OTP_OUTPUT_FORMAT => 7;
  6         11  
  6         298  
624 6     6   33 use constant CKF_NEXT_OTP => 0x00000001;
  6         8  
  6         328  
625 6     6   31 use constant CKF_EXCLUDE_TIME => 0x00000002;
  6         15  
  6         331  
626 6     6   30 use constant CKF_EXCLUDE_COUNTER => 0x00000004;
  6         7  
  6         282  
627 6     6   30 use constant CKF_EXCLUDE_CHALLENGE => 0x00000008;
  6         10  
  6         281  
628 6     6   29 use constant CKF_EXCLUDE_PIN => 0x00000010;
  6         17  
  6         270  
629 6     6   33 use constant CKF_USER_FRIENDLY_OTP => 0x00000020;
  6         8  
  6         262  
630              
631             # constants since cryptoki v2.30.0
632              
633 6     6   34 use constant CKF_ERROR_STATE => 0x01000000;
  6         11  
  6         272  
634 6     6   32 use constant CKK_MD5_HMAC => 0x00000027;
  6         8  
  6         292  
635 6     6   33 use constant CKK_SHA_1_HMAC => 0x00000028;
  6         11  
  6         267  
636 6     6   28 use constant CKK_RIPEMD128_HMAC => 0x00000029;
  6         8  
  6         277  
637 6     6   36 use constant CKK_RIPEMD160_HMAC => 0x0000002A;
  6         17  
  6         266  
638 6     6   26 use constant CKK_SHA256_HMAC => 0x0000002B;
  6         5  
  6         254  
639 6     6   30 use constant CKK_SHA384_HMAC => 0x0000002C;
  6         9  
  6         239  
640 6     6   28 use constant CKK_SHA512_HMAC => 0x0000002D;
  6         9  
  6         273  
641 6     6   28 use constant CKK_SHA224_HMAC => 0x0000002E;
  6         12  
  6         264  
642 6     6   26 use constant CKK_SEED => 0x0000002F;
  6         8  
  6         244  
643 6     6   26 use constant CKK_GOSTR3410 => 0x00000030;
  6         11  
  6         283  
644 6     6   34 use constant CKK_GOSTR3411 => 0x00000031;
  6         7  
  6         265  
645 6     6   31 use constant CKK_GOST28147 => 0x00000032;
  6         15  
  6         476  
646 6     6   36 use constant CKA_DERIVE_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000213);
  6         7  
  6         261  
647 6     6   37 use constant CKA_GOSTR3410_PARAMS => 0x00000250;
  6         7  
  6         279  
648 6     6   26 use constant CKA_GOSTR3411_PARAMS => 0x00000251;
  6         8  
  6         252  
649 6     6   26 use constant CKA_GOST28147_PARAMS => 0x00000252;
  6         8  
  6         263  
650 6     6   27 use constant CKM_DSA_SHA224 => 0x00000013;
  6         13  
  6         262  
651 6     6   29 use constant CKM_DSA_SHA256 => 0x00000014;
  6         19  
  6         277  
652 6     6   28 use constant CKM_DSA_SHA384 => 0x00000015;
  6         7  
  6         283  
653 6     6   28 use constant CKM_DSA_SHA512 => 0x00000016;
  6         8  
  6         255  
654 6     6   30 use constant CKM_DES3_CMAC_GENERAL => 0x00000137;
  6         7  
  6         282  
655 6     6   32 use constant CKM_DES3_CMAC => 0x00000138;
  6         16  
  6         265  
656 6     6   34 use constant CKM_SEED_KEY_GEN => 0x00000650;
  6         9  
  6         277  
657 6     6   31 use constant CKM_SEED_ECB => 0x00000651;
  6         8  
  6         311  
658 6     6   39 use constant CKM_SEED_CBC => 0x00000652;
  6         9  
  6         345  
659 6     6   36 use constant CKM_SEED_MAC => 0x00000653;
  6         13  
  6         309  
660 6     6   36 use constant CKM_SEED_MAC_GENERAL => 0x00000654;
  6         5  
  6         306  
661 6     6   32 use constant CKM_SEED_CBC_PAD => 0x00000655;
  6         10  
  6         268  
662 6     6   29 use constant CKM_SEED_ECB_ENCRYPT_DATA => 0x00000656;
  6         8  
  6         271  
663 6     6   30 use constant CKM_SEED_CBC_ENCRYPT_DATA => 0x00000657;
  6         15  
  6         276  
664 6     6   30 use constant CKM_ECDSA_SHA224 => 0x00001043;
  6         11  
  6         271  
665 6     6   29 use constant CKM_ECDSA_SHA256 => 0x00001044;
  6         11  
  6         261  
666 6     6   32 use constant CKM_ECDSA_SHA384 => 0x00001045;
  6         10  
  6         283  
667 6     6   42 use constant CKM_ECDSA_SHA512 => 0x00001046;
  6         12  
  6         259  
668 6     6   31 use constant CKM_AES_CTS => 0x00001089;
  6         7  
  6         441  
669 6     6   30 use constant CKM_AES_CMAC => 0x0000108A;
  6         10  
  6         252  
670 6     6   28 use constant CKM_AES_CMAC_GENERAL => 0x0000108B;
  6         8  
  6         297  
671 6     6   30 use constant CKM_AES_GCM => 0x00001087;
  6         9  
  6         238  
672 6     6   27 use constant CKM_AES_CCM => 0x00001088;
  6         9  
  6         228  
673 6     6   28 use constant CKM_AES_KEY_WRAP => 0x00001090;
  6         7  
  6         347  
674 6     6   31 use constant CKM_AES_KEY_WRAP_PAD => 0x00001091;
  6         6  
  6         375  
675 6     6   31 use constant CKM_BLOWFISH_CBC_PAD => 0x00001094;
  6         10  
  6         287  
676 6     6   28 use constant CKM_TWOFISH_CBC_PAD => 0x00001095;
  6         10  
  6         240  
677 6     6   27 use constant CKM_GOSTR3410_KEY_PAIR_GEN => 0x00001200;
  6         8  
  6         243  
678 6     6   25 use constant CKM_GOSTR3410 => 0x00001201;
  6         8  
  6         219  
679 6     6   28 use constant CKM_GOSTR3410_WITH_GOSTR3411 => 0x00001202;
  6         10  
  6         299  
680 6     6   26 use constant CKM_GOSTR3410_KEY_WRAP => 0x00001203;
  6         8  
  6         248  
681 6     6   27 use constant CKM_GOSTR3410_DERIVE => 0x00001204;
  6         11  
  6         224  
682 6     6   26 use constant CKM_GOSTR3411 => 0x00001210;
  6         8  
  6         240  
683 6     6   29 use constant CKM_GOSTR3411_HMAC => 0x00001211;
  6         8  
  6         260  
684 6     6   32 use constant CKM_GOST28147_KEY_GEN => 0x00001220;
  6         9  
  6         291  
685 6     6   30 use constant CKM_GOST28147_ECB => 0x00001221;
  6         7  
  6         304  
686 6     6   28 use constant CKM_GOST28147 => 0x00001222;
  6         9  
  6         290  
687 6     6   31 use constant CKM_GOST28147_MAC => 0x00001223;
  6         11  
  6         356  
688 6     6   64 use constant CKM_GOST28147_KEY_WRAP => 0x00001224;
  6         12  
  6         309  
689 6     6   53 use constant CKM_AES_OFB => 0x00002104;
  6         10  
  6         324  
690 6     6   50 use constant CKM_AES_CFB64 => 0x00002105;
  6         12  
  6         296  
691 6     6   33 use constant CKM_AES_CFB8 => 0x00002106;
  6         9  
  6         268  
692 6     6   30 use constant CKM_AES_CFB128 => 0x00002107;
  6         10  
  6         263  
693 6     6   32 use constant CKM_RSA_PKCS_TPM_1_1 => 0x00004001;
  6         10  
  6         459  
694 6     6   32 use constant CKM_RSA_PKCS_OAEP_TPM_1_1 => 0x00004002;
  6         13  
  6         319  
695 6     6   28 use constant CKR_EXCEEDED_MAX_ITERATIONS => 0x000001B5;
  6         8  
  6         264  
696 6     6   28 use constant CKR_FIPS_SELF_TEST_FAILED => 0x000001B6;
  6         10  
  6         262  
697 6     6   29 use constant CKR_LIBRARY_LOAD_FAILED => 0x000001B7;
  6         7  
  6         279  
698 6     6   26 use constant CKR_PIN_TOO_WEAK => 0x000001B8;
  6         9  
  6         258  
699 6     6   26 use constant CKR_PUBLIC_KEY_INVALID => 0x000001B9;
  6         11  
  6         324  
700 6     6   45 use constant CKD_SHA224_KDF => 0x00000005;
  6         9  
  6         277  
701 6     6   29 use constant CKD_SHA256_KDF => 0x00000006;
  6         7  
  6         275  
702 6     6   30 use constant CKD_SHA384_KDF => 0x00000007;
  6         10  
  6         288  
703 6     6   29 use constant CKD_SHA512_KDF => 0x00000008;
  6         9  
  6         262  
704 6     6   30 use constant CKD_CPDIVERSIFY_KDF => 0x00000009;
  6         16  
  6         273  
705              
706             # constants missing from .h files but defined in v2.30 documentation
707              
708 6     6   37 use constant CKA_NAME_HASH_ALGORITHM => 0x0000008C;
  6         1875  
  6         362  
709 6     6   37 use constant CKA_COPYABLE => 0x00000171;
  6         7  
  6         54636  
710              
711             # Constant to name hashes
712              
713             our %CKA_NAME = (
714             CKA_AC_ISSUER() => 'CKA_AC_ISSUER',
715             CKA_ALLOWED_MECHANISMS() => 'CKA_ALLOWED_MECHANISMS',
716             CKA_ALWAYS_AUTHENTICATE() => 'CKA_ALWAYS_AUTHENTICATE',
717             CKA_ALWAYS_SENSITIVE() => 'CKA_ALWAYS_SENSITIVE',
718             CKA_APPLICATION() => 'CKA_APPLICATION',
719             CKA_ATTR_TYPES() => 'CKA_ATTR_TYPES',
720             CKA_AUTH_PIN_FLAGS() => 'CKA_AUTH_PIN_FLAGS',
721             CKA_BASE() => 'CKA_BASE',
722             CKA_BITS_PER_PIXEL() => 'CKA_BITS_PER_PIXEL',
723             CKA_CERTIFICATE_CATEGORY() => 'CKA_CERTIFICATE_CATEGORY',
724             CKA_CERTIFICATE_TYPE() => 'CKA_CERTIFICATE_TYPE',
725             CKA_CHAR_COLUMNS() => 'CKA_CHAR_COLUMNS',
726             CKA_CHAR_ROWS() => 'CKA_CHAR_ROWS',
727             CKA_CHAR_SETS() => 'CKA_CHAR_SETS',
728             CKA_CLASS() => 'CKA_CLASS',
729             CKA_COEFFICIENT() => 'CKA_COEFFICIENT',
730             CKA_COLOR() => 'CKA_COLOR',
731             CKA_COPYABLE() => 'CKA_COPYABLE',
732             CKA_DECRYPT() => 'CKA_DECRYPT',
733             CKA_DEFAULT_CMS_ATTRIBUTES() => 'CKA_DEFAULT_CMS_ATTRIBUTES',
734             CKA_DERIVE() => 'CKA_DERIVE',
735             CKA_DERIVE_TEMPLATE() => 'CKA_DERIVE_TEMPLATE',
736             CKA_ECDSA_PARAMS() => 'CKA_ECDSA_PARAMS',
737             CKA_EC_PARAMS() => 'CKA_EC_PARAMS',
738             CKA_EC_POINT() => 'CKA_EC_POINT',
739             CKA_ENCODING_METHODS() => 'CKA_ENCODING_METHODS',
740             CKA_ENCRYPT() => 'CKA_ENCRYPT',
741             CKA_END_DATE() => 'CKA_END_DATE',
742             CKA_EXPONENT_1() => 'CKA_EXPONENT_1',
743             CKA_EXPONENT_2() => 'CKA_EXPONENT_2',
744             CKA_EXTRACTABLE() => 'CKA_EXTRACTABLE',
745             CKA_GOST28147_PARAMS() => 'CKA_GOST28147_PARAMS',
746             CKA_GOSTR3410_PARAMS() => 'CKA_GOSTR3410_PARAMS',
747             CKA_GOSTR3411_PARAMS() => 'CKA_GOSTR3411_PARAMS',
748             CKA_HASH_OF_ISSUER_PUBLIC_KEY() => 'CKA_HASH_OF_ISSUER_PUBLIC_KEY',
749             CKA_HASH_OF_SUBJECT_PUBLIC_KEY() => 'CKA_HASH_OF_SUBJECT_PUBLIC_KEY',
750             CKA_HAS_RESET() => 'CKA_HAS_RESET',
751             CKA_HW_FEATURE_TYPE() => 'CKA_HW_FEATURE_TYPE',
752             CKA_ID() => 'CKA_ID',
753             CKA_ISSUER() => 'CKA_ISSUER',
754             CKA_JAVA_MIDP_SECURITY_DOMAIN() => 'CKA_JAVA_MIDP_SECURITY_DOMAIN',
755             CKA_KEY_GEN_MECHANISM() => 'CKA_KEY_GEN_MECHANISM',
756             CKA_KEY_TYPE() => 'CKA_KEY_TYPE',
757             CKA_LABEL() => 'CKA_LABEL',
758             CKA_LOCAL() => 'CKA_LOCAL',
759             CKA_MECHANISM_TYPE() => 'CKA_MECHANISM_TYPE',
760             CKA_MIME_TYPES() => 'CKA_MIME_TYPES',
761             CKA_MODIFIABLE() => 'CKA_MODIFIABLE',
762             CKA_MODULUS() => 'CKA_MODULUS',
763             CKA_MODULUS_BITS() => 'CKA_MODULUS_BITS',
764             CKA_NAME_HASH_ALGORITHM() => 'CKA_NAME_HASH_ALGORITHM',
765             CKA_NEVER_EXTRACTABLE() => 'CKA_NEVER_EXTRACTABLE',
766             CKA_OBJECT_ID() => 'CKA_OBJECT_ID',
767             CKA_OTP_CHALLENGE_REQUIREMENT() => 'CKA_OTP_CHALLENGE_REQUIREMENT',
768             CKA_OTP_COUNTER() => 'CKA_OTP_COUNTER',
769             CKA_OTP_COUNTER_REQUIREMENT() => 'CKA_OTP_COUNTER_REQUIREMENT',
770             CKA_OTP_FORMAT() => 'CKA_OTP_FORMAT',
771             CKA_OTP_LENGTH() => 'CKA_OTP_LENGTH',
772             CKA_OTP_PIN_REQUIREMENT() => 'CKA_OTP_PIN_REQUIREMENT',
773             CKA_OTP_SERVICE_IDENTIFIER() => 'CKA_OTP_SERVICE_IDENTIFIER',
774             CKA_OTP_SERVICE_LOGO() => 'CKA_OTP_SERVICE_LOGO',
775             CKA_OTP_SERVICE_LOGO_TYPE() => 'CKA_OTP_SERVICE_LOGO_TYPE',
776             CKA_OTP_TIME() => 'CKA_OTP_TIME',
777             CKA_OTP_TIME_INTERVAL() => 'CKA_OTP_TIME_INTERVAL',
778             CKA_OTP_TIME_REQUIREMENT() => 'CKA_OTP_TIME_REQUIREMENT',
779             CKA_OTP_USER_FRIENDLY_MODE() => 'CKA_OTP_USER_FRIENDLY_MODE',
780             CKA_OTP_USER_IDENTIFIER() => 'CKA_OTP_USER_IDENTIFIER',
781             CKA_OWNER() => 'CKA_OWNER',
782             CKA_PIXEL_X() => 'CKA_PIXEL_X',
783             CKA_PIXEL_Y() => 'CKA_PIXEL_Y',
784             CKA_PRIME() => 'CKA_PRIME',
785             CKA_PRIME_1() => 'CKA_PRIME_1',
786             CKA_PRIME_2() => 'CKA_PRIME_2',
787             CKA_PRIME_BITS() => 'CKA_PRIME_BITS',
788             CKA_PRIVATE() => 'CKA_PRIVATE',
789             CKA_PRIVATE_EXPONENT() => 'CKA_PRIVATE_EXPONENT',
790             CKA_PUBLIC_EXPONENT() => 'CKA_PUBLIC_EXPONENT',
791             CKA_REQUIRED_CMS_ATTRIBUTES() => 'CKA_REQUIRED_CMS_ATTRIBUTES',
792             CKA_RESET_ON_INIT() => 'CKA_RESET_ON_INIT',
793             CKA_RESOLUTION() => 'CKA_RESOLUTION',
794             CKA_SECONDARY_AUTH() => 'CKA_SECONDARY_AUTH',
795             CKA_SENSITIVE() => 'CKA_SENSITIVE',
796             CKA_SERIAL_NUMBER() => 'CKA_SERIAL_NUMBER',
797             CKA_SIGN() => 'CKA_SIGN',
798             CKA_SIGN_RECOVER() => 'CKA_SIGN_RECOVER',
799             CKA_START_DATE() => 'CKA_START_DATE',
800             CKA_SUBJECT() => 'CKA_SUBJECT',
801             CKA_SUBPRIME() => 'CKA_SUBPRIME',
802             CKA_SUB_PRIME_BITS() => 'CKA_SUB_PRIME_BITS',
803             CKA_SUBPRIME_BITS() => 'CKA_SUBPRIME_BITS',
804             CKA_SUPPORTED_CMS_ATTRIBUTES() => 'CKA_SUPPORTED_CMS_ATTRIBUTES',
805             CKA_TOKEN() => 'CKA_TOKEN',
806             CKA_TRUSTED() => 'CKA_TRUSTED',
807             CKA_UNWRAP() => 'CKA_UNWRAP',
808             CKA_UNWRAP_TEMPLATE() => 'CKA_UNWRAP_TEMPLATE',
809             CKA_URL() => 'CKA_URL',
810             CKA_VALUE() => 'CKA_VALUE',
811             CKA_VALUE_BITS() => 'CKA_VALUE_BITS',
812             CKA_VALUE_LEN() => 'CKA_VALUE_LEN',
813             CKA_VENDOR_DEFINED() => 'CKA_VENDOR_DEFINED',
814             CKA_VERIFY() => 'CKA_VERIFY',
815             CKA_VERIFY_RECOVER() => 'CKA_VERIFY_RECOVER',
816             CKA_WRAP() => 'CKA_WRAP',
817             CKA_WRAP_TEMPLATE() => 'CKA_WRAP_TEMPLATE',
818             CKA_WRAP_WITH_TRUSTED() => 'CKA_WRAP_WITH_TRUSTED',
819             );
820              
821             our %CKC_NAME = (
822             CKC_VENDOR_DEFINED() => 'CKC_VENDOR_DEFINED',
823             CKC_WTLS() => 'CKC_WTLS',
824             CKC_X_509() => 'CKC_X_509',
825             CKC_X_509_ATTR_CERT() => 'CKC_X_509_ATTR_CERT',
826             );
827              
828             our %CKD_NAME = (
829             CKD_CPDIVERSIFY_KDF() => 'CKD_CPDIVERSIFY_KDF',
830             CKD_NULL() => 'CKD_NULL',
831             CKD_SHA1_KDF() => 'CKD_SHA1_KDF',
832             CKD_SHA1_KDF_ASN1() => 'CKD_SHA1_KDF_ASN1',
833             CKD_SHA1_KDF_CONCATENATE() => 'CKD_SHA1_KDF_CONCATENATE',
834             CKD_SHA224_KDF() => 'CKD_SHA224_KDF',
835             CKD_SHA256_KDF() => 'CKD_SHA256_KDF',
836             CKD_SHA384_KDF() => 'CKD_SHA384_KDF',
837             CKD_SHA512_KDF() => 'CKD_SHA512_KDF',
838             );
839              
840             our %CKF_NAME = (
841             CKF_ARRAY_ATTRIBUTE() => 'CKF_ARRAY_ATTRIBUTE',
842             CKF_DECRYPT() => 'CKF_DECRYPT',
843             CKF_DERIVE() => 'CKF_DERIVE',
844             CKF_DIGEST() => 'CKF_DIGEST',
845             CKF_DONT_BLOCK() => 'CKF_DONT_BLOCK',
846             CKF_DUAL_CRYPTO_OPERATIONS() => 'CKF_DUAL_CRYPTO_OPERATIONS',
847             CKF_EC_COMPRESS() => 'CKF_EC_COMPRESS',
848             CKF_EC_ECPARAMETERS() => 'CKF_EC_ECPARAMETERS',
849             CKF_EC_F_2M() => 'CKF_EC_F_2M',
850             CKF_EC_F_P() => 'CKF_EC_F_P',
851             CKF_EC_NAMEDCURVE() => 'CKF_EC_NAMEDCURVE',
852             CKF_EC_UNCOMPRESS() => 'CKF_EC_UNCOMPRESS',
853             CKF_ENCRYPT() => 'CKF_ENCRYPT',
854             CKF_ERROR_STATE() => 'CKF_ERROR_STATE',
855             CKF_EXCLUDE_CHALLENGE() => 'CKF_EXCLUDE_CHALLENGE',
856             CKF_EXCLUDE_COUNTER() => 'CKF_EXCLUDE_COUNTER',
857             CKF_EXCLUDE_PIN() => 'CKF_EXCLUDE_PIN',
858             CKF_EXCLUDE_TIME() => 'CKF_EXCLUDE_TIME',
859             CKF_EXTENSION() => 'CKF_EXTENSION',
860             CKF_GENERATE() => 'CKF_GENERATE',
861             CKF_GENERATE_KEY_PAIR() => 'CKF_GENERATE_KEY_PAIR',
862             CKF_HW() => 'CKF_HW',
863             CKF_HW_SLOT() => 'CKF_HW_SLOT',
864             CKF_LIBRARY_CANT_CREATE_OS_THREADS() => 'CKF_LIBRARY_CANT_CREATE_OS_THREADS',
865             CKF_LOGIN_REQUIRED() => 'CKF_LOGIN_REQUIRED',
866             CKF_NEXT_OTP() => 'CKF_NEXT_OTP',
867             CKF_OS_LOCKING_OK() => 'CKF_OS_LOCKING_OK',
868             CKF_PROTECTED_AUTHENTICATION_PATH() => 'CKF_PROTECTED_AUTHENTICATION_PATH',
869             CKF_REMOVABLE_DEVICE() => 'CKF_REMOVABLE_DEVICE',
870             CKF_RESTORE_KEY_NOT_NEEDED() => 'CKF_RESTORE_KEY_NOT_NEEDED',
871             CKF_RNG() => 'CKF_RNG',
872             CKF_RW_SESSION() => 'CKF_RW_SESSION',
873             CKF_SECONDARY_AUTHENTICATION() => 'CKF_SECONDARY_AUTHENTICATION',
874             CKF_SERIAL_SESSION() => 'CKF_SERIAL_SESSION',
875             CKF_SIGN() => 'CKF_SIGN',
876             CKF_SIGN_RECOVER() => 'CKF_SIGN_RECOVER',
877             CKF_SO_PIN_COUNT_LOW() => 'CKF_SO_PIN_COUNT_LOW',
878             CKF_SO_PIN_FINAL_TRY() => 'CKF_SO_PIN_FINAL_TRY',
879             CKF_SO_PIN_LOCKED() => 'CKF_SO_PIN_LOCKED',
880             CKF_SO_PIN_TO_BE_CHANGED() => 'CKF_SO_PIN_TO_BE_CHANGED',
881             CKF_TOKEN_INITIALIZED() => 'CKF_TOKEN_INITIALIZED',
882             CKF_TOKEN_PRESENT() => 'CKF_TOKEN_PRESENT',
883             CKF_UNWRAP() => 'CKF_UNWRAP',
884             CKF_USER_FRIENDLY_OTP() => 'CKF_USER_FRIENDLY_OTP',
885             CKF_USER_PIN_COUNT_LOW() => 'CKF_USER_PIN_COUNT_LOW',
886             CKF_USER_PIN_FINAL_TRY() => 'CKF_USER_PIN_FINAL_TRY',
887             CKF_USER_PIN_INITIALIZED() => 'CKF_USER_PIN_INITIALIZED',
888             CKF_USER_PIN_LOCKED() => 'CKF_USER_PIN_LOCKED',
889             CKF_USER_PIN_TO_BE_CHANGED() => 'CKF_USER_PIN_TO_BE_CHANGED',
890             CKF_VERIFY() => 'CKF_VERIFY',
891             CKF_VERIFY_RECOVER() => 'CKF_VERIFY_RECOVER',
892             CKF_WRAP() => 'CKF_WRAP',
893             CKF_WRITE_PROTECTED() => 'CKF_WRITE_PROTECTED',
894             );
895              
896             our %CKG_NAME = (
897             CKG_MGF1_SHA1() => 'CKG_MGF1_SHA1',
898             CKG_MGF1_SHA224() => 'CKG_MGF1_SHA224',
899             CKG_MGF1_SHA256() => 'CKG_MGF1_SHA256',
900             CKG_MGF1_SHA384() => 'CKG_MGF1_SHA384',
901             CKG_MGF1_SHA512() => 'CKG_MGF1_SHA512',
902             );
903              
904             our %CKH_NAME = (
905             CKH_CLOCK() => 'CKH_CLOCK',
906             CKH_MONOTONIC_COUNTER() => 'CKH_MONOTONIC_COUNTER',
907             CKH_USER_INTERFACE() => 'CKH_USER_INTERFACE',
908             CKH_VENDOR_DEFINED() => 'CKH_VENDOR_DEFINED',
909             );
910              
911             our %CKK_NAME = (
912             CKK_ACTI() => 'CKK_ACTI',
913             CKK_AES() => 'CKK_AES',
914             CKK_ARIA() => 'CKK_ARIA',
915             CKK_BATON() => 'CKK_BATON',
916             CKK_BLOWFISH() => 'CKK_BLOWFISH',
917             CKK_CAMELLIA() => 'CKK_CAMELLIA',
918             CKK_CAST() => 'CKK_CAST',
919             CKK_CAST128() => 'CKK_CAST128',
920             CKK_CAST3() => 'CKK_CAST3',
921             CKK_CAST5() => 'CKK_CAST5',
922             CKK_CDMF() => 'CKK_CDMF',
923             CKK_DES() => 'CKK_DES',
924             CKK_DES2() => 'CKK_DES2',
925             CKK_DES3() => 'CKK_DES3',
926             CKK_DH() => 'CKK_DH',
927             CKK_DSA() => 'CKK_DSA',
928             CKK_EC() => 'CKK_EC',
929             CKK_ECDSA() => 'CKK_ECDSA',
930             CKK_GENERIC_SECRET() => 'CKK_GENERIC_SECRET',
931             CKK_GOST28147() => 'CKK_GOST28147',
932             CKK_GOSTR3410() => 'CKK_GOSTR3410',
933             CKK_GOSTR3411() => 'CKK_GOSTR3411',
934             CKK_HOTP() => 'CKK_HOTP',
935             CKK_IDEA() => 'CKK_IDEA',
936             CKK_JUNIPER() => 'CKK_JUNIPER',
937             CKK_KEA() => 'CKK_KEA',
938             CKK_MD5_HMAC() => 'CKK_MD5_HMAC',
939             CKK_RC2() => 'CKK_RC2',
940             CKK_RC4() => 'CKK_RC4',
941             CKK_RC5() => 'CKK_RC5',
942             CKK_RIPEMD128_HMAC() => 'CKK_RIPEMD128_HMAC',
943             CKK_RIPEMD160_HMAC() => 'CKK_RIPEMD160_HMAC',
944             CKK_RSA() => 'CKK_RSA',
945             CKK_SECURID() => 'CKK_SECURID',
946             CKK_SEED() => 'CKK_SEED',
947             CKK_SHA_1_HMAC() => 'CKK_SHA_1_HMAC',
948             CKK_SHA224_HMAC() => 'CKK_SHA224_HMAC',
949             CKK_SHA256_HMAC() => 'CKK_SHA256_HMAC',
950             CKK_SHA384_HMAC() => 'CKK_SHA384_HMAC',
951             CKK_SHA512_HMAC() => 'CKK_SHA512_HMAC',
952             CKK_SKIPJACK() => 'CKK_SKIPJACK',
953             CKK_TWOFISH() => 'CKK_TWOFISH',
954             CKK_VENDOR_DEFINED() => 'CKK_VENDOR_DEFINED',
955             CKK_X9_42_DH() => 'CKK_X9_42_DH',
956             );
957              
958             our %CKM_NAME = (
959             CKM_ACTI() => 'CKM_ACTI',
960             CKM_ACTI_KEY_GEN() => 'CKM_ACTI_KEY_GEN',
961             CKM_AES_CBC() => 'CKM_AES_CBC',
962             CKM_AES_CBC_ENCRYPT_DATA() => 'CKM_AES_CBC_ENCRYPT_DATA',
963             CKM_AES_CBC_PAD() => 'CKM_AES_CBC_PAD',
964             CKM_AES_CCM() => 'CKM_AES_CCM',
965             CKM_AES_CFB128() => 'CKM_AES_CFB128',
966             CKM_AES_CFB64() => 'CKM_AES_CFB64',
967             CKM_AES_CFB8() => 'CKM_AES_CFB8',
968             CKM_AES_CMAC() => 'CKM_AES_CMAC',
969             CKM_AES_CMAC_GENERAL() => 'CKM_AES_CMAC_GENERAL',
970             CKM_AES_CTR() => 'CKM_AES_CTR',
971             CKM_AES_CTS() => 'CKM_AES_CTS',
972             CKM_AES_ECB() => 'CKM_AES_ECB',
973             CKM_AES_ECB_ENCRYPT_DATA() => 'CKM_AES_ECB_ENCRYPT_DATA',
974             CKM_AES_GCM() => 'CKM_AES_GCM',
975             CKM_AES_KEY_GEN() => 'CKM_AES_KEY_GEN',
976             CKM_AES_KEY_WRAP() => 'CKM_AES_KEY_WRAP',
977             CKM_AES_KEY_WRAP_PAD() => 'CKM_AES_KEY_WRAP_PAD',
978             CKM_AES_MAC() => 'CKM_AES_MAC',
979             CKM_AES_MAC_GENERAL() => 'CKM_AES_MAC_GENERAL',
980             CKM_AES_OFB() => 'CKM_AES_OFB',
981             CKM_ARIA_CBC() => 'CKM_ARIA_CBC',
982             CKM_ARIA_CBC_ENCRYPT_DATA() => 'CKM_ARIA_CBC_ENCRYPT_DATA',
983             CKM_ARIA_CBC_PAD() => 'CKM_ARIA_CBC_PAD',
984             CKM_ARIA_ECB() => 'CKM_ARIA_ECB',
985             CKM_ARIA_ECB_ENCRYPT_DATA() => 'CKM_ARIA_ECB_ENCRYPT_DATA',
986             CKM_ARIA_KEY_GEN() => 'CKM_ARIA_KEY_GEN',
987             CKM_ARIA_MAC() => 'CKM_ARIA_MAC',
988             CKM_ARIA_MAC_GENERAL() => 'CKM_ARIA_MAC_GENERAL',
989             CKM_BATON_CBC128() => 'CKM_BATON_CBC128',
990             CKM_BATON_COUNTER() => 'CKM_BATON_COUNTER',
991             CKM_BATON_ECB128() => 'CKM_BATON_ECB128',
992             CKM_BATON_ECB96() => 'CKM_BATON_ECB96',
993             CKM_BATON_KEY_GEN() => 'CKM_BATON_KEY_GEN',
994             CKM_BATON_SHUFFLE() => 'CKM_BATON_SHUFFLE',
995             CKM_BATON_WRAP() => 'CKM_BATON_WRAP',
996             CKM_BLOWFISH_CBC() => 'CKM_BLOWFISH_CBC',
997             CKM_BLOWFISH_CBC_PAD() => 'CKM_BLOWFISH_CBC_PAD',
998             CKM_BLOWFISH_KEY_GEN() => 'CKM_BLOWFISH_KEY_GEN',
999             CKM_CAMELLIA_CBC() => 'CKM_CAMELLIA_CBC',
1000             CKM_CAMELLIA_CBC_ENCRYPT_DATA() => 'CKM_CAMELLIA_CBC_ENCRYPT_DATA',
1001             CKM_CAMELLIA_CBC_PAD() => 'CKM_CAMELLIA_CBC_PAD',
1002             CKM_CAMELLIA_CTR() => 'CKM_CAMELLIA_CTR',
1003             CKM_CAMELLIA_ECB() => 'CKM_CAMELLIA_ECB',
1004             CKM_CAMELLIA_ECB_ENCRYPT_DATA() => 'CKM_CAMELLIA_ECB_ENCRYPT_DATA',
1005             CKM_CAMELLIA_KEY_GEN() => 'CKM_CAMELLIA_KEY_GEN',
1006             CKM_CAMELLIA_MAC() => 'CKM_CAMELLIA_MAC',
1007             CKM_CAMELLIA_MAC_GENERAL() => 'CKM_CAMELLIA_MAC_GENERAL',
1008             CKM_CAST128_CBC() => 'CKM_CAST128_CBC',
1009             CKM_CAST128_CBC_PAD() => 'CKM_CAST128_CBC_PAD',
1010             CKM_CAST128_ECB() => 'CKM_CAST128_ECB',
1011             CKM_CAST128_KEY_GEN() => 'CKM_CAST128_KEY_GEN',
1012             CKM_CAST128_MAC() => 'CKM_CAST128_MAC',
1013             CKM_CAST128_MAC_GENERAL() => 'CKM_CAST128_MAC_GENERAL',
1014             CKM_CAST3_CBC() => 'CKM_CAST3_CBC',
1015             CKM_CAST3_CBC_PAD() => 'CKM_CAST3_CBC_PAD',
1016             CKM_CAST3_ECB() => 'CKM_CAST3_ECB',
1017             CKM_CAST3_KEY_GEN() => 'CKM_CAST3_KEY_GEN',
1018             CKM_CAST3_MAC() => 'CKM_CAST3_MAC',
1019             CKM_CAST3_MAC_GENERAL() => 'CKM_CAST3_MAC_GENERAL',
1020             CKM_CAST5_CBC() => 'CKM_CAST5_CBC',
1021             CKM_CAST5_CBC_PAD() => 'CKM_CAST5_CBC_PAD',
1022             CKM_CAST5_ECB() => 'CKM_CAST5_ECB',
1023             CKM_CAST5_KEY_GEN() => 'CKM_CAST5_KEY_GEN',
1024             CKM_CAST5_MAC() => 'CKM_CAST5_MAC',
1025             CKM_CAST5_MAC_GENERAL() => 'CKM_CAST5_MAC_GENERAL',
1026             CKM_CAST_CBC() => 'CKM_CAST_CBC',
1027             CKM_CAST_CBC_PAD() => 'CKM_CAST_CBC_PAD',
1028             CKM_CAST_ECB() => 'CKM_CAST_ECB',
1029             CKM_CAST_KEY_GEN() => 'CKM_CAST_KEY_GEN',
1030             CKM_CAST_MAC() => 'CKM_CAST_MAC',
1031             CKM_CAST_MAC_GENERAL() => 'CKM_CAST_MAC_GENERAL',
1032             CKM_CDMF_CBC() => 'CKM_CDMF_CBC',
1033             CKM_CDMF_CBC_PAD() => 'CKM_CDMF_CBC_PAD',
1034             CKM_CDMF_ECB() => 'CKM_CDMF_ECB',
1035             CKM_CDMF_KEY_GEN() => 'CKM_CDMF_KEY_GEN',
1036             CKM_CDMF_MAC() => 'CKM_CDMF_MAC',
1037             CKM_CDMF_MAC_GENERAL() => 'CKM_CDMF_MAC_GENERAL',
1038             CKM_CMS_SIG() => 'CKM_CMS_SIG',
1039             CKM_CONCATENATE_BASE_AND_DATA() => 'CKM_CONCATENATE_BASE_AND_DATA',
1040             CKM_CONCATENATE_BASE_AND_KEY() => 'CKM_CONCATENATE_BASE_AND_KEY',
1041             CKM_CONCATENATE_DATA_AND_BASE() => 'CKM_CONCATENATE_DATA_AND_BASE',
1042             CKM_DES2_KEY_GEN() => 'CKM_DES2_KEY_GEN',
1043             CKM_DES3_CBC() => 'CKM_DES3_CBC',
1044             CKM_DES3_CBC_ENCRYPT_DATA() => 'CKM_DES3_CBC_ENCRYPT_DATA',
1045             CKM_DES3_CBC_PAD() => 'CKM_DES3_CBC_PAD',
1046             CKM_DES3_CMAC() => 'CKM_DES3_CMAC',
1047             CKM_DES3_CMAC_GENERAL() => 'CKM_DES3_CMAC_GENERAL',
1048             CKM_DES3_ECB() => 'CKM_DES3_ECB',
1049             CKM_DES3_ECB_ENCRYPT_DATA() => 'CKM_DES3_ECB_ENCRYPT_DATA',
1050             CKM_DES3_KEY_GEN() => 'CKM_DES3_KEY_GEN',
1051             CKM_DES3_MAC() => 'CKM_DES3_MAC',
1052             CKM_DES3_MAC_GENERAL() => 'CKM_DES3_MAC_GENERAL',
1053             CKM_DES_CBC() => 'CKM_DES_CBC',
1054             CKM_DES_CBC_ENCRYPT_DATA() => 'CKM_DES_CBC_ENCRYPT_DATA',
1055             CKM_DES_CBC_PAD() => 'CKM_DES_CBC_PAD',
1056             CKM_DES_CFB64() => 'CKM_DES_CFB64',
1057             CKM_DES_CFB8() => 'CKM_DES_CFB8',
1058             CKM_DES_ECB() => 'CKM_DES_ECB',
1059             CKM_DES_ECB_ENCRYPT_DATA() => 'CKM_DES_ECB_ENCRYPT_DATA',
1060             CKM_DES_KEY_GEN() => 'CKM_DES_KEY_GEN',
1061             CKM_DES_MAC() => 'CKM_DES_MAC',
1062             CKM_DES_MAC_GENERAL() => 'CKM_DES_MAC_GENERAL',
1063             CKM_DES_OFB64() => 'CKM_DES_OFB64',
1064             CKM_DES_OFB8() => 'CKM_DES_OFB8',
1065             CKM_DH_PKCS_DERIVE() => 'CKM_DH_PKCS_DERIVE',
1066             CKM_DH_PKCS_KEY_PAIR_GEN() => 'CKM_DH_PKCS_KEY_PAIR_GEN',
1067             CKM_DH_PKCS_PARAMETER_GEN() => 'CKM_DH_PKCS_PARAMETER_GEN',
1068             CKM_DSA() => 'CKM_DSA',
1069             CKM_DSA_KEY_PAIR_GEN() => 'CKM_DSA_KEY_PAIR_GEN',
1070             CKM_DSA_PARAMETER_GEN() => 'CKM_DSA_PARAMETER_GEN',
1071             CKM_DSA_SHA1() => 'CKM_DSA_SHA1',
1072             CKM_DSA_SHA224() => 'CKM_DSA_SHA224',
1073             CKM_DSA_SHA256() => 'CKM_DSA_SHA256',
1074             CKM_DSA_SHA384() => 'CKM_DSA_SHA384',
1075             CKM_DSA_SHA512() => 'CKM_DSA_SHA512',
1076             CKM_ECDH1_COFACTOR_DERIVE() => 'CKM_ECDH1_COFACTOR_DERIVE',
1077             CKM_ECDH1_DERIVE() => 'CKM_ECDH1_DERIVE',
1078             CKM_ECDSA() => 'CKM_ECDSA',
1079             CKM_ECDSA_KEY_PAIR_GEN() => 'CKM_ECDSA_KEY_PAIR_GEN',
1080             CKM_ECDSA_SHA1() => 'CKM_ECDSA_SHA1',
1081             CKM_ECDSA_SHA224() => 'CKM_ECDSA_SHA224',
1082             CKM_ECDSA_SHA256() => 'CKM_ECDSA_SHA256',
1083             CKM_ECDSA_SHA384() => 'CKM_ECDSA_SHA384',
1084             CKM_ECDSA_SHA512() => 'CKM_ECDSA_SHA512',
1085             CKM_EC_KEY_PAIR_GEN() => 'CKM_EC_KEY_PAIR_GEN',
1086             CKM_ECMQV_DERIVE() => 'CKM_ECMQV_DERIVE',
1087             CKM_EXTRACT_KEY_FROM_KEY() => 'CKM_EXTRACT_KEY_FROM_KEY',
1088             CKM_FASTHASH() => 'CKM_FASTHASH',
1089             CKM_FORTEZZA_TIMESTAMP() => 'CKM_FORTEZZA_TIMESTAMP',
1090             CKM_GENERIC_SECRET_KEY_GEN() => 'CKM_GENERIC_SECRET_KEY_GEN',
1091             CKM_GOST28147() => 'CKM_GOST28147',
1092             CKM_GOST28147_ECB() => 'CKM_GOST28147_ECB',
1093             CKM_GOST28147_KEY_GEN() => 'CKM_GOST28147_KEY_GEN',
1094             CKM_GOST28147_KEY_WRAP() => 'CKM_GOST28147_KEY_WRAP',
1095             CKM_GOST28147_MAC() => 'CKM_GOST28147_MAC',
1096             CKM_GOSTR3410() => 'CKM_GOSTR3410',
1097             CKM_GOSTR3410_DERIVE() => 'CKM_GOSTR3410_DERIVE',
1098             CKM_GOSTR3410_KEY_PAIR_GEN() => 'CKM_GOSTR3410_KEY_PAIR_GEN',
1099             CKM_GOSTR3410_KEY_WRAP() => 'CKM_GOSTR3410_KEY_WRAP',
1100             CKM_GOSTR3410_WITH_GOSTR3411() => 'CKM_GOSTR3410_WITH_GOSTR3411',
1101             CKM_GOSTR3411() => 'CKM_GOSTR3411',
1102             CKM_GOSTR3411_HMAC() => 'CKM_GOSTR3411_HMAC',
1103             CKM_HOTP() => 'CKM_HOTP',
1104             CKM_HOTP_KEY_GEN() => 'CKM_HOTP_KEY_GEN',
1105             CKM_IDEA_CBC() => 'CKM_IDEA_CBC',
1106             CKM_IDEA_CBC_PAD() => 'CKM_IDEA_CBC_PAD',
1107             CKM_IDEA_ECB() => 'CKM_IDEA_ECB',
1108             CKM_IDEA_KEY_GEN() => 'CKM_IDEA_KEY_GEN',
1109             CKM_IDEA_MAC() => 'CKM_IDEA_MAC',
1110             CKM_IDEA_MAC_GENERAL() => 'CKM_IDEA_MAC_GENERAL',
1111             CKM_JUNIPER_CBC128() => 'CKM_JUNIPER_CBC128',
1112             CKM_JUNIPER_COUNTER() => 'CKM_JUNIPER_COUNTER',
1113             CKM_JUNIPER_ECB128() => 'CKM_JUNIPER_ECB128',
1114             CKM_JUNIPER_KEY_GEN() => 'CKM_JUNIPER_KEY_GEN',
1115             CKM_JUNIPER_SHUFFLE() => 'CKM_JUNIPER_SHUFFLE',
1116             CKM_JUNIPER_WRAP() => 'CKM_JUNIPER_WRAP',
1117             CKM_KEA_KEY_DERIVE() => 'CKM_KEA_KEY_DERIVE',
1118             CKM_KEA_KEY_PAIR_GEN() => 'CKM_KEA_KEY_PAIR_GEN',
1119             CKM_KEY_WRAP_LYNKS() => 'CKM_KEY_WRAP_LYNKS',
1120             CKM_KEY_WRAP_SET_OAEP() => 'CKM_KEY_WRAP_SET_OAEP',
1121             CKM_KIP_DERIVE() => 'CKM_KIP_DERIVE',
1122             CKM_KIP_MAC() => 'CKM_KIP_MAC',
1123             CKM_KIP_WRAP() => 'CKM_KIP_WRAP',
1124             CKM_MD2() => 'CKM_MD2',
1125             CKM_MD2_HMAC() => 'CKM_MD2_HMAC',
1126             CKM_MD2_HMAC_GENERAL() => 'CKM_MD2_HMAC_GENERAL',
1127             CKM_MD2_KEY_DERIVATION() => 'CKM_MD2_KEY_DERIVATION',
1128             CKM_MD2_RSA_PKCS() => 'CKM_MD2_RSA_PKCS',
1129             CKM_MD5() => 'CKM_MD5',
1130             CKM_MD5_HMAC() => 'CKM_MD5_HMAC',
1131             CKM_MD5_HMAC_GENERAL() => 'CKM_MD5_HMAC_GENERAL',
1132             CKM_MD5_KEY_DERIVATION() => 'CKM_MD5_KEY_DERIVATION',
1133             CKM_MD5_RSA_PKCS() => 'CKM_MD5_RSA_PKCS',
1134             CKM_PBA_SHA1_WITH_SHA1_HMAC() => 'CKM_PBA_SHA1_WITH_SHA1_HMAC',
1135             CKM_PBE_MD2_DES_CBC() => 'CKM_PBE_MD2_DES_CBC',
1136             CKM_PBE_MD5_CAST128_CBC() => 'CKM_PBE_MD5_CAST128_CBC',
1137             CKM_PBE_MD5_CAST3_CBC() => 'CKM_PBE_MD5_CAST3_CBC',
1138             CKM_PBE_MD5_CAST5_CBC() => 'CKM_PBE_MD5_CAST5_CBC',
1139             CKM_PBE_MD5_CAST_CBC() => 'CKM_PBE_MD5_CAST_CBC',
1140             CKM_PBE_MD5_DES_CBC() => 'CKM_PBE_MD5_DES_CBC',
1141             CKM_PBE_SHA1_CAST128_CBC() => 'CKM_PBE_SHA1_CAST128_CBC',
1142             CKM_PBE_SHA1_CAST5_CBC() => 'CKM_PBE_SHA1_CAST5_CBC',
1143             CKM_PBE_SHA1_DES2_EDE_CBC() => 'CKM_PBE_SHA1_DES2_EDE_CBC',
1144             CKM_PBE_SHA1_DES3_EDE_CBC() => 'CKM_PBE_SHA1_DES3_EDE_CBC',
1145             CKM_PBE_SHA1_RC2_128_CBC() => 'CKM_PBE_SHA1_RC2_128_CBC',
1146             CKM_PBE_SHA1_RC2_40_CBC() => 'CKM_PBE_SHA1_RC2_40_CBC',
1147             CKM_PBE_SHA1_RC4_128() => 'CKM_PBE_SHA1_RC4_128',
1148             CKM_PBE_SHA1_RC4_40() => 'CKM_PBE_SHA1_RC4_40',
1149             CKM_PKCS5_PBKD2() => 'CKM_PKCS5_PBKD2',
1150             CKM_RC2_CBC() => 'CKM_RC2_CBC',
1151             CKM_RC2_CBC_PAD() => 'CKM_RC2_CBC_PAD',
1152             CKM_RC2_ECB() => 'CKM_RC2_ECB',
1153             CKM_RC2_KEY_GEN() => 'CKM_RC2_KEY_GEN',
1154             CKM_RC2_MAC() => 'CKM_RC2_MAC',
1155             CKM_RC2_MAC_GENERAL() => 'CKM_RC2_MAC_GENERAL',
1156             CKM_RC4() => 'CKM_RC4',
1157             CKM_RC4_KEY_GEN() => 'CKM_RC4_KEY_GEN',
1158             CKM_RC5_CBC() => 'CKM_RC5_CBC',
1159             CKM_RC5_CBC_PAD() => 'CKM_RC5_CBC_PAD',
1160             CKM_RC5_ECB() => 'CKM_RC5_ECB',
1161             CKM_RC5_KEY_GEN() => 'CKM_RC5_KEY_GEN',
1162             CKM_RC5_MAC() => 'CKM_RC5_MAC',
1163             CKM_RC5_MAC_GENERAL() => 'CKM_RC5_MAC_GENERAL',
1164             CKM_RIPEMD128() => 'CKM_RIPEMD128',
1165             CKM_RIPEMD128_HMAC() => 'CKM_RIPEMD128_HMAC',
1166             CKM_RIPEMD128_HMAC_GENERAL() => 'CKM_RIPEMD128_HMAC_GENERAL',
1167             CKM_RIPEMD128_RSA_PKCS() => 'CKM_RIPEMD128_RSA_PKCS',
1168             CKM_RIPEMD160() => 'CKM_RIPEMD160',
1169             CKM_RIPEMD160_HMAC() => 'CKM_RIPEMD160_HMAC',
1170             CKM_RIPEMD160_HMAC_GENERAL() => 'CKM_RIPEMD160_HMAC_GENERAL',
1171             CKM_RIPEMD160_RSA_PKCS() => 'CKM_RIPEMD160_RSA_PKCS',
1172             CKM_RSA_9796() => 'CKM_RSA_9796',
1173             CKM_RSA_PKCS() => 'CKM_RSA_PKCS',
1174             CKM_RSA_PKCS_KEY_PAIR_GEN() => 'CKM_RSA_PKCS_KEY_PAIR_GEN',
1175             CKM_RSA_PKCS_OAEP() => 'CKM_RSA_PKCS_OAEP',
1176             CKM_RSA_PKCS_OAEP_TPM_1_1() => 'CKM_RSA_PKCS_OAEP_TPM_1_1',
1177             CKM_RSA_PKCS_PSS() => 'CKM_RSA_PKCS_PSS',
1178             CKM_RSA_PKCS_TPM_1_1() => 'CKM_RSA_PKCS_TPM_1_1',
1179             CKM_RSA_X_509() => 'CKM_RSA_X_509',
1180             CKM_RSA_X9_31() => 'CKM_RSA_X9_31',
1181             CKM_RSA_X9_31_KEY_PAIR_GEN() => 'CKM_RSA_X9_31_KEY_PAIR_GEN',
1182             CKM_SECURID() => 'CKM_SECURID',
1183             CKM_SECURID_KEY_GEN() => 'CKM_SECURID_KEY_GEN',
1184             CKM_SEED_CBC() => 'CKM_SEED_CBC',
1185             CKM_SEED_CBC_ENCRYPT_DATA() => 'CKM_SEED_CBC_ENCRYPT_DATA',
1186             CKM_SEED_CBC_PAD() => 'CKM_SEED_CBC_PAD',
1187             CKM_SEED_ECB() => 'CKM_SEED_ECB',
1188             CKM_SEED_ECB_ENCRYPT_DATA() => 'CKM_SEED_ECB_ENCRYPT_DATA',
1189             CKM_SEED_KEY_GEN() => 'CKM_SEED_KEY_GEN',
1190             CKM_SEED_MAC() => 'CKM_SEED_MAC',
1191             CKM_SEED_MAC_GENERAL() => 'CKM_SEED_MAC_GENERAL',
1192             CKM_SHA_1() => 'CKM_SHA_1',
1193             CKM_SHA_1_HMAC() => 'CKM_SHA_1_HMAC',
1194             CKM_SHA_1_HMAC_GENERAL() => 'CKM_SHA_1_HMAC_GENERAL',
1195             CKM_SHA1_KEY_DERIVATION() => 'CKM_SHA1_KEY_DERIVATION',
1196             CKM_SHA1_RSA_PKCS() => 'CKM_SHA1_RSA_PKCS',
1197             CKM_SHA1_RSA_PKCS_PSS() => 'CKM_SHA1_RSA_PKCS_PSS',
1198             CKM_SHA1_RSA_X9_31() => 'CKM_SHA1_RSA_X9_31',
1199             CKM_SHA224() => 'CKM_SHA224',
1200             CKM_SHA224_HMAC() => 'CKM_SHA224_HMAC',
1201             CKM_SHA224_HMAC_GENERAL() => 'CKM_SHA224_HMAC_GENERAL',
1202             CKM_SHA224_KEY_DERIVATION() => 'CKM_SHA224_KEY_DERIVATION',
1203             CKM_SHA224_RSA_PKCS() => 'CKM_SHA224_RSA_PKCS',
1204             CKM_SHA224_RSA_PKCS_PSS() => 'CKM_SHA224_RSA_PKCS_PSS',
1205             CKM_SHA256() => 'CKM_SHA256',
1206             CKM_SHA256_HMAC() => 'CKM_SHA256_HMAC',
1207             CKM_SHA256_HMAC_GENERAL() => 'CKM_SHA256_HMAC_GENERAL',
1208             CKM_SHA256_KEY_DERIVATION() => 'CKM_SHA256_KEY_DERIVATION',
1209             CKM_SHA256_RSA_PKCS() => 'CKM_SHA256_RSA_PKCS',
1210             CKM_SHA256_RSA_PKCS_PSS() => 'CKM_SHA256_RSA_PKCS_PSS',
1211             CKM_SHA384() => 'CKM_SHA384',
1212             CKM_SHA384_HMAC() => 'CKM_SHA384_HMAC',
1213             CKM_SHA384_HMAC_GENERAL() => 'CKM_SHA384_HMAC_GENERAL',
1214             CKM_SHA384_KEY_DERIVATION() => 'CKM_SHA384_KEY_DERIVATION',
1215             CKM_SHA384_RSA_PKCS() => 'CKM_SHA384_RSA_PKCS',
1216             CKM_SHA384_RSA_PKCS_PSS() => 'CKM_SHA384_RSA_PKCS_PSS',
1217             CKM_SHA512() => 'CKM_SHA512',
1218             CKM_SHA512_HMAC() => 'CKM_SHA512_HMAC',
1219             CKM_SHA512_HMAC_GENERAL() => 'CKM_SHA512_HMAC_GENERAL',
1220             CKM_SHA512_KEY_DERIVATION() => 'CKM_SHA512_KEY_DERIVATION',
1221             CKM_SHA512_RSA_PKCS() => 'CKM_SHA512_RSA_PKCS',
1222             CKM_SHA512_RSA_PKCS_PSS() => 'CKM_SHA512_RSA_PKCS_PSS',
1223             CKM_SSL3_KEY_AND_MAC_DERIVE() => 'CKM_SSL3_KEY_AND_MAC_DERIVE',
1224             CKM_SSL3_MASTER_KEY_DERIVE() => 'CKM_SSL3_MASTER_KEY_DERIVE',
1225             CKM_SSL3_MASTER_KEY_DERIVE_DH() => 'CKM_SSL3_MASTER_KEY_DERIVE_DH',
1226             CKM_SSL3_MD5_MAC() => 'CKM_SSL3_MD5_MAC',
1227             CKM_SSL3_PRE_MASTER_KEY_GEN() => 'CKM_SSL3_PRE_MASTER_KEY_GEN',
1228             CKM_SSL3_SHA1_MAC() => 'CKM_SSL3_SHA1_MAC',
1229             CKM_TLS_KEY_AND_MAC_DERIVE() => 'CKM_TLS_KEY_AND_MAC_DERIVE',
1230             CKM_TLS_MASTER_KEY_DERIVE() => 'CKM_TLS_MASTER_KEY_DERIVE',
1231             CKM_TLS_MASTER_KEY_DERIVE_DH() => 'CKM_TLS_MASTER_KEY_DERIVE_DH',
1232             CKM_TLS_PRE_MASTER_KEY_GEN() => 'CKM_TLS_PRE_MASTER_KEY_GEN',
1233             CKM_TLS_PRF() => 'CKM_TLS_PRF',
1234             CKM_TWOFISH_CBC() => 'CKM_TWOFISH_CBC',
1235             CKM_TWOFISH_CBC_PAD() => 'CKM_TWOFISH_CBC_PAD',
1236             CKM_TWOFISH_KEY_GEN() => 'CKM_TWOFISH_KEY_GEN',
1237             CKM_VENDOR_DEFINED() => 'CKM_VENDOR_DEFINED',
1238             CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE() => 'CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE',
1239             CKM_WTLS_MASTER_KEY_DERIVE() => 'CKM_WTLS_MASTER_KEY_DERIVE',
1240             CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC() => 'CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC',
1241             CKM_WTLS_PRE_MASTER_KEY_GEN() => 'CKM_WTLS_PRE_MASTER_KEY_GEN',
1242             CKM_WTLS_PRF() => 'CKM_WTLS_PRF',
1243             CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE() => 'CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE',
1244             CKM_X9_42_DH_DERIVE() => 'CKM_X9_42_DH_DERIVE',
1245             CKM_X9_42_DH_HYBRID_DERIVE() => 'CKM_X9_42_DH_HYBRID_DERIVE',
1246             CKM_X9_42_DH_KEY_PAIR_GEN() => 'CKM_X9_42_DH_KEY_PAIR_GEN',
1247             CKM_X9_42_DH_PARAMETER_GEN() => 'CKM_X9_42_DH_PARAMETER_GEN',
1248             CKM_X9_42_MQV_DERIVE() => 'CKM_X9_42_MQV_DERIVE',
1249             CKM_XOR_BASE_AND_DATA() => 'CKM_XOR_BASE_AND_DATA',
1250             );
1251              
1252             our %CKN_NAME = (
1253             CKN_OTP_CHANGED() => 'CKN_OTP_CHANGED',
1254             CKN_SURRENDER() => 'CKN_SURRENDER',
1255             );
1256              
1257             our %CKO_NAME = (
1258             CKO_CERTIFICATE() => 'CKO_CERTIFICATE',
1259             CKO_DATA() => 'CKO_DATA',
1260             CKO_DOMAIN_PARAMETERS() => 'CKO_DOMAIN_PARAMETERS',
1261             CKO_HW_FEATURE() => 'CKO_HW_FEATURE',
1262             CKO_MECHANISM() => 'CKO_MECHANISM',
1263             CKO_OTP_KEY() => 'CKO_OTP_KEY',
1264             CKO_PRIVATE_KEY() => 'CKO_PRIVATE_KEY',
1265             CKO_PUBLIC_KEY() => 'CKO_PUBLIC_KEY',
1266             CKO_SECRET_KEY() => 'CKO_SECRET_KEY',
1267             CKO_VENDOR_DEFINED() => 'CKO_VENDOR_DEFINED',
1268             );
1269              
1270             our %CKP_NAME = (
1271             CKP_PKCS5_PBKD2_HMAC_SHA1() => 'CKP_PKCS5_PBKD2_HMAC_SHA1',
1272             );
1273              
1274             our %CKR_NAME = (
1275             CKR_ARGUMENTS_BAD() => 'CKR_ARGUMENTS_BAD',
1276             CKR_ATTRIBUTE_READ_ONLY() => 'CKR_ATTRIBUTE_READ_ONLY',
1277             CKR_ATTRIBUTE_SENSITIVE() => 'CKR_ATTRIBUTE_SENSITIVE',
1278             CKR_ATTRIBUTE_TYPE_INVALID() => 'CKR_ATTRIBUTE_TYPE_INVALID',
1279             CKR_ATTRIBUTE_VALUE_INVALID() => 'CKR_ATTRIBUTE_VALUE_INVALID',
1280             CKR_BUFFER_TOO_SMALL() => 'CKR_BUFFER_TOO_SMALL',
1281             CKR_CANCEL() => 'CKR_CANCEL',
1282             CKR_CANT_LOCK() => 'CKR_CANT_LOCK',
1283             CKR_CRYPTOKI_ALREADY_INITIALIZED() => 'CKR_CRYPTOKI_ALREADY_INITIALIZED',
1284             CKR_CRYPTOKI_NOT_INITIALIZED() => 'CKR_CRYPTOKI_NOT_INITIALIZED',
1285             CKR_DATA_INVALID() => 'CKR_DATA_INVALID',
1286             CKR_DATA_LEN_RANGE() => 'CKR_DATA_LEN_RANGE',
1287             CKR_DEVICE_ERROR() => 'CKR_DEVICE_ERROR',
1288             CKR_DEVICE_MEMORY() => 'CKR_DEVICE_MEMORY',
1289             CKR_DEVICE_REMOVED() => 'CKR_DEVICE_REMOVED',
1290             CKR_DOMAIN_PARAMS_INVALID() => 'CKR_DOMAIN_PARAMS_INVALID',
1291             CKR_ENCRYPTED_DATA_INVALID() => 'CKR_ENCRYPTED_DATA_INVALID',
1292             CKR_ENCRYPTED_DATA_LEN_RANGE() => 'CKR_ENCRYPTED_DATA_LEN_RANGE',
1293             CKR_EXCEEDED_MAX_ITERATIONS() => 'CKR_EXCEEDED_MAX_ITERATIONS',
1294             CKR_FIPS_SELF_TEST_FAILED() => 'CKR_FIPS_SELF_TEST_FAILED',
1295             CKR_FUNCTION_CANCELED() => 'CKR_FUNCTION_CANCELED',
1296             CKR_FUNCTION_FAILED() => 'CKR_FUNCTION_FAILED',
1297             CKR_FUNCTION_NOT_PARALLEL() => 'CKR_FUNCTION_NOT_PARALLEL',
1298             CKR_FUNCTION_NOT_SUPPORTED() => 'CKR_FUNCTION_NOT_SUPPORTED',
1299             CKR_FUNCTION_REJECTED() => 'CKR_FUNCTION_REJECTED',
1300             CKR_GENERAL_ERROR() => 'CKR_GENERAL_ERROR',
1301             CKR_HOST_MEMORY() => 'CKR_HOST_MEMORY',
1302             CKR_INFORMATION_SENSITIVE() => 'CKR_INFORMATION_SENSITIVE',
1303             CKR_KEY_CHANGED() => 'CKR_KEY_CHANGED',
1304             CKR_KEY_FUNCTION_NOT_PERMITTED() => 'CKR_KEY_FUNCTION_NOT_PERMITTED',
1305             CKR_KEY_HANDLE_INVALID() => 'CKR_KEY_HANDLE_INVALID',
1306             CKR_KEY_INDIGESTIBLE() => 'CKR_KEY_INDIGESTIBLE',
1307             CKR_KEY_NEEDED() => 'CKR_KEY_NEEDED',
1308             CKR_KEY_NOT_NEEDED() => 'CKR_KEY_NOT_NEEDED',
1309             CKR_KEY_NOT_WRAPPABLE() => 'CKR_KEY_NOT_WRAPPABLE',
1310             CKR_KEY_SIZE_RANGE() => 'CKR_KEY_SIZE_RANGE',
1311             CKR_KEY_TYPE_INCONSISTENT() => 'CKR_KEY_TYPE_INCONSISTENT',
1312             CKR_KEY_UNEXTRACTABLE() => 'CKR_KEY_UNEXTRACTABLE',
1313             CKR_LIBRARY_LOAD_FAILED() => 'CKR_LIBRARY_LOAD_FAILED',
1314             CKR_MECHANISM_INVALID() => 'CKR_MECHANISM_INVALID',
1315             CKR_MECHANISM_PARAM_INVALID() => 'CKR_MECHANISM_PARAM_INVALID',
1316             CKR_MUTEX_BAD() => 'CKR_MUTEX_BAD',
1317             CKR_MUTEX_NOT_LOCKED() => 'CKR_MUTEX_NOT_LOCKED',
1318             CKR_NEED_TO_CREATE_THREADS() => 'CKR_NEED_TO_CREATE_THREADS',
1319             CKR_NEW_PIN_MODE() => 'CKR_NEW_PIN_MODE',
1320             CKR_NEXT_OTP() => 'CKR_NEXT_OTP',
1321             CKR_NO_EVENT() => 'CKR_NO_EVENT',
1322             CKR_OBJECT_HANDLE_INVALID() => 'CKR_OBJECT_HANDLE_INVALID',
1323             CKR_OK() => 'CKR_OK',
1324             CKR_OPERATION_ACTIVE() => 'CKR_OPERATION_ACTIVE',
1325             CKR_OPERATION_NOT_INITIALIZED() => 'CKR_OPERATION_NOT_INITIALIZED',
1326             CKR_PIN_EXPIRED() => 'CKR_PIN_EXPIRED',
1327             CKR_PIN_INCORRECT() => 'CKR_PIN_INCORRECT',
1328             CKR_PIN_INVALID() => 'CKR_PIN_INVALID',
1329             CKR_PIN_LEN_RANGE() => 'CKR_PIN_LEN_RANGE',
1330             CKR_PIN_LOCKED() => 'CKR_PIN_LOCKED',
1331             CKR_PIN_TOO_WEAK() => 'CKR_PIN_TOO_WEAK',
1332             CKR_PUBLIC_KEY_INVALID() => 'CKR_PUBLIC_KEY_INVALID',
1333             CKR_RANDOM_NO_RNG() => 'CKR_RANDOM_NO_RNG',
1334             CKR_RANDOM_SEED_NOT_SUPPORTED() => 'CKR_RANDOM_SEED_NOT_SUPPORTED',
1335             CKR_SAVED_STATE_INVALID() => 'CKR_SAVED_STATE_INVALID',
1336             CKR_SESSION_CLOSED() => 'CKR_SESSION_CLOSED',
1337             CKR_SESSION_COUNT() => 'CKR_SESSION_COUNT',
1338             CKR_SESSION_EXISTS() => 'CKR_SESSION_EXISTS',
1339             CKR_SESSION_HANDLE_INVALID() => 'CKR_SESSION_HANDLE_INVALID',
1340             CKR_SESSION_PARALLEL_NOT_SUPPORTED() => 'CKR_SESSION_PARALLEL_NOT_SUPPORTED',
1341             CKR_SESSION_READ_ONLY() => 'CKR_SESSION_READ_ONLY',
1342             CKR_SESSION_READ_ONLY_EXISTS() => 'CKR_SESSION_READ_ONLY_EXISTS',
1343             CKR_SESSION_READ_WRITE_SO_EXISTS() => 'CKR_SESSION_READ_WRITE_SO_EXISTS',
1344             CKR_SIGNATURE_INVALID() => 'CKR_SIGNATURE_INVALID',
1345             CKR_SIGNATURE_LEN_RANGE() => 'CKR_SIGNATURE_LEN_RANGE',
1346             CKR_SLOT_ID_INVALID() => 'CKR_SLOT_ID_INVALID',
1347             CKR_STATE_UNSAVEABLE() => 'CKR_STATE_UNSAVEABLE',
1348             CKR_TEMPLATE_INCOMPLETE() => 'CKR_TEMPLATE_INCOMPLETE',
1349             CKR_TEMPLATE_INCONSISTENT() => 'CKR_TEMPLATE_INCONSISTENT',
1350             CKR_TOKEN_NOT_PRESENT() => 'CKR_TOKEN_NOT_PRESENT',
1351             CKR_TOKEN_NOT_RECOGNIZED() => 'CKR_TOKEN_NOT_RECOGNIZED',
1352             CKR_TOKEN_WRITE_PROTECTED() => 'CKR_TOKEN_WRITE_PROTECTED',
1353             CKR_UNWRAPPING_KEY_HANDLE_INVALID() => 'CKR_UNWRAPPING_KEY_HANDLE_INVALID',
1354             CKR_UNWRAPPING_KEY_SIZE_RANGE() => 'CKR_UNWRAPPING_KEY_SIZE_RANGE',
1355             CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT() => 'CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT',
1356             CKR_USER_ALREADY_LOGGED_IN() => 'CKR_USER_ALREADY_LOGGED_IN',
1357             CKR_USER_ANOTHER_ALREADY_LOGGED_IN() => 'CKR_USER_ANOTHER_ALREADY_LOGGED_IN',
1358             CKR_USER_NOT_LOGGED_IN() => 'CKR_USER_NOT_LOGGED_IN',
1359             CKR_USER_PIN_NOT_INITIALIZED() => 'CKR_USER_PIN_NOT_INITIALIZED',
1360             CKR_USER_TOO_MANY_TYPES() => 'CKR_USER_TOO_MANY_TYPES',
1361             CKR_USER_TYPE_INVALID() => 'CKR_USER_TYPE_INVALID',
1362             CKR_VENDOR_DEFINED() => 'CKR_VENDOR_DEFINED',
1363             CKR_WRAPPED_KEY_INVALID() => 'CKR_WRAPPED_KEY_INVALID',
1364             CKR_WRAPPED_KEY_LEN_RANGE() => 'CKR_WRAPPED_KEY_LEN_RANGE',
1365             CKR_WRAPPING_KEY_HANDLE_INVALID() => 'CKR_WRAPPING_KEY_HANDLE_INVALID',
1366             CKR_WRAPPING_KEY_SIZE_RANGE() => 'CKR_WRAPPING_KEY_SIZE_RANGE',
1367             CKR_WRAPPING_KEY_TYPE_INCONSISTENT() => 'CKR_WRAPPING_KEY_TYPE_INCONSISTENT',
1368             );
1369              
1370             our %CKS_NAME = (
1371             CKS_RO_PUBLIC_SESSION() => 'CKS_RO_PUBLIC_SESSION',
1372             CKS_RO_USER_FUNCTIONS() => 'CKS_RO_USER_FUNCTIONS',
1373             CKS_RW_PUBLIC_SESSION() => 'CKS_RW_PUBLIC_SESSION',
1374             CKS_RW_SO_FUNCTIONS() => 'CKS_RW_SO_FUNCTIONS',
1375             CKS_RW_USER_FUNCTIONS() => 'CKS_RW_USER_FUNCTIONS',
1376             );
1377              
1378             our %CKU_NAME = (
1379             CKU_CONTEXT_SPECIFIC() => 'CKU_CONTEXT_SPECIFIC',
1380             CKU_SO() => 'CKU_SO',
1381             CKU_USER() => 'CKU_USER',
1382             );
1383              
1384             our %CKZ_NAME = (
1385             CKZ_DATA_SPECIFIED() => 'CKZ_DATA_SPECIFIED',
1386             CKZ_SALT_SPECIFIED() => 'CKZ_SALT_SPECIFIED',
1387             );
1388              
1389             our $VERSION = '1.01';
1390              
1391             our (@ISA, %EXPORT_TAGS, @EXPORT_OK);
1392             BEGIN {
1393 6     6   84 require Exporter;
1394 6         84 @ISA = qw(Exporter);
1395 6         453 %EXPORT_TAGS = ( constant => [qw(
1396             CK_ULONG_SIZE
1397              
1398             CRYPTOKI_VERSION_MAJOR CRYPTOKI_VERSION_MINOR CRYPTOKI_VERSION_AMENDMENT
1399             CK_TRUE CK_FALSE FALSE TRUE CK_UNAVAILABLE_INFORMATION CK_EFFECTIVELY_INFINITE
1400             CK_INVALID_HANDLE CKN_SURRENDER CKN_OTP_CHANGED CKF_TOKEN_PRESENT
1401             CKF_REMOVABLE_DEVICE CKF_HW_SLOT CKF_RNG CKF_WRITE_PROTECTED CKF_LOGIN_REQUIRED
1402             CKF_USER_PIN_INITIALIZED CKF_RESTORE_KEY_NOT_NEEDED CKF_CLOCK_ON_TOKEN
1403             CKF_PROTECTED_AUTHENTICATION_PATH CKF_DUAL_CRYPTO_OPERATIONS
1404             CKF_TOKEN_INITIALIZED CKF_SECONDARY_AUTHENTICATION CKF_USER_PIN_COUNT_LOW
1405             CKF_USER_PIN_FINAL_TRY CKF_USER_PIN_LOCKED CKF_USER_PIN_TO_BE_CHANGED
1406             CKF_SO_PIN_COUNT_LOW CKF_SO_PIN_FINAL_TRY CKF_SO_PIN_LOCKED
1407             CKF_SO_PIN_TO_BE_CHANGED CKU_SO CKU_USER CKU_CONTEXT_SPECIFIC
1408             CKS_RO_PUBLIC_SESSION CKS_RO_USER_FUNCTIONS CKS_RW_PUBLIC_SESSION
1409             CKS_RW_USER_FUNCTIONS CKS_RW_SO_FUNCTIONS CKF_RW_SESSION CKF_SERIAL_SESSION
1410             CKO_DATA CKO_CERTIFICATE CKO_PUBLIC_KEY CKO_PRIVATE_KEY CKO_SECRET_KEY
1411             CKO_HW_FEATURE CKO_DOMAIN_PARAMETERS CKO_MECHANISM CKO_OTP_KEY
1412             CKO_VENDOR_DEFINED CKH_MONOTONIC_COUNTER CKH_CLOCK CKH_USER_INTERFACE
1413             CKH_VENDOR_DEFINED CKK_RSA CKK_DSA CKK_DH CKK_ECDSA CKK_EC CKK_X9_42_DH CKK_KEA
1414             CKK_GENERIC_SECRET CKK_RC2 CKK_RC4 CKK_DES CKK_DES2 CKK_DES3 CKK_CAST CKK_CAST3
1415             CKK_CAST5 CKK_CAST128 CKK_RC5 CKK_IDEA CKK_SKIPJACK CKK_BATON CKK_JUNIPER
1416             CKK_CDMF CKK_AES CKK_BLOWFISH CKK_TWOFISH CKK_SECURID CKK_HOTP CKK_ACTI
1417             CKK_CAMELLIA CKK_ARIA CKK_VENDOR_DEFINED CKC_X_509 CKC_X_509_ATTR_CERT CKC_WTLS
1418             CKC_VENDOR_DEFINED CKF_ARRAY_ATTRIBUTE CK_OTP_FORMAT_DECIMAL
1419             CK_OTP_FORMAT_HEXADECIMAL CK_OTP_FORMAT_ALPHANUMERIC CK_OTP_FORMAT_BINARY
1420             CK_OTP_PARAM_IGNORED CK_OTP_PARAM_OPTIONAL CK_OTP_PARAM_MANDATORY CKA_CLASS
1421             CKA_TOKEN CKA_PRIVATE CKA_LABEL CKA_APPLICATION CKA_VALUE CKA_OBJECT_ID
1422             CKA_CERTIFICATE_TYPE CKA_ISSUER CKA_SERIAL_NUMBER CKA_AC_ISSUER CKA_OWNER
1423             CKA_ATTR_TYPES CKA_TRUSTED CKA_CERTIFICATE_CATEGORY
1424             CKA_JAVA_MIDP_SECURITY_DOMAIN CKA_URL CKA_HASH_OF_SUBJECT_PUBLIC_KEY
1425             CKA_HASH_OF_ISSUER_PUBLIC_KEY CKA_CHECK_VALUE CKA_KEY_TYPE CKA_SUBJECT CKA_ID
1426             CKA_SENSITIVE CKA_ENCRYPT CKA_DECRYPT CKA_WRAP CKA_UNWRAP CKA_SIGN
1427             CKA_SIGN_RECOVER CKA_VERIFY CKA_VERIFY_RECOVER CKA_DERIVE CKA_START_DATE
1428             CKA_END_DATE CKA_MODULUS CKA_MODULUS_BITS CKA_PUBLIC_EXPONENT
1429             CKA_PRIVATE_EXPONENT CKA_PRIME_1 CKA_PRIME_2 CKA_EXPONENT_1 CKA_EXPONENT_2
1430             CKA_COEFFICIENT CKA_PRIME CKA_SUBPRIME CKA_BASE CKA_PRIME_BITS
1431             CKA_SUBPRIME_BITS CKA_SUB_PRIME_BITS CKA_VALUE_BITS CKA_VALUE_LEN
1432             CKA_EXTRACTABLE CKA_LOCAL CKA_NEVER_EXTRACTABLE CKA_ALWAYS_SENSITIVE
1433             CKA_KEY_GEN_MECHANISM CKA_MODIFIABLE CKA_ECDSA_PARAMS CKA_EC_PARAMS
1434             CKA_EC_POINT CKA_SECONDARY_AUTH CKA_AUTH_PIN_FLAGS CKA_ALWAYS_AUTHENTICATE
1435             CKA_WRAP_WITH_TRUSTED CKA_WRAP_TEMPLATE CKA_UNWRAP_TEMPLATE CKA_OTP_FORMAT
1436             CKA_OTP_LENGTH CKA_OTP_TIME_INTERVAL CKA_OTP_USER_FRIENDLY_MODE
1437             CKA_OTP_CHALLENGE_REQUIREMENT CKA_OTP_TIME_REQUIREMENT
1438             CKA_OTP_COUNTER_REQUIREMENT CKA_OTP_PIN_REQUIREMENT CKA_OTP_COUNTER
1439             CKA_OTP_TIME CKA_OTP_USER_IDENTIFIER CKA_OTP_SERVICE_IDENTIFIER
1440             CKA_OTP_SERVICE_LOGO CKA_OTP_SERVICE_LOGO_TYPE CKA_HW_FEATURE_TYPE
1441             CKA_RESET_ON_INIT CKA_HAS_RESET CKA_PIXEL_X CKA_PIXEL_Y CKA_RESOLUTION
1442             CKA_CHAR_ROWS CKA_CHAR_COLUMNS CKA_COLOR CKA_BITS_PER_PIXEL CKA_CHAR_SETS
1443             CKA_ENCODING_METHODS CKA_MIME_TYPES CKA_MECHANISM_TYPE
1444             CKA_REQUIRED_CMS_ATTRIBUTES CKA_DEFAULT_CMS_ATTRIBUTES
1445             CKA_SUPPORTED_CMS_ATTRIBUTES CKA_ALLOWED_MECHANISMS CKA_VENDOR_DEFINED
1446             CKM_RSA_PKCS_KEY_PAIR_GEN CKM_RSA_PKCS CKM_RSA_9796 CKM_RSA_X_509
1447             CKM_MD2_RSA_PKCS CKM_MD5_RSA_PKCS CKM_SHA1_RSA_PKCS CKM_RIPEMD128_RSA_PKCS
1448             CKM_RIPEMD160_RSA_PKCS CKM_RSA_PKCS_OAEP CKM_RSA_X9_31_KEY_PAIR_GEN
1449             CKM_RSA_X9_31 CKM_SHA1_RSA_X9_31 CKM_RSA_PKCS_PSS CKM_SHA1_RSA_PKCS_PSS
1450             CKM_DSA_KEY_PAIR_GEN CKM_DSA CKM_DSA_SHA1 CKM_DH_PKCS_KEY_PAIR_GEN
1451             CKM_DH_PKCS_DERIVE CKM_X9_42_DH_KEY_PAIR_GEN CKM_X9_42_DH_DERIVE
1452             CKM_X9_42_DH_HYBRID_DERIVE CKM_X9_42_MQV_DERIVE CKM_SHA256_RSA_PKCS
1453             CKM_SHA384_RSA_PKCS CKM_SHA512_RSA_PKCS CKM_SHA256_RSA_PKCS_PSS
1454             CKM_SHA384_RSA_PKCS_PSS CKM_SHA512_RSA_PKCS_PSS CKM_SHA224_RSA_PKCS
1455             CKM_SHA224_RSA_PKCS_PSS CKM_RC2_KEY_GEN CKM_RC2_ECB CKM_RC2_CBC CKM_RC2_MAC
1456             CKM_RC2_MAC_GENERAL CKM_RC2_CBC_PAD CKM_RC4_KEY_GEN CKM_RC4 CKM_DES_KEY_GEN
1457             CKM_DES_ECB CKM_DES_CBC CKM_DES_MAC CKM_DES_MAC_GENERAL CKM_DES_CBC_PAD
1458             CKM_DES2_KEY_GEN CKM_DES3_KEY_GEN CKM_DES3_ECB CKM_DES3_CBC CKM_DES3_MAC
1459             CKM_DES3_MAC_GENERAL CKM_DES3_CBC_PAD CKM_CDMF_KEY_GEN CKM_CDMF_ECB
1460             CKM_CDMF_CBC CKM_CDMF_MAC CKM_CDMF_MAC_GENERAL CKM_CDMF_CBC_PAD CKM_DES_OFB64
1461             CKM_DES_OFB8 CKM_DES_CFB64 CKM_DES_CFB8 CKM_MD2 CKM_MD2_HMAC
1462             CKM_MD2_HMAC_GENERAL CKM_MD5 CKM_MD5_HMAC CKM_MD5_HMAC_GENERAL CKM_SHA_1
1463             CKM_SHA_1_HMAC CKM_SHA_1_HMAC_GENERAL CKM_RIPEMD128 CKM_RIPEMD128_HMAC
1464             CKM_RIPEMD128_HMAC_GENERAL CKM_RIPEMD160 CKM_RIPEMD160_HMAC
1465             CKM_RIPEMD160_HMAC_GENERAL CKM_SHA256 CKM_SHA256_HMAC CKM_SHA256_HMAC_GENERAL
1466             CKM_SHA224 CKM_SHA224_HMAC CKM_SHA224_HMAC_GENERAL CKM_SHA384 CKM_SHA384_HMAC
1467             CKM_SHA384_HMAC_GENERAL CKM_SHA512 CKM_SHA512_HMAC CKM_SHA512_HMAC_GENERAL
1468             CKM_SECURID_KEY_GEN CKM_SECURID CKM_HOTP_KEY_GEN CKM_HOTP CKM_ACTI
1469             CKM_ACTI_KEY_GEN CKM_CAST_KEY_GEN CKM_CAST_ECB CKM_CAST_CBC CKM_CAST_MAC
1470             CKM_CAST_MAC_GENERAL CKM_CAST_CBC_PAD CKM_CAST3_KEY_GEN CKM_CAST3_ECB
1471             CKM_CAST3_CBC CKM_CAST3_MAC CKM_CAST3_MAC_GENERAL CKM_CAST3_CBC_PAD
1472             CKM_CAST5_KEY_GEN CKM_CAST128_KEY_GEN CKM_CAST5_ECB CKM_CAST128_ECB
1473             CKM_CAST5_CBC CKM_CAST128_CBC CKM_CAST5_MAC CKM_CAST128_MAC
1474             CKM_CAST5_MAC_GENERAL CKM_CAST128_MAC_GENERAL CKM_CAST5_CBC_PAD
1475             CKM_CAST128_CBC_PAD CKM_RC5_KEY_GEN CKM_RC5_ECB CKM_RC5_CBC CKM_RC5_MAC
1476             CKM_RC5_MAC_GENERAL CKM_RC5_CBC_PAD CKM_IDEA_KEY_GEN CKM_IDEA_ECB CKM_IDEA_CBC
1477             CKM_IDEA_MAC CKM_IDEA_MAC_GENERAL CKM_IDEA_CBC_PAD CKM_GENERIC_SECRET_KEY_GEN
1478             CKM_CONCATENATE_BASE_AND_KEY CKM_CONCATENATE_BASE_AND_DATA
1479             CKM_CONCATENATE_DATA_AND_BASE CKM_XOR_BASE_AND_DATA CKM_EXTRACT_KEY_FROM_KEY
1480             CKM_SSL3_PRE_MASTER_KEY_GEN CKM_SSL3_MASTER_KEY_DERIVE
1481             CKM_SSL3_KEY_AND_MAC_DERIVE CKM_SSL3_MASTER_KEY_DERIVE_DH
1482             CKM_TLS_PRE_MASTER_KEY_GEN CKM_TLS_MASTER_KEY_DERIVE CKM_TLS_KEY_AND_MAC_DERIVE
1483             CKM_TLS_MASTER_KEY_DERIVE_DH CKM_TLS_PRF CKM_SSL3_MD5_MAC CKM_SSL3_SHA1_MAC
1484             CKM_MD5_KEY_DERIVATION CKM_MD2_KEY_DERIVATION CKM_SHA1_KEY_DERIVATION
1485             CKM_SHA256_KEY_DERIVATION CKM_SHA384_KEY_DERIVATION CKM_SHA512_KEY_DERIVATION
1486             CKM_SHA224_KEY_DERIVATION CKM_PBE_MD2_DES_CBC CKM_PBE_MD5_DES_CBC
1487             CKM_PBE_MD5_CAST_CBC CKM_PBE_MD5_CAST3_CBC CKM_PBE_MD5_CAST5_CBC
1488             CKM_PBE_MD5_CAST128_CBC CKM_PBE_SHA1_CAST5_CBC CKM_PBE_SHA1_CAST128_CBC
1489             CKM_PBE_SHA1_RC4_128 CKM_PBE_SHA1_RC4_40 CKM_PBE_SHA1_DES3_EDE_CBC
1490             CKM_PBE_SHA1_DES2_EDE_CBC CKM_PBE_SHA1_RC2_128_CBC CKM_PBE_SHA1_RC2_40_CBC
1491             CKM_PKCS5_PBKD2 CKM_PBA_SHA1_WITH_SHA1_HMAC CKM_WTLS_PRE_MASTER_KEY_GEN
1492             CKM_WTLS_MASTER_KEY_DERIVE CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC CKM_WTLS_PRF
1493             CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE
1494             CKM_KEY_WRAP_LYNKS CKM_KEY_WRAP_SET_OAEP CKM_CMS_SIG CKM_KIP_DERIVE
1495             CKM_KIP_WRAP CKM_KIP_MAC CKM_CAMELLIA_KEY_GEN CKM_CAMELLIA_ECB CKM_CAMELLIA_CBC
1496             CKM_CAMELLIA_MAC CKM_CAMELLIA_MAC_GENERAL CKM_CAMELLIA_CBC_PAD
1497             CKM_CAMELLIA_ECB_ENCRYPT_DATA CKM_CAMELLIA_CBC_ENCRYPT_DATA CKM_CAMELLIA_CTR
1498             CKM_ARIA_KEY_GEN CKM_ARIA_ECB CKM_ARIA_CBC CKM_ARIA_MAC CKM_ARIA_MAC_GENERAL
1499             CKM_ARIA_CBC_PAD CKM_ARIA_ECB_ENCRYPT_DATA CKM_ARIA_CBC_ENCRYPT_DATA
1500             CKM_SKIPJACK_KEY_GEN CKM_SKIPJACK_ECB64 CKM_SKIPJACK_CBC64 CKM_SKIPJACK_OFB64
1501             CKM_SKIPJACK_CFB64 CKM_SKIPJACK_CFB32 CKM_SKIPJACK_CFB16 CKM_SKIPJACK_CFB8
1502             CKM_SKIPJACK_WRAP CKM_SKIPJACK_PRIVATE_WRAP CKM_SKIPJACK_RELAYX
1503             CKM_KEA_KEY_PAIR_GEN CKM_KEA_KEY_DERIVE CKM_FORTEZZA_TIMESTAMP
1504             CKM_BATON_KEY_GEN CKM_BATON_ECB128 CKM_BATON_ECB96 CKM_BATON_CBC128
1505             CKM_BATON_COUNTER CKM_BATON_SHUFFLE CKM_BATON_WRAP CKM_ECDSA_KEY_PAIR_GEN
1506             CKM_EC_KEY_PAIR_GEN CKM_ECDSA CKM_ECDSA_SHA1 CKM_ECDH1_DERIVE
1507             CKM_ECDH1_COFACTOR_DERIVE CKM_ECMQV_DERIVE CKM_JUNIPER_KEY_GEN
1508             CKM_JUNIPER_ECB128 CKM_JUNIPER_CBC128 CKM_JUNIPER_COUNTER CKM_JUNIPER_SHUFFLE
1509             CKM_JUNIPER_WRAP CKM_FASTHASH CKM_AES_KEY_GEN CKM_AES_ECB CKM_AES_CBC
1510             CKM_AES_MAC CKM_AES_MAC_GENERAL CKM_AES_CBC_PAD CKM_AES_CTR
1511             CKM_BLOWFISH_KEY_GEN CKM_BLOWFISH_CBC CKM_TWOFISH_KEY_GEN CKM_TWOFISH_CBC
1512             CKM_DES_ECB_ENCRYPT_DATA CKM_DES_CBC_ENCRYPT_DATA CKM_DES3_ECB_ENCRYPT_DATA
1513             CKM_DES3_CBC_ENCRYPT_DATA CKM_AES_ECB_ENCRYPT_DATA CKM_AES_CBC_ENCRYPT_DATA
1514             CKM_DSA_PARAMETER_GEN CKM_DH_PKCS_PARAMETER_GEN CKM_X9_42_DH_PARAMETER_GEN
1515             CKM_VENDOR_DEFINED CKF_HW CKF_ENCRYPT CKF_DECRYPT CKF_DIGEST CKF_SIGN
1516             CKF_SIGN_RECOVER CKF_VERIFY CKF_VERIFY_RECOVER CKF_GENERATE
1517             CKF_GENERATE_KEY_PAIR CKF_WRAP CKF_UNWRAP CKF_DERIVE CKF_EC_F_P CKF_EC_F_2M
1518             CKF_EC_ECPARAMETERS CKF_EC_NAMEDCURVE CKF_EC_UNCOMPRESS CKF_EC_COMPRESS
1519             CKF_EXTENSION CKR_OK CKR_CANCEL CKR_HOST_MEMORY CKR_SLOT_ID_INVALID
1520             CKR_GENERAL_ERROR CKR_FUNCTION_FAILED CKR_ARGUMENTS_BAD CKR_NO_EVENT
1521             CKR_NEED_TO_CREATE_THREADS CKR_CANT_LOCK CKR_ATTRIBUTE_READ_ONLY
1522             CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_TYPE_INVALID CKR_ATTRIBUTE_VALUE_INVALID
1523             CKR_DATA_INVALID CKR_DATA_LEN_RANGE CKR_DEVICE_ERROR CKR_DEVICE_MEMORY
1524             CKR_DEVICE_REMOVED CKR_ENCRYPTED_DATA_INVALID CKR_ENCRYPTED_DATA_LEN_RANGE
1525             CKR_FUNCTION_CANCELED CKR_FUNCTION_NOT_PARALLEL CKR_FUNCTION_NOT_SUPPORTED
1526             CKR_KEY_HANDLE_INVALID CKR_KEY_SIZE_RANGE CKR_KEY_TYPE_INCONSISTENT
1527             CKR_KEY_NOT_NEEDED CKR_KEY_CHANGED CKR_KEY_NEEDED CKR_KEY_INDIGESTIBLE
1528             CKR_KEY_FUNCTION_NOT_PERMITTED CKR_KEY_NOT_WRAPPABLE CKR_KEY_UNEXTRACTABLE
1529             CKR_MECHANISM_INVALID CKR_MECHANISM_PARAM_INVALID CKR_OBJECT_HANDLE_INVALID
1530             CKR_OPERATION_ACTIVE CKR_OPERATION_NOT_INITIALIZED CKR_PIN_INCORRECT
1531             CKR_PIN_INVALID CKR_PIN_LEN_RANGE CKR_PIN_EXPIRED CKR_PIN_LOCKED
1532             CKR_SESSION_CLOSED CKR_SESSION_COUNT CKR_SESSION_HANDLE_INVALID
1533             CKR_SESSION_PARALLEL_NOT_SUPPORTED CKR_SESSION_READ_ONLY CKR_SESSION_EXISTS
1534             CKR_SESSION_READ_ONLY_EXISTS CKR_SESSION_READ_WRITE_SO_EXISTS
1535             CKR_SIGNATURE_INVALID CKR_SIGNATURE_LEN_RANGE CKR_TEMPLATE_INCOMPLETE
1536             CKR_TEMPLATE_INCONSISTENT CKR_TOKEN_NOT_PRESENT CKR_TOKEN_NOT_RECOGNIZED
1537             CKR_TOKEN_WRITE_PROTECTED CKR_UNWRAPPING_KEY_HANDLE_INVALID
1538             CKR_UNWRAPPING_KEY_SIZE_RANGE CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT
1539             CKR_USER_ALREADY_LOGGED_IN CKR_USER_NOT_LOGGED_IN CKR_USER_PIN_NOT_INITIALIZED
1540             CKR_USER_TYPE_INVALID CKR_USER_ANOTHER_ALREADY_LOGGED_IN
1541             CKR_USER_TOO_MANY_TYPES CKR_WRAPPED_KEY_INVALID CKR_WRAPPED_KEY_LEN_RANGE
1542             CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPING_KEY_SIZE_RANGE
1543             CKR_WRAPPING_KEY_TYPE_INCONSISTENT CKR_RANDOM_SEED_NOT_SUPPORTED
1544             CKR_RANDOM_NO_RNG CKR_DOMAIN_PARAMS_INVALID CKR_BUFFER_TOO_SMALL
1545             CKR_SAVED_STATE_INVALID CKR_INFORMATION_SENSITIVE CKR_STATE_UNSAVEABLE
1546             CKR_CRYPTOKI_NOT_INITIALIZED CKR_CRYPTOKI_ALREADY_INITIALIZED CKR_MUTEX_BAD
1547             CKR_MUTEX_NOT_LOCKED CKR_NEW_PIN_MODE CKR_NEXT_OTP CKR_FUNCTION_REJECTED
1548             CKR_VENDOR_DEFINED CKF_LIBRARY_CANT_CREATE_OS_THREADS CKF_OS_LOCKING_OK
1549             CKF_DONT_BLOCK CKG_MGF1_SHA1 CKG_MGF1_SHA256 CKG_MGF1_SHA384 CKG_MGF1_SHA512
1550             CKG_MGF1_SHA224 CKZ_DATA_SPECIFIED CKD_NULL CKD_SHA1_KDF CKD_SHA1_KDF_ASN1
1551             CKD_SHA1_KDF_CONCATENATE CKP_PKCS5_PBKD2_HMAC_SHA1 CKZ_SALT_SPECIFIED
1552             CK_OTP_VALUE CK_OTP_PIN CK_OTP_CHALLENGE CK_OTP_TIME CK_OTP_COUNTER
1553             CK_OTP_FLAGS CK_OTP_OUTPUT_LENGTH CK_OTP_OUTPUT_FORMAT CKF_NEXT_OTP
1554             CKF_EXCLUDE_TIME CKF_EXCLUDE_COUNTER CKF_EXCLUDE_CHALLENGE CKF_EXCLUDE_PIN
1555             CKF_USER_FRIENDLY_OTP
1556              
1557             CKF_ERROR_STATE CKK_MD5_HMAC CKK_SHA_1_HMAC CKK_RIPEMD128_HMAC
1558             CKK_RIPEMD160_HMAC CKK_SHA256_HMAC CKK_SHA384_HMAC CKK_SHA512_HMAC
1559             CKK_SHA224_HMAC CKK_SEED CKK_GOSTR3410 CKK_GOSTR3411 CKK_GOST28147
1560             CKA_DERIVE_TEMPLATE CKA_GOSTR3410_PARAMS CKA_GOSTR3411_PARAMS
1561             CKA_GOST28147_PARAMS CKM_DSA_SHA224 CKM_DSA_SHA256 CKM_DSA_SHA384
1562             CKM_DSA_SHA512 CKM_DES3_CMAC_GENERAL CKM_DES3_CMAC CKM_SEED_KEY_GEN
1563             CKM_SEED_ECB CKM_SEED_CBC CKM_SEED_MAC CKM_SEED_MAC_GENERAL CKM_SEED_CBC_PAD
1564             CKM_SEED_ECB_ENCRYPT_DATA CKM_SEED_CBC_ENCRYPT_DATA CKM_ECDSA_SHA224
1565             CKM_ECDSA_SHA256 CKM_ECDSA_SHA384 CKM_ECDSA_SHA512 CKM_AES_CTS CKM_AES_CMAC
1566             CKM_AES_CMAC_GENERAL CKM_AES_GCM CKM_AES_CCM CKM_AES_KEY_WRAP
1567             CKM_AES_KEY_WRAP_PAD CKM_BLOWFISH_CBC_PAD CKM_TWOFISH_CBC_PAD
1568             CKM_GOSTR3410_KEY_PAIR_GEN CKM_GOSTR3410 CKM_GOSTR3410_WITH_GOSTR3411
1569             CKM_GOSTR3410_KEY_WRAP CKM_GOSTR3410_DERIVE CKM_GOSTR3411 CKM_GOSTR3411_HMAC
1570             CKM_GOST28147_KEY_GEN CKM_GOST28147_ECB CKM_GOST28147 CKM_GOST28147_MAC
1571             CKM_GOST28147_KEY_WRAP CKM_AES_OFB CKM_AES_CFB64 CKM_AES_CFB8 CKM_AES_CFB128
1572             CKM_RSA_PKCS_TPM_1_1 CKM_RSA_PKCS_OAEP_TPM_1_1 CKR_EXCEEDED_MAX_ITERATIONS
1573             CKR_FIPS_SELF_TEST_FAILED CKR_LIBRARY_LOAD_FAILED CKR_PIN_TOO_WEAK
1574             CKR_PUBLIC_KEY_INVALID CKD_SHA224_KDF CKD_SHA256_KDF CKD_SHA384_KDF
1575             CKD_SHA512_KDF CKD_CPDIVERSIFY_KDF
1576              
1577             CKA_NAME_HASH_ALGORITHM CKA_COPYABLE)],
1578             constant_names => [qw(
1579             %CKA_NAME %CKC_NAME %CKD_NAME %CKF_NAME %CKG_NAME %CKH_NAME %CKK_NAME %CKM_NAME
1580             %CKN_NAME %CKO_NAME %CKP_NAME %CKR_NAME %CKS_NAME %CKU_NAME %CKZ_NAME
1581             )]
1582             );
1583 6         24 @EXPORT_OK = (
1584 6         756 @{ $EXPORT_TAGS{constant} },
1585 6         17 @{ $EXPORT_TAGS{constant_names} }
1586             );
1587             }
1588              
1589             require XSLoader;
1590             XSLoader::load('Crypt::PKCS11', $VERSION);
1591              
1592 6     6   4120 use Crypt::PKCS11::Session;
  6         22  
  6         14520  
1593              
1594             sub new {
1595 4     4 1 3032 my $this = shift;
1596 4   100     20 my $class = ref($this) || $this;
1597 4         22 my $self = {
1598             pkcs11xs => undef,
1599             rv => CKR_OK
1600             };
1601 4         11 bless $self, $class;
1602              
1603             # uncoverable branch true
1604 4 50       69 unless (defined($self->{pkcs11xs} = Crypt::PKCS11::XS->new())) {
1605             # uncoverable statement
1606 0         0 confess __PACKAGE__, 'Unable to create Crypt::PKCS11::XS object';
1607             }
1608              
1609 4         18 return $self;
1610             }
1611              
1612             END {
1613 6     6   499484 Crypt::PKCS11::XS::clearCreateMutex();
1614 6         58 Crypt::PKCS11::XS::clearDestroyMutex();
1615 6         37 Crypt::PKCS11::XS::clearLockMutex();
1616 6         56 Crypt::PKCS11::XS::clearUnlockMutex();
1617             }
1618              
1619             sub load {
1620 2     2 1 325 my ($self, $so) = @_;
1621              
1622 2 100       9 unless (defined $so) {
1623 1         194 confess '$so must be defined';
1624             }
1625              
1626 1         286 $self->{rv} = $self->{pkcs11xs}->load($so);
1627 1 50       11 return $self->{rv} == CKR_OK ? 1 : undef;
1628             }
1629              
1630             sub unload {
1631 1     1 1 3 my ($self) = @_;
1632              
1633 1         7 $self->{rv} = $self->{pkcs11xs}->unload;
1634 1 50       6 return $self->{rv} == CKR_OK ? 1 : undef;
1635             }
1636              
1637             sub Initialize {
1638 10     10 1 2406 my ($self) = shift;
1639 10         12 my $args;
1640              
1641 10 50       19 if (scalar @_ == 1) {
1642 10 100       32 unless (ref($_[0]) eq 'HASH') {
1643 1         102 confess 'argument is not a HASH';
1644             }
1645 9         10 $args = $_[0];
1646             }
1647             else {
1648 0         0 $args = { @_ };
1649             }
1650              
1651 9 100 100     42 if (exists $args->{CreateMutex}
      100        
      100        
1652             or exists $args->{DestroyMutex}
1653             or exists $args->{LockMutex}
1654             or exists $args->{UnlockMutex})
1655             {
1656 8 100 100     46 unless (ref($args->{CreateMutex}) eq 'CODE'
      100        
      100        
1657             and ref($args->{DestroyMutex}) eq 'CODE'
1658             and ref($args->{LockMutex}) eq 'CODE'
1659             and ref($args->{UnlockMutex}) eq 'CODE')
1660             {
1661 7         650 confess 'Any or all of Mutex options are invalid';
1662             }
1663             }
1664              
1665 2         17 $self->{rv} = $self->{pkcs11xs}->C_Initialize($args);
1666 2 50       10 return $self->{rv} == CKR_OK ? 1 : undef;
1667             }
1668              
1669             sub Finalize {
1670 1     1 1 1 my ($self) = @_;
1671              
1672 1         8 $self->{rv} = $self->{pkcs11xs}->C_Finalize;
1673 1 50       5 return $self->{rv} == CKR_OK ? 1 : undef;
1674             }
1675              
1676             sub GetInfo {
1677 1     1 1 2 my ($self) = @_;
1678 1         2 my %info;
1679              
1680 1         7 $self->{rv} = $self->{pkcs11xs}->C_GetInfo(\%info);
1681 1 0       6 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1682             }
1683              
1684             sub GetSlotList {
1685 1     1 1 3 my ($self, $tokenPresent) = @_;
1686 1         2 my @slotList;
1687              
1688 1         21 $self->{rv} = $self->{pkcs11xs}->C_GetSlotList($tokenPresent, \@slotList);
1689 1 0       8 return $self->{rv} == CKR_OK ? wantarray ? @slotList : \@slotList : undef;
    50          
1690             }
1691              
1692             sub GetSlotInfo {
1693 2     2 1 271 my ($self, $slotID) = @_;
1694 2         3 my %info;
1695              
1696 2 100       6 unless (defined $slotID) {
1697 1         115 confess '$slotID must be defined';
1698             }
1699              
1700 1         9 $self->{rv} = $self->{pkcs11xs}->C_GetSlotInfo($slotID, \%info);
1701 1 0       7 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1702             }
1703              
1704             sub GetTokenInfo {
1705 2     2 1 262 my ($self, $slotID) = @_;
1706 2         3 my %info;
1707              
1708 2 100       5 unless (defined $slotID) {
1709 1         99 confess '$slotID must be defined';
1710             }
1711              
1712 1         11 $self->{rv} = $self->{pkcs11xs}->C_GetTokenInfo($slotID, \%info);
1713 1 0       7 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1714             }
1715              
1716             sub GetMechanismList {
1717 2     2 1 265 my ($self, $slotID) = @_;
1718 2         2 my @mechanismList;
1719              
1720 2 100       6 unless (defined $slotID) {
1721 1         97 confess '$slotID must be defined';
1722             }
1723              
1724 1         12 $self->{rv} = $self->{pkcs11xs}->C_GetMechanismList($slotID, \@mechanismList);
1725 1 0       7 return $self->{rv} == CKR_OK ? wantarray ? @mechanismList : \@mechanismList : undef;
    50          
1726             }
1727              
1728             sub GetMechanismInfo {
1729 3     3 1 589 my ($self, $slotID, $mechanismType) = @_;
1730 3         4 my %info;
1731              
1732 3 100       6 unless (defined $slotID) {
1733 1         120 confess '$slotID must be defined';
1734             }
1735 2 100       6 unless (defined $mechanismType) {
1736 1         96 confess '$mechanismType must be defined';
1737             }
1738              
1739 1         8 $self->{rv} = $self->{pkcs11xs}->C_GetMechanismInfo($slotID, $mechanismType, \%info);
1740 1 0       6 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1741             }
1742              
1743             sub InitToken {
1744 6     6 1 807 my $self = shift;
1745 6         4 my ($slotID, $pin, $label);
1746              
1747 6 100       13 if (scalar @_ == 2) {
1748 3         4 ($slotID, $label) = @_;
1749             }
1750             else {
1751 3         5 ($slotID, $pin, $label) = @_;
1752             }
1753              
1754 6 100       13 unless (defined $slotID) {
1755 2         197 confess '$slotID must be defined';
1756             }
1757 4 100       14 unless (defined $label) {
1758 1         103 confess '$label must be defined';
1759             }
1760              
1761 3         13 $self->{rv} = $self->{pkcs11xs}->C_InitToken($slotID, $pin, $label);
1762 3 50       14 return $self->{rv} == CKR_OK ? 1 : undef;
1763             }
1764              
1765             sub OpenSession {
1766 3     3 1 548 my ($self, $slotID, $flags, $notifycb) = @_;
1767 3         5 my $session;
1768              
1769 3 100       7 unless (defined $slotID) {
1770 1         111 confess '$slotID must be defined';
1771             }
1772 2 100 66     14 if (defined $notifycb and ref($notifycb) ne 'CODE') {
1773 1         95 confess '$notifycb must be CODE if defined';
1774             }
1775              
1776 1 50       27 $self->{rv} = $self->{pkcs11xs}->C_OpenSession($slotID, defined $flags ? $flags : 0, $notifycb, $session);
1777 1 50       9 return $self->{rv} == CKR_OK ? Crypt::PKCS11::Session->new($self->{pkcs11xs}, $session) : undef;
1778             }
1779              
1780             sub CloseAllSessions {
1781 2     2 1 267 my ($self, $slotID) = @_;
1782              
1783 2 100       6 unless (defined $slotID) {
1784 1         115 confess '$slotID must be defined';
1785             }
1786              
1787 1         11 $self->{rv} = $self->{pkcs11xs}->C_CloseAllSessions($slotID);
1788 1 50       5 return $self->{rv} == CKR_OK ? 1 : undef;
1789             }
1790              
1791             sub WaitForSlotEvent {
1792 3     3 1 4 my ($self, $flags) = @_;
1793 3         4 my $slotID;
1794              
1795 3 50       17 $self->{rv} = $self->{pkcs11xs}->C_WaitForSlotEvent(defined $flags ? $flags : 0, $slotID);
1796 3 100       19 return $self->{rv} == CKR_OK ? $slotID : undef;
1797             }
1798              
1799             sub errno {
1800 1     1 1 4 return $_[0]->{rv};
1801             }
1802              
1803             sub errstr {
1804 0     0 1 0 return Crypt::PKCS11::XS::rv2str($_[0]->{rv});
1805             }
1806              
1807             package Crypt::PKCS11::struct;
1808 6     6   89 use Carp;
  6         11  
  6         801  
1809             sub toBytes {
1810 1     1   130 confess 'unimplemented';
1811             }
1812             package Crypt::PKCS11::CK_AES_CBC_ENCRYPT_DATA_PARAMS;
1813 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         3066  
1814             package Crypt::PKCS11::CK_AES_CCM_PARAMS;
1815 6     6   47 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1803  
1816             package Crypt::PKCS11::CK_AES_CTR_PARAMS;
1817 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1943  
1818             package Crypt::PKCS11::CK_AES_GCM_PARAMS;
1819 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1796  
1820             package Crypt::PKCS11::CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;
1821 6     6   60 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1794  
1822             package Crypt::PKCS11::CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;
1823 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1902  
1824             package Crypt::PKCS11::CK_CAMELLIA_CTR_PARAMS;
1825 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1846  
1826             package Crypt::PKCS11::CK_CMS_SIG_PARAMS;
1827 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         2092  
1828             package Crypt::PKCS11::CK_DES_CBC_ENCRYPT_DATA_PARAMS;
1829 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         14  
  6         1839  
1830             package Crypt::PKCS11::CK_ECDH1_DERIVE_PARAMS;
1831 6     6   48 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1887  
1832             package Crypt::PKCS11::CK_ECDH2_DERIVE_PARAMS;
1833 6     6   43 use base qw(Crypt::PKCS11::struct);
  6         15  
  6         1790  
1834             package Crypt::PKCS11::CK_ECMQV_DERIVE_PARAMS;
1835 6     6   53 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1790  
1836             package Crypt::PKCS11::CK_KEA_DERIVE_PARAMS;
1837 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         2095  
1838             package Crypt::PKCS11::CK_KEY_DERIVATION_STRING_DATA;
1839 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1895  
1840             package Crypt::PKCS11::CK_KEY_WRAP_SET_OAEP_PARAMS;
1841 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1764  
1842             package Crypt::PKCS11::CK_KIP_PARAMS;
1843 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1865  
1844             package Crypt::PKCS11::CK_MECHANISM;
1845 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1932  
1846             package Crypt::PKCS11::CK_OTP_PARAM;
1847 6     6   47 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1873  
1848             package Crypt::PKCS11::CK_OTP_PARAMS;
1849 6     6   43 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2403  
1850             package Crypt::PKCS11::CK_OTP_SIGNATURE_INFO;
1851 6     6   50 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2091  
1852             package Crypt::PKCS11::CK_PBE_PARAMS;
1853 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         14  
  6         1823  
1854             package Crypt::PKCS11::CK_PKCS5_PBKD2_PARAMS;
1855 6     6   44 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1875  
1856             package Crypt::PKCS11::CK_RC2_CBC_PARAMS;
1857 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         2220  
1858             package Crypt::PKCS11::CK_RC2_MAC_GENERAL_PARAMS;
1859 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1955  
1860             package Crypt::PKCS11::CK_RC5_CBC_PARAMS;
1861 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1877  
1862             package Crypt::PKCS11::CK_RC5_MAC_GENERAL_PARAMS;
1863 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         17  
  6         2045  
1864             package Crypt::PKCS11::CK_RC5_PARAMS;
1865 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2032  
1866             package Crypt::PKCS11::CK_RSA_PKCS_OAEP_PARAMS;
1867 6     6   42 use base qw(Crypt::PKCS11::struct);
  6         14  
  6         1963  
1868             package Crypt::PKCS11::CK_RSA_PKCS_PSS_PARAMS;
1869 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         13  
  6         1878  
1870             package Crypt::PKCS11::CK_SKIPJACK_PRIVATE_WRAP_PARAMS;
1871 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1870  
1872             package Crypt::PKCS11::CK_SKIPJACK_RELAYX_PARAMS;
1873 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         28  
  6         2087  
1874             package Crypt::PKCS11::CK_SSL3_KEY_MAT_OUT;
1875 6     6   44 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1923  
1876             package Crypt::PKCS11::CK_SSL3_KEY_MAT_PARAMS;
1877 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         28  
  6         1875  
1878             package Crypt::PKCS11::CK_SSL3_MASTER_KEY_DERIVE_PARAMS;
1879 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1847  
1880             package Crypt::PKCS11::CK_SSL3_RANDOM_DATA;
1881 6     6   72 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1861  
1882             package Crypt::PKCS11::CK_TLS_PRF_PARAMS;
1883 6     6   42 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1885  
1884             package Crypt::PKCS11::CK_VERSION;
1885 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1849  
1886             package Crypt::PKCS11::CK_WTLS_KEY_MAT_OUT;
1887 6     6   43 use base qw(Crypt::PKCS11::struct);
  6         19  
  6         1896  
1888             package Crypt::PKCS11::CK_WTLS_KEY_MAT_PARAMS;
1889 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         16  
  6         1867  
1890             package Crypt::PKCS11::CK_WTLS_MASTER_KEY_DERIVE_PARAMS;
1891 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1843  
1892             package Crypt::PKCS11::CK_WTLS_PRF_PARAMS;
1893 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1924  
1894             package Crypt::PKCS11::CK_WTLS_RANDOM_DATA;
1895 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         22  
  6         1910  
1896             package Crypt::PKCS11::CK_X9_42_DH1_DERIVE_PARAMS;
1897 6     6   46 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1957  
1898             package Crypt::PKCS11::CK_X9_42_DH2_DERIVE_PARAMS;
1899 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1937  
1900             package Crypt::PKCS11::CK_X9_42_MQV_DERIVE_PARAMS;
1901 6     6   43 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1968  
1902              
1903             package Crypt::PKCS11::CK_AES_CBC_ENCRYPT_DATA_PARAMSPtr;
1904 6     6   77 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1825  
1905             package Crypt::PKCS11::CK_AES_CCM_PARAMSPtr;
1906 6     6   43 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1912  
1907             package Crypt::PKCS11::CK_AES_CTR_PARAMSPtr;
1908 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1922  
1909             package Crypt::PKCS11::CK_AES_GCM_PARAMSPtr;
1910 6     6   51 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1836  
1911             package Crypt::PKCS11::CK_ARIA_CBC_ENCRYPT_DATA_PARAMSPtr;
1912 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1812  
1913             package Crypt::PKCS11::CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMSPtr;
1914 6     6   42 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1950  
1915             package Crypt::PKCS11::CK_CAMELLIA_CTR_PARAMSPtr;
1916 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1896  
1917             package Crypt::PKCS11::CK_CMS_SIG_PARAMSPtr;
1918 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1873  
1919             package Crypt::PKCS11::CK_DES_CBC_ENCRYPT_DATA_PARAMSPtr;
1920 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1810  
1921             package Crypt::PKCS11::CK_ECDH1_DERIVE_PARAMSPtr;
1922 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         14  
  6         1894  
1923             package Crypt::PKCS11::CK_ECDH2_DERIVE_PARAMSPtr;
1924 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2043  
1925             package Crypt::PKCS11::CK_ECMQV_DERIVE_PARAMSPtr;
1926 6     6   49 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         2116  
1927             package Crypt::PKCS11::CK_KEA_DERIVE_PARAMSPtr;
1928 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         2061  
1929             package Crypt::PKCS11::CK_KEY_DERIVATION_STRING_DATAPtr;
1930 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         2022  
1931             package Crypt::PKCS11::CK_KEY_WRAP_SET_OAEP_PARAMSPtr;
1932 6     6   46 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         2201  
1933             package Crypt::PKCS11::CK_KIP_PARAMSPtr;
1934 6     6   47 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2088  
1935             package Crypt::PKCS11::CK_MECHANISMPtr;
1936 6     6   62 use base qw(Crypt::PKCS11::struct);
  6         13  
  6         1996  
1937 6     6   47 use Carp;
  6         25  
  6         599  
1938 6     6   77 use Crypt::PKCS11 qw(:constant);
  6         10  
  6         22133  
1939              
1940             sub toHash {
1941 26     26   255 my ($mechanism, $pParameter);
1942              
1943             # uncoverable branch true
1944 26 50       135 unless ($_[0]->get_mechanism($mechanism) == CKR_OK) {
1945             # uncoverable statement
1946 0         0 confess 'Unable to get mechanism';
1947             }
1948             # uncoverable branch true
1949 26 50       110 unless ($_[0]->get_pParameter($pParameter) == CKR_OK) {
1950             # uncoverable statement
1951 0         0 confess 'Unable to get pParameter';
1952             }
1953              
1954             return {
1955 26 100       133 mechanism => $mechanism,
1956             (defined $pParameter ? (pParameter => $pParameter) : ())
1957             };
1958             }
1959              
1960             package Crypt::PKCS11::CK_OTP_PARAMPtr;
1961 6     6   69 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         2362  
1962             package Crypt::PKCS11::CK_OTP_PARAMSPtr;
1963 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1814  
1964             package Crypt::PKCS11::CK_OTP_SIGNATURE_INFOPtr;
1965 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1762  
1966             package Crypt::PKCS11::CK_PBE_PARAMSPtr;
1967 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1795  
1968             package Crypt::PKCS11::CK_PKCS5_PBKD2_PARAMSPtr;
1969 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1708  
1970             package Crypt::PKCS11::CK_RC2_CBC_PARAMSPtr;
1971 6     6   42 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1797  
1972             package Crypt::PKCS11::CK_RC2_MAC_GENERAL_PARAMSPtr;
1973 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1689  
1974             package Crypt::PKCS11::CK_RC5_CBC_PARAMSPtr;
1975 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1713  
1976             package Crypt::PKCS11::CK_RC5_MAC_GENERAL_PARAMSPtr;
1977 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1656  
1978             package Crypt::PKCS11::CK_RC5_PARAMSPtr;
1979 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1779  
1980             package Crypt::PKCS11::CK_RSA_PKCS_OAEP_PARAMSPtr;
1981 6     6   45 use base qw(Crypt::PKCS11::struct);
  6         15  
  6         1656  
1982             package Crypt::PKCS11::CK_RSA_PKCS_PSS_PARAMSPtr;
1983 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         13  
  6         1675  
1984             package Crypt::PKCS11::CK_SKIPJACK_PRIVATE_WRAP_PARAMSPtr;
1985 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1651  
1986             package Crypt::PKCS11::CK_SKIPJACK_RELAYX_PARAMSPtr;
1987 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1729  
1988             package Crypt::PKCS11::CK_SSL3_KEY_MAT_OUTPtr;
1989 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1667  
1990             package Crypt::PKCS11::CK_SSL3_KEY_MAT_PARAMSPtr;
1991 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1648  
1992             package Crypt::PKCS11::CK_SSL3_MASTER_KEY_DERIVE_PARAMSPtr;
1993 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1738  
1994             package Crypt::PKCS11::CK_SSL3_RANDOM_DATAPtr;
1995 6     6   79 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1698  
1996             package Crypt::PKCS11::CK_TLS_PRF_PARAMSPtr;
1997 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1657  
1998             package Crypt::PKCS11::CK_VERSIONPtr;
1999 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         40  
  6         1798  
2000             package Crypt::PKCS11::CK_WTLS_KEY_MAT_OUTPtr;
2001 6     6   37 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1712  
2002             package Crypt::PKCS11::CK_WTLS_KEY_MAT_PARAMSPtr;
2003 6     6   49 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1737  
2004             package Crypt::PKCS11::CK_WTLS_MASTER_KEY_DERIVE_PARAMSPtr;
2005 6     6   79 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1696  
2006             package Crypt::PKCS11::CK_WTLS_PRF_PARAMSPtr;
2007 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         13  
  6         1705  
2008             package Crypt::PKCS11::CK_WTLS_RANDOM_DATAPtr;
2009 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1623  
2010             package Crypt::PKCS11::CK_X9_42_DH1_DERIVE_PARAMSPtr;
2011 6     6   38 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1619  
2012             package Crypt::PKCS11::CK_X9_42_DH2_DERIVE_PARAMSPtr;
2013 6     6   40 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1747  
2014             package Crypt::PKCS11::CK_X9_42_MQV_DERIVE_PARAMSPtr;
2015 6     6   35 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         2284  
2016              
2017             1;
2018              
2019             __END__