File Coverage

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