globalplatform
globalplatform.h
Go to the documentation of this file.
1 /* Copyright (c) 2013, Karsten Ohme
2  * This file is part of GlobalPlatform.
3  *
4  * GlobalPlatform is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * GlobalPlatform is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with GlobalPlatform. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
22 #ifndef OPGP_GLOBALPLATFORM_H
23 #define OPGP_GLOBALPLATFORM_H
24 
25 #ifdef __cplusplus
26 extern "C"
27 {
28 #endif
29 
30 #ifdef WIN32
31 #include "stdafx.h"
32 #endif
33 
34 
35 #ifndef max
36 #define max(a,b) (((a)>(b))?(a):(b))
37 #endif
38 #ifndef min
39 #define min(a,b) (((a)>(b))?(b):(a))
40 #endif
41 
42 #include <stdio.h>
43 #include "types.h"
44 #include "unicode.h"
45 #include "error.h"
46 #include "errorcodes.h"
47 #include "library.h"
48 #include "connection.h"
49 #include "security.h"
50 #include "stringify.h"
51 
52 #define APDU_COMMAND_LEN 261
53 #define APDU_RESPONSE_LEN 258
54 
56 static const BYTE OPGP_VISA_DEFAULT_KEY[16] = { 0x40, 0x41, 0x42, 0x43, 0x44,
57  0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F };
58 
60 static const BYTE OPGP_GEMXPRESSO_DEFAULT_KEY[16] = { 0x47, 0x45, 0x4d, 0x58,
61  0x50, 0x52, 0x45, 0x53, 0x53, 0x4f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45 };
62 
63 static const BYTE GP211_CARD_MANAGER_AID[7] = { 0xA0, 0x00, 0x00, 0x01, 0x51,
64  0x00, 0x00 };
65 
68 static const BYTE GP231_ISD_AID[8] = { 0xA0, 0x00, 0x00, 0x01, 0x51, 0x00, 0x00,
69  0x00 };
70 
71 static const BYTE GP211_CARD_MANAGER_AID_ALT1[8] = { 0xA0, 0x00, 0x00, 0x00,
72  0x03, 0x00, 0x00, 0x00 };
73 
74 #define GP211_LIFE_CYCLE_LOAD_FILE_LOADED 0x01
75 #define GP211_LIFE_CYCLE_CARD_OP_READY 0x01
76 #define GP211_LIFE_CYCLE_CARD_INITIALIZED 0x07
77 #define GP211_LIFE_CYCLE_CARD_SECURED 0x0f
78 #define GP211_LIFE_CYCLE_CARD_LOCKED 0x7f
79 #define GP211_LIFE_CYCLE_CARD_TERMINATED 0xff
80 #define GP211_LIFE_CYCLE_APPLICATION_INSTALLED 0x03
81 #define GP211_LIFE_CYCLE_APPLICATION_SELECTABLE 0x07
82 #define GP211_LIFE_CYCLE_APPLICATION_LOCKED 0xff
83 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_INSTALLED 0x03
84 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_SELECTABLE 0x07
85 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_PERSONALIZED 0xff
86 #define GP211_LIFE_CYCLE_SECURITY_DOMAIN_LOCKED 0xff
87 
88 /* consts for MANAGE CHANNEL */
89 
90 #define GP211_MANAGE_CHANNEL_OPEN 0x00
91 #define GP211_MANAGE_CHANNEL_CLOSE 0x80
92 
96 typedef enum {
97  GP211_SECURITY_DOMAIN = 1u << (7 + 16),
98  GP211_DAP_VERIFICATION = 0xC0 << 16,
103  GP211_PIN_CHANGE_PRIVILEGE = 1u << (1 + 16),
105 
106  GP211_TRUSTED_PATH = 1u << (7 + 8),
107  GP211_AUTHORIZED_MANAGEMENT = 1u << (6 + 8),
108  GP211_TOKEN_VERIFICATION = 1u << (5 + 8),
109  GP211_GLOBAL_DELETE = 1u << (4 + 8),
110  GP211_GLOBAL_LOCK = 1u << (3 + 8),
111  GP211_GLOBAL_REGISTRY = 1u << (2 + 8),
112  GP211_FINAL_APPLICATION = 1u << (1 + 8),
113  GP211_GLOBAL_SERVICE = 1u << (0 + 8),
114 
120 
121 #define GP211_STATUS_APPLICATIONS 0x40
122 #define GP211_STATUS_ISSUER_SECURITY_DOMAIN 0x80
123 #define GP211_STATUS_LOAD_FILES 0x20
124 #define GP211_STATUS_LOAD_FILES_AND_EXECUTABLE_MODULES 0x10
125 
126 #define GP211_STATUS_FORMAT_NEW 0x02
127 #define GP211_STATUS_FORMAT_DEPRECATED 0x00
128 
129 // flags for STORE DATA
130 
131 #define STORE_DATA_ENCRYPTION_NO_INFORMATION 0x00
132 #define STORE_DATA_ENCRYPTION_APPLICATION_DEPENDENT 0x20
133 #define STORE_DATA_ENCRYPTION_RFU 0x40
134 #define STORE_DATA_ENCRYPTION_ENCRYPTED 0x60
135 
136 #define STORE_DATA_FORMAT_NO_INFORMATION 0x00
137 #define STORE_DATA_FORMAT_DGI 0x08
138 #define STORE_DATA_FORMAT_BER_TLV 0x10
139 #define STORE_DATA_FORMAT_RFU 0x18
140 
141 
142 // Some possible identifiers to retrieve card data with get_data() and put_data().
143 
144 static const BYTE GP211_GET_DATA_ISSUER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
145 static const BYTE GP211_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
146 
147 static const BYTE GP211_GET_DATA_CARD_IMAGE_NUMBER[2] = {0x00, 0x45};
148 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
149 
150 static const BYTE GP211_GET_DATA_ISSUER_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
151 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
152 static const BYTE GP211_GET_DATA_LIST_OF_APPLICATIONS[2] = {0x2F, 0x00};
153 static const BYTE GP211_GET_DATA_EXTENDED_CARD_RESOURCES[2] = {0xFF, 0x21};
154 
155 static const BYTE GP211_GET_DATA_CARD_DATA[2] = {0x00, 0x66};
156 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_MANAGEMENT_DATA[2] = {0x00, 0x66};
157 static const BYTE GP211_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
158 static const BYTE GP211_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
159 static const BYTE GP211_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
160 static const BYTE GP211_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
161 static const BYTE GP211_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
162 
167 static const BYTE GP211_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
168 
169 static const BYTE GP211_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
170 static const BYTE GP211_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
171 static const BYTE GP211_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
172 static const BYTE GP211_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
173 static const BYTE GP211_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
198 static const BYTE GP211_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
199 
200 static const BYTE GP211_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
201 
202 static const BYTE GP211_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
203 static const BYTE GP211_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
204 
205 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
206 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
207 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
208 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
209 static const BYTE GP211_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
210 static const BYTE GP211_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
211 static const BYTE GP211_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
212 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
213 static const BYTE GP211_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
214 
215 static const BYTE GP211_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
216 
217 static const BYTE GP211_GET_DATA_KEY_DIVERSIFICATION[2] = {0x00, 0xCF};
218 
219 // OP 2.0.1' specifific
220 
221 static const BYTE OP201_CARD_MANAGER_AID[7] = {0xA0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00};
222 
223 #define OP201_LIFE_CYCLE_LOAD_FILE_LOGICALLY_DELETED 0x00
224 #define OP201_LIFE_CYCLE_LOAD_FILE_LOADED 0x01
225 #define OP201_LIFE_CYCLE_CARD_MANAGER_OP_READY 0x01
226 #define OP201_LIFE_CYCLE_CARD_MANAGER_INITIALIZED 0x07
227 #define OP201_LIFE_CYCLE_CARD_MANAGER_SECURED 0x0f
228 #define OP201_LIFE_CYCLE_CARD_MANAGER_CM_LOCKED 0x7f
229 #define OP201_LIFE_CYCLE_CARD_MANAGER_TERMINATED 0xff
230 #define OP201_LIFE_CYCLE_APPLICATION_LOGICALLY_DELETED 0x00
231 #define OP201_LIFE_CYCLE_APPLICATION_INSTALLED 0x03
232 #define OP201_LIFE_CYCLE_APPLICATION_SELECTABLE 0x07
233 #define OP201_LIFE_CYCLE_APPLICATION_PERSONALIZED 0x0f
234 #define OP201_LIFE_CYCLE_APPLICATION_BLOCKED 0x7f
235 #define OP201_LIFE_CYCLE_APPLICATION_LOCKED 0xff
236 
240 typedef enum {
250 
251 #define OP201_STATUS_APPLICATIONS 0x40
252 #define OP201_STATUS_CARD_MANAGER 0x80
253 #define OP201_STATUS_LOAD_FILES 0x20
254 
255 
256 // Some possible identifiers to retrieve card data with get_data() and put_data().
257 static const BYTE OP201_GET_DATA_ISSUER_BIN[2] = {0x00, 0x42};
258 static const BYTE OP201_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
259 
260 static const BYTE OP201_GET_DATA_ISSUER_DATA[2] = {0x00, 0x45};
261 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
262 
263 static const BYTE OP201_GET_DATA_CARD_MANAGER_AID[2] = {0x00, 0x4F};
264 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
265 
266 static const BYTE OP201_GET_DATA_CARD_RECOGNITION_DATA[2] = {0x00, 0x66};
267 static const BYTE OP201_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
268 static const BYTE OP201_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
269 static const BYTE OP201_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
270 static const BYTE OP201_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
271 static const BYTE OP201_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
272 
277 static const BYTE OP201_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
278 
279 static const BYTE OP201_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
280 static const BYTE OP201_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
281 static const BYTE OP201_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
282 static const BYTE OP201_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
283 static const BYTE OP201_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
284 static const BYTE OP201_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
285 
286 static const BYTE OP201_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
287 
288 static const BYTE OP201_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
289 static const BYTE OP201_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
290 
291 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
292 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
293 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
294 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
295 static const BYTE OP201_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
296 static const BYTE OP201_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
297 static const BYTE OP201_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
298 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
299 static const BYTE OP201_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
300 
301 static const BYTE OP201_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
302 
303 #define OPGP_DERIVATION_METHOD_NONE 0
304 #define OPGP_DERIVATION_METHOD_VISA2 1
305 #define OPGP_DERIVATION_METHOD_EMV_CPS11 2
306 #define OPGP_DERIVATION_METHOD_VISA1 3
307 
308 #define OPGP_WORK_UNKNOWN -1
309 #define OPGP_TASK_FINISHED 1
310 
311 #define INIT_PROGRESS_CALLBACK_PARAMETERS(callbackParameters, callback) if (callback != NULL) {callbackParameters.parameters = callback->parameters; \
312  callbackParameters.finished = !OPGP_TASK_FINISHED;}
313 
317 typedef struct {
323 
327 typedef struct {
331 
335 typedef struct {
337  BYTE AID[16];
338 } OPGP_AID;
339 
340 
344 typedef struct {
349 
354 typedef struct {
358  OPGP_AID appletAIDs[32];
360 
361 
366 typedef struct {
370  BYTE versionNumber[2];
373 
377 typedef struct {
380  BYTE versionNumber[2];
382  OPGP_AID executableModules[64];
385 
389 typedef struct {
394 
398 typedef struct {
400  BYTE scp[16];
401  BYTE scpImpl[16];
403  BYTE cardConfigurationDetails[64];
405  BYTE cardChipDetails[64];
407  BYTE issuerSecurityDomainsTrustPointCertificateInformation[64];
409  BYTE issuerSecurityDomainCertificateInformation[64];
412 
414 OPGP_API
416 
418 OPGP_API
420  OPGP_EXTENDED_CARD_RESOURCE_INFORMATION *extendedCardResourceInformation);
421 
426 OPGP_API
428  BYTE cardElement, BYTE format, GP211_APPLICATION_DATA *applData,
429  GP211_EXECUTABLE_MODULES_DATA *executableData, PDWORD dataLength);
430 
432 OPGP_API
433 OPGP_ERROR_STATUS GP211_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE cardElement, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState);
434 
436 OPGP_API
438  BYTE baseKey[32], BYTE S_ENC[32], BYTE S_MAC[32],
439  BYTE DEK[32], DWORD keyLength, BYTE keySetVersion,
440  BYTE keyIndex, BYTE secureChannelProtocol,
441  BYTE secureChannelProtocolImpl,
442  BYTE securityLevel, BYTE derivationMethod, GP211_SECURITY_INFO *secInfo);
443 
445 OPGP_API
447  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16],
448  BYTE secureChannelProtocolImpl, BYTE sequenceCounter[2],
449  GP211_SECURITY_INFO *secInfo);
450 
452 OPGP_API
454 
456 OPGP_API
458  BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
459 
461 OPGP_API
462 OPGP_ERROR_STATUS GP211_get_data_iso7816_4(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
463 
465 OPGP_API
467 
469 OPGP_API
471  BYTE *secureChannelProtocol, BYTE *secureChannelProtocolImpl);
472 
474 OPGP_API
476  BYTE sequenceCounter[2]);
477 
479 OPGP_API
481  BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
482 
484 OPGP_API
486  BYTE tryLimit, PBYTE newPIN, DWORD newPINLength);
487 
489 OPGP_API
491  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE key[32], DWORD keyLength, BYTE keyType);
492 
494 OPGP_API
496  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE aesKey[32], DWORD keyLength);
497 
499 OPGP_API
501  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3DESKey[16]);
502 
504 OPGP_API
506  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
507 
509 OPGP_API
511  BYTE keySetVersion, BYTE newKeySetVersion, BYTE baseKey[32],
512  BYTE newS_ENC[32], BYTE newS_MAC[32], BYTE newDEK[32], DWORD keyLength);
513 
515 OPGP_API
517  BYTE keySetVersion, BYTE newKeySetVersion, BYTE baseKey[32],
518  BYTE newS_ENC[32], BYTE newS_MAC[32], BYTE newDEK[32], DWORD keyLength, BYTE keyType);
519 
521 OPGP_API
523  BYTE keySetVersion, BYTE keyIndex);
524 
526 OPGP_API
528  BYTE keyInformationTemplate,
529  GP211_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
530 
532 OPGP_API
534  OPGP_AID *AIDs, DWORD AIDsLength,
535  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataLength);
536 
538 OPGP_API
540  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
541  PBYTE securityDomainAID,
542  DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20], BYTE loadToken[128],
543  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
544  DWORD nonVolatileDataSpaceLimit);
545 
547 OPGP_API
549  DWORD securityDomainAIDLength,
550  PBYTE applicationAID, DWORD applicationAIDLength,
551  PBYTE extraditionTokenSignatureData,
552  PDWORD extraditionTokenSignatureDataLength);
553 
555 OPGP_API
556 OPGP_ERROR_STATUS GP211_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
557  PBYTE securityDomainAID,
558  DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20],
559  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
560  DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData,
561  PDWORD loadTokenSignatureDataLength);
562 
564 OPGP_API
566  DWORD executableLoadFileAIDLength,
567  PBYTE executableModuleAID, DWORD executableModuleAIDLength,
568  PBYTE applicationAID, DWORD applicationAIDLength,
569  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
570  DWORD nonVolatileDataSpaceLimit,
571  PBYTE installParameters, DWORD installParametersLength,
572  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
573 
575 OPGP_API
577  DWORD executableLoadFileAIDLength,
578  PBYTE executableModuleAID, DWORD executableModuleAIDLength,
579  PBYTE applicationAID, DWORD applicationAIDLength,
580  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
581  DWORD nonVolatileDataSpaceLimit,
582  PBYTE installParameters, DWORD installParametersLength,
583  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
584  PBYTE simSpecParams, DWORD simSpecParamsLength,
585  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
586 
588 OPGP_API
589 OPGP_ERROR_STATUS GP211_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
590  PBYTE securityDomainAID,
591  DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20],
592  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
593  DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128],
594  OPGP_STRING PEMKeyFileName, char *passPhrase);
595 
597 OPGP_API
598 OPGP_ERROR_STATUS GP211_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
599  PBYTE executableModuleAID,
600  DWORD executableModuleAIDLength, PBYTE applicationAID,
601  DWORD applicationAIDLength, BYTE applicationPrivileges,
602  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
603  PBYTE installParameters, DWORD installParametersLength,
604  BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
605 
607 OPGP_API
608 OPGP_ERROR_STATUS GP211_calculate_install_token_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
609  PBYTE executableModuleAID,
610  DWORD executableModuleAIDLength, PBYTE applicationAID,
611  DWORD applicationAIDLength, BYTE applicationPrivileges,
612  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
613  PBYTE installParameters, DWORD installParametersLength,
614  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
615  PBYTE simSpecParams, DWORD simSpecParamsLength,
616  BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
617 
619 OPGP_API
621  BYTE hash[64], DWORD hashLength, BYTE secureChannelProtocol);
622 
624 OPGP_API
626  GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
627  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
628 
630 OPGP_API
632  GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
633  PBYTE loadFileBuffer, DWORD loadFileBufSize,
634  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
635 
637 OPGP_API
639  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
640  DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength,
641  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
642  PBYTE installParameters, DWORD installParametersLength,
643  BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
644 
646 OPGP_API
648  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
649  DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength,
650  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
651  PBYTE installParameters, DWORD installParametersLength,
652  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
653  PBYTE simSpecParams, DWORD simSpecParamsLength,
654  BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
655 
657 OPGP_API
659  PBYTE applicationAID, DWORD applicationAIDLength,
660  BYTE applicationPrivileges, BYTE installToken[128],
661  GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
662 
664 OPGP_API
666  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
667  DWORD executableModuleAIDLength, PBYTE applicationAID,
668  DWORD applicationAIDLength, BYTE applicationPrivileges,
669  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
670  PBYTE installParameters, DWORD installParametersLength,
671  BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
672 
674 OPGP_API
676  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
677  DWORD executableModuleAIDLength, PBYTE applicationAID,
678  DWORD applicationAIDLength, BYTE applicationPrivileges,
679  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
680  PBYTE installParameters, DWORD installParametersLength,
681  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
682  PBYTE simSpecParams, DWORD simSpecParamsLength,
683  BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
684 
686 OPGP_API
688  GP211_SECURITY_INFO *secInfo,
689  PBYTE applicationAID,
690  DWORD applicationAIDLength);
691 
693 OPGP_API
695  PBYTE securityDomainAID,
696  DWORD securityDomainAIDLength, PBYTE applicationAID,
697  DWORD applicationAIDLength,
698  BYTE extraditionToken[128], GP211_RECEIPT_DATA *receiptData,
699  PDWORD receiptDataAvailable);
700 
702 OPGP_API
704  BYTE keySetVersion,
705  BYTE newKeySetVersion,
706  OPGP_STRING PEMKeyFileName, char *passPhrase,
707  BYTE receiptKey[32], DWORD keyLength);
708 
710 OPGP_API
712  PBYTE capdu, DWORD capduLength, PBYTE rapdu,
713  PDWORD rapduLength);
714 
716 OPGP_API
717 OPGP_ERROR_STATUS GP211_calculate_DAP(BYTE loadFileDataBlockHash[64], BYTE hashLength, PBYTE securityDomainAID,
718  DWORD securityDomainAIDLength,
719  BYTE DAPCalculationKey[32], DWORD keyLength, GP211_DAP_BLOCK *loadFileDataBlockSignature, BYTE secureChannelProtocol);
720 
722 OPGP_API
723 OPGP_ERROR_STATUS GP211_calculate_rsa_DAP(BYTE loadFileDataBlockHash[20], PBYTE securityDomainAID,
724  DWORD securityDomainAIDLength, OPGP_STRING PEMKeyFileName,
725  char *passPhrase, GP211_DAP_BLOCK *loadFileDataBlockSignature);
726 
728 OPGP_API
729 OPGP_ERROR_STATUS GP211_validate_delete_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
730  DWORD cardUniqueDataLength,
731  BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData,
732  PBYTE AID, DWORD AIDLength, BYTE secureChannelProtocol);
733 
735 OPGP_API
736 OPGP_ERROR_STATUS GP211_validate_install_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
737  DWORD cardUniqueDataLength,
738  BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData,
739  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
740  PBYTE applicationAID, DWORD applicationAIDLength, BYTE secureChannelProtocol);
741 
743 OPGP_API
744 OPGP_ERROR_STATUS GP211_validate_load_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
745  DWORD cardUniqueDataLength,
746  BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData,
747  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
748  PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE secureChannelProtocol);
749 
751 OPGP_ERROR_STATUS GP211_validate_extradition_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
752  DWORD cardUniqueDataLength,
753  BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData,
754  PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength,
755  PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength,
756  PBYTE applicationOrExecutableLoadFileAID,
757  DWORD applicationOrExecutableLoadFileAIDLength, BYTE secureChannelProtocol);
758 
760 OPGP_API
762  BYTE openClose, BYTE channelNumberToClose,
763  BYTE *channelNumberOpened);
764 
766 OPGP_API
767 OPGP_ERROR_STATUS OPGP_select_channel(OPGP_CARD_INFO *cardInfo, BYTE channelNumber);
768 
771  PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3]);
772 
775  BYTE keyType, PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3]);
776 
779  PBYTE data, DWORD dataLength,
780  PBYTE encryptedData, PDWORD encryptedDataLength);
781 
783 OPGP_API
785  BYTE encryptionFlags, BYTE formatFlags, BOOL responseDataExpected, PBYTE data, DWORD dataLength);
786 
788 OPGP_API
789 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);
790 
792 OPGP_API
793 OPGP_ERROR_STATUS OP201_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE cardElement, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState);
794 
795 
797 OPGP_API
798 OPGP_ERROR_STATUS OP201_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE baseKey[16], BYTE encKey[16], BYTE macKey[16],
799  BYTE kekKey[16], BYTE keySetVersion,
800  BYTE keyIndex, BYTE securityLevel, BYTE derivationMethod,
801  OP201_SECURITY_INFO *secInfo);
802 
804 OPGP_API
806  BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
807 
809 OPGP_API
811  BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
812 
814 OPGP_API
816  BYTE tryLimit, PBYTE newPIN, DWORD newPINLength, BYTE KEK[16]);
817 
819 OPGP_API
821  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3desKey[16]);
822 
824 OPGP_API
826  BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
827 
829 OPGP_API
831  BYTE keySetVersion, BYTE newKeySetVersion,
832  BYTE new_encKey[16], BYTE new_macKey[16], BYTE new_KEK[16]);
833 
835 OPGP_API
837  BYTE keySetVersion, BYTE keyIndex);
838 
840 OPGP_API
842  BYTE keyInformationTemplate,
843  OP201_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
844 
846 OPGP_API
848  OPGP_AID *AIDs, DWORD AIDsLength,
849  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataLength);
850 
852 OPGP_API
854  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
855  DWORD securityDomainAIDLength, BYTE loadFileDAP[20], BYTE loadToken[128],
856  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
857  DWORD nonVolatileDataSpaceLimit);
858 
860 OPGP_API
861 OPGP_ERROR_STATUS OP201_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
862  PBYTE securityDomainAID, DWORD securityDomainAIDLength,
863  BYTE loadFileDAP[20], DWORD nonVolatileCodeSpaceLimit,
864  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
865  PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength);
866 
868 OPGP_API
869 OPGP_ERROR_STATUS OP201_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
870  PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength,
871  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
872  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
873  DWORD nonVolatileDataSpaceLimit,
874  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
875  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
876 
878 OPGP_API
879 OPGP_ERROR_STATUS OP201_get_install_token_signature_data_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
880  PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength,
881  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
882  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
883  DWORD nonVolatileDataSpaceLimit,
884  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
885  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
886  PBYTE simSpecParams, DWORD simSpecParamsLength,
887  PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength);
888 
890 OPGP_API
891 OPGP_ERROR_STATUS OP201_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
892  DWORD securityDomainAIDLength, BYTE loadFileDAP[20],
893  DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
894  DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128],
895  OPGP_STRING PEMKeyFileName, char *passPhrase);
896 
898 OPGP_API
899 OPGP_ERROR_STATUS OP201_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
900  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
901  DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
902  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
903  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
904  BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
905 
907 OPGP_API
908 OPGP_ERROR_STATUS OP201_calculate_install_token_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
909  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
910  DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
911  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
912  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
913  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
914  PBYTE simSpecParams, DWORD simSpecParamsLength,
915  BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
916 
918 OPGP_API
920  OPGP_STRING executableLoadFileName, BYTE hash[20]);
921 
923 OPGP_API
925  OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
926  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
927 
929 OPGP_API
931  OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
932  PBYTE loadFilebuf, DWORD loadFileBufSize,
933  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
934 
936 OPGP_API
938  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
939  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
940  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
941  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
942  BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
943 
945 OPGP_API
947  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
948  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
949  BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
950  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
951  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
952  PBYTE simSpecParams, DWORD simSpecParamsLength,
953  BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
954 
956 OPGP_API
958  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
959  BYTE applicationPrivileges, BYTE installToken[128],
960  OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
961 
963 OPGP_API
964 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,
965  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
966  DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
967  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
968  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
969  BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
970 
972 OPGP_API
973 OPGP_ERROR_STATUS OP201_install_for_install_and_make_selectable_uicc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
974  DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
975  DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
976  DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
977  PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
978  PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength,
979  PBYTE simSpecParams, DWORD simSpecParamsLength,
980  BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
981 
983 OPGP_API
985  BYTE keySetVersion,
986  BYTE newKeySetVersion,
987  OPGP_STRING PEMKeyFileName, char *passPhrase,
988  BYTE receiptGenerationKey[16]);
989 
991 OPGP_API
993  PBYTE capdu, DWORD capduLength, PBYTE rapdu,
994  PDWORD rapduLength);
995 
997 OPGP_API
998 OPGP_ERROR_STATUS OP201_calculate_3des_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
999  BYTE DAP_verification_key[16], OP201_DAP_BLOCK *dapBlock);
1000 
1002 OPGP_API
1003 OPGP_ERROR_STATUS OP201_calculate_rsa_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
1004  OPGP_STRING PEMKeyFileName, char *passPhrase, OP201_DAP_BLOCK *dapBlock);
1005 
1007 OPGP_API
1008 OPGP_ERROR_STATUS OP201_validate_delete_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1009  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1010  PBYTE AID, DWORD AIDLength);
1011 
1013 OPGP_API
1014 OPGP_ERROR_STATUS OP201_validate_install_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1015  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1016  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1017  PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength);
1018 
1020 OPGP_API
1021 OPGP_ERROR_STATUS OP201_validate_load_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
1022  BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
1023  PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
1024  PBYTE securityDomainAID, DWORD securityDomainAIDLength);
1025 
1026 
1028 OPGP_API
1029 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);
1030 
1032 OPGP_API
1033 OPGP_ERROR_STATUS GP211_end_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE secureChannelProtocol);
1034 
1036 OPGP_API
1038 
1040 OPGP_API
1041 OPGP_ERROR_STATUS OPGP_cap_to_ijc(OPGP_CSTRING capFileName, OPGP_STRING ijcFileName);
1042 
1044 OPGP_API
1045 OPGP_ERROR_STATUS OPGP_extract_cap_file(OPGP_CSTRING fileName, PBYTE loadFileBuf, PDWORD loadFileBufSize);
1046 
1048 OPGP_API
1050 
1052 OPGP_API
1054  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1055 
1057 OPGP_API
1058 OPGP_ERROR_STATUS GP211_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, BYTE masterKey[16],
1059  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1060 
1062 OPGP_API
1064  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1065 
1067 OPGP_API
1069  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1070 
1072 OPGP_API
1073 OPGP_ERROR_STATUS OP201_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE AID, DWORD AIDLength, BYTE masterKey[16],
1074  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1075 
1077 OPGP_API
1079  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1080 
1082 OPGP_API
1083 OPGP_ERROR_STATUS VISA2_derive_keys(BYTE baseKeyDiversificationData[10], BYTE masterKey[16],
1084  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1085 
1087 OPGP_API
1088 OPGP_ERROR_STATUS VISA1_derive_keys(BYTE cardSerialNumber[8], BYTE masterKey[16],
1089  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1090 
1092 OPGP_API
1093 OPGP_ERROR_STATUS EMV_CPS11_derive_keys(BYTE baseKeyDiversificationData[10], BYTE masterKey[16],
1094  BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
1095 
1096 #ifdef __cplusplus
1097 }
1098 #endif
1099 #endif
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:5657
OPGP_API OPGP_ERROR_STATUS OP201_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE loadFileDAP[20], DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: Calculates a Load Token using PKCS#1.
Definition: globalplatform.c:6357
OPGP_API OPGP_ERROR_STATUS GP211_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE baseKey[32], BYTE S_ENC[32], BYTE S_MAC[32], BYTE DEK[32], DWORD keyLength, BYTE keySetVersion, BYTE keyIndex, BYTE secureChannelProtocol, BYTE secureChannelProtocolImpl, BYTE securityLevel, BYTE derivationMethod, GP211_SECURITY_INFO *secInfo)
GlobalPlatform2.1.1: Mutual authentication.
Definition: globalplatform.c:4447
OPGP_API OPGP_ERROR_STATUS OP201_install_for_install_and_make_selectable_uicc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs and makes an installed application selectable including UICC parameters.
Definition: globalplatform.c:5976
OPGP_API OPGP_ERROR_STATUS GP211_put_delegated_management_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase, BYTE receiptKey[32], DWORD keyLength)
GlobalPlatform2.1.1: Adds a key set for Delegated Management.
Definition: globalplatform.c:1209
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:6644
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, BYTE baseKey[32], BYTE newS_ENC[32], BYTE newS_MAC[32], BYTE newDEK[32], DWORD keyLength)
GlobalPlatform2.1.1: replaces or adds a secure channel key set consisting of S-ENC,...
Definition: globalplatform.c:1041
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:4932
OPGP_API OPGP_ERROR_STATUS GP211_get_card_recognition_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_CARD_RECOGNITION_DATA *cardData)
GlobalPlatform2.1.1: Return the card recognition data.
Definition: globalplatform.c:1623
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:2164
OPGP_API OPGP_ERROR_STATUS VISA1_derive_keys(BYTE cardSerialNumber[8], BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:4194
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:5336
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:5591
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:5137
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:717
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:5434
OPGP_API OPGP_ERROR_STATUS GP211_install_for_install_and_make_selectable_uicc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs and makes an installed application selectable including UICC parameters...
Definition: globalplatform.c:2871
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:5504
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs and makes an installed application selectable.
Definition: globalplatform.c:5917
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:6617
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:1458
GP211_APPLICATION_PRIVILEGES
Application privileges.
Definition: globalplatform.h:96
@ GP211_CARD_MANAGER_LOCK_PRIVILEGE
Application can lock the Card Manager.
Definition: globalplatform.h:100
@ GP211_CONTACTLESS_SELF_ACTIVATION
Application is capable of activating itself on the contactless interface without a prior request to t...
Definition: globalplatform.h:118
@ GP211_DELEGATED_MANAGEMENT
Security domain has delegated management right.
Definition: globalplatform.h:99
@ GP211_FINAL_APPLICATION
The only Application selectable in card Life Cycle State CARD_LOCKED and TERMINATED.
Definition: globalplatform.h:112
@ GP211_GLOBAL_LOCK
Application may lock or unlock any Application.
Definition: globalplatform.h:110
@ GP211_GLOBAL_SERVICE
Application provides services to other Applications on the card.
Definition: globalplatform.h:113
@ 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:102
@ GP211_SECURITY_DOMAIN
Application is security domain.
Definition: globalplatform.h:97
@ GP211_DAP_VERIFICATION
Application can require DAP verification for loading and installing applications.
Definition: globalplatform.h:98
@ GP211_CONTACTLESS_ACTIVATION
Application is capable of activating and deactivating any Application on the contactless interface.
Definition: globalplatform.h:117
@ GP211_CIPHERED_LOAD_FILE_DATA_BLOCK
The Security Domain requires that the Load File being associated to it is to be loaded ciphered.
Definition: globalplatform.h:116
@ GP211_PIN_CHANGE_PRIVILEGE
Application can change global PIN.
Definition: globalplatform.h:103
@ GP211_GLOBAL_REGISTRY
Application may access any entry in the GlobalPlatform Registry.
Definition: globalplatform.h:111
@ GP211_CARD_MANAGER_TERMINATE_PRIVILEGE
Application can terminate the card.
Definition: globalplatform.h:101
@ GP211_AUTHORIZED_MANAGEMENT
Application is capable of Card Content Management; Security Domain privilege shall also be set.
Definition: globalplatform.h:107
@ GP211_GLOBAL_DELETE
Application may delete any Card Content.
Definition: globalplatform.h:109
@ GP211_TRUSTED_PATH
Application is a Trusted Path for inter-application communication.
Definition: globalplatform.h:106
@ GP211_MANDATED_DAP_VERIFICATION
Security domain requires DAP verification for loading and installing applications.
Definition: globalplatform.h:104
@ GP211_TOKEN_VERIFICATION
Application is capable of verifying a token for Delegated Card Content Management.
Definition: globalplatform.h:108
@ GP211_RECEIPT_GENERATION
Application is capable of generating a receipt for Delegated Card Content Management.
Definition: globalplatform.h:115
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:5479
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:2213
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:3377
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:5310
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, BYTE applicationPrivileges, BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Makes an installed application selectable.
Definition: globalplatform.c:3098
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:5389
OPGP_API OPGP_ERROR_STATUS GP211_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates an Install Token using PKCS#1.
Definition: globalplatform.c:3437
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:6694
OP201_APPLICATION_PRIVILEGES
Application privileges.
Definition: globalplatform.h:240
@ OP201_DAP_VERIFICATION
Application can require DAP verification for loading and installing applications.
Definition: globalplatform.h:242
@ OP201_MANDATED_DAP_VERIFICATION
Security domain requires DAP verification for loading and installing applications.
Definition: globalplatform.h:248
@ OP201_DEFAULT_SELECTED
Application is default selected.
Definition: globalplatform.h:246
@ OP201_CARD_MANAGER_LOCK_PRIVILEGE
Application can lock the Card Manager.
Definition: globalplatform.h:244
@ OP201_SECURITY_DOMAIN
Application is security domain.
Definition: globalplatform.h:241
@ OP201_CARD_MANAGER_TERMINATE_PRIVILEGE
Application can terminate the card.
Definition: globalplatform.h:245
@ OP201_DELEGATED_MANAGEMENT
Security domain has delegated management right.
Definition: globalplatform.h:243
@ OP201_PIN_CHANGE_PRIVILEGE
Application can change global PIN.
Definition: globalplatform.h:247
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs an application on the card.
Definition: globalplatform.c:5803
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:1437
OPGP_API OPGP_ERROR_STATUS OP201_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE loadFileDAP[20], DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength)
Open Platform: Function to retrieve the data to sign by the Card Issuer in a Load Token.
Definition: globalplatform.c:6235
OPGP_API OPGP_ERROR_STATUS OP201_VISA1_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:4124
OPGP_API OPGP_ERROR_STATUS OP201_EMV_CPS11_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the EMV CPS 1.1 key derivation scheme.
Definition: globalplatform.c:4266
OPGP_API OPGP_ERROR_STATUS GP211_get_sequence_counter(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE sequenceCounter[2])
GlobalPlatform2.1.1: This returns the current Sequence Counter.
Definition: globalplatform.c:5019
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs an application on the card.
Definition: globalplatform.c:2656
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, BYTE applicationPrivileges, BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Makes an installed application selectable.
Definition: globalplatform.c:6021
OPGP_API OPGP_ERROR_STATUS GP211_validate_install_receipt(DWORD confirmationCounter, PBYTE cardUniqueData, DWORD cardUniqueDataLength, BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Validates an Install Receipt.
Definition: globalplatform.c:3836
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:1583
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:5064
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, BYTE loadFileDAP[20], BYTE loadToken[128], DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit)
Open Platform: Prepares the card for loading an application.
Definition: globalplatform.c:5759
OPGP_API OPGP_ERROR_STATUS GP211_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE cardElement, 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:2007
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength)
Open Platform: Function to retrieve the data to sign by the Card Issuer in an Install Token.
Definition: globalplatform.c:6064
OPGP_API OPGP_ERROR_STATUS GP211_get_secure_channel_protocol_details(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE *secureChannelProtocol, BYTE *secureChannelProtocolImpl)
GlobalPlatform2.1.1: This returns the Secure Channel Protocol and the Secure Channel Protocol impleme...
Definition: globalplatform.c:1787
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 receiptDataLength)
GlobalPlatform2.1.1: Deletes a Executable Load File or an application.
Definition: globalplatform.c:1300
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:1389
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:5531
OPGP_API OPGP_ERROR_STATUS EMV_CPS11_derive_keys(BYTE baseKeyDiversificationData[10], BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the EMV CPS11 derivation scheme.
Definition: globalplatform.c:4324
OPGP_API OPGP_ERROR_STATUS VISA2_derive_keys(BYTE baseKeyDiversificationData[10], BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:4037
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:2154
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:6669
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:6562
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:867
OPGP_API OPGP_ERROR_STATUS GP211_install_for_install_uicc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs an application on the card including UICC parameters.
Definition: globalplatform.c:2708
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:5279
OPGP_API OPGP_ERROR_STATUS GP211_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20], DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates a Load Token using PKCS#1.
Definition: globalplatform.c:3644
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:3039
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:6510
OPGP_API OPGP_ERROR_STATUS GP211_put_secure_channel_keys_with_key_type(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE keySetVersion, BYTE newKeySetVersion, BYTE baseKey[32], BYTE newS_ENC[32], BYTE newS_MAC[32], BYTE newDEK[32], DWORD keyLength, BYTE keyType)
GlobalPlatform2.1.1: replaces or adds a secure channel key set consisting of S-ENC,...
Definition: globalplatform.c:1079
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:5412
OPGP_API OPGP_ERROR_STATUS GP211_VISA1_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 1 key derivation scheme.
Definition: globalplatform.c:4151
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:5705
OPGP_API OPGP_ERROR_STATUS OP201_calculate_install_token_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: Calculates an Install Token using PKCS#1 including UICC parameters.
Definition: globalplatform.c:6199
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:5363
OPGP_API OPGP_ERROR_STATUS GP211_get_install_token_signature_data_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, 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 inc...
Definition: globalplatform.c:3243
OPGP_ERROR_STATUS OPGP_calculate_key_check_value_with_key_type(GP211_SECURITY_INFO *secInfo, BYTE keyType, PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3])
Calculates the key check value of a key.
Definition: globalplatform.c:6791
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:857
OPGP_API OPGP_ERROR_STATUS OPGP_select_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE AID, DWORD AIDLength)
GlobalPlatform2.1.1: Selects an application on a card by AID.
Definition: globalplatform.c:660
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Installs and makes an installed application selectable.
Definition: globalplatform.c:2819
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, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:3984
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:649
OPGP_ERROR_STATUS OPGP_calculate_key_check_value(GP211_SECURITY_INFO *secInfo, PBYTE keyData, DWORD keyDataLength, BYTE keyCheckValue[3])
Calculates the key check value of a key.
Definition: globalplatform.c:6776
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, BYTE extraditionToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
GlobalPlatform2.1.1: Associates an application with another Security Domain.
Definition: globalplatform.c:2976
OPGP_API OPGP_ERROR_STATUS GP211_calculate_load_file_data_block_hash(OPGP_STRING executableLoadFileName, BYTE hash[64], DWORD hashLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Calculates a Load File Data Block Hash.
Definition: globalplatform.c:3678
OPGP_API OPGP_ERROR_STATUS OP201_set_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, BYTE cardElement, PBYTE AID, DWORD AIDLength, BYTE lifeCycleState)
Open Platform: Sets the life cycle status of Applications, Security Domains or the Card Manager.
Definition: globalplatform.c:5573
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:3768
OPGP_API OPGP_ERROR_STATUS GP211_validate_load_receipt(DWORD confirmationCounter, PBYTE cardUniqueData, DWORD cardUniqueDataLength, BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Validates a Load Receipt.
Definition: globalplatform.c:3806
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:6816
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:2055
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:2185
OPGP_API OPGP_ERROR_STATUS GP211_EMV_CPS11_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the EMV CPS 1.1 key derivation scheme.
Definition: globalplatform.c:4293
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, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, 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:3197
OPGP_API OPGP_ERROR_STATUS OP201_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE baseKey[16], BYTE encKey[16], BYTE macKey[16], BYTE kekKey[16], BYTE keySetVersion, BYTE keyIndex, BYTE securityLevel, BYTE derivationMethod, OP201_SECURITY_INFO *secInfo)
Open Platform: Mutual authentication.
Definition: globalplatform.c:6721
OPGP_API OPGP_ERROR_STATUS OP201_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
Open Platform: Calculates an Install Token using PKCS#1.
Definition: globalplatform.c:6154
OPGP_API OPGP_ERROR_STATUS GP211_calculate_DAP(BYTE loadFileDataBlockHash[64], BYTE hashLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE DAPCalculationKey[32], DWORD keyLength, GP211_DAP_BLOCK *loadFileDataBlockSignature, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Calculates a Load File Data Block Signature using AES or 3DES.
Definition: globalplatform.c:3734
OPGP_API OPGP_ERROR_STATUS OP201_get_install_token_signature_data_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, PBYTE installTokenSignatureData, PDWORD installTokenSignatureDataLength)
Open Platform: Function to retrieve the data to sign by the Card Issuer in an Install Token including...
Definition: globalplatform.c:6111
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:6397
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:2145
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:815
OPGP_API OPGP_ERROR_STATUS GP211_validate_delete_receipt(DWORD confirmationCounter, PBYTE cardUniqueData, DWORD cardUniqueDataLength, BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE AID, DWORD AIDLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Validates a Load Receipt.
Definition: globalplatform.c:3864
OPGP_API OPGP_ERROR_STATUS GP211_calculate_install_token_uicc(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID, DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE installParameters, DWORD installParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase)
GlobalPlatform2.1.1: Calculates an Install Token using PKCS#1 including UICC parameters.
Definition: globalplatform.c:3482
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:5222
OPGP_API OPGP_ERROR_STATUS OP201_install_for_install_uicc(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength, BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength, PBYTE uiccSystemSpecParams, DWORD uiccSystemSpecParamsLength, PBYTE simSpecParams, DWORD simSpecParamsLength, BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable)
Open Platform: Installs an application on the card including UICC parameters.
Definition: globalplatform.c:5861
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:5200
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:2136
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:1500
OPGP_API OPGP_ERROR_STATUS GP211_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID, DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20], 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:3517
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:1229
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:1935
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, BYTE masterKey[16], BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16])
Derives the static keys from a master key according the VISA 2 key derivation scheme.
Definition: globalplatform.c:3955
OPGP_ERROR_STATUS GP211_validate_extradition_receipt(DWORD confirmationCounter, PBYTE cardUniqueData, DWORD cardUniqueDataLength, BYTE receiptKey[32], DWORD keyLength, GP211_RECEIPT_DATA receiptData, PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength, PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength, PBYTE applicationOrExecutableLoadFileAID, DWORD applicationOrExecutableLoadFileAIDLength, BYTE secureChannelProtocol)
GlobalPlatform2.1.1: Validates an Extradition Receipt.
Definition: globalplatform.c:3893
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:5041
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, BYTE loadFileDataBlockHash[20], BYTE loadToken[128], DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit)
GlobalPlatform2.1.1: Prepares the card for loading an application.
Definition: globalplatform.c:2566
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:1832
Definition: globalplatform.h:366
BYTE lifeCycleState
The Issuer Security Domain, Security Domains, Executable Load Files and Application life cycle state.
Definition: globalplatform.h:368
OPGP_AID aid
The AID.
Definition: globalplatform.h:367
OPGP_AID associatedSecurityDomainAID
The associated Security Domain's AID.
Definition: globalplatform.h:371
GP211_APPLICATION_PRIVILEGES privileges
The Issuer Security Domain, Security Domains or Application privileges. Has no meaning for Executable...
Definition: globalplatform.h:369
Definition: globalplatform.h:398
DWORD cardChipDetailsLength
Card configuration details length.
Definition: globalplatform.h:406
DWORD issuerSecurityDomainsTrustPointCertificateInformationLength
Issuer Security Domain’s Trust Point certificate information length.
Definition: globalplatform.h:408
DWORD cardConfigurationDetailsLength
Card configuration details length.
Definition: globalplatform.h:404
DWORD scpLength
The length of the SCP.
Definition: globalplatform.h:402
DWORD issuerSecurityDomainCertificateInformationLength
Issuer Security Domain certificate information length.
Definition: globalplatform.h:410
DWORD version
The GlobalPlatform version.
Definition: globalplatform.h:399
Definition: security.h:269
Definition: globalplatform.h:377
OPGP_AID aid
The Executable Load File AID.
Definition: globalplatform.h:378
BYTE numExecutableModules
Number of associated Executable Modules.
Definition: globalplatform.h:381
OPGP_AID associatedSecurityDomainAID
The associated Security Domain's AID.
Definition: globalplatform.h:383
BYTE lifeCycleState
The Executable Load File life cycle state.
Definition: globalplatform.h:379
Definition: security.h:293
Definition: security.h:280
Definition: security.h:203
Definition: globalplatform.h:344
BYTE lifeCycleState
The Card Manager, Executable Load File or application life cycle state.
Definition: globalplatform.h:346
OPGP_AID aid
The AID.
Definition: globalplatform.h:345
OP201_APPLICATION_PRIVILEGES privileges
The Card Manager or application privileges.
Definition: globalplatform.h:347
Definition: security.h:231
Definition: security.h:258
Definition: security.h:243
Definition: security.h:188
Definition: globalplatform.h:335
BYTE AIDLength
The length of the AID.
Definition: globalplatform.h:336
Definition: connection.h:69
Definition: connection.h:80
Definition: error.h:45
Definition: globalplatform.h:389
DWORD numInstalledApplications
The number of the installed applications.
Definition: globalplatform.h:390
DWORD freeNonVolatileMemory
Free non volatile memory.
Definition: globalplatform.h:392
DWORD freeVolatileMemory
Free volatile memory.
Definition: globalplatform.h:391
Definition: globalplatform.h:354
OPGP_AID loadFileAID
The AID of the Load File.
Definition: globalplatform.h:356
DWORD loadFileSize
The size of the Load File.
Definition: globalplatform.h:355
BYTE numAppletAIDs
The number of applets contained in the Load File.
Definition: globalplatform.h:357
Definition: globalplatform.h:317
DWORD finished
Task is finished. If finished contains OPGP_TASK_FINISHED.
Definition: globalplatform.h:320
DWORD totalWork
The total work which needs to be done. If not known this contains OPGP_WORK_UNKNOWN.
Definition: globalplatform.h:319
PVOID parameters
Proprietary parameters for the function passed in with OPGP_PROGRESS_CALLBACK.
Definition: globalplatform.h:321
DWORD currentWork
The current work which is done. If not known this contains OPGP_WORK_UNKNOWN.
Definition: globalplatform.h:318
Definition: globalplatform.h:327
PVOID callback
The callback function. The must accept a OPGP_PROGRESS_CALLBACK_PARAMETERS parameter and return void,...
Definition: globalplatform.h:328
PVOID parameters
Proprietary parameters for the callback function. Passed in when the function is called.
Definition: globalplatform.h:329
void * PVOID
Pointer definition.
Definition: types.h:36
unsigned char BYTE
A Microsoft/Muscle BYTE definition.
Definition: types.h:51
unsigned char * PBYTE
A Microsoft/Muscle LPBYTE, pointer to unsigned char.
Definition: types.h:48
unsigned long * PDWORD
A Microsoft LPDWORD/Muscle pointer to a DWORD.
Definition: types.h:50
char * OPGP_STRING
A Microsoft/Muscle LPTSTR.
Definition: types.h:46
unsigned long DWORD
A Microsoft/Muscle DWORD definition.
Definition: types.h:52
const char * OPGP_CSTRING
A Microsoft/Muscle LPCTSTR.
Definition: types.h:47