globalplatform
globalplatform.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2026, Karsten Ohme
3  * This file is part of GlobalPlatform.
4  *
5  * GlobalPlatform is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * GlobalPlatform is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with GlobalPlatform. If not, see <https://www.gnu.org/licenses/>.
17  *
18  * In addition, as a special exception, the copyright holders give
19  * permission to link the code of portions of this program with the
20  * OpenSSL library under certain conditions as described in each
21  * individual source file, and distribute linked combinations
22  * including the two.
23  * You must obey the GNU Lesser General Public License in all respects
24  * for all of the code used other than OpenSSL. If you modify
25  * file(s) with this exception, you may extend this exception to your
26  * version of the file(s), but you are not obligated to do so. If you
27  * do not wish to do so, delete this exception statement from your
28  * version.
29  */
30 
35 #ifndef OPGP_GLOBALPLATFORM_H
36 #define OPGP_GLOBALPLATFORM_H
37 
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42 
43 #ifndef max
44 #define max(a,b) (((a)>(b))?(a):(b))
45 #endif
46 #ifndef min
47 #define min(a,b) (((a)>(b))?(b):(a))
48 #endif
49 
50 #include <stdio.h>
51 #include "types.h"
52 #include "unicode.h"
53 #include "error.h"
54 #include "errorcodes.h"
55 #include "library.h"
56 #include "connection.h"
57 #include "security.h"
58 #include "stringify.h"
59 
60 #define APDU_COMMAND_LEN 261
61 #define APDU_RESPONSE_LEN 258
62 
64 static const BYTE OPGP_VISA_DEFAULT_KEY[16] = { 0x40, 0x41, 0x42, 0x43, 0x44,
65  0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F };
66 
68 static const BYTE OPGP_GEMXPRESSO_DEFAULT_KEY[16] = { 0x47, 0x45, 0x4d, 0x58,
69  0x50, 0x52, 0x45, 0x53, 0x53, 0x4f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45 };
70 
71 static const BYTE GP211_CARD_MANAGER_AID[7] = { 0xA0, 0x00, 0x00, 0x01, 0x51,
72  0x00, 0x00 };
73 
76 static const BYTE GP231_ISD_AID[8] = { 0xA0, 0x00, 0x00, 0x01, 0x51, 0x00, 0x00,
77  0x00 };
78 
79 static const BYTE GP211_CARD_MANAGER_AID_ALT1[8] = { 0xA0, 0x00, 0x00, 0x00,
80  0x03, 0x00, 0x00, 0x00 };
81 
82 static const BYTE GP211_CARD_MANAGER_AID_ALT2[7] = { 0xA0, 0x00, 0x00, 0x00,
83  0x03, 0x00, 0x00 };
84 
85  static const BYTE GP211_CARD_MANAGER_AID_GEMPLUS[8] = { 0xA0, 0x00, 0x00, 0x00, 0x18, 0x43, 0x4D, 0x00 };
86 
87 #define GP211_LIFE_CYCLE_LOAD_FILE_LOADED 0x01
88 #define GP211_LIFE_CYCLE_CARD_OP_READY 0x01
89 #define GP211_LIFE_CYCLE_CARD_INITIALIZED 0x07
90 #define GP211_LIFE_CYCLE_CARD_SECURED 0x0f
91 #define GP211_LIFE_CYCLE_CARD_LOCKED 0x7f
92 #define GP211_LIFE_CYCLE_CARD_TERMINATED 0xff
93 #define GP211_LIFE_CYCLE_APPLICATION_INSTALLED 0x03
94 #define GP211_LIFE_CYCLE_APPLICATION_SELECTABLE 0x07
95 #define GP211_LIFE_CYCLE_APPLICATION_LOCKED 0x83
96 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_INSTALLED 0x03
97 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_SELECTABLE 0x07
98 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_PERSONALIZED 0x0f
99 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_LOCKED 0x83
100 
101 /* consts for MANAGE CHANNEL */
102 
103 #define GP211_MANAGE_CHANNEL_OPEN 0x00
104 #define GP211_MANAGE_CHANNEL_CLOSE 0x80
105 
109 typedef enum {
110  GP211_SECURITY_DOMAIN = 1u << (7 + 16),
111  GP211_DAP_VERIFICATION = 0xC0 << 16,
116  GP211_PIN_CHANGE_PRIVILEGE = 1u << (1 + 16),
118 
119  GP211_TRUSTED_PATH = 1u << (7 + 8),
120  GP211_AUTHORIZED_MANAGEMENT = 1u << (6 + 8),
121  GP211_TOKEN_VERIFICATION = 1u << (5 + 8),
122  GP211_GLOBAL_DELETE = 1u << (4 + 8),
123  GP211_GLOBAL_LOCK = 1u << (3 + 8),
124  GP211_GLOBAL_REGISTRY = 1u << (2 + 8),
125  GP211_FINAL_APPLICATION = 1u << (1 + 8),
126  GP211_GLOBAL_SERVICE = 1u << (0 + 8),
127 
133 
134 #define GP211_STATUS_APPLICATIONS 0x40
135 #define GP211_STATUS_ISSUER_SECURITY_DOMAIN 0x80
136 #define GP211_STATUS_LOAD_FILES 0x20
137 #define GP211_STATUS_LOAD_FILES_AND_EXECUTABLE_MODULES 0x10
138 
139 #define GP211_STATUS_TYPE_APPLICATIONS 0x40
140 #define GP211_STATUS_TYPE_ISSUER_SECURITY_DOMAIN 0x80
141 #define GP211_STATUS_TYPE_SECURITY_DOMAIN_AND_APPLICATIONS 0x60
142 
143 #define GP211_STATUS_FORMAT_NEW 0x02
144 #define GP211_STATUS_FORMAT_DEPRECATED 0x00
145 
146 /* Key Access Condition for STORE DATA */
147 #define GP211_KEY_ACCESS_SD_AND_APPS 0x00
148 #define GP211_KEY_ACCESS_SD_ONLY 0x01
149 #define GP211_KEY_ACCESS_APPS_ONLY 0x02
150 
151 /* Key Purpose for STORE DATA */
152 #define GP211_KEY_PURPOSE_SCP03 0x0003
153 #define GP211_KEY_PURPOSE_SCP04 0x0004
154 #define GP211_KEY_PURPOSE_SCP10 0x0010
155 #define GP211_KEY_PURPOSE_SCP11 0x0011
156 #define GP211_KEY_PURPOSE_TOKEN_VERIFICATION 0x7000
157 #define GP211_KEY_PURPOSE_RECEIPT_GENERATION 0x7001
158 #define GP211_KEY_PURPOSE_DAP_VERIFICATION 0x7003
159 #define GP211_KEY_PURPOSE_CASD_AND_CONFIDENTIAL_SETUP 0x7004
160 #define GP211_KEY_PURPOSE_CIPHERED_LOAD_FILE 0x7005
161 
162 // flags for STORE DATA
163 
164 #define STORE_DATA_ENCRYPTION_NO_INFORMATION 0x00
165 #define STORE_DATA_ENCRYPTION_APPLICATION_DEPENDENT 0x20
166 #define STORE_DATA_ENCRYPTION_RFU 0x40
167 #define STORE_DATA_ENCRYPTION_ENCRYPTED 0x60
168 
169 #define STORE_DATA_FORMAT_NO_INFORMATION 0x00
170 #define STORE_DATA_FORMAT_DGI 0x08
171 #define STORE_DATA_FORMAT_BER_TLV 0x10
172 #define STORE_DATA_FORMAT_RFU 0x18
173 
174 
175 // Some possible identifiers to retrieve card data with get_data() and put_data().
176 
177 static const BYTE GP211_GET_DATA_ISSUER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
178 static const BYTE GP211_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
179 static const BYTE GP211_GET_DATA_ECKA_CERTIFICATE[2] = {0xBF, 0x21};
180 static const BYTE GP211_GET_DATA_CA_KLOC_KID_KVN[2] = {0x00, 0x83};
181 static const BYTE GP211_GET_DATA_SUPPORTED_CA_KLOC_IDENTIFIERS[2] = {0xFF, 0x33};
182 static const BYTE GP211_GET_DATA_SUPPORTED_CA_KLCC_IDENTIFIERS[2] = {0xFF, 0x34};
183 
184 static const BYTE GP211_GET_DATA_CARD_IMAGE_NUMBER[2] = {0x00, 0x45};
185 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
186 
187 static const BYTE GP211_GET_DATA_ISSUER_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
188 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
189 static const BYTE GP211_GET_DATA_LIST_OF_APPLICATIONS[2] = {0x2F, 0x00};
190 static const BYTE GP211_GET_DATA_EXTENDED_CARD_RESOURCES[2] = {0xFF, 0x21};
191 
192 static const BYTE GP211_GET_DATA_CARD_DATA[2] = {0x00, 0x66};
193 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_MANAGEMENT_DATA[2] = {0x00, 0x66};
194 static const BYTE GP211_GET_DATA_CARD_CAPABILITY_INFORMATION[2] = {0x00, 0x67};
195 static const BYTE GP211_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
196 static const BYTE GP211_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
197 static const BYTE GP211_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
198 static const BYTE GP211_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
199 static const BYTE GP211_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
200 
205 static const BYTE GP211_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
206 
207 static const BYTE GP211_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
208 static const BYTE GP211_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
209 static const BYTE GP211_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
210 static const BYTE GP211_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
211 static const BYTE GP211_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
236 static const BYTE GP211_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
237 
238 static const BYTE GP211_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
239 
240 static const BYTE GP211_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
241 static const BYTE GP211_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
242 
243 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
244 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
245 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
246 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
247 static const BYTE GP211_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
248 static const BYTE GP211_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
249 static const BYTE GP211_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
250 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
251 static const BYTE GP211_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
252 
253 static const BYTE GP211_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
254 
255 static const BYTE GP211_GET_DATA_KEY_DIVERSIFICATION[2] = {0x00, 0xCF};
256 
257 // OP 2.0.1' specifific
258 
259 static const BYTE OP201_CARD_MANAGER_AID[7] = {0xA0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00};
260 
261 #define OP201_LIFE_CYCLE_LOAD_FILE_LOGICALLY_DELETED 0x00
262 #define OP201_LIFE_CYCLE_LOAD_FILE_LOADED 0x01
263 #define OP201_LIFE_CYCLE_CARD_MANAGER_OP_READY 0x01
264 #define OP201_LIFE_CYCLE_CARD_MANAGER_INITIALIZED 0x07
265 #define OP201_LIFE_CYCLE_CARD_MANAGER_SECURED 0x0f
266 #define OP201_LIFE_CYCLE_CARD_MANAGER_CM_LOCKED 0x7f
267 #define OP201_LIFE_CYCLE_CARD_MANAGER_TERMINATED 0xff
268 #define OP201_LIFE_CYCLE_APPLICATION_LOGICALLY_DELETED 0x00
269 #define OP201_LIFE_CYCLE_APPLICATION_INSTALLED 0x03
270 #define OP201_LIFE_CYCLE_APPLICATION_SELECTABLE 0x07
271 #define OP201_LIFE_CYCLE_APPLICATION_PERSONALIZED 0x0f
272 #define OP201_LIFE_CYCLE_APPLICATION_BLOCKED 0x7f
273 #define OP201_LIFE_CYCLE_APPLICATION_LOCKED 0xff
274 
278 typedef enum {
288 
289 #define OP201_STATUS_APPLICATIONS 0x40
290 #define OP201_STATUS_CARD_MANAGER 0x80
291 #define OP201_STATUS_LOAD_FILES 0x20
292 
293 
294 // Some possible identifiers to retrieve card data with get_data() and put_data().
295 static const BYTE OP201_GET_DATA_ISSUER_BIN[2] = {0x00, 0x42};
296 static const BYTE OP201_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
297 
298 static const BYTE OP201_GET_DATA_ISSUER_DATA[2] = {0x00, 0x45};
299 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
300 
301 static const BYTE OP201_GET_DATA_CARD_MANAGER_AID[2] = {0x00, 0x4F};
302 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
303 
304 static const BYTE OP201_GET_DATA_CARD_RECOGNITION_DATA[2] = {0x00, 0x66};
305 static const BYTE OP201_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
306 static const BYTE OP201_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
307 static const BYTE OP201_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
308 static const BYTE OP201_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
309 static const BYTE OP201_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
310 
315 static const BYTE OP201_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
316 
317 static const BYTE OP201_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
318 static const BYTE OP201_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
319 static const BYTE OP201_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
320 static const BYTE OP201_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
321 static const BYTE OP201_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
322 static const BYTE OP201_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
323 
324 static const BYTE OP201_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
325 
326 static const BYTE OP201_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
327 static const BYTE OP201_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
328 
329 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
330 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
331 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
332 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
333 static const BYTE OP201_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
334 static const BYTE OP201_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
335 static const BYTE OP201_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
336 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
337 static const BYTE OP201_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
338 
339 static const BYTE OP201_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
340 
341 #define OPGP_DERIVATION_METHOD_NONE 0
342 #define OPGP_DERIVATION_METHOD_VISA2 1
343 #define OPGP_DERIVATION_METHOD_EMV_CPS11 2
344 #define OPGP_DERIVATION_METHOD_VISA1 3
345 
346 #define GP211_HASH_SHA1 1
347 #define GP211_HASH_SHA256 2
348 #define GP211_HASH_SHA384 3
349 #define GP211_HASH_SHA512 4
350 #define GP211_HASH_SM3 5
351 
352 #define GP211_KEY_VERSION_TOKEN_VERIFICATION 0x70
353 #define GP211_KEY_VERSION_RECEIPT_GENERATION 0x71
354 #define GP211_KEY_VERSION_DAP_VERIFICATION 0x73
355 #define GP211_KEY_VERSION_CASD_AND_CONFIDENTIAL_SETUP 0x74
356 #define GP211_KEY_VERSION_CIPHERED_LOAD_FILE 0x75
357 
358 #define OPGP_WORK_UNKNOWN -1
359 #define OPGP_TASK_FINISHED 1
360 
361 #define INIT_PROGRESS_CALLBACK_PARAMETERS(callbackParameters, callback) if (callback != NULL) {callbackParameters.parameters = callback->parameters; \
362  callbackParameters.finished = !OPGP_TASK_FINISHED;}
363 
367 typedef struct {
373 
377 typedef struct {
381 
385 typedef struct {
387  BYTE AID[16];
388 } OPGP_AID;
389 
390 
394 typedef struct {
399 
404 typedef struct {
408  OPGP_AID appletAIDs[32];
410 
411 
416 typedef struct {
420  BYTE versionNumber[2];
423 
427 typedef struct {
430  BYTE versionNumber[2];
432  OPGP_AID executableModules[64];
435 
439 typedef struct {
444 
448 typedef struct {
449  USHORT icFabricator;
450  USHORT icType;
465  USHORT icPersonalizer;
468 } OPGP_CPLC;
469 
473 #define GP211_MAX_CARD_RECOGNITION_SCP_INFOS 16
474 #define GP211_MAX_CARD_RECOGNITION_SCP_IMPL_OID_BYTES 8
475 
476 /* SCPi bit flags for card-recognition-data SCP implementation options. */
477 #define GP211_SCP02_SCPI_THREE_KEYS 0x01
478 #define GP211_SCP02_SCPI_MODE_MASK 0x0E
479 #define GP211_SCP02_SCPI_MODE_EXPLICIT 0x04
480 #define GP211_SCP02_SCPI_MODE_IMPLICIT 0x0A
481 #define GP211_SCP02_SCPI_CMAC_ICV_ENCRYPTION 0x10
482 #define GP211_SCP02_SCPI_PSEUDO_RANDOM_CARD_CHALLENGE 0x40
483 
484 #define GP211_SCP03_SCPI_PSEUDO_RANDOM_CARD_CHALLENGE 0x10
485 #define GP211_SCP03_SCPI_RESPONSE_MASK 0x60
486 #define GP211_SCP03_SCPI_RESPONSE_NONE 0x00
487 #define GP211_SCP03_SCPI_RESPONSE_R_MAC 0x20
488 #define GP211_SCP03_SCPI_RESPONSE_R_ENC_R_MAC 0x60
489 
490 #define GP211_SCP11_SCPI_B1_SECOND_BYTE_PRESENT 0x80
491 #define GP211_SCP11_SCPI_B1_S16_MODE 0x40
492 #define GP211_SCP11_SCPI_B1_SCP11C_AUTH_BF20 0x20
493 #define GP211_SCP11_SCPI_B1_SCP11C_SUPPORTED 0x10
494 #define GP211_SCP11_SCPI_B1_CERT_CHAIN_SUPPORTED 0x08
495 #define GP211_SCP11_SCPI_B1_SD_PERSISTENT_PK_OCE_ECKA 0x04
496 #define GP211_SCP11_SCPI_B1_SCP11B_SUPPORTED 0x02
497 #define GP211_SCP11_SCPI_B1_SCP11A_SUPPORTED 0x01
498 
499 #define GP211_SCP11_SCPI_B2_GP_LEGACY_CERT_NOT_SUPPORTED 0x04
500 #define GP211_SCP11_SCPI_B2_X509_CERT_SUPPORTED 0x02
501 #define GP211_SCP11_SCPI_B2_SCP11A_AUTH_BF20 0x01
502 
503 typedef struct {
504  char version[16];
508  BYTE scpImplOidBytes[GP211_MAX_CARD_RECOGNITION_SCP_INFOS][GP211_MAX_CARD_RECOGNITION_SCP_IMPL_OID_BYTES];
511  char cardConfigurationDetailsOid[128];
513  BYTE cardConfigurationDetails[64];
515  char cardChipDetailsOid[128];
517  BYTE cardChipDetails[64];
519  char issuerSecurityDomainsTrustPointCertificateInformationOid[128];
521  BYTE issuerSecurityDomainsTrustPointCertificateInformation[64];
523  char issuerSecurityDomainCertificateInformationOid[128];
525  BYTE issuerSecurityDomainCertificateInformation[64];
528 
529 #define GP211_MAX_CARD_CAPABILITY_SCP_INFOS 16
530 #define GP211_MAX_CARD_CAPABILITY_SCP_OPTIONS 16
531 #define GP211_MAX_CARD_CAPABILITY_TLS_CIPHER_SUITES 16
532 #define GP211_MAX_CARD_CAPABILITY_LFDBH_ALGORITHMS 8
533 #define GP211_MAX_CARD_CAPABILITY_CIPHER_SUITES 32
534 #define GP211_MAX_CARD_CAPABILITY_KEY_PARAMETER_REFERENCES 128
535 #define GP211_MAX_CARD_CAPABILITY_ELF_UPGRADE 32
536 
537 #define GP211_SCP_SUPPORTED_KEY_SIZE_128 0x01
538 #define GP211_SCP_SUPPORTED_KEY_SIZE_192 0x02
539 #define GP211_SCP_SUPPORTED_KEY_SIZE_256 0x04
540 
541 #define GP211_LFDB_ENCRYPTION_3DES_16B_KEY 0x01
542 #define GP211_LFDB_ENCRYPTION_AES_128 0x02
543 #define GP211_LFDB_ENCRYPTION_AES_192 0x04
544 #define GP211_LFDB_ENCRYPTION_AES_256 0x08
545 #define GP211_LFDB_ENCRYPTION_SM4 0x10
546 #define GP211_LFDB_ENCRYPTION_ICV_SUPPORTED 0x80
547 
548 #define GP211_SIGNATURE_CS_RSA_1024_SHA1 0x0100
549 #define GP211_SIGNATURE_CS_RSA_PSS_SHA256 0x0200
550 #define GP211_SIGNATURE_CS_DES_MAC_16B 0x0400
551 #define GP211_SIGNATURE_CS_CMAC_AES_128 0x0800
552 #define GP211_SIGNATURE_CS_CMAC_AES_192 0x1000
553 #define GP211_SIGNATURE_CS_CMAC_AES_256 0x2000
554 #define GP211_SIGNATURE_CS_ECDSA_256_SHA256 0x4000
555 #define GP211_SIGNATURE_CS_ECDSA_384_SHA384 0x8000
556 
557 #define GP211_SIGNATURE_CS_ECDSA_512_SHA512 0x0001
558 #define GP211_SIGNATURE_CS_ECDSA_521_SHA512 0x0002
559 #define GP211_SIGNATURE_CS_SM2 0x0004
560 
561 #define GP211_SCP11_CERTIFICATE_MAX_ID_LENGTH 16
562 #define GP211_SCP11_CERTIFICATE_MAX_DATE_LENGTH 4
563 #define GP211_SCP11_CERTIFICATE_MAX_PUBLIC_KEY_LENGTH 160
564 #define GP211_SCP11_CERTIFICATE_MAX_KEY_PARAMETER_REFERENCE_LENGTH 2
565 #define GP211_SCP11_CERTIFICATE_MAX_SIGNATURE_LENGTH 160
566 #define GP211_SCP11_CERTIFICATE_MAX_DISCRETIONARY_DATA_LENGTH 127
567 #define GP211_SCP11_CERTIFICATE_MAX_AUTHORIZATIONS_LENGTH 1024
568 
569 static const BYTE GP211_SCP11_KEY_USAGE_DIGITAL_SIGNATURE_VERIFICATION[1] = {0x82};
570 static const BYTE GP211_SCP11_KEY_USAGE_KEY_AGREEMENT[2] = {0x00, 0x80};
571 
572 #define GP211_ELF_UPGRADE_SINGLE 0x00
573 #define GP211_ELF_UPGRADE_MULTI 0x01
574 
578 typedef struct {
579  BYTE certificateSerialNumber[GP211_SCP11_CERTIFICATE_MAX_ID_LENGTH];
581  BYTE authorityIdentifier[GP211_SCP11_CERTIFICATE_MAX_ID_LENGTH];
583  BYTE subjectIdentifier[GP211_SCP11_CERTIFICATE_MAX_ID_LENGTH];
585  BYTE keyUsage[2];
588  BYTE effectiveDate[GP211_SCP11_CERTIFICATE_MAX_DATE_LENGTH];
589  BYTE expirationDate[GP211_SCP11_CERTIFICATE_MAX_DATE_LENGTH];
592  BYTE discretionaryData[GP211_SCP11_CERTIFICATE_MAX_DISCRETIONARY_DATA_LENGTH];
595  BYTE authorizations[GP211_SCP11_CERTIFICATE_MAX_AUTHORIZATIONS_LENGTH];
597  BYTE publicKey[GP211_SCP11_CERTIFICATE_MAX_PUBLIC_KEY_LENGTH];
599  BYTE keyParameterReference[GP211_SCP11_CERTIFICATE_MAX_KEY_PARAMETER_REFERENCE_LENGTH];
601  BYTE signature[GP211_SCP11_CERTIFICATE_MAX_SIGNATURE_LENGTH];
604 
608 typedef struct {
610  BYTE scpOptions[GP211_MAX_CARD_CAPABILITY_SCP_OPTIONS];
612  BYTE scpOptionsMask[GP211_MAX_CARD_CAPABILITY_SCP_OPTIONS];
615  BYTE tlsCipherSuites[GP211_MAX_CARD_CAPABILITY_TLS_CIPHER_SUITES];
619 
623 typedef struct {
624  GP211_SCP_INFORMATION scpInformation[GP211_MAX_CARD_CAPABILITY_SCP_INFOS];
626  BYTE ssdPrivileges[3];
627  BYTE appPrivileges[3];
628  BYTE lfdbhAlgorithms[GP211_MAX_CARD_CAPABILITY_LFDBH_ALGORITHMS];
634  BYTE keyParameterReferenceList[GP211_MAX_CARD_CAPABILITY_KEY_PARAMETER_REFERENCES];
640 
641 // UICC System Specific Parameters (ETSI TS 102 226, sect. 8.2.1.3.2.2).
642 #define GP211_UICC_ACCESS_DOMAIN_FULL_ACCESS 0x00
643 #define GP211_UICC_ACCESS_DOMAIN_UICC_ACCESS 0x02
644 #define GP211_UICC_ACCESS_DOMAIN_NO_ACCESS 0xFF
645 #define GP211_UICC_MSL_PARAMETER_MINIMUM_SPI1 0x01
646 #define GP211_UICC_TOOLKIT_MAX_TIMERS 0x08
647 #define GP211_UICC_TOOLKIT_MAX_CHANNELS 0x07
648 #define GP211_UICC_TOOLKIT_MAX_SERVICES 0x08
649 #define GP211_UICC_MAX_MENU_ENTRIES 8
650 #define GP211_UICC_MAX_ACCESS_RULES 4
651 #define GP211_UICC_MAX_TAR_VALUES 4
652 #define GP211_UICC_TOOLKIT_DAP_MAX_LENGTH 16
653 #define GP211_UICC_ACCESS_DOMAIN_DAP_MAX_LENGTH 16
654 #define GP211_SPI1_RC_CC_DS_MASK 0x03
655 #define GP211_SPI1_RC_CC_DS_NONE 0x00
656 #define GP211_SPI1_RC_CC_DS_RC 0x01
657 #define GP211_SPI1_RC_CC_DS_CC 0x02
658 #define GP211_SPI1_RC_CC_DS_DS 0x03
659 #define GP211_SPI1_CIPHERING 0x04
660 #define GP211_SPI1_COUNTER_MASK 0x18
661 #define GP211_SPI1_COUNTER_NONE 0x00
662 #define GP211_SPI1_COUNTER_AVAILABLE 0x08
663 #define GP211_SPI1_COUNTER_HIGHER_THAN_RE 0x10
664 #define GP211_SPI1_COUNTER_INCREMENT_RE 0x18
665 #define GP211_SPI1_RFU_MASK 0xE0
666 #define GP211_SD_MAX_SCP 8
667 #define GP211_SD_PARAM_TAG_SCP 0x81
668 #define GP211_SD_PARAM_TAG_ACCEPT_EXTRACTION 0x82
669 #define GP211_SD_PARAM_TAG_ACCEPT_DELETE 0x83
670 #define GP211_SD_PARAM_TAG_PERSONALIZED 0x84
671 #define GP211_SD_PARAM_TAG_CASD_CAPABILITY 0x86
672 #define GP211_SD_PARAM_TAG_ACCEPT_GLOBAL_DELETE 0x87
673 #define GP211_SD_PARAM_LEN_SCP 0x02
674 #define GP211_SD_PARAM_LEN_ACCEPT_DELETE 0x01
675 #define GP211_SD_PARAM_LEN_CASD_CAPABILITY 0x02
676 #define GP211_SD_PARAM_LEN_PERSONALIZED 0x00
677 #define GP211_SD_PARAM_LEN_ACCEPT_MIN 0x01
678 #define GP211_SD_PARAM_LEN_ACCEPT_MAX 0x02
679 #define GP211_SD_ACCEPT_NONE 0x00
680 #define GP211_SD_ACCEPT_ANCESTOR_AM 0x80
681 #define GP211_SD_ACCEPT_HIERARCHY_AM 0xC0
682 #define GP211_SD_ACCEPT_ISD 0x20
683 #define GP211_SD_ACCEPT_DM_UNDER_ANCESTOR_AM 0x08
684 #define GP211_SD_ACCEPT_ALL_AM 0xF0
685 
689 typedef struct {
693 
697 typedef struct {
709 
713 typedef struct {
715  BYTE aid[16];
717  BYTE accessDomainData[3];
721 
725 typedef struct {
729 
733 typedef struct {
736  BYTE toolkitParametersDap[GP211_UICC_TOOLKIT_DAP_MAX_LENGTH];
743 
747 typedef struct {
758 
762 typedef struct {
764  BYTE accessDomainData[3];
767 
771 typedef struct {
775 
779 typedef struct {
782  BYTE acceptExtraditionHere[2];
787  BYTE casdCapabilityInfo[2];
788  BYTE acceptExtraditionAway[2];
791 
793 OPGP_API
795 
797 OPGP_API
799  OPGP_EXTENDED_CARD_RESOURCE_INFORMATION *extendedCardResourceInformation);
800 
802 OPGP_API
804  OPGP_CPLC *cplc);
805 
807 OPGP_API
808 OPGP_ERROR_STATUS OPGP_parse_cplc(const BYTE *data, DWORD dataLength, OPGP_CPLC *cplc);
809 
811 OPGP_API
813  OPGP_EXTENDED_CARD_RESOURCE_INFORMATION *extendedCardResourceInformation);
814 
819 OPGP_API
821  BYTE cardElement, BYTE format, GP211_APPLICATION_DATA *applData,
822  GP211_EXECUTABLE_MODULES_DATA *executableData, PDWORD dataLength);
823 
825 OPGP_API
826 OPGP_ERROR_STATUS GP211_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE statusType, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState);
827 
864 OPGP_API
866  PBYTE baseKeyOrStaticOcePrivateKey, PBYTE S_ENC, PBYTE S_MAC,
867  PBYTE DEK, DWORD keyLength, BYTE keySetVersion,
868  BYTE keyIndex, BYTE secureChannelProtocol,
869  BYTE secureChannelProtocolImpl,
870  BYTE securityLevel, BYTE derivationMethod,
871  PBYTE certOceEcka, DWORD certOceEckaLength,
872  PBYTE sdPublicKeyOverride, DWORD sdPublicKeyOverrideLength,
873  OPGP_STRING sdPublicKeyFileName,
874  GP211_SECURITY_INFO *secInfo);
875 
877 OPGP_API
879  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16],
880  BYTE secureChannelProtocolImpl, BYTE sequenceCounter[2],
881  GP211_SECURITY_INFO *secInfo);
882 
884 OPGP_API
886 
888 OPGP_API
890  BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
891 
893 OPGP_API
895  BYTE keyVersionNumber, BYTE keyIdentifier, PBYTE recvBuffer, PDWORD recvBufferLength);
896 
898 OPGP_API
900  PBYTE caKlocIdentifier, DWORD caKlocIdentifierLength,
901  BYTE *keyIdentifier, BYTE *keyVersionNumber);
902 
904 OPGP_API
906  GP211_SECURITY_INFO *secInfo, BOOL returnCaKlccIdentifiers,
907  PBYTE recvBuffer, PDWORD recvBufferLength);
908 
910 OPGP_API
912  BYTE caKlocKeyVersionNumber, BYTE caKlocKeyIdentifier,
913  PBYTE certificateData, DWORD certificateDataLength,
914  BOOL moreCertificatesExpected);
915 
917 OPGP_API
919  GP211_SECURITY_INFO *secInfo,
920  BYTE caKlocKeyVersionNumber, BYTE caKlocKeyIdentifier,
921  PBYTE certificateChainData, DWORD certificateChainDataLength);
922 
924 OPGP_API
926  PBYTE recvBuffer, PDWORD recvBufferLength);
927 
929 OPGP_API
930 OPGP_ERROR_STATUS GP211_get_data_iso7816_4(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
931 
933 OPGP_API
935 
937 OPGP_API
939 
941 OPGP_API
942 OPGP_ERROR_STATUS GP211_parse_scp11_certificate(PBYTE certificateData, DWORD certificateDataLength,
943  GP211_SCP11_CERTIFICATE *certificate);
944 
948 OPGP_API
949 OPGP_ERROR_STATUS GP211_parse_certificate_store(const BYTE *certificateStoreData, DWORD certificateStoreDataLength,
950  PBYTE parsedCertificateStore, PDWORD parsedCertificateStoreLength);
951 
953 OPGP_API
955  OPGP_STRING subjectPublicKeyFileName, char *subjectPublicKeyPassPhrase,
956  OPGP_STRING signingPrivateKeyFileName, char *signingPrivateKeyPassPhrase,
957  PBYTE certificateData, PDWORD certificateDataLength);
958 
960 OPGP_API
962 
964 OPGP_API
966  GP211_CARD_CAPABILITY_INFORMATION *cardCapabilityInfo);
967 
969 OPGP_API
971  PBYTE data, PDWORD dataLength);
972 
974 OPGP_API
975 OPGP_ERROR_STATUS OPGP_build_bcd_encoding(const char *numericString, PBYTE bcdData, PDWORD bcdDataLength);
976 
978 OPGP_API
980  BYTE *secureChannelProtocol, BYTE *secureChannelProtocolImpl);
981 
983 OPGP_API
985  GP211_SECURITY_INFO *secInfo, DWORD *sequenceCounter);
986 
988 OPGP_API
990  GP211_SECURITY_INFO *secInfo, DWORD *confirmationCounter);
991 
993 OPGP_API
995  BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
996 
998 OPGP_API
1000  BYTE tryLimit, PBYTE newPIN, DWORD newPINLength);
1001 
1003 OPGP_API
1005  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE key[32], DWORD keyLength, BYTE keyType);
1006 
1008 OPGP_API
1010  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE aesKey[32], DWORD keyLength);
1011 
1013 OPGP_API
1015  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3DESKey[16]);
1016 
1018 OPGP_API
1020  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
1021 
1023 OPGP_API
1025  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
1026 
1028 OPGP_API
1030  GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion,
1031  OPGP_STRING PEMKeyFileName, char *passPhrase);
1032 
1034 OPGP_API
1036  GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion,
1037  BYTE privateKey[32], DWORD privateKeyLength);
1038 
1040 OPGP_API
1042  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE keyType);
1043 
1045 OPGP_API
1047  BYTE keySetVersion, BYTE newKeySetVersion, PBYTE baseKey,
1048  PBYTE newS_ENC, PBYTE newS_MAC, PBYTE newDEK, DWORD keyLength, BYTE keyType);
1049 
1051 OPGP_API
1053  BYTE keySetVersion, BYTE keyIndex);
1054 
1056 OPGP_API
1058  BYTE keyInformationTemplate,
1059  GP211_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
1060 
1062 OPGP_API
1064  OPGP_AID *AIDs, DWORD AIDsLength,
1065  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable,
1066  PBYTE deleteToken, DWORD deleteTokenLength);
1067 
1069 OPGP_API
1071  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1072  PBYTE securityDomainAID,
1073  DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength,
1074  PBYTE loadToken, DWORD loadTokenLength,
1075  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
1076  DWORD nonVolatileDataSpaceLimit);
1077 
1079 OPGP_API
1081  DWORD securityDomainAIDLength,
1082  PBYTE applicationAID, DWORD applicationAIDLength,
1083  PBYTE extraditionTokenSignatureData,
1084  PDWORD extraditionTokenSignatureDataLength);
1085 
1087 OPGP_API
1088 OPGP_ERROR_STATUS GP211_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1089  PBYTE securityDomainAID,
1090  DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash,
1091  DWORD loadFileDataBlockHashLength,
1092  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
1093  DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData,
1094  PDWORD loadTokenSignatureDataLength);
1095 
1097 OPGP_API
1099  DWORD executableLoadFileAIDLength,
1100  PBYTE executableModuleAID, DWORD executableModuleAIDLength,
1101  PBYTE applicationAID, DWORD applicationAIDLength,
1102  DWORD applicationPrivileges, DWORD volatileDataSpaceLimit,
1103  DWORD nonVolatileDataSpaceLimit,
1104  PBYTE installParameters, DWORD installParametersLength,
1105  PBYTE sdParameters, DWORD sdParametersLength,
1106  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1107  PBYTE simSpecParams, DWORD simSpecParamsLength,
1108  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
1109 
1111 OPGP_API
1113  DWORD securityDomainAIDLength,
1114  PBYTE applicationAID, DWORD applicationAIDLength,
1115  DWORD applicationPrivileges,
1116  PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength,
1117  PBYTE tokenSignatureData,
1118  PDWORD tokenSignatureDataLength);
1119 
1121 OPGP_API
1123  PBYTE deleteTokenSignatureData,
1124  PDWORD deleteTokenSignatureDataLength);
1125 
1127 OPGP_API
1128 OPGP_ERROR_STATUS GP211_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1129  PBYTE securityDomainAID,
1130  DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash,
1131  DWORD loadFileDataBlockHashLength,
1132  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
1133  DWORD nonVolatileDataSpaceLimit, PBYTE loadToken, PDWORD loadTokenLength,
1134  OPGP_STRING PEMKeyFileName, char *passPhrase);
1135 
1137 OPGP_API
1138 OPGP_ERROR_STATUS GP211_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1139  PBYTE executableModuleAID,
1140  DWORD executableModuleAIDLength, PBYTE applicationAID,
1141  DWORD applicationAIDLength, DWORD applicationPrivileges,
1142  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1143  PBYTE installParameters, DWORD installParametersLength,
1144  PBYTE sdParameters, DWORD sdParametersLength,
1145  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1146  PBYTE simSpecParams, DWORD simSpecParamsLength,
1147  PBYTE installToken, PDWORD installTokenLength,
1148  OPGP_STRING PEMKeyFileName, char *passPhrase);
1149 
1151 OPGP_API
1153  DWORD securityDomainAIDLength,
1154  PBYTE applicationAID, DWORD applicationAIDLength,
1155  PBYTE extraditionToken, PDWORD extraditionTokenLength,
1156  OPGP_STRING PEMKeyFileName, char *passPhrase);
1157 
1159 OPGP_API
1161  DWORD securityDomainAIDLength,
1162  PBYTE applicationAID, DWORD applicationAIDLength,
1163  DWORD applicationPrivileges,
1164  PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength,
1165  PBYTE registryUpdateToken, PDWORD registryUpdateTokenLength,
1166  OPGP_STRING PEMKeyFileName, char *passPhrase);
1167 
1169 OPGP_API
1170 OPGP_ERROR_STATUS GP211_calculate_delete_token(PBYTE applicationOrExecutableLoadFileAID,
1171  DWORD applicationOrExecutableLoadFileAIDLength,
1172  PBYTE deleteToken, PDWORD deleteTokenLength,
1173  OPGP_STRING PEMKeyFileName, char *passPhrase);
1174 
1176 OPGP_API
1178  PBYTE uiccSystemSpecParams, PDWORD uiccSystemSpecParamsLength);
1179 
1181 OPGP_API
1183  PBYTE simSpecParams, PDWORD simSpecParamsLength);
1184 
1186 OPGP_API
1188  PBYTE sdParameters, PDWORD sdParametersLength);
1189 
1191 OPGP_API
1193  PBYTE hash, DWORD hashLength, BYTE hashType);
1194 
1196 OPGP_API
1198  GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
1199  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
1200 
1202 OPGP_API
1204  GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
1205  PBYTE loadFileBuffer, DWORD loadFileBufSize,
1206  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
1207 
1209 OPGP_API
1211  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
1212  DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength,
1213  DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1214  PBYTE installParameters, DWORD installParametersLength,
1215  PBYTE sdParameters, DWORD sdParametersLength,
1216  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1217  PBYTE simSpecParams, DWORD simSpecParamsLength,
1218  PBYTE installToken, DWORD installTokenLength,
1219  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1220 
1222 OPGP_API
1224  PBYTE applicationAID, DWORD applicationAIDLength,
1225  DWORD applicationPrivileges, PBYTE installToken, DWORD installTokenLength,
1226  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1227 
1229 OPGP_API
1231  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
1232  DWORD executableModuleAIDLength, PBYTE applicationAID,
1233  DWORD applicationAIDLength, DWORD applicationPrivileges,
1234  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1235  PBYTE installParameters, DWORD installParametersLength,
1236  PBYTE sdParameters, DWORD sdParametersLength,
1237  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1238  PBYTE simSpecParams, DWORD simSpecParamsLength,
1239  PBYTE installToken, DWORD installTokenLength,
1240  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1241 
1243 OPGP_API
1245  PBYTE securityDomainAID, DWORD securityDomainAIDLength,
1246  PBYTE applicationAID, DWORD applicationAIDLength,
1247  DWORD applicationPrivileges,
1248  PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength,
1249  PBYTE registryUpdateToken, DWORD registryUpdateTokenLength,
1250  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1251 
1253 OPGP_API
1255  GP211_SECURITY_INFO *secInfo,
1256  PBYTE applicationAID,
1257  DWORD applicationAIDLength);
1258 
1260 OPGP_API
1262  PBYTE securityDomainAID,
1263  DWORD securityDomainAIDLength, PBYTE applicationAID,
1264  DWORD applicationAIDLength,
1265  PBYTE extraditionToken, DWORD extraditionTokenLength, GP211_RECEIPT_DATA *receiptData,
1266  PDWORD receiptDataAvailable);
1267 
1268 
1270 OPGP_API
1272  BYTE keySetVersion,
1273  BYTE newKeySetVersion,
1274  OPGP_STRING PEMKeyFileName, char *passPhrase,
1275  BYTE tokenKeyType);
1276 
1278 OPGP_API
1280  BYTE keySetVersion,
1281  BYTE newKeySetVersion,
1282  OPGP_STRING PEMKeyFileName, char *passPhrase,
1283  BYTE keyType, BYTE key[32], DWORD keyLength);
1284 
1286 OPGP_API
1288  BYTE keySetVersion,
1289  BYTE newKeySetVersion,
1290  BYTE receiptKey[32], DWORD keyLength, BYTE receiptKeyType);
1291 
1293 OPGP_API
1295  PBYTE capdu, DWORD capduLength, PBYTE rapdu,
1296  PDWORD rapduLength);
1297 
1299 OPGP_API
1300 OPGP_ERROR_STATUS GP211_calculate_DAP(BYTE loadFileDataBlockHash[64], BYTE hashLength,
1301  BYTE DAPCalculationKey[32], DWORD keyLength,
1302  PBYTE signature, PDWORD signatureLength, BYTE secureChannelProtocol);
1303 
1305 OPGP_API
1306 OPGP_ERROR_STATUS GP211_calculate_rsa_DAP(BYTE loadFileDataBlockHash[20], PBYTE securityDomainAID,
1307  DWORD securityDomainAIDLength, OPGP_STRING PEMKeyFileName,
1308  char *passPhrase, GP211_DAP_BLOCK *loadFileDataBlockSignature);
1309 
1311 OPGP_API
1312 OPGP_ERROR_STATUS GP211_calculate_rsa_schemeX_DAP(PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength,
1313  OPGP_STRING PEMKeyFileName, char *passPhrase,
1314  PBYTE signature, PDWORD signatureLength);
1315 
1317 OPGP_API
1318 OPGP_ERROR_STATUS GP211_calculate_ecc_DAP(PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength,
1319  OPGP_STRING PEMKeyFileName, char *passPhrase,
1320  PBYTE signature, PDWORD signatureLength);
1321 
1323 OPGP_API
1325  PBYTE AID, DWORD AIDLength,
1326  BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase);
1327 
1329 OPGP_API
1331  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1332  PBYTE applicationAID, DWORD applicationAIDLength,
1333  BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase);
1334 
1336 OPGP_API
1338  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1339  PBYTE securityDomainAID, DWORD securityDomainAIDLength,
1340  BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase);
1341 
1343 OPGP_API
1345  PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength,
1346  PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength,
1347  PBYTE applicationOrExecutableLoadFileAID,
1348  DWORD applicationOrExecutableLoadFileAIDLength,
1349  BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase);
1350 
1352 OPGP_API
1354  PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength,
1355  PBYTE applicationAID, DWORD applicationAIDLength,
1356  PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength,
1357  DWORD applicationPrivileges,
1358  PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength,
1359  BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase);
1360 
1362 OPGP_API
1364  BYTE openClose, BYTE channelNumberToClose,
1365  BYTE *channelNumberOpened);
1366 
1368 OPGP_API
1369 OPGP_ERROR_STATUS OPGP_select_channel(OPGP_CARD_INFO *cardInfo, BYTE channelNumber);
1370 
1373  BYTE keyType, PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3]);
1374 
1377  PBYTE data, DWORD dataLength,
1378  PBYTE encryptedData, PDWORD encryptedDataLength);
1379 
1381 OPGP_API
1383  BYTE encryptionFlags, BYTE formatFlags, BOOL responseDataExpected, PBYTE data, DWORD dataLength);
1384 
1386 OPGP_API
1388  BYTE keyVersionNumber, BYTE keyIdentifier,
1389  OPGP_STRING certificateStoreFileName);
1390 
1392 OPGP_API
1394  BYTE keyVersionNumber, BYTE keyIdentifier,
1395  BOOL whitelistCounterPresent, USHORT whitelistCounter,
1396  PBYTE *certificateSerialNumbers, PDWORD certificateSerialNumberLengths,
1397  DWORD certificateSerialNumberCount);
1398 
1400 OPGP_API
1402  PBYTE caKlocIdentifier, DWORD caKlocIdentifierLength,
1403  BYTE keyIdentifier, BYTE keyVersionNumber);
1404 
1406 OPGP_API
1407 OPGP_ERROR_STATUS GP211_build_store_data_keys(BYTE scp, BYTE scpImpl, PBYTE dataEncryptionKey, DWORD dataEncryptionKeyLength,
1408  BYTE keyType, USHORT keyPurpose, PBYTE keys[], BYTE keyIds[], DWORD numKeys,
1409  DWORD keyLength, BYTE keyVersion, BYTE keyAccessCondition, PBYTE output, PDWORD outputLength);
1410 
1412 OPGP_API
1414  PBYTE AID, DWORD AIDLength,
1415  BYTE keyType, PBYTE baseKey, PBYTE newS_ENC, PBYTE newS_MAC, PBYTE newDEK,
1416  DWORD keyLength, BYTE keySetVersion, BYTE keyAccessCondition);
1417 
1419 OPGP_API
1420 OPGP_ERROR_STATUS OP201_get_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE cardElement, OP201_APPLICATION_DATA *applData, PDWORD applDataLength);
1421 
1423 OPGP_API
1424 OPGP_ERROR_STATUS OP201_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE statusType, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState);
1425 
1426 
1428 OPGP_API
1429 OPGP_ERROR_STATUS OP201_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE baseKey, PBYTE encKey, PBYTE macKey,
1430  PBYTE kekKey, BYTE keySetVersion,
1431  BYTE keyIndex, BYTE securityLevel, BYTE derivationMethod,
1432  OP201_SECURITY_INFO *secInfo);
1433 
1435 OPGP_API
1437  BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
1438 
1440 OPGP_API
1442  BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
1443 
1445 OPGP_API
1447  BYTE tryLimit, PBYTE newPIN, DWORD newPINLength, BYTE KEK[16]);
1448 
1450 OPGP_API
1452  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3desKey[16]);
1453 
1455 OPGP_API
1457  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
1458 
1460 OPGP_API
1462  BYTE keySetVersion, BYTE newKeySetVersion,
1463  BYTE new_encKey[16], BYTE new_macKey[16], BYTE new_KEK[16]);
1464 
1466 OPGP_API
1468  BYTE keySetVersion, BYTE keyIndex);
1469 
1471 OPGP_API
1473  BYTE keyInformationTemplate,
1474  OP201_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
1475 
1477 OPGP_API
1479  OPGP_AID *AIDs, DWORD AIDsLength,
1480  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataLength);
1481 
1483 OPGP_API
1485  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
1486  DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash,
1487  DWORD loadFileDataBlockHashLength, PBYTE loadToken, DWORD loadTokenLength,
1488  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
1489  DWORD nonVolatileDataSpaceLimit);
1490 
1492 OPGP_API
1493 OPGP_ERROR_STATUS OP201_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1494  PBYTE securityDomainAID, DWORD securityDomainAIDLength,
1495  PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength,
1496  DWORD nonVolatileCodeSpaceLimit,
1497  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1498  PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength);
1499 
1501 OPGP_API
1502 OPGP_ERROR_STATUS OP201_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1503  PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength,
1504  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
1505  DWORD applicationPrivileges, DWORD volatileDataSpaceLimit,
1506  DWORD nonVolatileDataSpaceLimit,
1507  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
1508  PBYTE sdParameters, DWORD sdParametersLength,
1509  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1510  PBYTE simSpecParams, DWORD simSpecParamsLength,
1511  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
1512 
1514 OPGP_API
1515 OPGP_ERROR_STATUS OP201_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
1516  DWORD securityDomainAIDLength, PBYTE loadFileDAP, DWORD loadFileDAPLength,
1517  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
1518  DWORD nonVolatileDataSpaceLimit, PBYTE loadToken, PDWORD loadTokenLength,
1519  OPGP_STRING PEMKeyFileName, char *passPhrase);
1520 
1522 OPGP_API
1523 OPGP_ERROR_STATUS OP201_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
1524  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
1525  DWORD applicationInstanceAIDLength, DWORD applicationPrivileges,
1526  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1527  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
1528  PBYTE sdParameters, DWORD sdParametersLength,
1529  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1530  PBYTE simSpecParams, DWORD simSpecParamsLength,
1531  PBYTE installToken, PDWORD installTokenLength,
1532  OPGP_STRING PEMKeyFileName, char *passPhrase);
1533 
1535 OPGP_API
1537  OPGP_STRING executableLoadFileName, BYTE hash[20]);
1538 
1540 OPGP_API
1542  OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
1543  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
1544 
1546 OPGP_API
1548  OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
1549  PBYTE loadFilebuf, DWORD loadFileBufSize,
1550  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
1551 
1553 OPGP_API
1555  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
1556  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
1557  DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1558  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
1559  PBYTE sdParameters, DWORD sdParametersLength,
1560  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1561  PBYTE simSpecParams, DWORD simSpecParamsLength,
1562  PBYTE installToken, DWORD installTokenLength,
1563  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1564 
1566 OPGP_API
1568  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
1569  DWORD applicationPrivileges, PBYTE installToken, DWORD installTokenLength,
1570  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1571 
1573 OPGP_API
1574 OPGP_ERROR_STATUS OP201_install_for_install_and_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
1575  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
1576  DWORD applicationInstanceAIDLength, DWORD applicationPrivileges,
1577  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
1578  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
1579  PBYTE sdParameters, DWORD sdParametersLength,
1580  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
1581  PBYTE simSpecParams, DWORD simSpecParamsLength,
1582  PBYTE installToken, DWORD installTokenLength,
1583  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
1584 
1586 OPGP_API
1588  BYTE keySetVersion,
1589  BYTE newKeySetVersion,
1590  OPGP_STRING PEMKeyFileName, char *passPhrase,
1591  BYTE receiptGenerationKey[16]);
1592 
1594 OPGP_API
1596  PBYTE capdu, DWORD capduLength, PBYTE rapdu,
1597  PDWORD rapduLength);
1598 
1600 OPGP_API
1601 OPGP_ERROR_STATUS OP201_calculate_3des_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
1602  BYTE DAP_verification_key[16], OP201_DAP_BLOCK *dapBlock);
1603 
1605 OPGP_API
1606 OPGP_ERROR_STATUS OP201_calculate_rsa_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
1607  OPGP_STRING PEMKeyFileName, char *passPhrase, OP201_DAP_BLOCK *dapBlock);
1608 
1610 OPGP_API
1611 OPGP_ERROR_STATUS OP201_validate_delete_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1612  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1613  PBYTE AID, DWORD AIDLength);
1614 
1616 OPGP_API
1617 OPGP_ERROR_STATUS OP201_validate_install_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1618  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1619  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1620  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength);
1621 
1623 OPGP_API
1624 OPGP_ERROR_STATUS OP201_validate_load_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1625  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1626  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1627  PBYTE securityDomainAID, DWORD securityDomainAIDLength);
1628 
1629 
1631 OPGP_API
1632 OPGP_ERROR_STATUS GP211_begin_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE securityLevel, PBYTE data, DWORD dataLength);
1633 
1635 OPGP_API
1636 OPGP_ERROR_STATUS GP211_end_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE secureChannelProtocol);
1637 
1639 OPGP_API
1641 
1643 OPGP_API
1644 OPGP_ERROR_STATUS OPGP_cap_to_ijc(OPGP_CSTRING capFileName, OPGP_STRING ijcFileName);
1645 
1647 OPGP_API
1648 OPGP_ERROR_STATUS OPGP_extract_cap_file(OPGP_CSTRING fileName, PBYTE loadFileBuf, PDWORD loadFileBufSize);
1649 
1651 OPGP_API
1653 
1655 OPGP_API
1657  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1658 
1660 OPGP_API
1661 OPGP_ERROR_STATUS GP211_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, PBYTE masterKey,
1662  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1663 
1665 OPGP_API
1667  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1668 
1670 OPGP_API
1672  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1673 
1675 OPGP_API
1676 OPGP_ERROR_STATUS OP201_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, PBYTE masterKey,
1677  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1678 
1680 OPGP_API
1682  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1683 
1685 OPGP_API
1686 OPGP_ERROR_STATUS VISA2_derive_keys(BYTE baseKeyDiversificationData[10], PBYTE masterKey,
1687  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1688 
1690 OPGP_API
1691 OPGP_ERROR_STATUS VISA1_derive_keys(BYTE cardSerialNumber[8], PBYTE masterKey,
1692  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1693 
1695 OPGP_API
1696 OPGP_ERROR_STATUS EMV_CPS11_derive_keys(BYTE baseKeyDiversificationData[10], PBYTE masterKey,
1697  PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK);
1698 
1699 #ifdef __cplusplus
1700 }
1701 #endif
1702 #endif
OPGP_API OPGP_ERROR_STATUS OP201_install_for_install_and_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, DWORD installTokenLength, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs and makes an installed application selectable.
Definition: globalplatform.c:10071
OPGP_API OPGP_ERROR_STATUS GP211_calculate_delete_token(PBYTE applicationOrExecutableLoadFileAID, DWORD applicationOrExecutableLoadFileAIDLength, PBYTE deleteToken, PDWORD deleteTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Calculates a Delete Token using PKCS#1.
Definition: globalplatform.c:7008
#define GP211_UICC_ACCESS_DOMAIN_DAP_MAX_LENGTH
Maximum access domain DAP length supported.
Definition: globalplatform.h:653
OPGP_API OPGP_ERROR_STATUS GP211_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE baseKeyOrStaticOcePrivateKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK, DWORD keyLength, BYTE keySetVersion, BYTE keyIndex, BYTE secureChannelProtocol, BYTE secureChannelProtocolImpl, BYTE securityLevel, BYTE derivationMethod, PBYTE certOceEcka, DWORD certOceEckaLength, PBYTE sdPublicKeyOverride, DWORD sdPublicKeyOverrideLength, OPGP_STRING sdPublicKeyFileName, GP211_SECURITY_INFO *secInfo)
GlobalPlatform2.1.1: Mutual authentication.
Definition: globalplatform.c:8210
OPGP_API OPGP_ERROR_STATUS OP201_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback)
Open Platform: Loads a Executable Load File (containing an application) to the card.
Definition: globalplatform.c:9848
#define GP211_UICC_MAX_ACCESS_RULES
Maximum access rules supported by the helper structures.
Definition: globalplatform.h:650
OPGP_API OPGP_ERROR_STATUS GP211_put_delegated_management_receipt_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, BYTE receiptKey[32], DWORD keyLength, BYTE receiptKeyType)
GlobalPlatform2.1.1: Adds a receipt generation key set for Delegated Management.
Definition: globalplatform.c:2245
OPGP_API OPGP_ERROR_STATUS GP211_calculate_DAP(BYTE loadFileDataBlockHash[64], BYTE hashLength, BYTE DAPCalculationKey[32], DWORD keyLength, PBYTE signature, PDWORD signatureLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Calculates a Load File Data Block Signature using AES or 3DES.
Definition: globalplatform.c:7201
OPGP_API OPGP_ERROR_STATUS OP201_validate_install_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10], BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength)
Open Platform: Validates an Install Receipt.
Definition: globalplatform.c:10677
OPGP_API OPGP_ERROR_STATUS OP201_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, PDWORD installTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: Calculates an Install Token using PKCS#1.
Definition: globalplatform.c:10221
OPGP_API OPGP_ERROR_STATUS OP201_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE statusType, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState)
Open Platform: Sets the life cycle status of Applications, Security Domains or the Card Manager.
Definition: globalplatform.c:9764
OPGP_API OPGP_ERROR_STATUS GP211_init_implicit_secure_channel(PBYTE AID, DWORD AIDLength, BYTE baseKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16], BYTE secureChannelProtocolImpl, BYTE sequenceCounter[2], GP211_SECURITY_INFO *secInfo)
GlobalPlatform2.1.1: Inits a Secure Channel implicitly.
Definition: globalplatform.c:8496
OPGP_API OPGP_ERROR_STATUS OPGP_get_cplc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, OPGP_CPLC *cplc)
Reads and parses the CPLC data.
Definition: globalplatform.c:2974
OPGP_API OPGP_ERROR_STATUS GP211_get_ecka_certificate(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keyVersionNumber, BYTE keyIdentifier, PBYTE recvBuffer, PDWORD recvBufferLength)
SCP11: Retrieves the ECKA certificate store (GET DATA with tag BF21).
Definition: globalplatform.c:2514
OPGP_API OPGP_ERROR_STATUS GP211_calculate_ecc_DAP(PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, OPGP_STRING PEMKeyFileName, char *passPhrase, PBYTE signature, PDWORD signatureLength)
GlobalPlatform2.3.1: Calculates an ECC Load File Data Block Signature in plain format (TR-03111 r||s)...
Definition: globalplatform.c:7309
OPGP_API OPGP_ERROR_STATUS GP211_validate_extradition_receipt(PBYTE receiptKey, DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength, PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength, PBYTE applicationOrExecutableLoadFileAID, DWORD applicationOrExecutableLoadFileAIDLength, BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Validates an Extradition Receipt with symmetric (DES/AES) or asymmetric (RSA/ECC...
Definition: globalplatform.c:7368
OPGP_API OPGP_ERROR_STATUS OPGP_read_executable_load_file_parameters_from_buffer(PBYTE loadFileBuf, DWORD loadFileBufSize, OPGP_LOAD_FILE_PARAMETERS *loadFileParams)
Receives Executable Load File as a buffer instead of a FILE.
Definition: globalplatform.c:4813
OPGP_API OPGP_ERROR_STATUS OPGP_parse_extended_card_resources_information(const BYTE *data, DWORD dataLength, OPGP_EXTENDED_CARD_RESOURCE_INFORMATION *extendedCardResourceInformation)
Parses the extended card resources information response.
Definition: globalplatform.c:4556
OPGP_API OPGP_ERROR_STATUS EMV_CPS11_derive_keys(BYTE baseKeyDiversificationData[10], PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the EMV CPS11 derivation scheme.
Definition: globalplatform.c:7792
OPGP_API OPGP_ERROR_STATUS OP201_put_3desKey(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3desKey[16])
Open Platform: replaces a single 3DES key in a key set or adds a new 3DES key.
Definition: globalplatform.c:9508
OPGP_API OPGP_ERROR_STATUS OP201_get_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE cardElement, OP201_APPLICATION_DATA *applData, PDWORD applDataLength)
Open Platform: Gets the life cycle status of Applications, the Card Manager and Executable Load Files...
Definition: globalplatform.c:9782
OPGP_API OPGP_ERROR_STATUS OPGP_select_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength)
GlobalPlatform2.1.1: Selects an application on a card by AID and resets secure channel state.
Definition: globalplatform.c:1151
OPGP_API OPGP_ERROR_STATUS GP211_store_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE encryptionFlags, BYTE formatFlags, BOOL responseDataExpected, PBYTE data, DWORD dataLength)
GlobalPlatform2.1.1: The STORE DATA command is used to transfer data to an Application or the Securit...
Definition: globalplatform.c:8775
OPGP_API OPGP_ERROR_STATUS GP211_build_sim_specific_params(GP211_SIM_SPECIFIC_PARAMS *params, PBYTE simSpecParams, PDWORD simSpecParamsLength)
GlobalPlatform2.1.1: Builds the SIM File Access and Toolkit Application Specific Parameters (tag 'CA'...
Definition: globalplatform.c:6300
OPGP_API OPGP_ERROR_STATUS GP211_put_rsa_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: replaces a single public RSA key in a key set or adds a new public RSA key.
Definition: globalplatform.c:1241
OPGP_API OPGP_ERROR_STATUS OP201_delete_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, OPGP_AID *AIDs, DWORD AIDsLength, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataLength)
Open Platform: Deletes a Executable Load File or an application.
Definition: globalplatform.c:9625
OPGP_API OPGP_ERROR_STATUS OP201_get_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength)
Open Platform: Retrieve card data.
Definition: globalplatform.c:9695
OPGP_API OPGP_ERROR_STATUS OP201_validate_load_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10], BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength)
Open Platform: Validates a Load Receipt.
Definition: globalplatform.c:10645
OPGP_API OPGP_ERROR_STATUS GP211_begin_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE securityLevel, PBYTE data, DWORD dataLength)
Initiates a R-MAC session.
Definition: globalplatform.c:3013
OPGP_API OPGP_ERROR_STATUS GP211_put_asymmetric_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE keyType)
GlobalPlatform2.3.1: replaces a single public asymmetric key in a key set or adds a new public asymme...
Definition: globalplatform.c:1213
GP211_APPLICATION_PRIVILEGES
Application privileges.
Definition: globalplatform.h:109
@ GP211_CARD_MANAGER_LOCK_PRIVILEGE
Application can lock the Card Manager.
Definition: globalplatform.h:113
@ GP211_CONTACTLESS_SELF_ACTIVATION
Application is capable of activating itself on the contactless interface without a prior request to t...
Definition: globalplatform.h:131
@ GP211_DELEGATED_MANAGEMENT
Security domain has delegated management right.
Definition: globalplatform.h:112
@ GP211_FINAL_APPLICATION
The only Application selectable in card Life Cycle State CARD_LOCKED and TERMINATED.
Definition: globalplatform.h:125
@ GP211_GLOBAL_LOCK
Application may lock or unlock any Application.
Definition: globalplatform.h:123
@ GP211_GLOBAL_SERVICE
Application provides services to other Applications on the card.
Definition: globalplatform.h:126
@ GP211_DEFAULT_SELECTED_CARD_RESET_PRIVILEGE
Application is default selected. In GlobalPlatform 2.3.1 this was redefined as Card Reset privilege.
Definition: globalplatform.h:115
@ GP211_SECURITY_DOMAIN
Application is security domain.
Definition: globalplatform.h:110
@ GP211_DAP_VERIFICATION
Application can require DAP verification for loading and installing applications.
Definition: globalplatform.h:111
@ GP211_CONTACTLESS_ACTIVATION
Application is capable of activating and deactivating any Application on the contactless interface.
Definition: globalplatform.h:130
@ GP211_CIPHERED_LOAD_FILE_DATA_BLOCK
The Security Domain requires that the Load File being associated with it is to be loaded ciphered.
Definition: globalplatform.h:129
@ GP211_PIN_CHANGE_PRIVILEGE
Application can change global PIN.
Definition: globalplatform.h:116
@ GP211_GLOBAL_REGISTRY
Application may access any entry in the GlobalPlatform Registry.
Definition: globalplatform.h:124
@ GP211_CARD_MANAGER_TERMINATE_PRIVILEGE
Application can terminate the card.
Definition: globalplatform.h:114
@ GP211_AUTHORIZED_MANAGEMENT
Application is capable of Card Content Management; Security Domain privilege shall also be set.
Definition: globalplatform.h:120
@ GP211_GLOBAL_DELETE
Application may delete any Card Content.
Definition: globalplatform.h:122
@ GP211_TRUSTED_PATH
Application is a Trusted Path for inter-application communication.
Definition: globalplatform.h:119
@ GP211_MANDATED_DAP_VERIFICATION
Security domain requires DAP verification for loading and installing applications.
Definition: globalplatform.h:117
@ GP211_TOKEN_VERIFICATION
Application is capable of verifying a token for Delegated Card Content Management.
Definition: globalplatform.h:121
@ GP211_RECEIPT_GENERATION
Application is capable of generating a receipt for Delegated Card Content Management.
Definition: globalplatform.h:128
OPGP_API OPGP_ERROR_STATUS OP201_put_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength)
Open Platform: Put card data.
Definition: globalplatform.c:9670
OPGP_API OPGP_ERROR_STATUS GP211_perform_security_operation_certificate_chain(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE caKlocKeyVersionNumber, BYTE caKlocKeyIdentifier, PBYTE certificateChainData, DWORD certificateChainDataLength)
SCP11: Submits a certificate chain ending in CERT.OCE.ECKA with PERFORM SECURITY OPERATION.
Definition: globalplatform.c:2855
OPGP_API OPGP_ERROR_STATUS GP211_validate_load_receipt(PBYTE receiptKey, DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Validates a Load Receipt with symmetric (DES/AES) or asymmetric (RSA/ECC) receip...
Definition: globalplatform.c:7332
OPGP_API OPGP_ERROR_STATUS OP201_install_for_install(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, DWORD installTokenLength, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs an application on the card.
Definition: globalplatform.c:10005
OPGP_API OPGP_ERROR_STATUS GP211_get_supported_ca_identifiers(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BOOL returnCaKlccIdentifiers, PBYTE recvBuffer, PDWORD recvBufferLength)
SCP11: Retrieves supported CA identifiers (GET DATA with tag FF33 or FF34).
Definition: globalplatform.c:2604
OPGP_API OPGP_ERROR_STATUS GP211_parse_card_capability_information(const BYTE *data, DWORD dataLength, GP211_CARD_CAPABILITY_INFORMATION *cardCapabilityInfo)
Parses the card capability information response.
Definition: globalplatform.c:4298
OPGP_API OPGP_ERROR_STATUS GP211_load_from_buffer(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength, PBYTE loadFileBuffer, DWORD loadFileBufSize, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback)
GlobalPlatform2.1.1: Loads a Executable Load File (containing an application) from a buffer to the ca...
Definition: globalplatform.c:4862
OPGP_API OPGP_ERROR_STATUS GP211_get_extradition_token_signature_data(PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, PBYTE extraditionTokenSignatureData, PDWORD extraditionTokenSignatureDataLength)
GlobalPlatform2.1.1: Function to retrieve the data to sign by the Card Issuer in an Extradition Token...
Definition: globalplatform.c:6669
#define GP211_UICC_TOOLKIT_DAP_MAX_LENGTH
Maximum toolkit parameters DAP length supported.
Definition: globalplatform.h:652
OPGP_API OPGP_ERROR_STATUS GP211_VISA1_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:7608
OPGP_API OPGP_ERROR_STATUS GP211_put_ecc_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: replaces a single public ECC key in a key set or adds a new public ECC key.
Definition: globalplatform.c:1270
OPGP_API OPGP_ERROR_STATUS GP211_get_registry_update_token_signature_data(PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength, PBYTE tokenSignatureData, PDWORD tokenSignatureDataLength)
GlobalPlatform2.3.1: Function to retrieve the data to sign for delegated management in a Registry Upd...
Definition: globalplatform.c:6728
OPGP_API OPGP_ERROR_STATUS OP201_put_rsa_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: replaces a single public RSA key in a key set or adds a new public RSA key.
Definition: globalplatform.c:9482
OPGP_API OPGP_ERROR_STATUS GP211_store_data_ecka_certificate(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keyVersionNumber, BYTE keyIdentifier, OPGP_STRING certificateStoreFileName)
SCP11: STORE DATA for the ECKA certificate store (section 6.7).
Definition: globalplatform.c:8801
OPGP_API OPGP_ERROR_STATUS OP201_put_delegated_management_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE receiptGenerationKey[16])
Open Platform: Adds a key set for Delegated Management.
Definition: globalplatform.c:9561
OPGP_API OPGP_ERROR_STATUS GP211_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, PDWORD installTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates an Install Token using PKCS#1.
Definition: globalplatform.c:6896
OPGP_API OPGP_ERROR_STATUS GP211_parse_certificate_store(const BYTE *certificateStoreData, DWORD certificateStoreDataLength, PBYTE parsedCertificateStore, PDWORD parsedCertificateStoreLength)
SCP11: Parses a BF21 certificate store. For legacy GP certificates (tag '7F21') the output contains a...
Definition: globalplatform.c:3695
OPGP_API OPGP_ERROR_STATUS GP211_calculate_load_file_data_block_hash(OPGP_STRING executableLoadFileName, PBYTE hash, DWORD hashLength, BYTE hashType)
GlobalPlatform2.1.1: Calculates a Load File Data Block Hash.
Definition: globalplatform.c:7140
OPGP_API OPGP_ERROR_STATUS GP211_store_data_whitelist(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keyVersionNumber, BYTE keyIdentifier, BOOL whitelistCounterPresent, USHORT whitelistCounter, PBYTE *certificateSerialNumbers, PDWORD certificateSerialNumberLengths, DWORD certificateSerialNumberCount)
SCP11: STORE DATA for a whitelist linked to a PK.CA-KLOC.ECDSA (section 6.8).
Definition: globalplatform.c:8889
OPGP_API OPGP_ERROR_STATUS OP201_VISA1_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:7581
OPGP_API OPGP_ERROR_STATUS OP201_pin_change(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE tryLimit, PBYTE newPIN, DWORD newPINLength, BYTE KEK[16])
Open Platform: Changes or unblocks the global PIN.
Definition: globalplatform.c:10737
OPGP_API OPGP_ERROR_STATUS GP211_parse_card_recognition_data(const BYTE *data, DWORD dataLength, GP211_CARD_RECOGNITION_DATA *cardData)
Parses the card recognition data response.
Definition: globalplatform.c:3251
OP201_APPLICATION_PRIVILEGES
Application privileges.
Definition: globalplatform.h:278
@ OP201_DAP_VERIFICATION
Application can require DAP verification for loading and installing applications.
Definition: globalplatform.h:280
@ OP201_MANDATED_DAP_VERIFICATION
Security domain requires DAP verification for loading and installing applications.
Definition: globalplatform.h:286
@ OP201_DEFAULT_SELECTED
Application is default selected.
Definition: globalplatform.h:284
@ OP201_CARD_MANAGER_LOCK_PRIVILEGE
Application can lock the Card Manager.
Definition: globalplatform.h:282
@ OP201_SECURITY_DOMAIN
Application is security domain.
Definition: globalplatform.h:279
@ OP201_CARD_MANAGER_TERMINATE_PRIVILEGE
Application can terminate the card.
Definition: globalplatform.h:283
@ OP201_DELEGATED_MANAGEMENT
Security domain has delegated management right.
Definition: globalplatform.h:281
@ OP201_PIN_CHANGE_PRIVILEGE
Application can change global PIN.
Definition: globalplatform.h:285
OPGP_API OPGP_ERROR_STATUS GP211_install_for_install(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, DWORD installTokenLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs an application on the card.
Definition: globalplatform.c:5337
OPGP_API OPGP_ERROR_STATUS GP211_store_data_ca_kloc_kid_kvn(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE caKlocIdentifier, DWORD caKlocIdentifierLength, BYTE keyIdentifier, BYTE keyVersionNumber)
SCP11: STORE DATA for a CA-KLOC Identifier to PK.CA-KLOC.ECDSA mapping (section 6....
Definition: globalplatform.c:8969
OPGP_API OPGP_ERROR_STATUS GP211_get_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength)
GlobalPlatform2.1.1: Retrieve card data.
Definition: globalplatform.c:2495
OPGP_API OPGP_ERROR_STATUS GP211_EMV_CPS11_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the EMV CPS 1.1 key derivation scheme.
Definition: globalplatform.c:7750
#define GP211_MAX_CARD_RECOGNITION_SCP_INFOS
Definition: globalplatform.h:473
OPGP_API OPGP_ERROR_STATUS GP211_ca_kloc_kid_kvn(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE caKlocIdentifier, DWORD caKlocIdentifierLength, BYTE *keyIdentifier, BYTE *keyVersionNumber)
SCP11: Resolves KID/KVN from a CA-KLOC Identifier (GET DATA with tag 0083).
Definition: globalplatform.c:2544
OPGP_API OPGP_ERROR_STATUS GP211_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength)
GlobalPlatform2.1.1: Function to retrieve the data to sign by the Card Issuer in an Install Token.
Definition: globalplatform.c:5955
OPGP_API OPGP_ERROR_STATUS GP211_install_for_registry_update(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength, PBYTE registryUpdateToken, DWORD registryUpdateTokenLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.3.1: Updates the registry of an application or Security Domain.
Definition: globalplatform.c:5698
OPGP_API OPGP_ERROR_STATUS GP211_validate_install_receipt(PBYTE receiptKey, DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Validates an Install Receipt with symmetric (DES/AES) or asymmetric (RSA/ECC) re...
Definition: globalplatform.c:7345
OPGP_API OPGP_ERROR_STATUS GP211_delete_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, OPGP_AID *AIDs, DWORD AIDsLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, PBYTE deleteToken, DWORD deleteTokenLength)
GlobalPlatform2.1.1: Deletes a Executable Load File or an application.
Definition: globalplatform.c:2330
OPGP_API OPGP_ERROR_STATUS GP211_get_data_iso7816_4(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength)
Retrieve card data according ISO/IEC 7816-4 command not within a secure channel.
Definition: globalplatform.c:3178
OPGP_API OPGP_ERROR_STATUS GP211_pin_change(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE tryLimit, PBYTE newPIN, DWORD newPINLength)
GlobalPlatform2.1.1: Changes or unblocks the global PIN.
Definition: globalplatform.c:8687
OPGP_API OPGP_ERROR_STATUS GP211_calculate_update_registry_token(PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength, PBYTE registryUpdateToken, PDWORD registryUpdateTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Calculates a Registry Update Token using PKCS#1.
Definition: globalplatform.c:6969
OPGP_API OPGP_ERROR_STATUS GP211_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength)
GlobalPlatform2.1.1: Function to retrieve the data to sign by the Card Issuer in a Load Token.
Definition: globalplatform.c:7058
OPGP_API OPGP_ERROR_STATUS GP211_install_for_extradition(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, PBYTE extraditionToken, DWORD extraditionTokenLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Associates an application with another Security Domain.
Definition: globalplatform.c:5608
OPGP_API OPGP_ERROR_STATUS GP211_validate_delete_receipt(PBYTE receiptKey, DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE AID, DWORD AIDLength, BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Validates a Delete Receipt with symmetric (DES/AES) or asymmetric (RSA/ECC) rece...
Definition: globalplatform.c:7358
OPGP_API OPGP_ERROR_STATUS OP201_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:7412
OPGP_API OPGP_ERROR_STATUS GP211_put_ecc_key_with_curve_parameter_reference(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: replaces or adds a public ECC key using a curve parameter reference.
Definition: globalplatform.c:1287
OPGP_API OPGP_ERROR_STATUS OPGP_parse_cplc(const BYTE *data, DWORD dataLength, OPGP_CPLC *cplc)
Parses the CPLC data response.
Definition: globalplatform.c:2915
OPGP_API OPGP_ERROR_STATUS GP211_put_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength)
GlobalPlatform2.1.1: Put card data.
Definition: globalplatform.c:2447
OPGP_API OPGP_ERROR_STATUS GP211_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:7441
OPGP_API OPGP_ERROR_STATUS GP211_get_confirmation_counter(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, DWORD *confirmationCounter)
GlobalPlatform2.1.1: This returns the confirmation counter.
Definition: globalplatform.c:8626
OPGP_API OPGP_ERROR_STATUS GP211_get_sequence_counter(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, DWORD *sequenceCounter)
GlobalPlatform2.1.1: This returns the current Sequence Counter.
Definition: globalplatform.c:8584
OPGP_API OPGP_ERROR_STATUS OP201_get_key_information_templates(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keyInformationTemplate, OP201_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength)
Open Platform: Retrieves key information of keys on the card.
Definition: globalplatform.c:9722
OPGP_API OPGP_ERROR_STATUS OPGP_read_executable_load_file_parameters(OPGP_STRING loadFileName, OPGP_LOAD_FILE_PARAMETERS *loadFileParams)
Reads the parameters of an Executable Load File.
Definition: globalplatform.c:4803
OPGP_API OPGP_ERROR_STATUS GP211_validate_registry_update_receipt(PBYTE receiptKey, DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength, DWORD applicationPrivileges, PBYTE registryUpdateParameters, DWORD registryUpdateParametersLength, BYTE receiptKeyType, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.3.1: Validates a Registry Update Receipt with symmetric (DES/AES) or asymmetric (RSA/...
Definition: globalplatform.c:7384
OPGP_API OPGP_ERROR_STATUS GP211_calculate_extradition_token(PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, PBYTE extraditionToken, PDWORD extraditionTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates an Extradition Token using PKCS#1.
Definition: globalplatform.c:6929
#define GP211_UICC_MAX_MENU_ENTRIES
Maximum menu entries supported by the helper structures.
Definition: globalplatform.h:649
OPGP_API OPGP_ERROR_STATUS OP201_validate_delete_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10], BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData, PBYTE AID, DWORD AIDLength)
Open Platform: Validates a Load Receipt.
Definition: globalplatform.c:10707
OPGP_API OPGP_ERROR_STATUS OP201_calculate_rsa_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName, OPGP_STRING PEMKeyFileName, char *passPhrase, OP201_DAP_BLOCK *dapBlock)
Open Platform: Calculates a Load File Data Block DAP using SHA-1 and PKCS#1 (RSA).
Definition: globalplatform.c:10589
OPGP_API OPGP_ERROR_STATUS GP211_build_store_data_keys(BYTE scp, BYTE scpImpl, PBYTE dataEncryptionKey, DWORD dataEncryptionKeyLength, BYTE keyType, USHORT keyPurpose, PBYTE keys[], BYTE keyIds[], DWORD numKeys, DWORD keyLength, BYTE keyVersion, BYTE keyAccessCondition, PBYTE output, PDWORD outputLength)
GlobalPlatform2.3.1: Builds STORE DATA encoding for symmetric keys according to section 11....
Definition: globalplatform.c:9094
OPGP_API OPGP_ERROR_STATUS OP201_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength)
Open Platform: Function to retrieve the data to sign for delegated management in a Load Token.
Definition: globalplatform.c:10261
OPGP_API OPGP_ERROR_STATUS GP211_put_symmetric_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE key[32], DWORD keyLength, BYTE keyType)
GlobalPlatform2.1.1: replaces a single symmetric key in a key set or adds a new key.
Definition: globalplatform.c:1806
OPGP_API OPGP_ERROR_STATUS OP201_send_APDU(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE capdu, DWORD capduLength, PBYTE rapdu, PDWORD rapduLength)
Sends an application protocol data unit.
Definition: globalplatform.c:9451
OPGP_API OPGP_ERROR_STATUS GP211_build_sd_parameters(GP211_SD_INSTALL_PARAMS *params, PBYTE sdParameters, PDWORD sdParametersLength)
GlobalPlatform2.1.1: Builds the Security Domain install parameters (tag 'C1' with tag and length).
Definition: globalplatform.c:6371
OPGP_API OPGP_ERROR_STATUS GP211_calculate_rsa_schemeX_DAP(PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, OPGP_STRING PEMKeyFileName, char *passPhrase, PBYTE signature, PDWORD signatureLength)
GlobalPlatform2.1.1: Calculates a Load File Data Block Signature using SHA-256/SHA-512 and RSA-PSS (S...
Definition: globalplatform.c:7279
OPGP_API OPGP_ERROR_STATUS OP201_install_for_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, PBYTE loadToken, DWORD loadTokenLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit)
Open Platform: Prepares the card for loading an application.
Definition: globalplatform.c:9952
OPGP_API OPGP_ERROR_STATUS OPGP_build_bcd_encoding(const char *numericString, PBYTE bcdData, PDWORD bcdDataLength)
BCD encodes a numeric string.
Definition: globalplatform.c:4078
OPGP_API OPGP_ERROR_STATUS GP211_install_for_personalization(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE applicationAID, DWORD applicationAIDLength)
GlobalPlatform2.1.1: Informs a Security Domain that a associated application will retrieve personaliz...
Definition: globalplatform.c:5779
OPGP_ERROR_STATUS OPGP_calculate_key_check_value(GP211_SECURITY_INFO *secInfo, BYTE keyType, PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3])
Calculates the key check value of a key.
Definition: globalplatform.c:10824
OPGP_API OPGP_ERROR_STATUS OP201_calculate_3des_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName, BYTE DAP_verification_key[16], OP201_DAP_BLOCK *dapBlock)
Open Platform: Calculates a Load File Data Block DAP using 3DES.
Definition: globalplatform.c:10537
OPGP_API OPGP_ERROR_STATUS GP211_install_for_install_and_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installToken, DWORD installTokenLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs and makes an installed application selectable.
Definition: globalplatform.c:5482
OPGP_API OPGP_ERROR_STATUS OP201_delete_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex)
Open Platform: deletes a key or multiple keys.
Definition: globalplatform.c:9603
OPGP_API OPGP_ERROR_STATUS GP211_store_secure_channel_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, BYTE keyType, PBYTE baseKey, PBYTE newS_ENC, PBYTE newS_MAC, PBYTE newDEK, DWORD keyLength, BYTE keySetVersion, BYTE keyAccessCondition)
GlobalPlatform2.3.1: STORE DATA command for storing secure channel keys using the symmetric key forma...
Definition: globalplatform.c:9299
OPGP_API OPGP_ERROR_STATUS GP211_build_card_recognition_data(const GP211_CARD_RECOGNITION_DATA *cardData, PBYTE data, PDWORD dataLength)
Builds the card recognition data response.
Definition: globalplatform.c:4130
OPGP_API OPGP_ERROR_STATUS OP201_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDAP, DWORD loadFileDAPLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE loadToken, PDWORD loadTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: Calculates a Load Token using PKCS#1.
Definition: globalplatform.c:10382
OPGP_API OPGP_ERROR_STATUS GP211_get_card_recognition_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, GP211_CARD_RECOGNITION_DATA *cardData)
GlobalPlatform2.1.1: Return the card recognition data.
Definition: globalplatform.c:3219
OPGP_API OPGP_ERROR_STATUS OP201_load_from_buffer(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, PBYTE loadFilebuf, DWORD loadFileBufSize, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback)
Open Platform: Loads a Executable Load File (containing an application) from a buffer to the card.
Definition: globalplatform.c:9896
OPGP_API OPGP_ERROR_STATUS OP201_put_secure_channel_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, BYTE new_encKey[16], BYTE new_macKey[16], BYTE new_KEK[16])
Open Platform: replaces or adds a secure channel key set consisting of encryption key,...
Definition: globalplatform.c:9535
OPGP_API OPGP_ERROR_STATUS GP211_put_aes_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE aesKey[32], DWORD keyLength)
GlobalPlatform2.1.1: replaces a single AES key in a key set or adds a new AES key.
Definition: globalplatform.c:1781
OPGP_API OPGP_ERROR_STATUS GP211_install_for_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE applicationAID, DWORD applicationAIDLength, DWORD applicationPrivileges, PBYTE installToken, DWORD installTokenLength, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Makes an installed application selectable.
Definition: globalplatform.c:5843
OPGP_API OPGP_ERROR_STATUS VISA1_derive_keys(BYTE cardSerialNumber[8], PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:7651
OPGP_API OPGP_ERROR_STATUS GP211_parse_scp11_certificate(PBYTE certificateData, DWORD certificateDataLength, GP211_SCP11_CERTIFICATE *certificate)
SCP11: Parses a certificate encoded according to table 6-12.
Definition: globalplatform.c:3533
OPGP_API OPGP_ERROR_STATUS GP211_get_diversification_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE recvBuffer, PDWORD recvBufferLength)
GlobalPlatform2.1.1: Retrieve diversification data (tag 0xCF).
Definition: globalplatform.c:2880
OPGP_API OPGP_ERROR_STATUS GP211_install_for_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, PBYTE loadToken, DWORD loadTokenLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit)
GlobalPlatform2.1.1: Prepares the card for loading an application.
Definition: globalplatform.c:5217
OPGP_API OPGP_ERROR_STATUS OP201_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, DWORD applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE sdParameters, DWORD sdParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength)
Open Platform: Function to retrieve the data to sign for delegated management in an Install Token.
Definition: globalplatform.c:10171
OPGP_API OPGP_ERROR_STATUS GP211_put_secure_channel_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, PBYTE baseKey, PBYTE newS_ENC, PBYTE newS_MAC, PBYTE newDEK, DWORD keyLength, BYTE keyType)
GlobalPlatform2.1.1: replaces or adds a secure channel key set consisting of S-ENC,...
Definition: globalplatform.c:1883
OPGP_API OPGP_ERROR_STATUS GP211_send_APDU(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE capdu, DWORD capduLength, PBYTE rapdu, PDWORD rapduLength)
Sends an application protocol data unit.
Definition: globalplatform.c:1139
OPGP_API OPGP_ERROR_STATUS GP211_build_uicc_system_specific_params(GP211_UICC_SYSTEM_SPECIFIC_PARAMS *params, PBYTE uiccSystemSpecParams, PDWORD uiccSystemSpecParamsLength)
GlobalPlatform2.1.1: Builds the UICC System Specific Parameters (tag 'EA' value without the tag and l...
Definition: globalplatform.c:6196
OPGP_API OPGP_ERROR_STATUS GP211_perform_security_operation(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE caKlocKeyVersionNumber, BYTE caKlocKeyIdentifier, PBYTE certificateData, DWORD certificateDataLength, BOOL moreCertificatesExpected)
SCP11: Submits CERT.OCE.ECKA (PERFORM SECURITY OPERATION, INS 2A).
Definition: globalplatform.c:2713
OPGP_API OPGP_ERROR_STATUS GP211_put_ecc_private_key_with_curve_parameter_reference(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE privateKey[32], DWORD privateKeyLength)
GlobalPlatform2.3.1: replaces or adds a raw private ECC key using a curve parameter reference.
Definition: globalplatform.c:1304
OPGP_API OPGP_ERROR_STATUS GP211_put_dap_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE keyType, BYTE key[32], DWORD keyLength)
GlobalPlatform2.3.1: Adds a DAP verification key set (asymmetric or symmetric).
Definition: globalplatform.c:2191
#define GP211_SD_MAX_SCP
Maximum SCP entries supported by the helper structures.
Definition: globalplatform.h:666
OPGP_API OPGP_ERROR_STATUS GP211_get_card_capability_information(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, GP211_CARD_CAPABILITY_INFORMATION *cardCapabilityInfo)
GlobalPlatform2.3.1: Return the card capability information.
Definition: globalplatform.c:4265
OPGP_API OPGP_ERROR_STATUS GP211_calculate_rsa_DAP(BYTE loadFileDataBlockHash[20], PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING PEMKeyFileName, char *passPhrase, GP211_DAP_BLOCK *loadFileDataBlockSignature)
GlobalPlatform2.1.1: Calculates a Load File Data Block Signature using SHA-1 and PKCS#1 (RSA).
Definition: globalplatform.c:7243
OPGP_API OPGP_ERROR_STATUS OP201_install_for_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, DWORD applicationPrivileges, PBYTE installToken, DWORD installTokenLength, OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Makes an installed application selectable.
Definition: globalplatform.c:10120
OPGP_ERROR_STATUS OPGP_encrypt_sensitive_data(GP211_SECURITY_INFO *secInfo, PBYTE data, DWORD dataLength, PBYTE encryptedData, PDWORD encryptedDataLength)
Encrypts sensitive data like keys or other data which is used in STORE DATA.
Definition: globalplatform.c:10849
OPGP_API OPGP_ERROR_STATUS GP211_get_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE cardElement, BYTE format, GP211_APPLICATION_DATA *applData, GP211_EXECUTABLE_MODULES_DATA *executableData, PDWORD dataLength)
GlobalPlatform2.1.1: Gets the life cycle status of Applications, the Issuer Security Domains,...
Definition: globalplatform.c:4704
OPGP_API OPGP_ERROR_STATUS GP211_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName, GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback)
GlobalPlatform2.1.1: Loads a Executable Load File (containing an application) to the card.
Definition: globalplatform.c:4834
OPGP_API OPGP_ERROR_STATUS GP211_put_delegated_management_token_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE tokenKeyType)
GlobalPlatform2.1.1: Adds a token verification key set for Delegated Management.
Definition: globalplatform.c:2166
OPGP_API OPGP_ERROR_STATUS OP201_calculate_load_file_DAP(OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName, BYTE hash[20])
Open Platform: Calculates a Load File DAP.
Definition: globalplatform.c:10424
OPGP_API OPGP_ERROR_STATUS OP201_EMV_CPS11_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the EMV CPS 1.1 key derivation scheme.
Definition: globalplatform.c:7723
OPGP_API OPGP_ERROR_STATUS VISA2_derive_keys(BYTE baseKeyDiversificationData[10], PBYTE masterKey, PBYTE S_ENC, PBYTE S_MAC, PBYTE DEK)
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:7494
OPGP_API OPGP_ERROR_STATUS OPGP_cap_to_ijc(OPGP_CSTRING capFileName, OPGP_STRING ijcFileName)
Converts a CAP file to an IJC file (Executable Load File).
Definition: globalplatform.c:4794
OPGP_API OPGP_ERROR_STATUS GP211_put_3des_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3DESKey[16])
GlobalPlatform2.1.1: replaces a single 3DES key in a key set or adds a new 3DES key.
Definition: globalplatform.c:1739
OPGP_API OPGP_ERROR_STATUS GP211_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, PBYTE loadFileDataBlockHash, DWORD loadFileDataBlockHashLength, DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE loadToken, PDWORD loadTokenLength, OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates a Load Token using PKCS#1.
Definition: globalplatform.c:7104
OPGP_API OPGP_ERROR_STATUS GP211_build_scp11_certificate(GP211_SCP11_CERTIFICATE *certificate, OPGP_STRING subjectPublicKeyFileName, char *subjectPublicKeyPassPhrase, OPGP_STRING signingPrivateKeyFileName, char *signingPrivateKeyPassPhrase, PBYTE certificateData, PDWORD certificateDataLength)
SCP11: Builds and signs a certificate encoded according to table 6-12.
Definition: globalplatform.c:3873
OPGP_API OPGP_ERROR_STATUS OP201_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE baseKey, PBYTE encKey, PBYTE macKey, PBYTE kekKey, BYTE keySetVersion, BYTE keyIndex, BYTE securityLevel, BYTE derivationMethod, OP201_SECURITY_INFO *secInfo)
Open Platform: Mutual authentication.
Definition: globalplatform.c:10764
OPGP_API OPGP_ERROR_STATUS GP211_get_delete_token_signature_data(OPGP_AID *AIDs, DWORD AIDsLength, PBYTE deleteTokenSignatureData, PDWORD deleteTokenSignatureDataLength)
GlobalPlatform2.3.1: Function to retrieve the data to sign for delegated management in a Delete Token...
Definition: globalplatform.c:6823
OPGP_API OPGP_ERROR_STATUS OPGP_manage_channel(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO *cardInfo, GP211_SECURITY_INFO *secInfo, BYTE openClose, BYTE channelNumberToClose, BYTE *channelNumberOpened)
ISO 7816-4 / GlobalPlatform2.1.1: Opens or closes a Logical Channel.
Definition: globalplatform.c:9394
OPGP_API OPGP_ERROR_STATUS GP211_get_secure_channel_protocol_details(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE *secureChannelProtocol, BYTE *secureChannelProtocolImpl)
GlobalPlatform2.1.1: This returns the Secure Channel Protocol and the Secure Channel Protocol impleme...
Definition: globalplatform.c:4400
OPGP_API OPGP_ERROR_STATUS OPGP_select_channel(OPGP_CARD_INFO *cardInfo, BYTE channelNumber)
ISO 7816-4 / GlobalPlatform2.1.1: If multiple Logical Channels are open or a new Logical Channel is o...
Definition: globalplatform.c:9372
#define GP211_UICC_MAX_TAR_VALUES
Maximum TAR values supported by the helper structures.
Definition: globalplatform.h:651
OPGP_API OPGP_ERROR_STATUS OPGP_extract_cap_file(OPGP_CSTRING fileName, PBYTE loadFileBuf, PDWORD loadFileBufSize)
Extracts a CAP file into a buffer.
Definition: globalplatform.c:4785
OPGP_API OPGP_ERROR_STATUS GP211_end_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE secureChannelProtocol)
Terminates a R-MAC session.
Definition: globalplatform.c:3055
OPGP_API OPGP_ERROR_STATUS GP211_delete_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE keyIndex)
GlobalPlatform2.1.1: deletes a key or multiple keys.
Definition: globalplatform.c:2263
OPGP_API OPGP_ERROR_STATUS OPGP_get_extended_card_resources_information(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, OPGP_EXTENDED_CARD_RESOURCE_INFORMATION *extendedCardResourceInformation)
Reads the extended card resource information (number of applications + free memory).
Definition: globalplatform.c:4609
OPGP_API OPGP_ERROR_STATUS GP211_close_implicit_secure_channel(GP211_SECURITY_INFO *secInfo)
GlobalPlatform2.1.1: Closes a Secure Channel implicitly.
Definition: globalplatform.c:8664
OPGP_API OPGP_ERROR_STATUS GP211_get_key_information_templates(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keyInformationTemplate, GP211_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength)
GlobalPlatform2.1.1: Retrieves key information of keys on the card.
Definition: globalplatform.c:4445
OPGP_API OPGP_ERROR_STATUS GP211_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE statusType, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState)
GlobalPlatform2.1.1: Sets the life cycle status of Applications, Security Domains or the Card Manager...
Definition: globalplatform.c:4656
Definition: globalplatform.h:416
BYTE lifeCycleState
The Issuer Security Domain, Security Domains, Executable Load Files and Application life cycle state.
Definition: globalplatform.h:418
OPGP_AID aid
The AID.
Definition: globalplatform.h:417
OPGP_AID associatedSecurityDomainAID
The associated Security Domain's AID.
Definition: globalplatform.h:421
GP211_APPLICATION_PRIVILEGES privileges
The Issuer Security Domain, Security Domains or Application privileges. Has no meaning for Executable...
Definition: globalplatform.h:419
Definition: globalplatform.h:623
USHORT receiptCipherSuites
Cipher suites supported for receipts (tag '86').
Definition: globalplatform.h:632
DWORD keyParameterReferenceListLength
Key Parameter Reference List length.
Definition: globalplatform.h:635
USHORT tokenCipherSuites
Cipher suites supported for tokens (tag '85'). See GP211_CIPHER_SUITE_AES_128_CBC.
Definition: globalplatform.h:631
DWORD lfdbhAlgorithmsLength
Supported LFDBH algorithms length.
Definition: globalplatform.h:629
DWORD scpInformationLength
Number of SCP information entries.
Definition: globalplatform.h:625
BOOL tokenIdentifierDenyList
Support for Token Identifier Deny List (tag '8A').
Definition: globalplatform.h:637
USHORT dapCipherSuites
Cipher suites supported for DAPs (tag '87').
Definition: globalplatform.h:633
BYTE lfdbencryptionCipherSuites
LFDB encryption cipher suites (tag '84').
Definition: globalplatform.h:630
BYTE elfUpgrade
Supported ELF upgrade process & options (tag '89').
Definition: globalplatform.h:636
BOOL securityDomainSelfRemoval
Support for Security Domain Self-Removal (tag '8B').
Definition: globalplatform.h:638
Definition: globalplatform.h:503
DWORD cardChipDetailsLength
Card configuration details length.
Definition: globalplatform.h:518
DWORD issuerSecurityDomainsTrustPointCertificateInformationOidLength
Issuer Security Domain’s Trust Point certificate information OID length.
Definition: globalplatform.h:520
DWORD issuerSecurityDomainsTrustPointCertificateInformationLength
Issuer Security Domain’s Trust Point certificate information length.
Definition: globalplatform.h:522
DWORD cardConfigurationDetailsLength
Card configuration details length.
Definition: globalplatform.h:514
DWORD issuerSecurityDomainCertificateInformationOidLength
Issuer Security Domain certificate information OID length.
Definition: globalplatform.h:524
DWORD scpLength
The length of the SCP.
Definition: globalplatform.h:510
DWORD cardConfigurationDetailsOidLength
Card configuration details OID length.
Definition: globalplatform.h:512
DWORD issuerSecurityDomainCertificateInformationLength
Issuer Security Domain certificate information length.
Definition: globalplatform.h:526
DWORD cardChipDetailsOidLength
Card / chip details OID length.
Definition: globalplatform.h:516
Definition: security.h:317
Definition: globalplatform.h:427
OPGP_AID aid
The Executable Load File AID.
Definition: globalplatform.h:428
BYTE numExecutableModules
Number of associated Executable Modules.
Definition: globalplatform.h:431
OPGP_AID associatedSecurityDomainAID
The associated Security Domain's AID.
Definition: globalplatform.h:433
BYTE lifeCycleState
The Executable Load File life cycle state.
Definition: globalplatform.h:429
Definition: security.h:368
Definition: security.h:337
Definition: globalplatform.h:578
DWORD publicKeyLength
Public Key Q length.
Definition: globalplatform.h:598
BOOL authorizationsPresent
TRUE if SCP11c authorizations (tag 'BF20') are present.
Definition: globalplatform.h:594
DWORD authorizationsLength
SCP11c authorizations value length.
Definition: globalplatform.h:596
DWORD expirationDateLength
Expiration Date length.
Definition: globalplatform.h:590
DWORD signatureLength
Certificate signature length.
Definition: globalplatform.h:602
DWORD subjectIdentifierLength
Subject Identifier length.
Definition: globalplatform.h:584
DWORD certificateSerialNumberLength
Certificate Serial Number length.
Definition: globalplatform.h:580
USHORT discretionaryDataTag
Optional discretionary data tag: 0x53 or 0x73.
Definition: globalplatform.h:591
DWORD discretionaryDataLength
Optional discretionary data length.
Definition: globalplatform.h:593
DWORD keyUsageLength
Key Usage length.
Definition: globalplatform.h:586
BOOL effectiveDatePresent
TRUE if Effective Date (tag '5F25') is present.
Definition: globalplatform.h:587
DWORD authorityIdentifierLength
CA-KLOC or KA-KLOC Identifier length.
Definition: globalplatform.h:582
DWORD keyParameterReferenceLength
Key Parameter Reference length.
Definition: globalplatform.h:600
Definition: globalplatform.h:608
BYTE maxPskLength
Max length of PSK in bytes (tag '84').
Definition: globalplatform.h:617
DWORD scpOptionsLength
SCP Options list length.
Definition: globalplatform.h:611
DWORD tlsCipherSuitesLength
Supported TLS cipher suites length.
Definition: globalplatform.h:616
BYTE supportedKeySizes
Supported key sizes (tag '82').
Definition: globalplatform.h:614
DWORD scpOptionsMaskLength
SCP Options mask length.
Definition: globalplatform.h:613
BYTE scpIdentifier
SCP Identifier (tag '80').
Definition: globalplatform.h:609
Definition: globalplatform.h:779
BYTE acceptDeletion
Acceptance policy for deletion (tag '83'). See GP211_SD_ACCEPT_ALL_AM.
Definition: globalplatform.h:784
BOOL personalizedStatePresent
TRUE to include tag '84' (length 0). If set an explicit SET STATUS or STORE DATA command is needed to...
Definition: globalplatform.h:786
BYTE acceptExtraditionAwayLength
Length of tag '87' value (1 or 2).
Definition: globalplatform.h:789
BYTE acceptExtraditionHereLength
Length of tag '82' value (1 or 2).
Definition: globalplatform.h:783
BYTE acceptDeletionLength
Length of tag '83' value (0 or 1).
Definition: globalplatform.h:785
BYTE scpEntriesLength
Number of SCP entries.
Definition: globalplatform.h:781
Definition: globalplatform.h:771
BYTE scpImpl
Secure Channel Implementation Option 'T'.
Definition: globalplatform.h:773
BYTE scpIdentifier
Secure Channel Protocol Identifier.
Definition: globalplatform.h:772
Definition: security.h:243
Definition: globalplatform.h:762
GP211_SIM_TOOLKIT_PARAMS toolkitParams
Toolkit application parameters.
Definition: globalplatform.h:765
BYTE accessDomainParameter
Access Domain Parameter (0x00, 0x02, 0xFF).
Definition: globalplatform.h:763
Definition: globalplatform.h:747
BYTE mslData
Minimum Security Level Data (MSLD) for Minimum SPI1 parameter (SPI1 first octet coding).
Definition: globalplatform.h:754
BYTE maxChannels
Maximum number of channels allowed.
Definition: globalplatform.h:753
BYTE maxTimers
Maximum number of timers allowed.
Definition: globalplatform.h:749
BYTE tarValuesLength
Length of TAR Value(s) field in bytes (0 or multiple of 3).
Definition: globalplatform.h:756
BYTE maxMenuEntries
Maximum number of menu entries (m).
Definition: globalplatform.h:751
BYTE priority
Priority level of the Toolkit application instance.
Definition: globalplatform.h:748
BYTE maxTextLength
Maximum text length for a menu entry.
Definition: globalplatform.h:750
Definition: globalplatform.h:725
BYTE rulesLength
Number of access rules.
Definition: globalplatform.h:727
Definition: globalplatform.h:713
BYTE aidLength
Length of AID (0 for shared UICC file system, or 5..16 for ADF).
Definition: globalplatform.h:714
BYTE accessDomainParameter
Access Domain Parameter (0x00, 0x02, 0xFF).
Definition: globalplatform.h:716
BYTE accessDomainDapLength
Access Domain DAP length in bytes.
Definition: globalplatform.h:719
Definition: globalplatform.h:733
BOOL accessParamsPresent
TRUE to include access application parameters (tag '81').
Definition: globalplatform.h:738
GP211_UICC_ACCESS_PARAMS accessParams
Access application parameters (tag '81').
Definition: globalplatform.h:739
BOOL adminAccessParamsPresent
TRUE to include administrative access parameters (tag '82').
Definition: globalplatform.h:740
GP211_UICC_TOOLKIT_APP_PARAMS toolkitParams
Toolkit application parameters (tag '80').
Definition: globalplatform.h:735
BOOL toolkitParamsPresent
TRUE to include toolkit application parameters (tag '80').
Definition: globalplatform.h:734
GP211_UICC_ACCESS_PARAMS adminAccessParams
Administrative access parameters (tag '82').
Definition: globalplatform.h:741
BYTE toolkitParametersDapLength
Toolkit parameters DAP length in bytes.
Definition: globalplatform.h:737
Definition: globalplatform.h:697
BYTE maxServices
Maximum number of services allowed.
Definition: globalplatform.h:707
BYTE maxChannels
Maximum number of channels allowed.
Definition: globalplatform.h:703
BYTE maxTextLength
Maximum text length for a menu entry.
Definition: globalplatform.h:700
BYTE tarValuesLength
Length of TAR Value(s) field in bytes (0 or multiple of 3).
Definition: globalplatform.h:706
BYTE maxTimers
Maximum number of timers allowed.
Definition: globalplatform.h:699
BYTE mslData
Minimum Security Level Data (MSLD) for Minimum SPI1 parameter (SPI1 first octet coding).
Definition: globalplatform.h:704
BYTE maxMenuEntries
Maximum number of menu entries (m).
Definition: globalplatform.h:701
BYTE priority
Priority level of the Toolkit application instance.
Definition: globalplatform.h:698
Definition: globalplatform.h:689
BYTE position
Position of the menu entry.
Definition: globalplatform.h:690
BYTE identifier
Identifier of the menu entry ('00' means do not care).
Definition: globalplatform.h:691
Definition: globalplatform.h:394
BYTE lifeCycleState
The Card Manager, Executable Load File or application life cycle state.
Definition: globalplatform.h:396
OPGP_AID aid
The AID.
Definition: globalplatform.h:395
OP201_APPLICATION_PRIVILEGES privileges
The Card Manager or application privileges.
Definition: globalplatform.h:397
Definition: security.h:271
Definition: security.h:306
Definition: security.h:283
Definition: security.h:228
Definition: globalplatform.h:385
BYTE AIDLength
The length of the AID.
Definition: globalplatform.h:386
Definition: connection.h:95
Definition: connection.h:106
Definition: globalplatform.h:448
USHORT operatingSystemReleaseLevel
Operating System release level.
Definition: globalplatform.h:453
USHORT icModuleFabricator
IC module fabricator.
Definition: globalplatform.h:458
DWORD icPrePersonalizationEquipmentId
IC pre-personalization equipment ID.
Definition: globalplatform.h:464
USHORT icType
IC Type.
Definition: globalplatform.h:450
USHORT icEmbeddingDate
IC embedding date (raw).
Definition: globalplatform.h:461
USHORT iccManufacturer
ICC manufacturer.
Definition: globalplatform.h:460
USHORT icModulePackagingDate
IC module packaging date (raw).
Definition: globalplatform.h:459
USHORT icPrePersonalizationEquipmentDate
IC pre-personalization equipment date (raw).
Definition: globalplatform.h:463
USHORT icSerialNumberLow
IC serial number (low).
Definition: globalplatform.h:456
USHORT operatingSystemId
Operating System ID.
Definition: globalplatform.h:451
USHORT icFabricator
IC Fabricator.
Definition: globalplatform.h:449
USHORT icPersonalizer
IC personalizer.
Definition: globalplatform.h:465
DWORD icPersonalizationEquipmentId
IC personalization equipment ID.
Definition: globalplatform.h:467
USHORT icFabricationDate
IC fabrication date (raw).
Definition: globalplatform.h:454
USHORT icSerialNumberHigh
IC serial number (high).
Definition: globalplatform.h:455
USHORT icPrePersonalizer
IC pre-personalizer.
Definition: globalplatform.h:462
USHORT operatingSystemReleaseDate
Operating System release date (raw).
Definition: globalplatform.h:452
USHORT icPersonalizationDate
IC personalization date (raw).
Definition: globalplatform.h:466
USHORT icBatchIdentifier
IC batch identifier.
Definition: globalplatform.h:457
Definition: error.h:58
Definition: globalplatform.h:439
DWORD numInstalledApplications
The number of the installed applications.
Definition: globalplatform.h:440
DWORD freeNonVolatileMemory
Free non volatile memory.
Definition: globalplatform.h:442
DWORD freeVolatileMemory
Free volatile memory.
Definition: globalplatform.h:441
Definition: globalplatform.h:404
OPGP_AID loadFileAID
The AID of the Load File.
Definition: globalplatform.h:406
DWORD loadFileSize
The size of the Load File.
Definition: globalplatform.h:405
BYTE numAppletAIDs
The number of applets contained in the Load File.
Definition: globalplatform.h:407
Definition: globalplatform.h:367
DWORD finished
Task is finished. If finished contains OPGP_TASK_FINISHED.
Definition: globalplatform.h:370
DWORD totalWork
The total work which needs to be done. If not known this contains OPGP_WORK_UNKNOWN.
Definition: globalplatform.h:369
PVOID parameters
Proprietary parameters for the function passed in with OPGP_PROGRESS_CALLBACK.
Definition: globalplatform.h:371
DWORD currentWork
The current work which is done. If not known this contains OPGP_WORK_UNKNOWN.
Definition: globalplatform.h:368
Definition: globalplatform.h:377
PVOID parameters
Proprietary parameters for the callback function. Passed in when the function is called.
Definition: globalplatform.h:379
void * PVOID
Pointer definition.
Definition: types.h:52
unsigned char BYTE
A Microsoft/Muscle BYTE definition.
Definition: types.h:67
unsigned char * PBYTE
A Microsoft/Muscle LPBYTE, pointer to unsigned char.
Definition: types.h:64
unsigned long * PDWORD
A Microsoft LPDWORD/Muscle pointer to a DWORD.
Definition: types.h:66
char * OPGP_STRING
A Microsoft/Muscle LPTSTR.
Definition: types.h:62
unsigned long DWORD
A Microsoft/Muscle DWORD definition.
Definition: types.h:68
const char * OPGP_CSTRING
A Microsoft/Muscle LPCTSTR.
Definition: types.h:63