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   98374 use 5.008000;
  6         18  
  6         214  
29 6     6   3044 use common::sense;
  6         43  
  6         22  
30 6     6   281 use Carp;
  6         11  
  6         430  
31              
32 6     6   27 use constant CRYPTOKI_VERSION_MAJOR => 2;
  6         9  
  6         386  
33 6     6   22 use constant CRYPTOKI_VERSION_MINOR => 30;
  6         6  
  6         212  
34 6     6   24 use constant CRYPTOKI_VERSION_AMENDMENT => 0;
  6         7  
  6         232  
35              
36             # constants since cryptoki v2.20.3
37              
38 6     6   21 use constant CK_TRUE => 1;
  6         7  
  6         218  
39 6     6   22 use constant CK_FALSE => 0;
  6         6  
  6         341  
40 6     6   29 use constant FALSE => CK_FALSE;
  6         7  
  6         350  
41 6     6   74 use constant TRUE => CK_TRUE;
  6         9  
  6         286  
42 6     6   28 use constant CK_UNAVAILABLE_INFORMATION => ~0;
  6         7  
  6         257  
43 6     6   26 use constant CK_EFFECTIVELY_INFINITE => 0;
  6         5  
  6         223  
44 6     6   24 use constant CK_INVALID_HANDLE => 0;
  6         9  
  6         231  
45 6     6   44 use constant CKN_SURRENDER => 0;
  6         8  
  6         236  
46 6     6   26 use constant CKN_OTP_CHANGED => 1;
  6         7  
  6         229  
47 6     6   32 use constant CKF_TOKEN_PRESENT => 0x00000001;
  6         7  
  6         232  
48 6     6   25 use constant CKF_REMOVABLE_DEVICE => 0x00000002;
  6         17  
  6         250  
49 6     6   33 use constant CKF_HW_SLOT => 0x00000004;
  6         7  
  6         265  
50 6     6   27 use constant CKF_RNG => 0x00000001;
  6         8  
  6         268  
51 6     6   27 use constant CKF_WRITE_PROTECTED => 0x00000002;
  6         9  
  6         270  
52 6     6   35 use constant CKF_LOGIN_REQUIRED => 0x00000004;
  6         9  
  6         242  
53 6     6   32 use constant CKF_USER_PIN_INITIALIZED => 0x00000008;
  6         5  
  6         243  
54 6     6   22 use constant CKF_RESTORE_KEY_NOT_NEEDED => 0x00000020;
  6         8  
  6         230  
55 6     6   24 use constant CKF_CLOCK_ON_TOKEN => 0x00000040;
  6         7  
  6         225  
56 6     6   24 use constant CKF_PROTECTED_AUTHENTICATION_PATH => 0x00000100;
  6         6  
  6         265  
57 6     6   29 use constant CKF_DUAL_CRYPTO_OPERATIONS => 0x00000200;
  6         15  
  6         214  
58 6     6   20 use constant CKF_TOKEN_INITIALIZED => 0x00000400;
  6         14  
  6         204  
59 6     6   20 use constant CKF_SECONDARY_AUTHENTICATION => 0x00000800;
  6         7  
  6         284  
60 6     6   21 use constant CKF_USER_PIN_COUNT_LOW => 0x00010000;
  6         5  
  6         200  
61 6     6   20 use constant CKF_USER_PIN_FINAL_TRY => 0x00020000;
  6         7  
  6         231  
62 6     6   25 use constant CKF_USER_PIN_LOCKED => 0x00040000;
  6         72  
  6         248  
63 6     6   24 use constant CKF_USER_PIN_TO_BE_CHANGED => 0x00080000;
  6         7  
  6         219  
64 6     6   22 use constant CKF_SO_PIN_COUNT_LOW => 0x00100000;
  6         5  
  6         224  
65 6     6   20 use constant CKF_SO_PIN_FINAL_TRY => 0x00200000;
  6         6  
  6         188  
66 6     6   22 use constant CKF_SO_PIN_LOCKED => 0x00400000;
  6         19  
  6         211  
67 6     6   22 use constant CKF_SO_PIN_TO_BE_CHANGED => 0x00800000;
  6         12  
  6         232  
68 6     6   24 use constant CKU_SO => 0;
  6         7  
  6         215  
69 6     6   24 use constant CKU_USER => 1;
  6         7  
  6         202  
70 6     6   19 use constant CKU_CONTEXT_SPECIFIC => 2;
  6         8  
  6         231  
71 6     6   23 use constant CKS_RO_PUBLIC_SESSION => 0;
  6         6  
  6         210  
72 6     6   25 use constant CKS_RO_USER_FUNCTIONS => 1;
  6         6  
  6         217  
73 6     6   22 use constant CKS_RW_PUBLIC_SESSION => 2;
  6         6  
  6         221  
74 6     6   30 use constant CKS_RW_USER_FUNCTIONS => 3;
  6         6  
  6         338  
75 6     6   39 use constant CKS_RW_SO_FUNCTIONS => 4;
  6         6  
  6         257  
76 6     6   27 use constant CKF_RW_SESSION => 0x00000002;
  6         7  
  6         242  
77 6     6   24 use constant CKF_SERIAL_SESSION => 0x00000004;
  6         6  
  6         267  
78 6     6   25 use constant CKO_DATA => 0x00000000;
  6         6  
  6         237  
79 6     6   23 use constant CKO_CERTIFICATE => 0x00000001;
  6         6  
  6         226  
80 6     6   26 use constant CKO_PUBLIC_KEY => 0x00000002;
  6         17  
  6         226  
81 6     6   26 use constant CKO_PRIVATE_KEY => 0x00000003;
  6         12  
  6         239  
82 6     6   24 use constant CKO_SECRET_KEY => 0x00000004;
  6         8  
  6         283  
83 6     6   31 use constant CKO_HW_FEATURE => 0x00000005;
  6         7  
  6         235  
84 6     6   26 use constant CKO_DOMAIN_PARAMETERS => 0x00000006;
  6         6  
  6         255  
85 6     6   27 use constant CKO_MECHANISM => 0x00000007;
  6         7  
  6         293  
86 6     6   38 use constant CKO_OTP_KEY => 0x00000008;
  6         13  
  6         293  
87 6     6   30 use constant CKO_VENDOR_DEFINED => 0x80000000;
  6         8  
  6         287  
88 6     6   28 use constant CKH_MONOTONIC_COUNTER => 0x00000001;
  6         11  
  6         293  
89 6     6   25 use constant CKH_CLOCK => 0x00000002;
  6         7  
  6         240  
90 6     6   24 use constant CKH_USER_INTERFACE => 0x00000003;
  6         7  
  6         225  
91 6     6   24 use constant CKH_VENDOR_DEFINED => 0x80000000;
  6         6  
  6         235  
92 6     6   24 use constant CKK_RSA => 0x00000000;
  6         5  
  6         236  
93 6     6   23 use constant CKK_DSA => 0x00000001;
  6         8  
  6         234  
94 6     6   28 use constant CKK_DH => 0x00000002;
  6         7  
  6         276  
95 6     6   26 use constant CKK_ECDSA => 0x00000003;
  6         7  
  6         251  
96 6     6   26 use constant CKK_EC => 0x00000003;
  6         8  
  6         241  
97 6     6   24 use constant CKK_X9_42_DH => 0x00000004;
  6         6  
  6         232  
98 6     6   23 use constant CKK_KEA => 0x00000005;
  6         7  
  6         213  
99 6     6   22 use constant CKK_GENERIC_SECRET => 0x00000010;
  6         6  
  6         209  
100 6     6   20 use constant CKK_RC2 => 0x00000011;
  6         6  
  6         194  
101 6     6   19 use constant CKK_RC4 => 0x00000012;
  6         11  
  6         197  
102 6     6   20 use constant CKK_DES => 0x00000013;
  6         7  
  6         199  
103 6     6   21 use constant CKK_DES2 => 0x00000014;
  6         12  
  6         204  
104 6     6   21 use constant CKK_DES3 => 0x00000015;
  6         6  
  6         197  
105 6     6   145 use constant CKK_CAST => 0x00000016;
  6         12  
  6         234  
106 6     6   23 use constant CKK_CAST3 => 0x00000017;
  6         5  
  6         199  
107 6     6   21 use constant CKK_CAST5 => 0x00000018;
  6         12  
  6         190  
108 6     6   20 use constant CKK_CAST128 => 0x00000018;
  6         9  
  6         197  
109 6     6   43 use constant CKK_RC5 => 0x00000019;
  6         6  
  6         256  
110 6     6   26 use constant CKK_IDEA => 0x0000001A;
  6         7  
  6         248  
111 6     6   24 use constant CKK_SKIPJACK => 0x0000001B;
  6         7  
  6         274  
112 6     6   25 use constant CKK_BATON => 0x0000001C;
  6         8  
  6         209  
113 6     6   24 use constant CKK_JUNIPER => 0x0000001D;
  6         5  
  6         198  
114 6     6   24 use constant CKK_CDMF => 0x0000001E;
  6         6  
  6         191  
115 6     6   22 use constant CKK_AES => 0x0000001F;
  6         10  
  6         194  
116 6     6   25 use constant CKK_BLOWFISH => 0x00000020;
  6         7  
  6         212  
117 6     6   24 use constant CKK_TWOFISH => 0x00000021;
  6         6  
  6         209  
118 6     6   24 use constant CKK_SECURID => 0x00000022;
  6         11  
  6         202  
119 6     6   23 use constant CKK_HOTP => 0x00000023;
  6         6  
  6         195  
120 6     6   23 use constant CKK_ACTI => 0x00000024;
  6         6  
  6         196  
121 6     6   21 use constant CKK_CAMELLIA => 0x00000025;
  6         7  
  6         186  
122 6     6   20 use constant CKK_ARIA => 0x00000026;
  6         7  
  6         192  
123 6     6   24 use constant CKK_VENDOR_DEFINED => 0x80000000;
  6         8  
  6         235  
124 6     6   28 use constant CKC_X_509 => 0x00000000;
  6         10  
  6         257  
125 6     6   27 use constant CKC_X_509_ATTR_CERT => 0x00000001;
  6         6  
  6         199  
126 6     6   24 use constant CKC_WTLS => 0x00000002;
  6         6  
  6         208  
127 6     6   24 use constant CKC_VENDOR_DEFINED => 0x80000000;
  6         7  
  6         221  
128 6     6   21 use constant CKF_ARRAY_ATTRIBUTE => 0x40000000;
  6         12  
  6         195  
129 6     6   20 use constant CK_OTP_FORMAT_DECIMAL => 0;
  6         7  
  6         347  
130 6     6   22 use constant CK_OTP_FORMAT_HEXADECIMAL => 1;
  6         7  
  6         197  
131 6     6   24 use constant CK_OTP_FORMAT_ALPHANUMERIC => 2;
  6         6  
  6         196  
132 6     6   22 use constant CK_OTP_FORMAT_BINARY => 3;
  6         4  
  6         220  
133 6     6   24 use constant CK_OTP_PARAM_IGNORED => 0;
  6         7  
  6         258  
134 6     6   27 use constant CK_OTP_PARAM_OPTIONAL => 1;
  6         7  
  6         270  
135 6     6   27 use constant CK_OTP_PARAM_MANDATORY => 2;
  6         6  
  6         240  
136 6     6   22 use constant CKA_CLASS => 0x00000000;
  6         15  
  6         204  
137 6     6   24 use constant CKA_TOKEN => 0x00000001;
  6         9  
  6         202  
138 6     6   21 use constant CKA_PRIVATE => 0x00000002;
  6         7  
  6         193  
139 6     6   22 use constant CKA_LABEL => 0x00000003;
  6         10  
  6         205  
140 6     6   28 use constant CKA_APPLICATION => 0x00000010;
  6         8  
  6         221  
141 6     6   22 use constant CKA_VALUE => 0x00000011;
  6         8  
  6         205  
142 6     6   25 use constant CKA_OBJECT_ID => 0x00000012;
  6         6  
  6         205  
143 6     6   22 use constant CKA_CERTIFICATE_TYPE => 0x00000080;
  6         6  
  6         206  
144 6     6   19 use constant CKA_ISSUER => 0x00000081;
  6         7  
  6         184  
145 6     6   26 use constant CKA_SERIAL_NUMBER => 0x00000082;
  6         4  
  6         205  
146 6     6   21 use constant CKA_AC_ISSUER => 0x00000083;
  6         6  
  6         193  
147 6     6   25 use constant CKA_OWNER => 0x00000084;
  6         4  
  6         248  
148 6     6   23 use constant CKA_ATTR_TYPES => 0x00000085;
  6         8  
  6         211  
149 6     6   19 use constant CKA_TRUSTED => 0x00000086;
  6         7  
  6         221  
150 6     6   22 use constant CKA_CERTIFICATE_CATEGORY => 0x00000087;
  6         6  
  6         202  
151 6     6   22 use constant CKA_JAVA_MIDP_SECURITY_DOMAIN => 0x00000088;
  6         6  
  6         199  
152 6     6   21 use constant CKA_URL => 0x00000089;
  6         7  
  6         303  
153 6     6   25 use constant CKA_HASH_OF_SUBJECT_PUBLIC_KEY => 0x0000008A;
  6         6  
  6         213  
154 6     6   22 use constant CKA_HASH_OF_ISSUER_PUBLIC_KEY => 0x0000008B;
  6         8  
  6         205  
155 6     6   22 use constant CKA_CHECK_VALUE => 0x00000090;
  6         7  
  6         262  
156 6     6   28 use constant CKA_KEY_TYPE => 0x00000100;
  6         6  
  6         239  
157 6     6   31 use constant CKA_SUBJECT => 0x00000101;
  6         5  
  6         257  
158 6     6   34 use constant CKA_ID => 0x00000102;
  6         7  
  6         298  
159 6     6   30 use constant CKA_SENSITIVE => 0x00000103;
  6         7  
  6         245  
160 6     6   24 use constant CKA_ENCRYPT => 0x00000104;
  6         8  
  6         234  
161 6     6   27 use constant CKA_DECRYPT => 0x00000105;
  6         6  
  6         233  
162 6     6   30 use constant CKA_WRAP => 0x00000106;
  6         8  
  6         242  
163 6     6   26 use constant CKA_UNWRAP => 0x00000107;
  6         6  
  6         232  
164 6     6   22 use constant CKA_SIGN => 0x00000108;
  6         11  
  6         258  
165 6     6   35 use constant CKA_SIGN_RECOVER => 0x00000109;
  6         6  
  6         232  
166 6     6   24 use constant CKA_VERIFY => 0x0000010A;
  6         5  
  6         1054  
167 6     6   25 use constant CKA_VERIFY_RECOVER => 0x0000010B;
  6         699  
  6         1512  
168 6     6   31 use constant CKA_DERIVE => 0x0000010C;
  6         6  
  6         213  
169 6     6   24 use constant CKA_START_DATE => 0x00000110;
  6         10  
  6         208  
170 6     6   23 use constant CKA_END_DATE => 0x00000111;
  6         7  
  6         865  
171 6     6   25 use constant CKA_MODULUS => 0x00000120;
  6         6  
  6         176  
172 6     6   21 use constant CKA_MODULUS_BITS => 0x00000121;
  6         5  
  6         179  
173 6     6   21 use constant CKA_PUBLIC_EXPONENT => 0x00000122;
  6         4  
  6         184  
174 6     6   21 use constant CKA_PRIVATE_EXPONENT => 0x00000123;
  6         6  
  6         178  
175 6     6   49 use constant CKA_PRIME_1 => 0x00000124;
  6         7  
  6         186  
176 6     6   21 use constant CKA_PRIME_2 => 0x00000125;
  6         4  
  6         181  
177 6     6   21 use constant CKA_EXPONENT_1 => 0x00000126;
  6         7  
  6         231  
178 6     6   26 use constant CKA_EXPONENT_2 => 0x00000127;
  6         7  
  6         246  
179 6     6   26 use constant CKA_COEFFICIENT => 0x00000128;
  6         6  
  6         208  
180 6     6   33 use constant CKA_PRIME => 0x00000130;
  6         5  
  6         222  
181 6     6   31 use constant CKA_SUBPRIME => 0x00000131;
  6         8  
  6         228  
182 6     6   28 use constant CKA_BASE => 0x00000132;
  6         6  
  6         237  
183 6     6   24 use constant CKA_PRIME_BITS => 0x00000133;
  6         9  
  6         225  
184 6     6   29 use constant CKA_SUBPRIME_BITS => 0x00000134;
  6         7  
  6         705  
185 6     6   27 use constant CKA_SUB_PRIME_BITS => CKA_SUBPRIME_BITS;
  6         6  
  6         239  
186 6     6   25 use constant CKA_VALUE_BITS => 0x00000160;
  6         7  
  6         246  
187 6     6   29 use constant CKA_VALUE_LEN => 0x00000161;
  6         7  
  6         263  
188 6     6   25 use constant CKA_EXTRACTABLE => 0x00000162;
  6         5  
  6         234  
189 6     6   24 use constant CKA_LOCAL => 0x00000163;
  6         6  
  6         211  
190 6     6   21 use constant CKA_NEVER_EXTRACTABLE => 0x00000164;
  6         285  
  6         262  
191 6     6   25 use constant CKA_ALWAYS_SENSITIVE => 0x00000165;
  6         6  
  6         371  
192 6     6   29 use constant CKA_KEY_GEN_MECHANISM => 0x00000166;
  6         7  
  6         247  
193 6     6   25 use constant CKA_MODIFIABLE => 0x00000170;
  6         10  
  6         248  
194 6     6   23 use constant CKA_ECDSA_PARAMS => 0x00000180;
  6         56  
  6         227  
195 6     6   23 use constant CKA_EC_PARAMS => 0x00000180;
  6         7  
  6         228  
196 6     6   23 use constant CKA_EC_POINT => 0x00000181;
  6         6  
  6         257  
197 6     6   28 use constant CKA_SECONDARY_AUTH => 0x00000200;
  6         5  
  6         263  
198 6     6   27 use constant CKA_AUTH_PIN_FLAGS => 0x00000201;
  6         7  
  6         241  
199 6     6   23 use constant CKA_ALWAYS_AUTHENTICATE => 0x00000202;
  6         7  
  6         237  
200 6     6   28 use constant CKA_WRAP_WITH_TRUSTED => 0x00000210;
  6         9  
  6         342  
201 6     6   24 use constant CKA_WRAP_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000211);
  6         5  
  6         351  
202 6     6   24 use constant CKA_UNWRAP_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000212);
  6         5  
  6         233  
203 6     6   30 use constant CKA_OTP_FORMAT => 0x00000220;
  6         9  
  6         226  
204 6     6   23 use constant CKA_OTP_LENGTH => 0x00000221;
  6         13  
  6         241  
205 6     6   23 use constant CKA_OTP_TIME_INTERVAL => 0x00000222;
  6         6  
  6         198  
206 6     6   20 use constant CKA_OTP_USER_FRIENDLY_MODE => 0x00000223;
  6         5  
  6         198  
207 6     6   19 use constant CKA_OTP_CHALLENGE_REQUIREMENT => 0x00000224;
  6         6  
  6         207  
208 6     6   20 use constant CKA_OTP_TIME_REQUIREMENT => 0x00000225;
  6         5  
  6         207  
209 6     6   21 use constant CKA_OTP_COUNTER_REQUIREMENT => 0x00000226;
  6         6  
  6         203  
210 6     6   24 use constant CKA_OTP_PIN_REQUIREMENT => 0x00000227;
  6         6  
  6         226  
211 6     6   20 use constant CKA_OTP_COUNTER => 0x0000022E;
  6         6  
  6         206  
212 6     6   20 use constant CKA_OTP_TIME => 0x0000022F;
  6         5  
  6         202  
213 6     6   23 use constant CKA_OTP_USER_IDENTIFIER => 0x0000022A;
  6         4  
  6         213  
214 6     6   20 use constant CKA_OTP_SERVICE_IDENTIFIER => 0x0000022B;
  6         6  
  6         212  
215 6     6   21 use constant CKA_OTP_SERVICE_LOGO => 0x0000022C;
  6         5  
  6         196  
216 6     6   22 use constant CKA_OTP_SERVICE_LOGO_TYPE => 0x0000022D;
  6         5  
  6         186  
217 6     6   20 use constant CKA_HW_FEATURE_TYPE => 0x00000300;
  6         6  
  6         201  
218 6     6   22 use constant CKA_RESET_ON_INIT => 0x00000301;
  6         10  
  6         206  
219 6     6   26 use constant CKA_HAS_RESET => 0x00000302;
  6         5  
  6         193  
220 6     6   24 use constant CKA_PIXEL_X => 0x00000400;
  6         11  
  6         207  
221 6     6   21 use constant CKA_PIXEL_Y => 0x00000401;
  6         4  
  6         188  
222 6     6   23 use constant CKA_RESOLUTION => 0x00000402;
  6         6  
  6         210  
223 6     6   20 use constant CKA_CHAR_ROWS => 0x00000403;
  6         6  
  6         219  
224 6     6   24 use constant CKA_CHAR_COLUMNS => 0x00000404;
  6         5  
  6         215  
225 6     6   23 use constant CKA_COLOR => 0x00000405;
  6         4  
  6         215  
226 6     6   19 use constant CKA_BITS_PER_PIXEL => 0x00000406;
  6         15  
  6         190  
227 6     6   46 use constant CKA_CHAR_SETS => 0x00000480;
  6         8  
  6         208  
228 6     6   24 use constant CKA_ENCODING_METHODS => 0x00000481;
  6         6  
  6         255  
229 6     6   26 use constant CKA_MIME_TYPES => 0x00000482;
  6         6  
  6         226  
230 6     6   24 use constant CKA_MECHANISM_TYPE => 0x00000500;
  6         11  
  6         235  
231 6     6   23 use constant CKA_REQUIRED_CMS_ATTRIBUTES => 0x00000501;
  6         6  
  6         227  
232 6     6   22 use constant CKA_DEFAULT_CMS_ATTRIBUTES => 0x00000502;
  6         7  
  6         225  
233 6     6   22 use constant CKA_SUPPORTED_CMS_ATTRIBUTES => 0x00000503;
  6         7  
  6         346  
234 6     6   24 use constant CKA_ALLOWED_MECHANISMS => (CKF_ARRAY_ATTRIBUTE|0x00000600);
  6         6  
  6         238  
235 6     6   25 use constant CKA_VENDOR_DEFINED => 0x80000000;
  6         8  
  6         232  
236 6     6   29 use constant CKM_RSA_PKCS_KEY_PAIR_GEN => 0x00000000;
  6         6  
  6         256  
237 6     6   29 use constant CKM_RSA_PKCS => 0x00000001;
  6         16  
  6         248  
238 6     6   26 use constant CKM_RSA_9796 => 0x00000002;
  6         8  
  6         299  
239 6     6   25 use constant CKM_RSA_X_509 => 0x00000003;
  6         10  
  6         286  
240 6     6   26 use constant CKM_MD2_RSA_PKCS => 0x00000004;
  6         9  
  6         255  
241 6     6   28 use constant CKM_MD5_RSA_PKCS => 0x00000005;
  6         5  
  6         279  
242 6     6   30 use constant CKM_SHA1_RSA_PKCS => 0x00000006;
  6         7  
  6         302  
243 6     6   25 use constant CKM_RIPEMD128_RSA_PKCS => 0x00000007;
  6         8  
  6         230  
244 6     6   22 use constant CKM_RIPEMD160_RSA_PKCS => 0x00000008;
  6         6  
  6         207  
245 6     6   22 use constant CKM_RSA_PKCS_OAEP => 0x00000009;
  6         7  
  6         187  
246 6     6   20 use constant CKM_RSA_X9_31_KEY_PAIR_GEN => 0x0000000A;
  6         5  
  6         202  
247 6     6   20 use constant CKM_RSA_X9_31 => 0x0000000B;
  6         6  
  6         203  
248 6     6   47 use constant CKM_SHA1_RSA_X9_31 => 0x0000000C;
  6         6  
  6         211  
249 6     6   19 use constant CKM_RSA_PKCS_PSS => 0x0000000D;
  6         13  
  6         201  
250 6     6   23 use constant CKM_SHA1_RSA_PKCS_PSS => 0x0000000E;
  6         6  
  6         204  
251 6     6   20 use constant CKM_DSA_KEY_PAIR_GEN => 0x00000010;
  6         5  
  6         188  
252 6     6   23 use constant CKM_DSA => 0x00000011;
  6         6  
  6         187  
253 6     6   20 use constant CKM_DSA_SHA1 => 0x00000012;
  6         7  
  6         184  
254 6     6   21 use constant CKM_DH_PKCS_KEY_PAIR_GEN => 0x00000020;
  6         4  
  6         194  
255 6     6   20 use constant CKM_DH_PKCS_DERIVE => 0x00000021;
  6         5  
  6         195  
256 6     6   23 use constant CKM_X9_42_DH_KEY_PAIR_GEN => 0x00000030;
  6         6  
  6         216  
257 6     6   23 use constant CKM_X9_42_DH_DERIVE => 0x00000031;
  6         5  
  6         216  
258 6     6   22 use constant CKM_X9_42_DH_HYBRID_DERIVE => 0x00000032;
  6         8  
  6         222  
259 6     6   23 use constant CKM_X9_42_MQV_DERIVE => 0x00000033;
  6         5  
  6         204  
260 6     6   22 use constant CKM_SHA256_RSA_PKCS => 0x00000040;
  6         7  
  6         269  
261 6     6   22 use constant CKM_SHA384_RSA_PKCS => 0x00000041;
  6         10  
  6         240  
262 6     6   25 use constant CKM_SHA512_RSA_PKCS => 0x00000042;
  6         6  
  6         195  
263 6     6   24 use constant CKM_SHA256_RSA_PKCS_PSS => 0x00000043;
  6         5  
  6         192  
264 6     6   26 use constant CKM_SHA384_RSA_PKCS_PSS => 0x00000044;
  6         6  
  6         214  
265 6     6   21 use constant CKM_SHA512_RSA_PKCS_PSS => 0x00000045;
  6         5  
  6         233  
266 6     6   24 use constant CKM_SHA224_RSA_PKCS => 0x00000046;
  6         7  
  6         223  
267 6     6   25 use constant CKM_SHA224_RSA_PKCS_PSS => 0x00000047;
  6         6  
  6         245  
268 6     6   26 use constant CKM_RC2_KEY_GEN => 0x00000100;
  6         5  
  6         210  
269 6     6   22 use constant CKM_RC2_ECB => 0x00000101;
  6         6  
  6         219  
270 6     6   21 use constant CKM_RC2_CBC => 0x00000102;
  6         6  
  6         194  
271 6     6   24 use constant CKM_RC2_MAC => 0x00000103;
  6         6  
  6         195  
272 6     6   20 use constant CKM_RC2_MAC_GENERAL => 0x00000104;
  6         6  
  6         194  
273 6     6   20 use constant CKM_RC2_CBC_PAD => 0x00000105;
  6         5  
  6         194  
274 6     6   22 use constant CKM_RC4_KEY_GEN => 0x00000110;
  6         6  
  6         269  
275 6     6   30 use constant CKM_RC4 => 0x00000111;
  6         7  
  6         224  
276 6     6   22 use constant CKM_DES_KEY_GEN => 0x00000120;
  6         7  
  6         200  
277 6     6   26 use constant CKM_DES_ECB => 0x00000121;
  6         8  
  6         186  
278 6     6   23 use constant CKM_DES_CBC => 0x00000122;
  6         6  
  6         198  
279 6     6   51 use constant CKM_DES_MAC => 0x00000123;
  6         11  
  6         222  
280 6     6   20 use constant CKM_DES_MAC_GENERAL => 0x00000124;
  6         5  
  6         415  
281 6     6   28 use constant CKM_DES_CBC_PAD => 0x00000125;
  6         6  
  6         208  
282 6     6   23 use constant CKM_DES2_KEY_GEN => 0x00000130;
  6         5  
  6         207  
283 6     6   23 use constant CKM_DES3_KEY_GEN => 0x00000131;
  6         10  
  6         215  
284 6     6   21 use constant CKM_DES3_ECB => 0x00000132;
  6         6  
  6         186  
285 6     6   20 use constant CKM_DES3_CBC => 0x00000133;
  6         7  
  6         180  
286 6     6   19 use constant CKM_DES3_MAC => 0x00000134;
  6         8  
  6         296  
287 6     6   23 use constant CKM_DES3_MAC_GENERAL => 0x00000135;
  6         10  
  6         241  
288 6     6   25 use constant CKM_DES3_CBC_PAD => 0x00000136;
  6         13  
  6         215  
289 6     6   21 use constant CKM_CDMF_KEY_GEN => 0x00000140;
  6         5  
  6         203  
290 6     6   22 use constant CKM_CDMF_ECB => 0x00000141;
  6         8  
  6         188  
291 6     6   19 use constant CKM_CDMF_CBC => 0x00000142;
  6         7  
  6         204  
292 6     6   24 use constant CKM_CDMF_MAC => 0x00000143;
  6         7  
  6         214  
293 6     6   35 use constant CKM_CDMF_MAC_GENERAL => 0x00000144;
  6         8  
  6         228  
294 6     6   28 use constant CKM_CDMF_CBC_PAD => 0x00000145;
  6         8  
  6         271  
295 6     6   25 use constant CKM_DES_OFB64 => 0x00000150;
  6         5  
  6         219  
296 6     6   27 use constant CKM_DES_OFB8 => 0x00000151;
  6         6  
  6         239  
297 6     6   35 use constant CKM_DES_CFB64 => 0x00000152;
  6         5  
  6         229  
298 6     6   28 use constant CKM_DES_CFB8 => 0x00000153;
  6         7  
  6         211  
299 6     6   25 use constant CKM_MD2 => 0x00000200;
  6         4  
  6         199  
300 6     6   21 use constant CKM_MD2_HMAC => 0x00000201;
  6         8  
  6         188  
301 6     6   20 use constant CKM_MD2_HMAC_GENERAL => 0x00000202;
  6         6  
  6         204  
302 6     6   20 use constant CKM_MD5 => 0x00000210;
  6         4  
  6         210  
303 6     6   28 use constant CKM_MD5_HMAC => 0x00000211;
  6         11  
  6         217  
304 6     6   27 use constant CKM_MD5_HMAC_GENERAL => 0x00000212;
  6         4  
  6         199  
305 6     6   20 use constant CKM_SHA_1 => 0x00000220;
  6         7  
  6         189  
306 6     6   19 use constant CKM_SHA_1_HMAC => 0x00000221;
  6         6  
  6         249  
307 6     6   21 use constant CKM_SHA_1_HMAC_GENERAL => 0x00000222;
  6         9  
  6         211  
308 6     6   21 use constant CKM_RIPEMD128 => 0x00000230;
  6         6  
  6         204  
309 6     6   22 use constant CKM_RIPEMD128_HMAC => 0x00000231;
  6         5  
  6         224  
310 6     6   23 use constant CKM_RIPEMD128_HMAC_GENERAL => 0x00000232;
  6         10  
  6         207  
311 6     6   20 use constant CKM_RIPEMD160 => 0x00000240;
  6         6  
  6         204  
312 6     6   24 use constant CKM_RIPEMD160_HMAC => 0x00000241;
  6         5  
  6         252  
313 6     6   29 use constant CKM_RIPEMD160_HMAC_GENERAL => 0x00000242;
  6         9  
  6         227  
314 6     6   22 use constant CKM_SHA256 => 0x00000250;
  6         8  
  6         192  
315 6     6   26 use constant CKM_SHA256_HMAC => 0x00000251;
  6         6  
  6         190  
316 6     6   20 use constant CKM_SHA256_HMAC_GENERAL => 0x00000252;
  6         7  
  6         186  
317 6     6   31 use constant CKM_SHA224 => 0x00000255;
  6         6  
  6         216  
318 6     6   22 use constant CKM_SHA224_HMAC => 0x00000256;
  6         9  
  6         212  
319 6     6   24 use constant CKM_SHA224_HMAC_GENERAL => 0x00000257;
  6         6  
  6         191  
320 6     6   21 use constant CKM_SHA384 => 0x00000260;
  6         7  
  6         190  
321 6     6   21 use constant CKM_SHA384_HMAC => 0x00000261;
  6         7  
  6         193  
322 6     6   25 use constant CKM_SHA384_HMAC_GENERAL => 0x00000262;
  6         6  
  6         191  
323 6     6   23 use constant CKM_SHA512 => 0x00000270;
  6         5  
  6         212  
324 6     6   21 use constant CKM_SHA512_HMAC => 0x00000271;
  6         5  
  6         188  
325 6     6   24 use constant CKM_SHA512_HMAC_GENERAL => 0x00000272;
  6         10  
  6         195  
326 6     6   39 use constant CKM_SECURID_KEY_GEN => 0x00000280;
  6         9  
  6         208  
327 6     6   24 use constant CKM_SECURID => 0x00000282;
  6         6  
  6         203  
328 6     6   59 use constant CKM_HOTP_KEY_GEN => 0x00000290;
  6         8  
  6         243  
329 6     6   23 use constant CKM_HOTP => 0x00000291;
  6         8  
  6         194  
330 6     6   20 use constant CKM_ACTI => 0x000002A0;
  6         10  
  6         191  
331 6     6   20 use constant CKM_ACTI_KEY_GEN => 0x000002A1;
  6         8  
  6         207  
332 6     6   23 use constant CKM_CAST_KEY_GEN => 0x00000300;
  6         9  
  6         205  
333 6     6   22 use constant CKM_CAST_ECB => 0x00000301;
  6         6  
  6         238  
334 6     6   21 use constant CKM_CAST_CBC => 0x00000302;
  6         6  
  6         197  
335 6     6   23 use constant CKM_CAST_MAC => 0x00000303;
  6         6  
  6         249  
336 6     6   25 use constant CKM_CAST_MAC_GENERAL => 0x00000304;
  6         6  
  6         222  
337 6     6   24 use constant CKM_CAST_CBC_PAD => 0x00000305;
  6         5  
  6         200  
338 6     6   20 use constant CKM_CAST3_KEY_GEN => 0x00000310;
  6         11  
  6         193  
339 6     6   22 use constant CKM_CAST3_ECB => 0x00000311;
  6         5  
  6         245  
340 6     6   24 use constant CKM_CAST3_CBC => 0x00000312;
  6         42  
  6         212  
341 6     6   23 use constant CKM_CAST3_MAC => 0x00000313;
  6         6  
  6         206  
342 6     6   20 use constant CKM_CAST3_MAC_GENERAL => 0x00000314;
  6         7  
  6         200  
343 6     6   20 use constant CKM_CAST3_CBC_PAD => 0x00000315;
  6         6  
  6         202  
344 6     6   22 use constant CKM_CAST5_KEY_GEN => 0x00000320;
  6         7  
  6         198  
345 6     6   43 use constant CKM_CAST128_KEY_GEN => 0x00000320;
  6         8  
  6         242  
346 6     6   23 use constant CKM_CAST5_ECB => 0x00000321;
  6         15  
  6         202  
347 6     6   23 use constant CKM_CAST128_ECB => 0x00000321;
  6         6  
  6         238  
348 6     6   24 use constant CKM_CAST5_CBC => 0x00000322;
  6         8  
  6         225  
349 6     6   41 use constant CKM_CAST128_CBC => 0x00000322;
  6         6  
  6         205  
350 6     6   24 use constant CKM_CAST5_MAC => 0x00000323;
  6         10  
  6         205  
351 6     6   19 use constant CKM_CAST128_MAC => 0x00000323;
  6         11  
  6         187  
352 6     6   22 use constant CKM_CAST5_MAC_GENERAL => 0x00000324;
  6         6  
  6         196  
353 6     6   19 use constant CKM_CAST128_MAC_GENERAL => 0x00000324;
  6         6  
  6         189  
354 6     6   24 use constant CKM_CAST5_CBC_PAD => 0x00000325;
  6         5  
  6         201  
355 6     6   68 use constant CKM_CAST128_CBC_PAD => 0x00000325;
  6         5  
  6         209  
356 6     6   21 use constant CKM_RC5_KEY_GEN => 0x00000330;
  6         6  
  6         200  
357 6     6   20 use constant CKM_RC5_ECB => 0x00000331;
  6         9  
  6         199  
358 6     6   19 use constant CKM_RC5_CBC => 0x00000332;
  6         7  
  6         191  
359 6     6   22 use constant CKM_RC5_MAC => 0x00000333;
  6         5  
  6         186  
360 6     6   22 use constant CKM_RC5_MAC_GENERAL => 0x00000334;
  6         6  
  6         213  
361 6     6   565 use constant CKM_RC5_CBC_PAD => 0x00000335;
  6         13  
  6         250  
362 6     6   25 use constant CKM_IDEA_KEY_GEN => 0x00000340;
  6         6  
  6         188  
363 6     6   20 use constant CKM_IDEA_ECB => 0x00000341;
  6         34  
  6         200  
364 6     6   21 use constant CKM_IDEA_CBC => 0x00000342;
  6         7  
  6         228  
365 6     6   136 use constant CKM_IDEA_MAC => 0x00000343;
  6         6  
  6         202  
366 6     6   20 use constant CKM_IDEA_MAC_GENERAL => 0x00000344;
  6         5  
  6         193  
367 6     6   24 use constant CKM_IDEA_CBC_PAD => 0x00000345;
  6         6  
  6         184  
368 6     6   19 use constant CKM_GENERIC_SECRET_KEY_GEN => 0x00000350;
  6         5  
  6         195  
369 6     6   20 use constant CKM_CONCATENATE_BASE_AND_KEY => 0x00000360;
  6         6  
  6         273  
370 6     6   27 use constant CKM_CONCATENATE_BASE_AND_DATA => 0x00000362;
  6         4  
  6         211  
371 6     6   21 use constant CKM_CONCATENATE_DATA_AND_BASE => 0x00000363;
  6         5  
  6         234  
372 6     6   32 use constant CKM_XOR_BASE_AND_DATA => 0x00000364;
  6         9  
  6         220  
373 6     6   24 use constant CKM_EXTRACT_KEY_FROM_KEY => 0x00000365;
  6         9  
  6         203  
374 6     6   24 use constant CKM_SSL3_PRE_MASTER_KEY_GEN => 0x00000370;
  6         6  
  6         205  
375 6     6   19 use constant CKM_SSL3_MASTER_KEY_DERIVE => 0x00000371;
  6         7  
  6         306  
376 6     6   23 use constant CKM_SSL3_KEY_AND_MAC_DERIVE => 0x00000372;
  6         6  
  6         209  
377 6     6   20 use constant CKM_SSL3_MASTER_KEY_DERIVE_DH => 0x00000373;
  6         6  
  6         214  
378 6     6   27 use constant CKM_TLS_PRE_MASTER_KEY_GEN => 0x00000374;
  6         5  
  6         193  
379 6     6   24 use constant CKM_TLS_MASTER_KEY_DERIVE => 0x00000375;
  6         4  
  6         201  
380 6     6   20 use constant CKM_TLS_KEY_AND_MAC_DERIVE => 0x00000376;
  6         7  
  6         203  
381 6     6   35 use constant CKM_TLS_MASTER_KEY_DERIVE_DH => 0x00000377;
  6         10  
  6         225  
382 6     6   23 use constant CKM_TLS_PRF => 0x00000378;
  6         7  
  6         211  
383 6     6   21 use constant CKM_SSL3_MD5_MAC => 0x00000380;
  6         6  
  6         200  
384 6     6   19 use constant CKM_SSL3_SHA1_MAC => 0x00000381;
  6         7  
  6         205  
385 6     6   22 use constant CKM_MD5_KEY_DERIVATION => 0x00000390;
  6         9  
  6         193  
386 6     6   20 use constant CKM_MD2_KEY_DERIVATION => 0x00000391;
  6         5  
  6         199  
387 6     6   25 use constant CKM_SHA1_KEY_DERIVATION => 0x00000392;
  6         6  
  6         204  
388 6     6   21 use constant CKM_SHA256_KEY_DERIVATION => 0x00000393;
  6         12  
  6         206  
389 6     6   23 use constant CKM_SHA384_KEY_DERIVATION => 0x00000394;
  6         10  
  6         192  
390 6     6   20 use constant CKM_SHA512_KEY_DERIVATION => 0x00000395;
  6         5  
  6         196  
391 6     6   20 use constant CKM_SHA224_KEY_DERIVATION => 0x00000396;
  6         6  
  6         195  
392 6     6   19 use constant CKM_PBE_MD2_DES_CBC => 0x000003A0;
  6         5  
  6         203  
393 6     6   22 use constant CKM_PBE_MD5_DES_CBC => 0x000003A1;
  6         4  
  6         221  
394 6     6   20 use constant CKM_PBE_MD5_CAST_CBC => 0x000003A2;
  6         6  
  6         199  
395 6     6   21 use constant CKM_PBE_MD5_CAST3_CBC => 0x000003A3;
  6         15  
  6         196  
396 6     6   29 use constant CKM_PBE_MD5_CAST5_CBC => 0x000003A4;
  6         9  
  6         192  
397 6     6   32 use constant CKM_PBE_MD5_CAST128_CBC => 0x000003A4;
  6         12  
  6         236  
398 6     6   24 use constant CKM_PBE_SHA1_CAST5_CBC => 0x000003A5;
  6         3  
  6         191  
399 6     6   21 use constant CKM_PBE_SHA1_CAST128_CBC => 0x000003A5;
  6         6  
  6         193  
400 6     6   21 use constant CKM_PBE_SHA1_RC4_128 => 0x000003A6;
  6         5  
  6         189  
401 6     6   19 use constant CKM_PBE_SHA1_RC4_40 => 0x000003A7;
  6         5  
  6         226  
402 6     6   24 use constant CKM_PBE_SHA1_DES3_EDE_CBC => 0x000003A8;
  6         5  
  6         218  
403 6     6   24 use constant CKM_PBE_SHA1_DES2_EDE_CBC => 0x000003A9;
  6         7  
  6         234  
404 6     6   20 use constant CKM_PBE_SHA1_RC2_128_CBC => 0x000003AA;
  6         6  
  6         208  
405 6     6   21 use constant CKM_PBE_SHA1_RC2_40_CBC => 0x000003AB;
  6         11  
  6         254  
406 6     6   26 use constant CKM_PKCS5_PBKD2 => 0x000003B0;
  6         12  
  6         227  
407 6     6   28 use constant CKM_PBA_SHA1_WITH_SHA1_HMAC => 0x000003C0;
  6         13  
  6         227  
408 6     6   26 use constant CKM_WTLS_PRE_MASTER_KEY_GEN => 0x000003D0;
  6         5  
  6         221  
409 6     6   21 use constant CKM_WTLS_MASTER_KEY_DERIVE => 0x000003D1;
  6         6  
  6         225  
410 6     6   24 use constant CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC => 0x000003D2;
  6         5  
  6         211  
411 6     6   21 use constant CKM_WTLS_PRF => 0x000003D3;
  6         6  
  6         204  
412 6     6   20 use constant CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE => 0x000003D4;
  6         5  
  6         209  
413 6     6   20 use constant CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE => 0x000003D5;
  6         5  
  6         211  
414 6     6   22 use constant CKM_KEY_WRAP_LYNKS => 0x00000400;
  6         6  
  6         255  
415 6     6   23 use constant CKM_KEY_WRAP_SET_OAEP => 0x00000401;
  6         7  
  6         221  
416 6     6   19 use constant CKM_CMS_SIG => 0x00000500;
  6         6  
  6         198  
417 6     6   20 use constant CKM_KIP_DERIVE => 0x00000510;
  6         5  
  6         201  
418 6     6   19 use constant CKM_KIP_WRAP => 0x00000511;
  6         16  
  6         212  
419 6     6   25 use constant CKM_KIP_MAC => 0x00000512;
  6         6  
  6         196  
420 6     6   23 use constant CKM_CAMELLIA_KEY_GEN => 0x00000550;
  6         6  
  6         223  
421 6     6   20 use constant CKM_CAMELLIA_ECB => 0x00000551;
  6         6  
  6         195  
422 6     6   22 use constant CKM_CAMELLIA_CBC => 0x00000552;
  6         5  
  6         196  
423 6     6   20 use constant CKM_CAMELLIA_MAC => 0x00000553;
  6         6  
  6         201  
424 6     6   19 use constant CKM_CAMELLIA_MAC_GENERAL => 0x00000554;
  6         6  
  6         194  
425 6     6   20 use constant CKM_CAMELLIA_CBC_PAD => 0x00000555;
  6         6  
  6         220  
426 6     6   62 use constant CKM_CAMELLIA_ECB_ENCRYPT_DATA => 0x00000556;
  6         10  
  6         223  
427 6     6   21 use constant CKM_CAMELLIA_CBC_ENCRYPT_DATA => 0x00000557;
  6         7  
  6         187  
428 6     6   22 use constant CKM_CAMELLIA_CTR => 0x00000558;
  6         10  
  6         228  
429 6     6   25 use constant CKM_ARIA_KEY_GEN => 0x00000560;
  6         7  
  6         201  
430 6     6   19 use constant CKM_ARIA_ECB => 0x00000561;
  6         9  
  6         240  
431 6     6   52 use constant CKM_ARIA_CBC => 0x00000562;
  6         7  
  6         211  
432 6     6   21 use constant CKM_ARIA_MAC => 0x00000563;
  6         5  
  6         191  
433 6     6   22 use constant CKM_ARIA_MAC_GENERAL => 0x00000564;
  6         5  
  6         209  
434 6     6   22 use constant CKM_ARIA_CBC_PAD => 0x00000565;
  6         5  
  6         193  
435 6     6   20 use constant CKM_ARIA_ECB_ENCRYPT_DATA => 0x00000566;
  6         10  
  6         189  
436 6     6   20 use constant CKM_ARIA_CBC_ENCRYPT_DATA => 0x00000567;
  6         6  
  6         208  
437 6     6   21 use constant CKM_SKIPJACK_KEY_GEN => 0x00001000;
  6         7  
  6         208  
438 6     6   21 use constant CKM_SKIPJACK_ECB64 => 0x00001001;
  6         10  
  6         198  
439 6     6   19 use constant CKM_SKIPJACK_CBC64 => 0x00001002;
  6         7  
  6         212  
440 6     6   24 use constant CKM_SKIPJACK_OFB64 => 0x00001003;
  6         6  
  6         210  
441 6     6   22 use constant CKM_SKIPJACK_CFB64 => 0x00001004;
  6         6  
  6         308  
442 6     6   22 use constant CKM_SKIPJACK_CFB32 => 0x00001005;
  6         5  
  6         200  
443 6     6   24 use constant CKM_SKIPJACK_CFB16 => 0x00001006;
  6         5  
  6         189  
444 6     6   19 use constant CKM_SKIPJACK_CFB8 => 0x00001007;
  6         6  
  6         206  
445 6     6   29 use constant CKM_SKIPJACK_WRAP => 0x00001008;
  6         7  
  6         241  
446 6     6   25 use constant CKM_SKIPJACK_PRIVATE_WRAP => 0x00001009;
  6         7  
  6         215  
447 6     6   21 use constant CKM_SKIPJACK_RELAYX => 0x0000100a;
  6         10  
  6         193  
448 6     6   19 use constant CKM_KEA_KEY_PAIR_GEN => 0x00001010;
  6         7  
  6         214  
449 6     6   22 use constant CKM_KEA_KEY_DERIVE => 0x00001011;
  6         5  
  6         201  
450 6     6   21 use constant CKM_FORTEZZA_TIMESTAMP => 0x00001020;
  6         7  
  6         199  
451 6     6   21 use constant CKM_BATON_KEY_GEN => 0x00001030;
  6         5  
  6         193  
452 6     6   22 use constant CKM_BATON_ECB128 => 0x00001031;
  6         10  
  6         218  
453 6     6   21 use constant CKM_BATON_ECB96 => 0x00001032;
  6         7  
  6         210  
454 6     6   24 use constant CKM_BATON_CBC128 => 0x00001033;
  6         6  
  6         198  
455 6     6   21 use constant CKM_BATON_COUNTER => 0x00001034;
  6         5  
  6         204  
456 6     6   19 use constant CKM_BATON_SHUFFLE => 0x00001035;
  6         11  
  6         199  
457 6     6   20 use constant CKM_BATON_WRAP => 0x00001036;
  6         4  
  6         200  
458 6     6   20 use constant CKM_ECDSA_KEY_PAIR_GEN => 0x00001040;
  6         10  
  6         203  
459 6     6   24 use constant CKM_EC_KEY_PAIR_GEN => 0x00001040;
  6         5  
  6         186  
460 6     6   19 use constant CKM_ECDSA => 0x00001041;
  6         6  
  6         187  
461 6     6   20 use constant CKM_ECDSA_SHA1 => 0x00001042;
  6         5  
  6         188  
462 6     6   19 use constant CKM_ECDH1_DERIVE => 0x00001050;
  6         6  
  6         221  
463 6     6   24 use constant CKM_ECDH1_COFACTOR_DERIVE => 0x00001051;
  6         6  
  6         211  
464 6     6   23 use constant CKM_ECMQV_DERIVE => 0x00001052;
  6         9  
  6         226  
465 6     6   23 use constant CKM_JUNIPER_KEY_GEN => 0x00001060;
  6         7  
  6         250  
466 6     6   26 use constant CKM_JUNIPER_ECB128 => 0x00001061;
  6         7  
  6         203  
467 6     6   19 use constant CKM_JUNIPER_CBC128 => 0x00001062;
  6         10  
  6         192  
468 6     6   21 use constant CKM_JUNIPER_COUNTER => 0x00001063;
  6         6  
  6         189  
469 6     6   21 use constant CKM_JUNIPER_SHUFFLE => 0x00001064;
  6         5  
  6         210  
470 6     6   25 use constant CKM_JUNIPER_WRAP => 0x00001065;
  6         6  
  6         233  
471 6     6   24 use constant CKM_FASTHASH => 0x00001070;
  6         6  
  6         328  
472 6     6   30 use constant CKM_AES_KEY_GEN => 0x00001080;
  6         6  
  6         224  
473 6     6   27 use constant CKM_AES_ECB => 0x00001081;
  6         6  
  6         236  
474 6     6   23 use constant CKM_AES_CBC => 0x00001082;
  6         7  
  6         207  
475 6     6   19 use constant CKM_AES_MAC => 0x00001083;
  6         7  
  6         224  
476 6     6   23 use constant CKM_AES_MAC_GENERAL => 0x00001084;
  6         6  
  6         214  
477 6     6   25 use constant CKM_AES_CBC_PAD => 0x00001085;
  6         16  
  6         247  
478 6     6   25 use constant CKM_AES_CTR => 0x00001086;
  6         6  
  6         230  
479 6     6   28 use constant CKM_BLOWFISH_KEY_GEN => 0x00001090;
  6         9  
  6         252  
480 6     6   24 use constant CKM_BLOWFISH_CBC => 0x00001091;
  6         6  
  6         234  
481 6     6   25 use constant CKM_TWOFISH_KEY_GEN => 0x00001092;
  6         5  
  6         196  
482 6     6   21 use constant CKM_TWOFISH_CBC => 0x00001093;
  6         6  
  6         200  
483 6     6   22 use constant CKM_DES_ECB_ENCRYPT_DATA => 0x00001100;
  6         6  
  6         199  
484 6     6   19 use constant CKM_DES_CBC_ENCRYPT_DATA => 0x00001101;
  6         6  
  6         191  
485 6     6   24 use constant CKM_DES3_ECB_ENCRYPT_DATA => 0x00001102;
  6         8  
  6         201  
486 6     6   25 use constant CKM_DES3_CBC_ENCRYPT_DATA => 0x00001103;
  6         6  
  6         209  
487 6     6   19 use constant CKM_AES_ECB_ENCRYPT_DATA => 0x00001104;
  6         6  
  6         212  
488 6     6   22 use constant CKM_AES_CBC_ENCRYPT_DATA => 0x00001105;
  6         6  
  6         199  
489 6     6   20 use constant CKM_DSA_PARAMETER_GEN => 0x00002000;
  6         9  
  6         191  
490 6     6   21 use constant CKM_DH_PKCS_PARAMETER_GEN => 0x00002001;
  6         4  
  6         198  
491 6     6   20 use constant CKM_X9_42_DH_PARAMETER_GEN => 0x00002002;
  6         6  
  6         189  
492 6     6   19 use constant CKM_VENDOR_DEFINED => 0x80000000;
  6         10  
  6         190  
493 6     6   20 use constant CKF_HW => 0x00000001;
  6         6  
  6         214  
494 6     6   45 use constant CKF_ENCRYPT => 0x00000100;
  6         7  
  6         218  
495 6     6   35 use constant CKF_DECRYPT => 0x00000200;
  6         7  
  6         215  
496 6     6   33 use constant CKF_DIGEST => 0x00000400;
  6         6  
  6         220  
497 6     6   22 use constant CKF_SIGN => 0x00000800;
  6         11  
  6         193  
498 6     6   19 use constant CKF_SIGN_RECOVER => 0x00001000;
  6         6  
  6         192  
499 6     6   21 use constant CKF_VERIFY => 0x00002000;
  6         7  
  6         191  
500 6     6   22 use constant CKF_VERIFY_RECOVER => 0x00004000;
  6         5  
  6         205  
501 6     6   22 use constant CKF_GENERATE => 0x00008000;
  6         6  
  6         238  
502 6     6   26 use constant CKF_GENERATE_KEY_PAIR => 0x00010000;
  6         12  
  6         216  
503 6     6   21 use constant CKF_WRAP => 0x00020000;
  6         6  
  6         209  
504 6     6   21 use constant CKF_UNWRAP => 0x00040000;
  6         9  
  6         210  
505 6     6   25 use constant CKF_DERIVE => 0x00080000;
  6         8  
  6         187  
506 6     6   21 use constant CKF_EC_F_P => 0x00100000;
  6         8  
  6         195  
507 6     6   22 use constant CKF_EC_F_2M => 0x00200000;
  6         5  
  6         263  
508 6     6   22 use constant CKF_EC_ECPARAMETERS => 0x00400000;
  6         7  
  6         210  
509 6     6   21 use constant CKF_EC_NAMEDCURVE => 0x00800000;
  6         10  
  6         199  
510 6     6   21 use constant CKF_EC_UNCOMPRESS => 0x01000000;
  6         6  
  6         205  
511 6     6   21 use constant CKF_EC_COMPRESS => 0x02000000;
  6         5  
  6         224  
512 6     6   24 use constant CKF_EXTENSION => 0x80000000;
  6         5  
  6         201  
513 6     6   23 use constant CKR_OK => 0x00000000;
  6         4  
  6         213  
514 6     6   21 use constant CKR_CANCEL => 0x00000001;
  6         6  
  6         197  
515 6     6   44 use constant CKR_HOST_MEMORY => 0x00000002;
  6         6  
  6         191  
516 6     6   26 use constant CKR_SLOT_ID_INVALID => 0x00000003;
  6         6  
  6         215  
517 6     6   20 use constant CKR_GENERAL_ERROR => 0x00000005;
  6         8  
  6         208  
518 6     6   31 use constant CKR_FUNCTION_FAILED => 0x00000006;
  6         7  
  6         199  
519 6     6   30 use constant CKR_ARGUMENTS_BAD => 0x00000007;
  6         7  
  6         247  
520 6     6   23 use constant CKR_NO_EVENT => 0x00000008;
  6         6  
  6         229  
521 6     6   27 use constant CKR_NEED_TO_CREATE_THREADS => 0x00000009;
  6         10  
  6         223  
522 6     6   20 use constant CKR_CANT_LOCK => 0x0000000A;
  6         7  
  6         207  
523 6     6   20 use constant CKR_ATTRIBUTE_READ_ONLY => 0x00000010;
  6         5  
  6         189  
524 6     6   23 use constant CKR_ATTRIBUTE_SENSITIVE => 0x00000011;
  6         7  
  6         213  
525 6     6   26 use constant CKR_ATTRIBUTE_TYPE_INVALID => 0x00000012;
  6         6  
  6         239  
526 6     6   21 use constant CKR_ATTRIBUTE_VALUE_INVALID => 0x00000013;
  6         6  
  6         205  
527 6     6   45 use constant CKR_DATA_INVALID => 0x00000020;
  6         7  
  6         205  
528 6     6   20 use constant CKR_DATA_LEN_RANGE => 0x00000021;
  6         5  
  6         189  
529 6     6   23 use constant CKR_DEVICE_ERROR => 0x00000030;
  6         6  
  6         320  
530 6     6   22 use constant CKR_DEVICE_MEMORY => 0x00000031;
  6         9  
  6         211  
531 6     6   19 use constant CKR_DEVICE_REMOVED => 0x00000032;
  6         6  
  6         188  
532 6     6   20 use constant CKR_ENCRYPTED_DATA_INVALID => 0x00000040;
  6         9  
  6         198  
533 6     6   20 use constant CKR_ENCRYPTED_DATA_LEN_RANGE => 0x00000041;
  6         6  
  6         214  
534 6     6   22 use constant CKR_FUNCTION_CANCELED => 0x00000050;
  6         10  
  6         198  
535 6     6   22 use constant CKR_FUNCTION_NOT_PARALLEL => 0x00000051;
  6         6  
  6         206  
536 6     6   23 use constant CKR_FUNCTION_NOT_SUPPORTED => 0x00000054;
  6         7  
  6         649  
537 6     6   27 use constant CKR_KEY_HANDLE_INVALID => 0x00000060;
  6         5  
  6         198  
538 6     6   22 use constant CKR_KEY_SIZE_RANGE => 0x00000062;
  6         5  
  6         228  
539 6     6   21 use constant CKR_KEY_TYPE_INCONSISTENT => 0x00000063;
  6         6  
  6         311  
540 6     6   29 use constant CKR_KEY_NOT_NEEDED => 0x00000064;
  6         10  
  6         225  
541 6     6   37 use constant CKR_KEY_CHANGED => 0x00000065;
  6         10  
  6         220  
542 6     6   22 use constant CKR_KEY_NEEDED => 0x00000066;
  6         8  
  6         476  
543 6     6   34 use constant CKR_KEY_INDIGESTIBLE => 0x00000067;
  6         6  
  6         231  
544 6     6   25 use constant CKR_KEY_FUNCTION_NOT_PERMITTED => 0x00000068;
  6         7  
  6         223  
545 6     6   26 use constant CKR_KEY_NOT_WRAPPABLE => 0x00000069;
  6         6  
  6         210  
546 6     6   23 use constant CKR_KEY_UNEXTRACTABLE => 0x0000006A;
  6         7  
  6         219  
547 6     6   20 use constant CKR_MECHANISM_INVALID => 0x00000070;
  6         6  
  6         236  
548 6     6   25 use constant CKR_MECHANISM_PARAM_INVALID => 0x00000071;
  6         9  
  6         227  
549 6     6   23 use constant CKR_OBJECT_HANDLE_INVALID => 0x00000082;
  6         6  
  6         202  
550 6     6   19 use constant CKR_OPERATION_ACTIVE => 0x00000090;
  6         7  
  6         189  
551 6     6   22 use constant CKR_OPERATION_NOT_INITIALIZED => 0x00000091;
  6         5  
  6         194  
552 6     6   20 use constant CKR_PIN_INCORRECT => 0x000000A0;
  6         9  
  6         378  
553 6     6   20 use constant CKR_PIN_INVALID => 0x000000A1;
  6         7  
  6         191  
554 6     6   22 use constant CKR_PIN_LEN_RANGE => 0x000000A2;
  6         5  
  6         191  
555 6     6   26 use constant CKR_PIN_EXPIRED => 0x000000A3;
  6         6  
  6         197  
556 6     6   29 use constant CKR_PIN_LOCKED => 0x000000A4;
  6         5  
  6         220  
557 6     6   27 use constant CKR_SESSION_CLOSED => 0x000000B0;
  6         3  
  6         195  
558 6     6   20 use constant CKR_SESSION_COUNT => 0x000000B1;
  6         8  
  6         197  
559 6     6   23 use constant CKR_SESSION_HANDLE_INVALID => 0x000000B3;
  6         7  
  6         206  
560 6     6   21 use constant CKR_SESSION_PARALLEL_NOT_SUPPORTED => 0x000000B4;
  6         6  
  6         223  
561 6     6   23 use constant CKR_SESSION_READ_ONLY => 0x000000B5;
  6         6  
  6         201  
562 6     6   23 use constant CKR_SESSION_EXISTS => 0x000000B6;
  6         7  
  6         194  
563 6     6   25 use constant CKR_SESSION_READ_ONLY_EXISTS => 0x000000B7;
  6         8  
  6         246  
564 6     6   26 use constant CKR_SESSION_READ_WRITE_SO_EXISTS => 0x000000B8;
  6         13  
  6         253  
565 6     6   25 use constant CKR_SIGNATURE_INVALID => 0x000000C0;
  6         11  
  6         203  
566 6     6   20 use constant CKR_SIGNATURE_LEN_RANGE => 0x000000C1;
  6         8  
  6         185  
567 6     6   20 use constant CKR_TEMPLATE_INCOMPLETE => 0x000000D0;
  6         6  
  6         188  
568 6     6   23 use constant CKR_TEMPLATE_INCONSISTENT => 0x000000D1;
  6         7  
  6         204  
569 6     6   22 use constant CKR_TOKEN_NOT_PRESENT => 0x000000E0;
  6         13  
  6         271  
570 6     6   23 use constant CKR_TOKEN_NOT_RECOGNIZED => 0x000000E1;
  6         5  
  6         204  
571 6     6   20 use constant CKR_TOKEN_WRITE_PROTECTED => 0x000000E2;
  6         8  
  6         227  
572 6     6   22 use constant CKR_UNWRAPPING_KEY_HANDLE_INVALID => 0x000000F0;
  6         11  
  6         206  
573 6     6   21 use constant CKR_UNWRAPPING_KEY_SIZE_RANGE => 0x000000F1;
  6         10  
  6         243  
574 6     6   26 use constant CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT => 0x000000F2;
  6         8  
  6         300  
575 6     6   25 use constant CKR_USER_ALREADY_LOGGED_IN => 0x00000100;
  6         6  
  6         213  
576 6     6   21 use constant CKR_USER_NOT_LOGGED_IN => 0x00000101;
  6         7  
  6         200  
577 6     6   23 use constant CKR_USER_PIN_NOT_INITIALIZED => 0x00000102;
  6         22  
  6         221  
578 6     6   22 use constant CKR_USER_TYPE_INVALID => 0x00000103;
  6         5  
  6         199  
579 6     6   29 use constant CKR_USER_ANOTHER_ALREADY_LOGGED_IN => 0x00000104;
  6         7  
  6         218  
580 6     6   20 use constant CKR_USER_TOO_MANY_TYPES => 0x00000105;
  6         6  
  6         210  
581 6     6   19 use constant CKR_WRAPPED_KEY_INVALID => 0x00000110;
  6         6  
  6         222  
582 6     6   22 use constant CKR_WRAPPED_KEY_LEN_RANGE => 0x00000112;
  6         7  
  6         203  
583 6     6   21 use constant CKR_WRAPPING_KEY_HANDLE_INVALID => 0x00000113;
  6         6  
  6         193  
584 6     6   24 use constant CKR_WRAPPING_KEY_SIZE_RANGE => 0x00000114;
  6         6  
  6         204  
585 6     6   21 use constant CKR_WRAPPING_KEY_TYPE_INCONSISTENT => 0x00000115;
  6         6  
  6         206  
586 6     6   20 use constant CKR_RANDOM_SEED_NOT_SUPPORTED => 0x00000120;
  6         6  
  6         199  
587 6     6   25 use constant CKR_RANDOM_NO_RNG => 0x00000121;
  6         14  
  6         200  
588 6     6   23 use constant CKR_DOMAIN_PARAMS_INVALID => 0x00000130;
  6         7  
  6         234  
589 6     6   22 use constant CKR_BUFFER_TOO_SMALL => 0x00000150;
  6         6  
  6         195  
590 6     6   21 use constant CKR_SAVED_STATE_INVALID => 0x00000160;
  6         9  
  6         219  
591 6     6   25 use constant CKR_INFORMATION_SENSITIVE => 0x00000170;
  6         5  
  6         229  
592 6     6   21 use constant CKR_STATE_UNSAVEABLE => 0x00000180;
  6         6  
  6         208  
593 6     6   25 use constant CKR_CRYPTOKI_NOT_INITIALIZED => 0x00000190;
  6         6  
  6         219  
594 6     6   22 use constant CKR_CRYPTOKI_ALREADY_INITIALIZED => 0x00000191;
  6         7  
  6         217  
595 6     6   22 use constant CKR_MUTEX_BAD => 0x000001A0;
  6         6  
  6         198  
596 6     6   27 use constant CKR_MUTEX_NOT_LOCKED => 0x000001A1;
  6         14  
  6         246  
597 6     6   23 use constant CKR_NEW_PIN_MODE => 0x000001B0;
  6         7  
  6         197  
598 6     6   23 use constant CKR_NEXT_OTP => 0x000001B1;
  6         9  
  6         195  
599 6     6   22 use constant CKR_FUNCTION_REJECTED => 0x00000200;
  6         8  
  6         197  
600 6     6   21 use constant CKR_VENDOR_DEFINED => 0x80000000;
  6         6  
  6         210  
601 6     6   24 use constant CKF_LIBRARY_CANT_CREATE_OS_THREADS => 0x00000001;
  6         7  
  6         260  
602 6     6   27 use constant CKF_OS_LOCKING_OK => 0x00000002;
  6         6  
  6         266  
603 6     6   29 use constant CKF_DONT_BLOCK => 1;
  6         8  
  6         255  
604 6     6   25 use constant CKG_MGF1_SHA1 => 0x00000001;
  6         6  
  6         232  
605 6     6   22 use constant CKG_MGF1_SHA256 => 0x00000002;
  6         5  
  6         194  
606 6     6   22 use constant CKG_MGF1_SHA384 => 0x00000003;
  6         6  
  6         199  
607 6     6   21 use constant CKG_MGF1_SHA512 => 0x00000004;
  6         6  
  6         189  
608 6     6   27 use constant CKG_MGF1_SHA224 => 0x00000005;
  6         10  
  6         248  
609 6     6   29 use constant CKZ_DATA_SPECIFIED => 0x00000001;
  6         6  
  6         219  
610 6     6   22 use constant CKD_NULL => 0x00000001;
  6         6  
  6         200  
611 6     6   19 use constant CKD_SHA1_KDF => 0x00000002;
  6         11  
  6         198  
612 6     6   52 use constant CKD_SHA1_KDF_ASN1 => 0x00000003;
  6         8  
  6         214  
613 6     6   25 use constant CKD_SHA1_KDF_CONCATENATE => 0x00000004;
  6         6  
  6         200  
614 6     6   22 use constant CKP_PKCS5_PBKD2_HMAC_SHA1 => 0x00000001;
  6         6  
  6         213  
615 6     6   26 use constant CKZ_SALT_SPECIFIED => 0x00000001;
  6         12  
  6         223  
616 6     6   25 use constant CK_OTP_VALUE => 0;
  6         7  
  6         234  
617 6     6   25 use constant CK_OTP_PIN => 1;
  6         9  
  6         219  
618 6     6   19 use constant CK_OTP_CHALLENGE => 2;
  6         7  
  6         197  
619 6     6   19 use constant CK_OTP_TIME => 3;
  6         9  
  6         195  
620 6     6   20 use constant CK_OTP_COUNTER => 4;
  6         6  
  6         200  
621 6     6   22 use constant CK_OTP_FLAGS => 5;
  6         9  
  6         187  
622 6     6   20 use constant CK_OTP_OUTPUT_LENGTH => 6;
  6         6  
  6         193  
623 6     6   19 use constant CK_OTP_OUTPUT_FORMAT => 7;
  6         6  
  6         214  
624 6     6   23 use constant CKF_NEXT_OTP => 0x00000001;
  6         10  
  6         218  
625 6     6   23 use constant CKF_EXCLUDE_TIME => 0x00000002;
  6         9  
  6         209  
626 6     6   22 use constant CKF_EXCLUDE_COUNTER => 0x00000004;
  6         7  
  6         189  
627 6     6   19 use constant CKF_EXCLUDE_CHALLENGE => 0x00000008;
  6         7  
  6         196  
628 6     6   25 use constant CKF_EXCLUDE_PIN => 0x00000010;
  6         16  
  6         192  
629 6     6   23 use constant CKF_USER_FRIENDLY_OTP => 0x00000020;
  6         11  
  6         196  
630              
631             # constants since cryptoki v2.30.0
632              
633 6     6   26 use constant CKF_ERROR_STATE => 0x01000000;
  6         6  
  6         200  
634 6     6   24 use constant CKK_MD5_HMAC => 0x00000027;
  6         7  
  6         192  
635 6     6   24 use constant CKK_SHA_1_HMAC => 0x00000028;
  6         6  
  6         209  
636 6     6   24 use constant CKK_RIPEMD128_HMAC => 0x00000029;
  6         6  
  6         246  
637 6     6   25 use constant CKK_RIPEMD160_HMAC => 0x0000002A;
  6         14  
  6         212  
638 6     6   22 use constant CKK_SHA256_HMAC => 0x0000002B;
  6         5  
  6         235  
639 6     6   26 use constant CKK_SHA384_HMAC => 0x0000002C;
  6         5  
  6         196  
640 6     6   22 use constant CKK_SHA512_HMAC => 0x0000002D;
  6         6  
  6         191  
641 6     6   22 use constant CKK_SHA224_HMAC => 0x0000002E;
  6         9  
  6         197  
642 6     6   19 use constant CKK_SEED => 0x0000002F;
  6         7  
  6         186  
643 6     6   21 use constant CKK_GOSTR3410 => 0x00000030;
  6         9  
  6         216  
644 6     6   26 use constant CKK_GOSTR3411 => 0x00000031;
  6         9  
  6         233  
645 6     6   25 use constant CKK_GOST28147 => 0x00000032;
  6         7  
  6         380  
646 6     6   26 use constant CKA_DERIVE_TEMPLATE => (CKF_ARRAY_ATTRIBUTE|0x00000213);
  6         5  
  6         211  
647 6     6   21 use constant CKA_GOSTR3410_PARAMS => 0x00000250;
  6         10  
  6         188  
648 6     6   21 use constant CKA_GOSTR3411_PARAMS => 0x00000251;
  6         7  
  6         184  
649 6     6   22 use constant CKA_GOST28147_PARAMS => 0x00000252;
  6         8  
  6         200  
650 6     6   23 use constant CKM_DSA_SHA224 => 0x00000013;
  6         10  
  6         204  
651 6     6   23 use constant CKM_DSA_SHA256 => 0x00000014;
  6         9  
  6         215  
652 6     6   23 use constant CKM_DSA_SHA384 => 0x00000015;
  6         5  
  6         224  
653 6     6   22 use constant CKM_DSA_SHA512 => 0x00000016;
  6         5  
  6         199  
654 6     6   23 use constant CKM_DES3_CMAC_GENERAL => 0x00000137;
  6         7  
  6         207  
655 6     6   21 use constant CKM_DES3_CMAC => 0x00000138;
  6         6  
  6         199  
656 6     6   27 use constant CKM_SEED_KEY_GEN => 0x00000650;
  6         8  
  6         201  
657 6     6   22 use constant CKM_SEED_ECB => 0x00000651;
  6         7  
  6         196  
658 6     6   29 use constant CKM_SEED_CBC => 0x00000652;
  6         6  
  6         197  
659 6     6   24 use constant CKM_SEED_MAC => 0x00000653;
  6         6  
  6         220  
660 6     6   23 use constant CKM_SEED_MAC_GENERAL => 0x00000654;
  6         9  
  6         253  
661 6     6   22 use constant CKM_SEED_CBC_PAD => 0x00000655;
  6         6  
  6         207  
662 6     6   24 use constant CKM_SEED_ECB_ENCRYPT_DATA => 0x00000656;
  6         8  
  6         268  
663 6     6   24 use constant CKM_SEED_CBC_ENCRYPT_DATA => 0x00000657;
  6         7  
  6         222  
664 6     6   22 use constant CKM_ECDSA_SHA224 => 0x00001043;
  6         5  
  6         198  
665 6     6   22 use constant CKM_ECDSA_SHA256 => 0x00001044;
  6         5  
  6         202  
666 6     6   21 use constant CKM_ECDSA_SHA384 => 0x00001045;
  6         7  
  6         202  
667 6     6   36 use constant CKM_ECDSA_SHA512 => 0x00001046;
  6         9  
  6         204  
668 6     6   81 use constant CKM_AES_CTS => 0x00001089;
  6         9  
  6         234  
669 6     6   29 use constant CKM_AES_CMAC => 0x0000108A;
  6         8  
  6         189  
670 6     6   19 use constant CKM_AES_CMAC_GENERAL => 0x0000108B;
  6         7  
  6         230  
671 6     6   23 use constant CKM_AES_GCM => 0x00001087;
  6         5  
  6         183  
672 6     6   21 use constant CKM_AES_CCM => 0x00001088;
  6         6  
  6         172  
673 6     6   22 use constant CKM_AES_KEY_WRAP => 0x00001090;
  6         9  
  6         202  
674 6     6   22 use constant CKM_AES_KEY_WRAP_PAD => 0x00001091;
  6         5  
  6         242  
675 6     6   23 use constant CKM_BLOWFISH_CBC_PAD => 0x00001094;
  6         7  
  6         261  
676 6     6   24 use constant CKM_TWOFISH_CBC_PAD => 0x00001095;
  6         7  
  6         196  
677 6     6   20 use constant CKM_GOSTR3410_KEY_PAIR_GEN => 0x00001200;
  6         7  
  6         210  
678 6     6   20 use constant CKM_GOSTR3410 => 0x00001201;
  6         8  
  6         191  
679 6     6   22 use constant CKM_GOSTR3410_WITH_GOSTR3411 => 0x00001202;
  6         7  
  6         238  
680 6     6   23 use constant CKM_GOSTR3410_KEY_WRAP => 0x00001203;
  6         6  
  6         204  
681 6     6   18 use constant CKM_GOSTR3410_DERIVE => 0x00001204;
  6         14  
  6         195  
682 6     6   21 use constant CKM_GOSTR3411 => 0x00001210;
  6         7  
  6         210  
683 6     6   20 use constant CKM_GOSTR3411_HMAC => 0x00001211;
  6         10  
  6         224  
684 6     6   24 use constant CKM_GOST28147_KEY_GEN => 0x00001220;
  6         10  
  6         211  
685 6     6   20 use constant CKM_GOST28147_ECB => 0x00001221;
  6         7  
  6         200  
686 6     6   21 use constant CKM_GOST28147 => 0x00001222;
  6         7  
  6         204  
687 6     6   20 use constant CKM_GOST28147_MAC => 0x00001223;
  6         7  
  6         205  
688 6     6   49 use constant CKM_GOST28147_KEY_WRAP => 0x00001224;
  6         7  
  6         210  
689 6     6   32 use constant CKM_AES_OFB => 0x00002104;
  6         5  
  6         332  
690 6     6   35 use constant CKM_AES_CFB64 => 0x00002105;
  6         7  
  6         216  
691 6     6   27 use constant CKM_AES_CFB8 => 0x00002106;
  6         7  
  6         224  
692 6     6   31 use constant CKM_AES_CFB128 => 0x00002107;
  6         7  
  6         238  
693 6     6   24 use constant CKM_RSA_PKCS_TPM_1_1 => 0x00004001;
  6         6  
  6         256  
694 6     6   23 use constant CKM_RSA_PKCS_OAEP_TPM_1_1 => 0x00004002;
  6         9  
  6         232  
695 6     6   22 use constant CKR_EXCEEDED_MAX_ITERATIONS => 0x000001B5;
  6         6  
  6         223  
696 6     6   24 use constant CKR_FIPS_SELF_TEST_FAILED => 0x000001B6;
  6         9  
  6         200  
697 6     6   23 use constant CKR_LIBRARY_LOAD_FAILED => 0x000001B7;
  6         9  
  6         206  
698 6     6   22 use constant CKR_PIN_TOO_WEAK => 0x000001B8;
  6         6  
  6         207  
699 6     6   21 use constant CKR_PUBLIC_KEY_INVALID => 0x000001B9;
  6         4  
  6         206  
700 6     6   21 use constant CKD_SHA224_KDF => 0x00000005;
  6         10  
  6         203  
701 6     6   24 use constant CKD_SHA256_KDF => 0x00000006;
  6         7  
  6         226  
702 6     6   24 use constant CKD_SHA384_KDF => 0x00000007;
  6         7  
  6         210  
703 6     6   22 use constant CKD_SHA512_KDF => 0x00000008;
  6         5  
  6         241  
704 6     6   25 use constant CKD_CPDIVERSIFY_KDF => 0x00000009;
  6         17  
  6         218  
705              
706             # constants missing from .h files but defined in v2.30 documentation
707              
708 6     6   23 use constant CKA_NAME_HASH_ALGORITHM => 0x0000008C;
  6         1308  
  6         271  
709 6     6   32 use constant CKA_COPYABLE => 0x00000171;
  6         6  
  6         41418  
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.02';
1390              
1391             our (@ISA, %EXPORT_TAGS, @EXPORT_OK);
1392             BEGIN {
1393 6     6   50 require Exporter;
1394 6         73 @ISA = qw(Exporter);
1395 6         425 %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         20 @EXPORT_OK = (
1584 6         655 @{ $EXPORT_TAGS{constant} },
1585 6         10 @{ $EXPORT_TAGS{constant_names} }
1586             );
1587             }
1588              
1589             require XSLoader;
1590             XSLoader::load('Crypt::PKCS11', $VERSION);
1591              
1592 6     6   3565 use Crypt::PKCS11::Session;
  6         12  
  6         10008  
1593              
1594             sub new {
1595 4     4 1 2890 my $this = shift;
1596 4   100     21 my $class = ref($this) || $this;
1597 4         22 my $self = {
1598             pkcs11xs => undef,
1599             rv => CKR_OK
1600             };
1601 4         9 bless $self, $class;
1602              
1603             # uncoverable branch true
1604 4 50       62 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         20 return $self;
1610             }
1611              
1612             END {
1613 6     6   462488 Crypt::PKCS11::XS::clearCreateMutex();
1614 6         50 Crypt::PKCS11::XS::clearDestroyMutex();
1615 6         23 Crypt::PKCS11::XS::clearLockMutex();
1616 6         40 Crypt::PKCS11::XS::clearUnlockMutex();
1617             }
1618              
1619             sub load {
1620 2     2 1 295 my ($self, $so) = @_;
1621              
1622 2 100       8 unless (defined $so) {
1623 1         189 confess '$so must be defined';
1624             }
1625              
1626 1         238 $self->{rv} = $self->{pkcs11xs}->load($so);
1627 1 50       10 return $self->{rv} == CKR_OK ? 1 : undef;
1628             }
1629              
1630             sub unload {
1631 1     1 1 2 my ($self) = @_;
1632              
1633 1         6 $self->{rv} = $self->{pkcs11xs}->unload;
1634 1 50       7 return $self->{rv} == CKR_OK ? 1 : undef;
1635             }
1636              
1637             sub Initialize {
1638 10     10 1 2461 my ($self) = shift;
1639 10         11 my $args;
1640              
1641 10 50       23 if (scalar @_ == 1) {
1642 10 100       29 unless (ref($_[0]) eq 'HASH') {
1643 1         101 confess 'argument is not a HASH';
1644             }
1645 9         11 $args = $_[0];
1646             }
1647             else {
1648 0         0 $args = { @_ };
1649             }
1650              
1651 9 100 100     43 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     51 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         680 confess 'Any or all of Mutex options are invalid';
1662             }
1663             }
1664              
1665 2         12 $self->{rv} = $self->{pkcs11xs}->C_Initialize($args);
1666 2 50       13 return $self->{rv} == CKR_OK ? 1 : undef;
1667             }
1668              
1669             sub Finalize {
1670 1     1 1 3 my ($self) = @_;
1671              
1672 1         6 $self->{rv} = $self->{pkcs11xs}->C_Finalize;
1673 1 50       7 return $self->{rv} == CKR_OK ? 1 : undef;
1674             }
1675              
1676             sub GetInfo {
1677 1     1 1 3 my ($self) = @_;
1678 1         2 my %info;
1679              
1680 1         12 $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         11 $self->{rv} = $self->{pkcs11xs}->C_GetSlotList($tokenPresent, \@slotList);
1689 1 0       9 return $self->{rv} == CKR_OK ? wantarray ? @slotList : \@slotList : undef;
    50          
1690             }
1691              
1692             sub GetSlotInfo {
1693 2     2 1 273 my ($self, $slotID) = @_;
1694 2         2 my %info;
1695              
1696 2 100       6 unless (defined $slotID) {
1697 1         118 confess '$slotID must be defined';
1698             }
1699              
1700 1         12 $self->{rv} = $self->{pkcs11xs}->C_GetSlotInfo($slotID, \%info);
1701 1 0       8 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1702             }
1703              
1704             sub GetTokenInfo {
1705 2     2 1 254 my ($self, $slotID) = @_;
1706 2         3 my %info;
1707              
1708 2 100       6 unless (defined $slotID) {
1709 1         102 confess '$slotID must be defined';
1710             }
1711              
1712 1         11 $self->{rv} = $self->{pkcs11xs}->C_GetTokenInfo($slotID, \%info);
1713 1 0       6 return $self->{rv} == CKR_OK ? wantarray ? %info : \%info : undef;
    50          
1714             }
1715              
1716             sub GetMechanismList {
1717 2     2 1 255 my ($self, $slotID) = @_;
1718 2         3 my @mechanismList;
1719              
1720 2 100       6 unless (defined $slotID) {
1721 1         99 confess '$slotID must be defined';
1722             }
1723              
1724 1         7 $self->{rv} = $self->{pkcs11xs}->C_GetMechanismList($slotID, \@mechanismList);
1725 1 0       6 return $self->{rv} == CKR_OK ? wantarray ? @mechanismList : \@mechanismList : undef;
    50          
1726             }
1727              
1728             sub GetMechanismInfo {
1729 3     3 1 521 my ($self, $slotID, $mechanismType) = @_;
1730 3         3 my %info;
1731              
1732 3 100       8 unless (defined $slotID) {
1733 1         112 confess '$slotID must be defined';
1734             }
1735 2 100       5 unless (defined $mechanismType) {
1736 1         99 confess '$mechanismType must be defined';
1737             }
1738              
1739 1         11 $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 1906 my $self = shift;
1745 6         7 my ($slotID, $pin, $label);
1746              
1747 6 100       24 if (scalar @_ == 2) {
1748 3         6 ($slotID, $label) = @_;
1749             }
1750             else {
1751 3         5 ($slotID, $pin, $label) = @_;
1752             }
1753              
1754 6 100       13 unless (defined $slotID) {
1755 2         201 confess '$slotID must be defined';
1756             }
1757 4 100       11 unless (defined $label) {
1758 1         100 confess '$label must be defined';
1759             }
1760              
1761 3         17 $self->{rv} = $self->{pkcs11xs}->C_InitToken($slotID, $pin, $label);
1762 3 50       13 return $self->{rv} == CKR_OK ? 1 : undef;
1763             }
1764              
1765             sub OpenSession {
1766 3     3 1 528 my ($self, $slotID, $flags, $notifycb) = @_;
1767 3         3 my $session;
1768              
1769 3 100       9 unless (defined $slotID) {
1770 1         110 confess '$slotID must be defined';
1771             }
1772 2 100 66     13 if (defined $notifycb and ref($notifycb) ne 'CODE') {
1773 1         100 confess '$notifycb must be CODE if defined';
1774             }
1775              
1776 1 50       16 $self->{rv} = $self->{pkcs11xs}->C_OpenSession($slotID, defined $flags ? $flags : 0, $notifycb, $session);
1777 1 50       8 return $self->{rv} == CKR_OK ? Crypt::PKCS11::Session->new($self->{pkcs11xs}, $session) : undef;
1778             }
1779              
1780             sub CloseAllSessions {
1781 2     2 1 258 my ($self, $slotID) = @_;
1782              
1783 2 100       5 unless (defined $slotID) {
1784 1         108 confess '$slotID must be defined';
1785             }
1786              
1787 1         11 $self->{rv} = $self->{pkcs11xs}->C_CloseAllSessions($slotID);
1788 1 50       6 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       23 $self->{rv} = $self->{pkcs11xs}->C_WaitForSlotEvent(defined $flags ? $flags : 0, $slotID);
1796 3 100       17 return $self->{rv} == CKR_OK ? $slotID : undef;
1797             }
1798              
1799             sub errno {
1800 1     1 1 5 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   50 use Carp;
  6         13  
  6         605  
1809             sub toBytes {
1810 1     1   139 confess 'unimplemented';
1811             }
1812             package Crypt::PKCS11::CK_AES_CBC_ENCRYPT_DATA_PARAMS;
1813 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         2427  
1814             package Crypt::PKCS11::CK_AES_CCM_PARAMS;
1815 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1404  
1816             package Crypt::PKCS11::CK_AES_CTR_PARAMS;
1817 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1399  
1818             package Crypt::PKCS11::CK_AES_GCM_PARAMS;
1819 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1421  
1820             package Crypt::PKCS11::CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;
1821 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1400  
1822             package Crypt::PKCS11::CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;
1823 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1375  
1824             package Crypt::PKCS11::CK_CAMELLIA_CTR_PARAMS;
1825 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1435  
1826             package Crypt::PKCS11::CK_CMS_SIG_PARAMS;
1827 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1381  
1828             package Crypt::PKCS11::CK_DES_CBC_ENCRYPT_DATA_PARAMS;
1829 6     6   62 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1407  
1830             package Crypt::PKCS11::CK_ECDH1_DERIVE_PARAMS;
1831 6     6   35 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1368  
1832             package Crypt::PKCS11::CK_ECDH2_DERIVE_PARAMS;
1833 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         12  
  6         1537  
1834             package Crypt::PKCS11::CK_ECMQV_DERIVE_PARAMS;
1835 6     6   48 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1390  
1836             package Crypt::PKCS11::CK_KEA_DERIVE_PARAMS;
1837 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1367  
1838             package Crypt::PKCS11::CK_KEY_DERIVATION_STRING_DATA;
1839 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1501  
1840             package Crypt::PKCS11::CK_KEY_WRAP_SET_OAEP_PARAMS;
1841 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1354  
1842             package Crypt::PKCS11::CK_KIP_PARAMS;
1843 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1351  
1844             package Crypt::PKCS11::CK_MECHANISM;
1845 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1437  
1846             package Crypt::PKCS11::CK_OTP_PARAM;
1847 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1417  
1848             package Crypt::PKCS11::CK_OTP_PARAMS;
1849 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1388  
1850             package Crypt::PKCS11::CK_OTP_SIGNATURE_INFO;
1851 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1415  
1852             package Crypt::PKCS11::CK_PBE_PARAMS;
1853 6     6   33 use base qw(Crypt::PKCS11::struct);
  6         13  
  6         1411  
1854             package Crypt::PKCS11::CK_PKCS5_PBKD2_PARAMS;
1855 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1362  
1856             package Crypt::PKCS11::CK_RC2_CBC_PARAMS;
1857 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1363  
1858             package Crypt::PKCS11::CK_RC2_MAC_GENERAL_PARAMS;
1859 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1427  
1860             package Crypt::PKCS11::CK_RC5_CBC_PARAMS;
1861 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1392  
1862             package Crypt::PKCS11::CK_RC5_MAC_GENERAL_PARAMS;
1863 6     6   44 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1427  
1864             package Crypt::PKCS11::CK_RC5_PARAMS;
1865 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1573  
1866             package Crypt::PKCS11::CK_RSA_PKCS_OAEP_PARAMS;
1867 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1322  
1868             package Crypt::PKCS11::CK_RSA_PKCS_PSS_PARAMS;
1869 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1461  
1870             package Crypt::PKCS11::CK_SKIPJACK_PRIVATE_WRAP_PARAMS;
1871 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1355  
1872             package Crypt::PKCS11::CK_SKIPJACK_RELAYX_PARAMS;
1873 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         16  
  6         1471  
1874             package Crypt::PKCS11::CK_SSL3_KEY_MAT_OUT;
1875 6     6   33 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1423  
1876             package Crypt::PKCS11::CK_SSL3_KEY_MAT_PARAMS;
1877 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         22  
  6         1422  
1878             package Crypt::PKCS11::CK_SSL3_MASTER_KEY_DERIVE_PARAMS;
1879 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1426  
1880             package Crypt::PKCS11::CK_SSL3_RANDOM_DATA;
1881 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1348  
1882             package Crypt::PKCS11::CK_TLS_PRF_PARAMS;
1883 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1319  
1884             package Crypt::PKCS11::CK_VERSION;
1885 6     6   27 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1417  
1886             package Crypt::PKCS11::CK_WTLS_KEY_MAT_OUT;
1887 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         15  
  6         1415  
1888             package Crypt::PKCS11::CK_WTLS_KEY_MAT_PARAMS;
1889 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1357  
1890             package Crypt::PKCS11::CK_WTLS_MASTER_KEY_DERIVE_PARAMS;
1891 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1505  
1892             package Crypt::PKCS11::CK_WTLS_PRF_PARAMS;
1893 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1418  
1894             package Crypt::PKCS11::CK_WTLS_RANDOM_DATA;
1895 6     6   35 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1414  
1896             package Crypt::PKCS11::CK_X9_42_DH1_DERIVE_PARAMS;
1897 6     6   33 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1375  
1898             package Crypt::PKCS11::CK_X9_42_DH2_DERIVE_PARAMS;
1899 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1522  
1900             package Crypt::PKCS11::CK_X9_42_MQV_DERIVE_PARAMS;
1901 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1419  
1902              
1903             package Crypt::PKCS11::CK_AES_CBC_ENCRYPT_DATA_PARAMSPtr;
1904 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1343  
1905             package Crypt::PKCS11::CK_AES_CCM_PARAMSPtr;
1906 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1403  
1907             package Crypt::PKCS11::CK_AES_CTR_PARAMSPtr;
1908 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1440  
1909             package Crypt::PKCS11::CK_AES_GCM_PARAMSPtr;
1910 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         14  
  6         1457  
1911             package Crypt::PKCS11::CK_ARIA_CBC_ENCRYPT_DATA_PARAMSPtr;
1912 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1379  
1913             package Crypt::PKCS11::CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMSPtr;
1914 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1415  
1915             package Crypt::PKCS11::CK_CAMELLIA_CTR_PARAMSPtr;
1916 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1391  
1917             package Crypt::PKCS11::CK_CMS_SIG_PARAMSPtr;
1918 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1423  
1919             package Crypt::PKCS11::CK_DES_CBC_ENCRYPT_DATA_PARAMSPtr;
1920 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1407  
1921             package Crypt::PKCS11::CK_ECDH1_DERIVE_PARAMSPtr;
1922 6     6   39 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1388  
1923             package Crypt::PKCS11::CK_ECDH2_DERIVE_PARAMSPtr;
1924 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1508  
1925             package Crypt::PKCS11::CK_ECMQV_DERIVE_PARAMSPtr;
1926 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1423  
1927             package Crypt::PKCS11::CK_KEA_DERIVE_PARAMSPtr;
1928 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1386  
1929             package Crypt::PKCS11::CK_KEY_DERIVATION_STRING_DATAPtr;
1930 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1411  
1931             package Crypt::PKCS11::CK_KEY_WRAP_SET_OAEP_PARAMSPtr;
1932 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1422  
1933             package Crypt::PKCS11::CK_KIP_PARAMSPtr;
1934 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1446  
1935             package Crypt::PKCS11::CK_MECHANISMPtr;
1936 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1294  
1937 6     6   32 use Carp;
  6         17  
  6         396  
1938 6     6   54 use Crypt::PKCS11 qw(:constant);
  6         9  
  6         14964  
1939              
1940             sub toHash {
1941 26     26   387 my ($mechanism, $pParameter);
1942              
1943             # uncoverable branch true
1944 26 50       122 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       89 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       120 mechanism => $mechanism,
1956             (defined $pParameter ? (pParameter => $pParameter) : ())
1957             };
1958             }
1959              
1960             package Crypt::PKCS11::CK_OTP_PARAMPtr;
1961 6     6   41 use base qw(Crypt::PKCS11::struct);
  6         6  
  6         1582  
1962             package Crypt::PKCS11::CK_OTP_PARAMSPtr;
1963 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1396  
1964             package Crypt::PKCS11::CK_OTP_SIGNATURE_INFOPtr;
1965 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1430  
1966             package Crypt::PKCS11::CK_PBE_PARAMSPtr;
1967 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1397  
1968             package Crypt::PKCS11::CK_PKCS5_PBKD2_PARAMSPtr;
1969 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1405  
1970             package Crypt::PKCS11::CK_RC2_CBC_PARAMSPtr;
1971 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1411  
1972             package Crypt::PKCS11::CK_RC2_MAC_GENERAL_PARAMSPtr;
1973 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1340  
1974             package Crypt::PKCS11::CK_RC5_CBC_PARAMSPtr;
1975 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1477  
1976             package Crypt::PKCS11::CK_RC5_MAC_GENERAL_PARAMSPtr;
1977 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1374  
1978             package Crypt::PKCS11::CK_RC5_PARAMSPtr;
1979 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1341  
1980             package Crypt::PKCS11::CK_RSA_PKCS_OAEP_PARAMSPtr;
1981 6     6   36 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1364  
1982             package Crypt::PKCS11::CK_RSA_PKCS_PSS_PARAMSPtr;
1983 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1480  
1984             package Crypt::PKCS11::CK_SKIPJACK_PRIVATE_WRAP_PARAMSPtr;
1985 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1464  
1986             package Crypt::PKCS11::CK_SKIPJACK_RELAYX_PARAMSPtr;
1987 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1377  
1988             package Crypt::PKCS11::CK_SSL3_KEY_MAT_OUTPtr;
1989 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1364  
1990             package Crypt::PKCS11::CK_SSL3_KEY_MAT_PARAMSPtr;
1991 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         11  
  6         1368  
1992             package Crypt::PKCS11::CK_SSL3_MASTER_KEY_DERIVE_PARAMSPtr;
1993 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1394  
1994             package Crypt::PKCS11::CK_SSL3_RANDOM_DATAPtr;
1995 6     6   28 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1410  
1996             package Crypt::PKCS11::CK_TLS_PRF_PARAMSPtr;
1997 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1338  
1998             package Crypt::PKCS11::CK_VERSIONPtr;
1999 6     6   31 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1398  
2000             package Crypt::PKCS11::CK_WTLS_KEY_MAT_OUTPtr;
2001 6     6   32 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1362  
2002             package Crypt::PKCS11::CK_WTLS_KEY_MAT_PARAMSPtr;
2003 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1467  
2004             package Crypt::PKCS11::CK_WTLS_MASTER_KEY_DERIVE_PARAMSPtr;
2005 6     6   35 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1406  
2006             package Crypt::PKCS11::CK_WTLS_PRF_PARAMSPtr;
2007 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         1432  
2008             package Crypt::PKCS11::CK_WTLS_RANDOM_DATAPtr;
2009 6     6   34 use base qw(Crypt::PKCS11::struct);
  6         7  
  6         1414  
2010             package Crypt::PKCS11::CK_X9_42_DH1_DERIVE_PARAMSPtr;
2011 6     6   29 use base qw(Crypt::PKCS11::struct);
  6         10  
  6         1377  
2012             package Crypt::PKCS11::CK_X9_42_DH2_DERIVE_PARAMSPtr;
2013 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         9  
  6         1382  
2014             package Crypt::PKCS11::CK_X9_42_MQV_DERIVE_PARAMSPtr;
2015 6     6   30 use base qw(Crypt::PKCS11::struct);
  6         8  
  6         2103  
2016              
2017             1;
2018              
2019             __END__