@@ -43,27 +43,27 @@ const CKA_NSS_EMAIL_DISTRUST_AFTER: CK_ATTRIBUTE_TYPE = NSS_VENDOR_OFFSET + 36;
43
43
44
44
const NSS_VENDOR_TRUST : CK_ULONG = NSS_VENDOR_OFFSET + 0x2000 ;
45
45
46
- const CKA_TRUST_DIGITAL_SIGNATURE : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 1 ;
47
- const CKA_TRUST_NON_REPUDIATION : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 2 ;
48
- const CKA_TRUST_KEY_ENCIPHERMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 3 ;
49
- const CKA_TRUST_DATA_ENCIPHERMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 4 ;
50
- const CKA_TRUST_KEY_AGREEMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 5 ;
51
- const CKA_TRUST_KEY_CERT_SIGN : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 6 ;
52
- const CKA_TRUST_CRL_SIGN : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 7 ;
53
- const CKA_TRUST_SERVER_AUTH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 8 ;
54
- const CKA_TRUST_CLIENT_AUTH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 9 ;
55
- const CKA_TRUST_CODE_SIGNING : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 10 ;
56
- const CKA_TRUST_EMAIL_PROTECTION : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 11 ;
57
- const CKA_TRUST_IPSEC_END_SYSTEM : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 12 ;
58
- const CKA_TRUST_IPSEC_TUNNEL : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 13 ;
59
- const CKA_TRUST_IPSEC_USER : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 14 ;
60
- const CKA_TRUST_TIME_STAMPING : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 15 ;
61
- const CKA_TRUST_STEP_UP_APPROVED : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 16 ;
46
+ const CKA_NSS_TRUST_DIGITAL_SIGNATURE : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 1 ;
47
+ const CKA_NSS_TRUST_NON_REPUDIATION : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 2 ;
48
+ const CKA_NSS_TRUST_KEY_ENCIPHERMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 3 ;
49
+ const CKA_NSS_TRUST_DATA_ENCIPHERMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 4 ;
50
+ const CKA_NSS_TRUST_KEY_AGREEMENT : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 5 ;
51
+ const CKA_NSS_TRUST_KEY_CERT_SIGN : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 6 ;
52
+ const CKA_NSS_TRUST_CRL_SIGN : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 7 ;
53
+ const CKA_NSS_TRUST_SERVER_AUTH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 8 ;
54
+ const CKA_NSS_TRUST_CLIENT_AUTH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 9 ;
55
+ const CKA_NSS_TRUST_CODE_SIGNING : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 10 ;
56
+ const CKA_NSS_TRUST_EMAIL_PROTECTION : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 11 ;
57
+ const CKA_NSS_TRUST_IPSEC_END_SYSTEM : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 12 ;
58
+ const CKA_NSS_TRUST_IPSEC_TUNNEL : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 13 ;
59
+ const CKA_NSS_TRUST_IPSEC_USER : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 14 ;
60
+ const CKA_NSS_TRUST_TIME_STAMPING : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 15 ;
61
+ const CKA_NSS_TRUST_STEP_UP_APPROVED : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 16 ;
62
62
63
- const CKA_CERT_SHA1_HASH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 100 ;
64
- const CKA_CERT_MD5_HASH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 101 ;
63
+ const CKA_NSS_CERT_SHA1_HASH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 100 ;
64
+ const CKA_NSS_CERT_MD5_HASH : CK_ATTRIBUTE_TYPE = NSS_VENDOR_TRUST + 101 ;
65
65
66
- const NSS_KA_LEN : usize = 121 ;
66
+ const NSS_KA_LEN : usize = 191 ;
67
67
68
68
/// Static array listing all standard and NSS vendor-specific attributes
69
69
/// known and potentially stored by this NSS backend implementation.
@@ -72,6 +72,7 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
72
72
CKA_TOKEN ,
73
73
CKA_PRIVATE ,
74
74
CKA_LABEL ,
75
+ CKA_UNIQUE_ID ,
75
76
CKA_APPLICATION ,
76
77
CKA_VALUE ,
77
78
CKA_OBJECT_ID ,
@@ -87,6 +88,7 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
87
88
CKA_URL ,
88
89
CKA_HASH_OF_SUBJECT_PUBLIC_KEY ,
89
90
CKA_HASH_OF_ISSUER_PUBLIC_KEY ,
91
+ CKA_NAME_HASH_ALGORITHM ,
90
92
CKA_CHECK_VALUE ,
91
93
CKA_KEY_TYPE ,
92
94
CKA_SUBJECT ,
@@ -126,12 +128,34 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
126
128
CKA_ALWAYS_SENSITIVE ,
127
129
CKA_KEY_GEN_MECHANISM ,
128
130
CKA_MODIFIABLE ,
131
+ CKA_COPYABLE ,
132
+ CKA_DESTROYABLE ,
129
133
CKA_EC_PARAMS ,
130
134
CKA_EC_POINT ,
131
135
DEPRECATED_CKA_SECONDARY_AUTH ,
132
136
DEPRECATED_CKA_AUTH_PIN_FLAGS ,
133
137
CKA_ALWAYS_AUTHENTICATE ,
134
138
CKA_WRAP_WITH_TRUSTED ,
139
+ CKA_WRAP_TEMPLATE ,
140
+ CKA_UNWRAP_TEMPLATE ,
141
+ CKA_DERIVE_TEMPLATE ,
142
+ CKA_OTP_FORMAT ,
143
+ CKA_OTP_LENGTH ,
144
+ CKA_OTP_TIME_INTERVAL ,
145
+ CKA_OTP_USER_FRIENDLY_MODE ,
146
+ CKA_OTP_CHALLENGE_REQUIREMENT ,
147
+ CKA_OTP_TIME_REQUIREMENT ,
148
+ CKA_OTP_COUNTER_REQUIREMENT ,
149
+ CKA_OTP_PIN_REQUIREMENT ,
150
+ CKA_OTP_COUNTER ,
151
+ CKA_OTP_TIME ,
152
+ CKA_OTP_USER_IDENTIFIER ,
153
+ CKA_OTP_SERVICE_IDENTIFIER ,
154
+ CKA_OTP_SERVICE_LOGO ,
155
+ CKA_OTP_SERVICE_LOGO_TYPE ,
156
+ CKA_GOSTR3410_PARAMS ,
157
+ CKA_GOSTR3411_PARAMS ,
158
+ CKA_GOST28147_PARAMS ,
135
159
CKA_HW_FEATURE_TYPE ,
136
160
CKA_RESET_ON_INIT ,
137
161
CKA_HAS_RESET ,
@@ -149,8 +173,56 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
149
173
CKA_REQUIRED_CMS_ATTRIBUTES ,
150
174
CKA_DEFAULT_CMS_ATTRIBUTES ,
151
175
CKA_SUPPORTED_CMS_ATTRIBUTES ,
152
- CKA_WRAP_TEMPLATE ,
153
- CKA_UNWRAP_TEMPLATE ,
176
+ CKA_PROFILE_ID ,
177
+ CKA_X2RATCHET_BAG ,
178
+ CKA_X2RATCHET_BAGSIZE ,
179
+ CKA_X2RATCHET_BOBS1STMSG ,
180
+ CKA_X2RATCHET_CKR ,
181
+ CKA_X2RATCHET_CKS ,
182
+ CKA_X2RATCHET_DHP ,
183
+ CKA_X2RATCHET_DHR ,
184
+ CKA_X2RATCHET_DHS ,
185
+ CKA_X2RATCHET_HKR ,
186
+ CKA_X2RATCHET_HKS ,
187
+ CKA_X2RATCHET_ISALICE ,
188
+ CKA_X2RATCHET_NHKR ,
189
+ CKA_X2RATCHET_NHKS ,
190
+ CKA_X2RATCHET_NR ,
191
+ CKA_X2RATCHET_NS ,
192
+ CKA_X2RATCHET_PNS ,
193
+ CKA_X2RATCHET_RK ,
194
+ CKA_HSS_LEVELS ,
195
+ CKA_HSS_LMS_TYPE ,
196
+ CKA_HSS_LMOTS_TYPE ,
197
+ CKA_HSS_LMS_TYPES ,
198
+ CKA_HSS_LMOTS_TYPES ,
199
+ CKA_HSS_KEYS_REMAINING ,
200
+ CKA_OBJECT_VALIDATION_FLAGS ,
201
+ CKA_VALIDATION_TYPE ,
202
+ CKA_VALIDATION_VERSION ,
203
+ CKA_VALIDATION_LEVEL ,
204
+ CKA_VALIDATION_MODULE_ID ,
205
+ CKA_VALIDATION_FLAG ,
206
+ CKA_VALIDATION_AUTHORITY_TYPE ,
207
+ CKA_VALIDATION_COUNTRY ,
208
+ CKA_VALIDATION_CERTIFICATE_IDENTIFIER ,
209
+ CKA_VALIDATION_CERTIFICATE_URI ,
210
+ CKA_VALIDATION_PROFILE ,
211
+ CKA_VALIDATION_VENDOR_URI ,
212
+ CKA_ENCAPSULATE_TEMPLATE ,
213
+ CKA_DECAPSULATE_TEMPLATE ,
214
+ CKA_TRUST_SERVER_AUTH ,
215
+ CKA_TRUST_CLIENT_AUTH ,
216
+ CKA_TRUST_CODE_SIGNING ,
217
+ CKA_TRUST_EMAIL_PROTECTION ,
218
+ CKA_TRUST_IPSEC_IKE ,
219
+ CKA_TRUST_TIME_STAMPING ,
220
+ CKA_TRUST_OCSP_SIGNING ,
221
+ CKA_ENCAPSULATE ,
222
+ CKA_DECAPSULATE ,
223
+ CKA_HASH_OF_CERTIFICATE ,
224
+ CKA_PUBLIC_CRC64_VALUE ,
225
+ CKA_SEED ,
154
226
CKA_NSS_TRUST ,
155
227
CKA_NSS_URL ,
156
228
CKA_NSS_EMAIL ,
@@ -168,27 +240,25 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
168
240
CKA_NSS_OVERRIDE_EXTENSIONS ,
169
241
CKA_NSS_SERVER_DISTRUST_AFTER ,
170
242
CKA_NSS_EMAIL_DISTRUST_AFTER ,
171
- CKA_TRUST_DIGITAL_SIGNATURE ,
172
- CKA_TRUST_NON_REPUDIATION ,
173
- CKA_TRUST_KEY_ENCIPHERMENT ,
174
- CKA_TRUST_DATA_ENCIPHERMENT ,
175
- CKA_TRUST_KEY_AGREEMENT ,
176
- CKA_TRUST_KEY_CERT_SIGN ,
177
- CKA_TRUST_CRL_SIGN ,
178
- CKA_TRUST_SERVER_AUTH ,
179
- CKA_TRUST_CLIENT_AUTH ,
180
- CKA_TRUST_CODE_SIGNING ,
181
- CKA_TRUST_EMAIL_PROTECTION ,
182
- CKA_TRUST_IPSEC_END_SYSTEM ,
183
- CKA_TRUST_IPSEC_TUNNEL ,
184
- CKA_TRUST_IPSEC_USER ,
185
- CKA_TRUST_TIME_STAMPING ,
186
- CKA_TRUST_STEP_UP_APPROVED ,
187
- CKA_CERT_SHA1_HASH ,
188
- CKA_CERT_MD5_HASH ,
243
+ CKA_NSS_TRUST_DIGITAL_SIGNATURE ,
244
+ CKA_NSS_TRUST_NON_REPUDIATION ,
245
+ CKA_NSS_TRUST_KEY_ENCIPHERMENT ,
246
+ CKA_NSS_TRUST_DATA_ENCIPHERMENT ,
247
+ CKA_NSS_TRUST_KEY_AGREEMENT ,
248
+ CKA_NSS_TRUST_KEY_CERT_SIGN ,
249
+ CKA_NSS_TRUST_CRL_SIGN ,
250
+ CKA_NSS_TRUST_SERVER_AUTH ,
251
+ CKA_NSS_TRUST_CLIENT_AUTH ,
252
+ CKA_NSS_TRUST_CODE_SIGNING ,
253
+ CKA_NSS_TRUST_EMAIL_PROTECTION ,
254
+ CKA_NSS_TRUST_IPSEC_END_SYSTEM ,
255
+ CKA_NSS_TRUST_IPSEC_TUNNEL ,
256
+ CKA_NSS_TRUST_IPSEC_USER ,
257
+ CKA_NSS_TRUST_TIME_STAMPING ,
258
+ CKA_NSS_TRUST_STEP_UP_APPROVED ,
259
+ CKA_NSS_CERT_SHA1_HASH ,
260
+ CKA_NSS_CERT_MD5_HASH ,
189
261
CKA_NSS_DB ,
190
- CKA_ENCAPSULATE ,
191
- CKA_DECAPSULATE ,
192
262
] ;
193
263
194
264
/// Static array listing attributes that NSS protects with an internal
@@ -197,16 +267,22 @@ pub static NSS_KNOWN_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; NSS_KA_LEN] = [
197
267
///
198
268
/// NSS has a hardcoded list of attributes that are authenticated,
199
269
/// some are vendor defined attributes */
200
- pub static AUTHENTICATED_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 10 ] = [
270
+ pub static AUTHENTICATED_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 16 ] = [
201
271
CKA_MODULUS ,
202
272
CKA_PUBLIC_EXPONENT ,
203
- CKA_CERT_SHA1_HASH ,
204
- CKA_CERT_MD5_HASH ,
273
+ CKA_NSS_CERT_SHA1_HASH ,
274
+ CKA_NSS_CERT_MD5_HASH ,
275
+ CKA_NSS_TRUST_SERVER_AUTH ,
276
+ CKA_NSS_TRUST_CLIENT_AUTH ,
277
+ CKA_NSS_TRUST_EMAIL_PROTECTION ,
278
+ CKA_NSS_TRUST_CODE_SIGNING ,
279
+ CKA_NSS_TRUST_STEP_UP_APPROVED ,
280
+ CKA_HASH_OF_CERTIFICATE ,
281
+ CKA_NAME_HASH_ALGORITHM ,
205
282
CKA_TRUST_SERVER_AUTH ,
206
283
CKA_TRUST_CLIENT_AUTH ,
207
284
CKA_TRUST_EMAIL_PROTECTION ,
208
285
CKA_TRUST_CODE_SIGNING ,
209
- CKA_TRUST_STEP_UP_APPROVED ,
210
286
CKA_NSS_OVERRIDE_EXTENSIONS ,
211
287
] ;
212
288
@@ -230,24 +306,24 @@ static NSS_VENDOR_ATTRIBUTES: [CK_ATTRIBUTE_TYPE; 36] = [
230
306
CKA_NSS_OVERRIDE_EXTENSIONS ,
231
307
CKA_NSS_SERVER_DISTRUST_AFTER ,
232
308
CKA_NSS_EMAIL_DISTRUST_AFTER ,
233
- CKA_TRUST_DIGITAL_SIGNATURE ,
234
- CKA_TRUST_NON_REPUDIATION ,
235
- CKA_TRUST_KEY_ENCIPHERMENT ,
236
- CKA_TRUST_DATA_ENCIPHERMENT ,
237
- CKA_TRUST_KEY_AGREEMENT ,
238
- CKA_TRUST_KEY_CERT_SIGN ,
239
- CKA_TRUST_CRL_SIGN ,
240
- CKA_TRUST_SERVER_AUTH ,
241
- CKA_TRUST_CLIENT_AUTH ,
242
- CKA_TRUST_CODE_SIGNING ,
243
- CKA_TRUST_EMAIL_PROTECTION ,
244
- CKA_TRUST_IPSEC_END_SYSTEM ,
245
- CKA_TRUST_IPSEC_TUNNEL ,
246
- CKA_TRUST_IPSEC_USER ,
247
- CKA_TRUST_TIME_STAMPING ,
248
- CKA_TRUST_STEP_UP_APPROVED ,
249
- CKA_CERT_SHA1_HASH ,
250
- CKA_CERT_MD5_HASH ,
309
+ CKA_NSS_TRUST_DIGITAL_SIGNATURE ,
310
+ CKA_NSS_TRUST_NON_REPUDIATION ,
311
+ CKA_NSS_TRUST_KEY_ENCIPHERMENT ,
312
+ CKA_NSS_TRUST_DATA_ENCIPHERMENT ,
313
+ CKA_NSS_TRUST_KEY_AGREEMENT ,
314
+ CKA_NSS_TRUST_KEY_CERT_SIGN ,
315
+ CKA_NSS_TRUST_CRL_SIGN ,
316
+ CKA_NSS_TRUST_SERVER_AUTH ,
317
+ CKA_NSS_TRUST_CLIENT_AUTH ,
318
+ CKA_NSS_TRUST_CODE_SIGNING ,
319
+ CKA_NSS_TRUST_EMAIL_PROTECTION ,
320
+ CKA_NSS_TRUST_IPSEC_END_SYSTEM ,
321
+ CKA_NSS_TRUST_IPSEC_TUNNEL ,
322
+ CKA_NSS_TRUST_IPSEC_USER ,
323
+ CKA_NSS_TRUST_TIME_STAMPING ,
324
+ CKA_NSS_TRUST_STEP_UP_APPROVED ,
325
+ CKA_NSS_CERT_SHA1_HASH ,
326
+ CKA_NSS_CERT_MD5_HASH ,
251
327
CKA_NSS_DB ,
252
328
] ;
253
329
@@ -267,14 +343,15 @@ pub fn ignore_attribute(attr: CK_ATTRIBUTE_TYPE) -> bool {
267
343
268
344
/// Static array listing attributes that NSS considers sensitive and encrypts
269
345
/// when storing private or secret key objects in the key database (keyN.db).
270
- pub static NSS_SENSITIVE_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 7 ] = [
346
+ pub static NSS_SENSITIVE_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 8 ] = [
271
347
CKA_VALUE ,
272
348
CKA_PRIVATE_EXPONENT ,
273
349
CKA_PRIME_1 ,
274
350
CKA_PRIME_2 ,
275
351
CKA_EXPONENT_1 ,
276
352
CKA_EXPONENT_2 ,
277
353
CKA_COEFFICIENT ,
354
+ CKA_SEED ,
278
355
] ;
279
356
280
357
/// Checks if an attribute type is considered sensitive by NSS (and should be
@@ -288,15 +365,10 @@ pub fn is_db_attribute(attr: CK_ATTRIBUTE_TYPE) -> bool {
288
365
NSS_KNOWN_ATTRIBUTES . contains ( & attr)
289
366
}
290
367
291
- /// Static array listing attributes that are typically managed internally
292
- /// (like `CKA_UNIQUE_ID`) or derived/implicit (`CKA_ALLOWED_MECHANISMS`)
293
- /// and are not directly stored as columns in the NSS database tables.
294
- pub static NSS_SKIP_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 4 ] = [
295
- CKA_UNIQUE_ID ,
296
- CKA_COPYABLE ,
297
- CKA_DESTROYABLE ,
298
- CKA_ALLOWED_MECHANISMS ,
299
- ] ;
368
+ /// Static array listing attributes that are used by us but not supported by
369
+ /// NSS for storage in the DB (like `CKA_ALLOWED_MECHANISMS`).
370
+ pub static NSS_SKIP_ATTRIBUTES : [ CK_ATTRIBUTE_TYPE ; 1 ] =
371
+ [ CKA_ALLOWED_MECHANISMS ] ;
300
372
301
373
/// Checks if an attribute type is one that should be skipped (not directly
302
374
/// stored or retrieved as a column) when interacting with the NSS DB.
0 commit comments