NVIDIA DriveOS Linux NSR SDK API Reference

7.0.3.0 Release
nvpkcs11_public_defs.h
Go to the documentation of this file.
1 /* ***************************************************************************** *
2  * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION and its licensors retain all intellectual property
6  * and proprietary rights in and to this software, related documentation
7  * and any modifications thereto. Any use, reproduction, disclosure or
8  * distribution of this software and related documentation without an express
9  * license agreement from NVIDIA CORPORATION is strictly prohibited.
10  ******************************************************************************* */
18 #ifndef NVPKCS11_PUBLIC_DEFS_H_
19 #define NVPKCS11_PUBLIC_DEFS_H_
20 
31 #define NVPKCS11_AES_CBC_BLOCK_SIZE 16UL
32 
33 #define NVPKCS11_AES_CBC_IV_LEN 16UL
34 
35 #define NVPKCS11_AES_CTR_COUNTER_SIZE 32U
36 
37 #define NVPKCS11_MAX_KEY_ID_SIZE 32U
38 
39 #define NVPKCS11_MAX_CKA_LABEL_SIZE 32U
40 
41 #define NVPKCS11_MAX_GDO_CKA_APPLICATION_SIZE 32U
42 
43 #define NVPKCS11_MAX_GDO_CKA_OBJECT_ID_SIZE 64U
44 
45 #define NVPKCS11_MAX_GDO_CKA_VALUE_SIZE 3616U
46 
47 #define NVPKCS11_RANDOM_DATA_MAXLENGTH 1024U
48 
49 #define NVPKCS11_RANDOM_DATA_MINLENGTH 1U
50 
51 #define NVPKCS11_AES_CMAC_SIGNATURE_SIZE 16U
52 /* Defines the minimum and maximum Modulus and Exponent sizes for Public Key Objects */
54 #define NVPKCS11_MAX_KEY_MODULUS 512U
55 
56 #define NVPKCS11_MIN_KEY_MODULUS 384U
57 
58 #define NVPKCS11_RSA_2K_KEY_MODULUS 256U
59 
60 #define NVPKCS11_MAX_KEY_EXPONENT 4U
61 
62 #define NVPKCS11_MIN_KEY_EXPONENT 4U
63 /* Size of digest of each SHA mechanism */
65 #define NVPKCS11_SHA256_DIGEST_SIZE 32U
66 
67 #define NVPKCS11_SHA384_DIGEST_SIZE 48U
68 
69 #define NVPKCS11_SHA512_DIGEST_SIZE 64U
70 
71 #define NVPKCS11_MAX_SHA_DIGEST_SIZE NVPKCS11_SHA512_DIGEST_SIZE
72 
73 #define NVPKCS11_ECDSA_SECP256R1_STRING "secp256r1"
74 
75 #define NVPKCS11_EDDSA_ED25519_STRING "edwards25519"
76 
77 #define NVPKCS11_EC_MONTGOMERY_25519_STRING "curve25519"
78 
79 #define NVPKCS11_ECDSA_X962_UNCOMP_ID 0x04U
80 
81 #define NVPKCS11_DER_PRINTABLE_IDENTIFIER 0x13U
82 
83 #define NVPKCS11_DER_OCTET_IDENTIFIER 0x04U
84 
85 #define NVPKCS11_DER_MAX_SIZE 127U
86 
87 #define NVPKCS11_MAX_EC_STRING_SIZE NVPKCS11_DER_MAX_SIZE
88 
89 #define NVPKCS11_EC_256_POINT_SIZE 32U
90 
91 #define NVPKCS11_ECC_PRIVATE_KEY_SIZE 32U
92 
93 #define NVPKCS11_EDDSA_SIGNATURE_SIZE 64U
94 
95 #define NVPKCS11_MAX_ECDSA_SECP256R1_SIGNATURE_SIZE 72U
96 
97 #define NVPKCS11_SECRET_KEY_LENGTH_IN_BYTES 16U
98 
99 #define NVPKCS11_LONG_SECRET_KEY_LENGTH_IN_BYTES 32U
100 
101 #define NVPKCS11_TLS_MASTER_SECRET_KEY_LENGTH_IN_BYTES 48U
102 
103 #define NVPKCS11_TLS_HANDSHAKE_RANDOM_LENGTH_IN_BYTES 32U
104 
105 #define NVPKCS11_TLS12_MASTER_KEY_DERIVE_LABEL_LENGTH_IN_BYTES 13U
106 
107 #define NVPKCS11_TLS12_KEY_AND_MAC_DERIVE_LABEL_LENGTH_IN_BYTES 13U
108 
109 #define NVPKCS11_AES_CBC_KEY_DATA_WRAP_MAX_DATA_LENGTH_IN_BYTES 32U
110 
111 #define NVPKCS11_SP800_56A_ONE_STEP_KDF_MAX_INFO_LENGTH_IN_BYTES 96U
112 
113 #define NVPKCS11_AES_KEY_WRAP_IV_LENGTH 8U
114 
115 #define NVPKCS11_MAX_PSC_CMAC_DATA_LEN 1500U
116 
117 #define NVPKCS11_NVIDIA_OX5B_SHA256_UID_LENGTH 6U
118 
119 #define NVPKCS11_NVIDIA_OX5B_SHA256_NONCE_LENGTH 16U
120 
121 #define NVPKCS11_MAX_ENTRIES_PER_CMAC_SIGN_VERIFY_BATCH 32U
122 
124 #define NVPKCS11_GETINFO_CRYPTOKIVERSION_MAJOR 0x03U
125 
126 #define NVPKCS11_GETINFO_CRYPTOKIVERSION_MINOR 0x00U
127 
128 #define NVPKCS11_GETINFO_MANF_ID "NVIDIA"
129 
130 #define NVPKCS11_GETINFO_FLAGS 0x00U
131 
132 #define NVPKCS11_GETINFO_LIBRARY_DESC "HPSE_Library"
133 
134 #define NVPKCS11_GETINFO_LIBRARYVERSION_MAJOR 0x46U
135 
136 #define NVPKCS11_GETINFO_LIBRARYVERSION_MINOR 0x02U
137 
139 #define NVPKCS11_FSI_DYNAMIC_1_MODEL_NAME "FSI_DYN_1 "
140 
142 #define NVPKCS11_CCPLEX_SAFETY_2_MODEL_NAME "CCPLEX_SAFE_2 "
143 
144 #define NVPKCS11_CCPLEX_DYNAMIC_2_MODEL_NAME "CCPLEX_DYN_2 "
145 
146 #define NVPKCS11_TSEC_SAFETY_3_MODEL_NAME "TSEC_SAFE_3 "
147 
148 #define NVPKCS11_TSEC_DYNAMIC_3_MODEL_NAME "TSEC_DYN_3 "
149 
150 #define NVPKCS11_CCPLEX_SAFETY_4_MODEL_NAME "CCPLEX_SAFE_4 "
151 
152 #define NVPKCS11_CCPLEX_DYNAMIC_4_MODEL_NAME "CCPLEX_DYN_4 "
153 
155 #define NVPKCS11_CCPLEX_SAFETY_5_MODEL_NAME "CCPLEX_SAFE_5 "
156 
157 #define NVPKCS11_CCPLEX_DYNAMIC_5_MODEL_NAME "CCPLEX_DYN_5 "
158 
160 #define NVPKCS11_CCPLEX_SAFETY_6_MODEL_NAME "CCPLEX_SAFE_6 "
161 
162 #define NVPKCS11_CCPLEX_DYNAMIC_6_MODEL_NAME "CCPLEX_DYN_6 "
163 
165 #define NVPKCS11_CCPLEX_SAFETY_7_MODEL_NAME "CCPLEX_SAFE_7 "
166 
167 #define NVPKCS11_CCPLEX_DYNAMIC_7_MODEL_NAME "CCPLEX_DYN_7 "
168 
170 #define NVPKCS11_CCPLEX_SAFETY_8_MODEL_NAME "CCPLEX_SAFE_8 "
171 
172 #define NVPKCS11_CCPLEX_DYNAMIC_8_MODEL_NAME "CCPLEX_DYN_8 "
173 
175 #define NVPKCS11_CCPLEX_SAFETY_9_MODEL_NAME "CCPLEX_SAFE_9 "
176 
177 #define NVPKCS11_CCPLEX_DYNAMIC_9_MODEL_NAME "CCPLEX_DYN_9 "
178 
180 #define NVPKCS11_CCPLEX_SAFETY_10_MODEL_NAME "CCPLEX_SAFE_10 "
181 
182 #define NVPKCS11_CCPLEX_DYNAMIC_10_MODEL_NAME "CCPLEX_DYN_10 "
183 
185 #define NVPKCS11_CCPLEX_SAFETY_11_MODEL_NAME "CCPLEX_SAFE_11 "
186 
187 #define NVPKCS11_CCPLEX_DYNAMIC_11_MODEL_NAME "CCPLEX_DYN_11 "
188 
190 #define NVPKCS11_CCPLEX_SAFETY_12_MODEL_NAME "CCPLEX_SAFE_12 "
191 
192 #define NVPKCS11_CCPLEX_DYNAMIC_12_MODEL_NAME "CCPLEX_DYN_12 "
193 
195 #define NVPKCS11_CCPLEX_SAFETY_13_MODEL_NAME "CCPLEX_SAFE_13 "
196 
197 #define NVPKCS11_CCPLEX_DYNAMIC_13_MODEL_NAME "CCPLEX_DYN_13 "
198 
200 #define NVPKCS11_CCPLEX_SAFETY_14_MODEL_NAME "CCPLEX_SAFE_14 "
201 
202 #define NVPKCS11_CCPLEX_DYNAMIC_14_MODEL_NAME "CCPLEX_DYN_14 "
203 
205 #define NVPKCS11_TSECRADAR_SAFETY_15_MODEL_NAME "TSECRADAR_SAFE15"
206 
207 #define NVPKCS11_TSECRADAR_DYNAMIC_15_MODEL_NAME "TSECRADAR_DYN15 "
208 
212 #ifdef NV_HYPERVISOR
213 #define NVPKCS11_TOKEN_COUNT 2U
214 #else
215 #define NVPKCS11_TOKEN_COUNT 29U
216 #endif
217 
219 #ifdef NV_HYPERVISOR
220 #define NVPKCS11_MAX_SESSIONS 4U
221 #else
222 #define NVPKCS11_MAX_SESSIONS 256U
223 #endif
224 
238 #define NVPKCS11_ECDSA_256_KEY_SIZE NVPKCS11_EC_256_POINT_SIZE
239 
242 #define NVPKCS11_EDDSA_256_KEY_SIZE NVPKCS11_EC_256_POINT_SIZE
243 
248 #define NVPKCS11_SHA_MAX_DATA_SIZE (256UL * 0x100000UL)
249 
254 #define NVPKCS11_AES_BUFFER_LIMIT (1U * 0x100000UL)
255 
272 typedef struct __attribute__((__packed__)) ecParameters_t
273 {
278 
283 typedef struct __attribute__((__packed__)) uncompressed32BytePoint_t
284 {
291 
296 typedef struct __attribute__((__packed__)) compressed32BytePoint_t
297 {
302 
308 
314 
315 /*
316  * NVIDIA PKCS11 library supports 3 interfaces:
317  * "PKCS 11": this interface name represents 2 interfaces, one which is associated
318  * with the Oasis standards version 3.0 CK_FUNCTION_LIST_3_0 structure and the other,
319  * with the Oasis standards version 2.40 CK_FUNCTION_LIST structure.
320  * "Vendor NVIDIA", this interface name is associated with NV_CK_FUNCTION_LIST
321  * structure that contains NVIDIA extension APIs.
322  */
323 
325 #define PKCS11_INTERFACE_NAME "PKCS 11"
326 
327 #define NVIDIA_INTERFACE_NAME "Vendor NVIDIA"
328 
329 #endif /* NVPKCS11_PUBLIC_DEFS_H_ */
compressed32BytePoint_t::identifier
CK_BYTE identifier
Identifier value.
Definition: nvpkcs11_public_defs.h:298
ecParameters_t
struct ecParameters_t ecParameters_t
ecParameters_t Holds EC parameters.
NVPKCS11_EC_256_POINT_SIZE
#define NVPKCS11_EC_256_POINT_SIZE
Size for EC point values.
Definition: nvpkcs11_public_defs.h:89
compressed32BytePoint_t
struct compressed32BytePoint_t compressed32BytePoint_t
compressed32BytePoint_t Holds a compressed value for point data.
ecParameters_t::identifier
CK_BYTE identifier
Identifier, value must be set to NVPKCS11_DER_PRINTABLE_IDENTIFIER.
Definition: nvpkcs11_public_defs.h:274
compressed32BytePoint_t::size
CK_BYTE size
The size of the field (Must be set to NVPKCS11_EC_256_POINT_SIZE)
Definition: nvpkcs11_public_defs.h:299
CK_BYTE
unsigned char CK_BYTE
Definition: pkcs11t.h:37
uncompressed32BytePoint_t::x962_id
CK_BYTE x962_id
Type identifier.
Definition: nvpkcs11_public_defs.h:287
uncompressed32BytePoint_t::size
CK_BYTE size
The size of the fields x962_id, qX and qY.
Definition: nvpkcs11_public_defs.h:286
ecParameters_t
ecParameters_t Holds EC parameters.
Definition: nvpkcs11_public_defs.h:272
uncompressed32BytePoint_t
uncompressed32BytePoint_t Holds an uncompressed value for point data.
Definition: nvpkcs11_public_defs.h:283
CK_UTF8CHAR
CK_BYTE CK_UTF8CHAR
Definition: pkcs11t.h:43
NVPKCS11_MAX_EC_STRING_SIZE
#define NVPKCS11_MAX_EC_STRING_SIZE
Max allowed length for EC Params string.
Definition: nvpkcs11_public_defs.h:87
uncompressed32BytePoint_t::identifier
CK_BYTE identifier
Identifier value.
Definition: nvpkcs11_public_defs.h:285
ecParameters_t::size
CK_BYTE size
Size of the printable string printableString.
Definition: nvpkcs11_public_defs.h:275
uncompressed32BytePoint_t
struct uncompressed32BytePoint_t uncompressed32BytePoint_t
uncompressed32BytePoint_t Holds an uncompressed value for point data.
eddsaPoint_t
compressed32BytePoint_t eddsaPoint_t
eddsaPoint_t is a legacy alias type that holds a generic compressed point value.
Definition: nvpkcs11_public_defs.h:307
ecdsaPoint_t
uncompressed32BytePoint_t ecdsaPoint_t
ecdsaPoint_t is a legacy alias type that holds a generic uncompressed point value.
Definition: nvpkcs11_public_defs.h:313
compressed32BytePoint_t
compressed32BytePoint_t Holds a compressed value for point data.
Definition: nvpkcs11_public_defs.h:296