00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00022 #ifndef OPGP_GLOBALPLATFORM_H
00023 #define OPGP_GLOBALPLATFORM_H
00024
00025 #ifdef __cplusplus
00026 extern "C"
00027 {
00028 #endif
00029
00030 #ifdef WIN32
00031 #include "stdafx.h"
00032 #endif
00033
00034
00035 #ifndef max
00036 #define max(a,b) (((a)>(b))?(a):(b))
00037 #endif
00038
00039 #include <stdio.h>
00040 #include "types.h"
00041 #include "unicode.h"
00042 #include "error.h"
00043 #include "errorcodes.h"
00044 #include "library.h"
00045 #include "connection.h"
00046 #include "security.h"
00047 #include "stringify.h"
00048
00049
00051 static const BYTE OPGP_VISA_DEFAULT_KEY[16] = {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F};
00052
00054 static const BYTE OPGP_GEMXPRESSO_DEFAULT_KEY[16] = {0x47, 0x45, 0x4d, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x4f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45};
00055
00056
00057
00058 static const BYTE GP211_CARD_MANAGER_AID[7] = {0xA0, 0x00, 0x00, 0x01, 0x51, 0x00, 0x00};
00059
00060 static const BYTE GP211_CARD_MANAGER_AID_ALT1[8] = {0xA0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00};
00061
00062 static const BYTE GP211_LIFE_CYCLE_LOAD_FILE_LOADED = 0x01;
00063 static const BYTE GP211_LIFE_CYCLE_CARD_OP_READY = 0x01;
00064 static const BYTE GP211_LIFE_CYCLE_CARD_INITIALIZED = 0x07;
00065 static const BYTE GP211_LIFE_CYCLE_CARD_SECURED = 0x0f;
00066 static const BYTE GP211_LIFE_CYCLE_CARD_LOCKED = 0x7f;
00067 static const BYTE GP211_LIFE_CYCLE_CARD_TERMINATED = 0xff;
00068 static const BYTE GP211_LIFE_CYCLE_APPLICATION_INSTALLED = 0x03;
00069 static const BYTE GP211_LIFE_CYCLE_APPLICATION_SELECTABLE = 0x07;
00070 static const BYTE GP211_LIFE_CYCLE_APPLICATION_LOCKED = 0xff;
00071 static const BYTE GP211_LIFE_CYCLE_SECURITY_DOMAIN_INSTALLED = 0x03;
00072 static const BYTE GP211_LIFE_CYCLE_SECURITY_DOMAIN_SELECTABLE = 0x07;
00073 static const BYTE GP211_LIFE_CYCLE_SECURITY_DOMAIN_PERSONALIZED = 0xff;
00074 static const BYTE GP211_LIFE_CYCLE_SECURITY_DOMAIN_LOCKED = 0xff;
00075
00076
00077
00078 static const BYTE GP211_MANAGE_CHANNEL_OPEN = 0x00;
00079 static const BYTE GP211_MANAGE_CHANNEL_CLOSE = 0x80;
00080
00081
00082 static const BYTE GP211_APPLICATION_PRIVILEGE_SECURITY_DOMAIN = 0x80;
00083 static const BYTE GP211_APPLICATION_PRIVILEGE_DAP_VERIFICATION = 0x40;
00084 static const BYTE GP211_APPLICATION_PRIVILEGE_DELEGATED_MANAGEMENT = 0x20;
00085 static const BYTE GP211_APPLICATION_PRIVILEGE_CARD_MANAGER_LOCK_PRIVILEGE = 0x10;
00086 static const BYTE GP211_APPLICATION_PRIVILEGE_CARD_MANAGER_TERMINATE_PRIVILEGE = 0x08;
00087 static const BYTE GP211_APPLICATION_PRIVILEGE_DEFAULT_SELECTED = 0x04;
00088 static const BYTE GP211_APPLICATION_PRIVILEGE_PIN_CHANGE_PRIVILEGE = 0x02;
00089 static const BYTE GP211_APPLICATION_PRIVILEGE_MANDATED_DAP_VERIFICATION = 0x01;
00090
00091 static const BYTE GP211_STATUS_APPLICATIONS = 0x40;
00092 static const BYTE GP211_STATUS_ISSUER_SECURITY_DOMAIN = 0x80;
00093 static const BYTE GP211_STATUS_LOAD_FILES = 0x20;
00094 static const BYTE GP211_STATUS_LOAD_FILES_AND_EXECUTABLE_MODULES = 0x10;
00095
00096
00097
00098
00099
00100
00101
00102 static const BYTE GP211_GET_DATA_ISSUER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
00103 static const BYTE GP211_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
00104
00105 static const BYTE GP211_GET_DATA_CARD_IMAGE_NUMBER[2] = {0x00, 0x45};
00106 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
00107
00108 static const BYTE GP211_GET_DATA_ISSUER_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
00109 static const BYTE GP211_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
00110
00111 static const BYTE GP211_GET_DATA_CARD_DATA[2] = {0x00, 0x66};
00112 static const BYTE GP211_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
00113 static const BYTE GP211_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
00114 static const BYTE GP211_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
00115 static const BYTE GP211_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
00116 static const BYTE GP211_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
00117
00122 static const BYTE GP211_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
00123
00124 static const BYTE GP211_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
00125 static const BYTE GP211_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
00126 static const BYTE GP211_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
00127 static const BYTE GP211_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
00128 static const BYTE GP211_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
00129 static const BYTE GP211_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
00130
00131 static const BYTE GP211_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
00132
00133 static const BYTE GP211_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
00134 static const BYTE GP211_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
00135
00136 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
00137 static const BYTE GP211_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
00138 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
00139 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
00140 static const BYTE GP211_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
00141 static const BYTE GP211_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
00142 static const BYTE GP211_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
00143 static const BYTE GP211_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
00144 static const BYTE GP211_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
00145
00146 static const BYTE GP211_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
00147
00148 static const BYTE GP211_GET_DATA_KEY_DIVERSIFICATION[2] = {0x00, 0xCF};
00149
00150
00151
00152
00153
00154
00155 static const BYTE OP201_CARD_MANAGER_AID[7] = {0xA0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00};
00156
00157
00158 static const BYTE OP201_LIFE_CYCLE_LOAD_FILE_LOGICALLY_DELETED = 0x00;
00159 static const BYTE OP201_LIFE_CYCLE_LOAD_FILE_LOADED = 0x01;
00160 static const BYTE OP201_LIFE_CYCLE_CARD_MANAGER_OP_READY = 0x01;
00161 static const BYTE OP201_LIFE_CYCLE_CARD_MANAGER_INITIALIZED = 0x07;
00162 static const BYTE OP201_LIFE_CYCLE_CARD_MANAGER_SECURED = 0x0f;
00163 static const BYTE OP201_LIFE_CYCLE_CARD_MANAGER_CM_LOCKED = 0x7f;
00164 static const BYTE OP201_LIFE_CYCLE_CARD_MANAGER_TERMINATED = 0xff;
00165 static const BYTE OP201_LIFE_CYCLE_APPLICATION_LOGICALLY_DELETED = 0x00;
00166 static const BYTE OP201_LIFE_CYCLE_APPLICATION_INSTALLED = 0x03;
00167 static const BYTE OP201_LIFE_CYCLE_APPLICATION_SELECTABLE = 0x07;
00168 static const BYTE OP201_LIFE_CYCLE_APPLICATION_PERSONALIZED = 0x0f;
00169 static const BYTE OP201_LIFE_CYCLE_APPLICATION_BLOCKED = 0x7f;
00170 static const BYTE OP201_LIFE_CYCLE_APPLICATION_LOCKED = 0xff;
00171
00172 static const BYTE OP201_APPLICATION_PRIVILEGE_SECURITY_DOMAIN = 0x80;
00173 static const BYTE OP201_APPLICATION_PRIVILEGE_DAP_VERIFICATION = 0x40;
00174 static const BYTE OP201_APPLICATION_PRIVILEGE_DELEGATED_MANAGEMENT = 0x20;
00175 static const BYTE OP201_APPLICATION_PRIVILEGE_CARD_MANAGER_LOCK_PRIVILEGE = 0x10;
00176 static const BYTE OP201_APPLICATION_PRIVILEGE_CARD_MANAGER_TERMINATE_PRIVILEGE = 0x08;
00177 static const BYTE OP201_APPLICATION_PRIVILEGE_DEFAULT_SELECTED = 0x04;
00178 static const BYTE OP201_APPLICATION_PRIVILEGE_PIN_CHANGE_PRIVILEGE = 0x02;
00179 static const BYTE OP201_APPLICATION_PRIVILEGE_MANDATED_DAP_VERIFICATION = 0x01;
00180
00181 static const BYTE OP201_STATUS_APPLICATIONS = 0x40;
00182 static const BYTE OP201_STATUS_CARD_MANAGER = 0x80;
00183 static const BYTE OP201_STATUS_LOAD_FILES = 0x20;
00184
00185
00186
00187 static const BYTE OP201_GET_DATA_ISSUER_BIN[2] = {0x00, 0x42};
00188 static const BYTE OP201_GET_DATA_APPLICATION_PROVIDER_IDENTIFICATION_NUMBER[2] = {0x00, 0x42};
00189
00190 static const BYTE OP201_GET_DATA_ISSUER_DATA[2] = {0x00, 0x45};
00191 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_IMAGE_NUMBER[2] = {0x00, 0x45};
00192
00193 static const BYTE OP201_GET_DATA_CARD_MANAGER_AID[2] = {0x00, 0x4F};
00194 static const BYTE OP201_GET_DATA_SECURITY_DOMAIN_AID[2] = {0x00, 0x4F};
00195
00196 static const BYTE OP201_GET_DATA_CARD_RECOGNITION_DATA[2] = {0x00, 0x66};
00197 static const BYTE OP201_GET_DATA_SEQUENCE_COUNTER_DEFAULT_KEY_VERSION[2] = {0x00, 0xC1};
00198 static const BYTE OP201_GET_DATA_CONFIRMATION_COUNTER[2] = {0x00, 0xC2};
00199 static const BYTE OP201_GET_DATA_FREE_EEPROM_MEMORY_SPACE[2] = {0x00, 0xC6};
00200 static const BYTE OP201_GET_DATA_FREE_COR_RAM[2] = {0x00, 0xC7};
00201 static const BYTE OP201_GET_DATA_DIVERSIFICATION_DATA[2] = {0x00, 0xCF};
00202
00207 static const BYTE OP201_GET_DATA_KEY_INFORMATION_TEMPLATE[2] = {0x00, 0xE0};
00208
00209 static const BYTE OP201_GET_DATA_CPLC_PERSONALIZATION_DATE[2] = {0x9F, 0x66};
00210 static const BYTE OP201_GET_DATA_CPLC_PRE_PERSONALIZATION_DATE[2] = {0x9F, 0x67};
00211 static const BYTE OP201_GET_DATA_CPLC_ICC_MANUFACTURER_EMBEDDING_DATE[2] = {0x9F, 0x68};
00212 static const BYTE OP201_GET_DATA_CPLC_MODULE_FABRICATOR_PACKAGING_DATE[2] = {0x9F, 0x69};
00213 static const BYTE OP201_GET_DATA_CPLC_FABRICATION_DATE_SERIAL_NUMBER_BATCH_IDENTIFIER[2] = {0x9F, 0x6A};
00214 static const BYTE OP201_GET_DATA_CPLC_WHOLE_CPLC[2] = {0x9F, 0x7F};
00215
00216 static const BYTE OP201_GET_DATA_FCI_DATA[2] = {0xBF, 0x0C};
00217
00218 static const BYTE OP201_GET_DATA_PROTOCOL[2] = {0xDF, 0x70};
00219 static const BYTE OP201_GET_DATA_ATR_HISTRORICAL_BYTES[2] = {0xDF, 0x71};
00220
00221 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_FINGERPRINT[2] = {0xDF, 0x76};
00222 static const BYTE OP201_GET_DATA_EF_PROD_DATA_INITIALIZATION_DATA[2] = {0xDF, 0x77};
00223 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PRODUCTION_KEY_INDEX[2] = {0xDF, 0x78};
00224 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROTOCOL_VERSION[2] = {0xDF, 0x79};
00225 static const BYTE OP201_GET_DATA_EF_PROD_DATA_CHECKSUM[2] = {0xDF, 0x7A};
00226 static const BYTE OP201_GET_DATA_EF_PROD_DATA_SOFTWARE_VERSION[2] = {0xDF, 0x7B};
00227 static const BYTE OP201_GET_DATA_EF_PROD_DATA_RFU[2] = {0xDF, 0x7C};
00228 static const BYTE OP201_GET_DATA_EF_PROD_DATA_PROFILE_WITH_PROFILE_VERSION[2] = {0xDF, 0x7D};
00229 static const BYTE OP201_GET_DATA_EF_PROD_DATA_LOCATION_MACHINE_DATE_TIME[2] = {0xDF, 0x7E};
00230
00231 static const BYTE OP201_GET_DATA_WHOLE_EF_PROD[2] = {0xDF, 0x7F};
00232
00233 static const BYTE OPGP_DERIVATION_METHOD_NONE = 0;
00234 static const BYTE OPGP_DERIVATION_METHOD_VISA2 = 1;
00235 static const BYTE OPGP_DERIVATION_METHOD_EMV_CPS11 = 2;
00236
00237 #define OPGP_WORK_UNKNOWN -1 //!< The amount of work is not known.
00238 #define OPGP_TASK_FINISHED 1 //!< The task is finished.
00239
00240 #define INIT_PROGRESS_CALLBACK_PARAMETERS(callbackParameters, callback) if (callback != NULL) {callbackParameters.parameters = callback->parameters; \
00241 callbackParameters.finished = !OPGP_TASK_FINISHED;}
00242
00246 typedef struct {
00247 DWORD currentWork;
00248 DWORD totalWork;
00249 DWORD finished;
00250 PVOID parameters;
00251 } OPGP_PROGRESS_CALLBACK_PARAMETERS;
00252
00256 typedef struct {
00257 PVOID callback;
00258 PVOID parameters;
00259 } OPGP_PROGRESS_CALLBACK;
00260
00264 typedef struct {
00265 BYTE AIDLength;
00266 BYTE AID[16];
00267 BYTE lifeCycleState;
00268 BYTE privileges;
00269 } OP201_APPLICATION_DATA;
00270
00271
00275 typedef struct {
00276 BYTE AIDLength;
00277 BYTE AID[16];
00278 } OPGP_AID;
00279
00280
00285 typedef struct {
00286 DWORD loadFileSize;
00287 OPGP_AID loadFileAID;
00288 BYTE numAppletAIDs;
00289 OPGP_AID appletAIDs[32];
00290 } OPGP_LOAD_FILE_PARAMETERS;
00291
00292
00297 typedef struct {
00298 BYTE AIDLength;
00299 BYTE AID[16];
00300 BYTE lifeCycleState;
00301 BYTE privileges;
00302 } GP211_APPLICATION_DATA;
00303
00307 typedef struct {
00308 BYTE AIDLength;
00309 BYTE AID[16];
00310 BYTE lifeCycleState;
00311 BYTE numExecutableModules;
00312 OPGP_AID executableModules[256];
00313 } GP211_EXECUTABLE_MODULES_DATA;
00314
00316 OPGP_API
00317 OPGP_ERROR_STATUS OPGP_select_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE AID, DWORD AIDLength);
00318
00323 OPGP_API
00324 OPGP_ERROR_STATUS GP211_get_status(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00325 BYTE cardElement, GP211_APPLICATION_DATA *applData,
00326 GP211_EXECUTABLE_MODULES_DATA *executableData, PDWORD dataLength);
00327
00329 OPGP_API
00330 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);
00331
00333 OPGP_API
00334 OPGP_ERROR_STATUS GP211_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo,
00335 BYTE baseKey[16], BYTE S_ENC[16], BYTE S_MAC[16],
00336 BYTE DEK[16], BYTE keySetVersion,
00337 BYTE keyIndex, BYTE secureChannelProtocol,
00338 BYTE secureChannelProtocolImpl,
00339 BYTE securityLevel, BYTE derivationMethod, GP211_SECURITY_INFO *secInfo);
00340
00342 OPGP_API
00343 OPGP_ERROR_STATUS GP211_init_implicit_secure_channel(PBYTE AID, DWORD AIDLength, BYTE baseKey[16],
00344 BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16],
00345 BYTE secureChannelProtocolImpl, BYTE sequenceCounter[2],
00346 GP211_SECURITY_INFO *secInfo);
00347
00349 OPGP_API
00350 OPGP_ERROR_STATUS close_implicit_secure_channel(GP211_SECURITY_INFO *secInfo);
00351
00353 OPGP_API
00354 OPGP_ERROR_STATUS GP211_get_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00355 BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
00356
00358 OPGP_API
00359 OPGP_ERROR_STATUS GP211_get_data_iso7816_4(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
00360
00362 OPGP_API
00363 OPGP_ERROR_STATUS GP211_get_secure_channel_protocol_details(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo,
00364 BYTE *secureChannelProtocol, BYTE *secureChannelProtocolImpl);
00365
00367 OPGP_API
00368 OPGP_ERROR_STATUS GP211_get_sequence_counter(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo,
00369 BYTE sequenceCounter[2]);
00370
00372 OPGP_API
00373 OPGP_ERROR_STATUS GP211_put_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00374 BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
00375
00377 OPGP_API
00378 OPGP_ERROR_STATUS GP211_pin_change(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00379 BYTE tryLimit, PBYTE newPIN, DWORD newPINLength);
00380
00382 OPGP_API
00383 OPGP_ERROR_STATUS GP211_put_3des_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00384 BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3DESKey[16]);
00385
00387 OPGP_API
00388 OPGP_ERROR_STATUS GP211_put_rsa_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00389 BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
00390
00392 OPGP_API
00393 OPGP_ERROR_STATUS GP211_put_secure_channel_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00394 BYTE keySetVersion, BYTE newKeySetVersion, BYTE baseKey[16],
00395 BYTE newS_ENC[16], BYTE newS_MAC[16], BYTE newDEK[16]);
00396
00398 OPGP_API
00399 OPGP_ERROR_STATUS GP211_delete_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00400 BYTE keySetVersion, BYTE keyIndex);
00401
00403 OPGP_API
00404 OPGP_ERROR_STATUS GP211_get_key_information_templates(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00405 BYTE keyInformationTemplate,
00406 GP211_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
00407
00409 OPGP_API
00410 OPGP_ERROR_STATUS GP211_delete_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00411 OPGP_AID *AIDs, DWORD AIDsLength,
00412 GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataLength);
00413
00415 OPGP_API
00416 OPGP_ERROR_STATUS GP211_install_for_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00417 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00418 PBYTE securityDomainAID,
00419 DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20], BYTE loadToken[128],
00420 DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
00421 DWORD nonVolatileDataSpaceLimit);
00422
00424 OPGP_API
00425 OPGP_ERROR_STATUS GP211_get_extradition_token_signature_data(PBYTE securityDomainAID,
00426 DWORD securityDomainAIDLength,
00427 PBYTE applicationAID, DWORD applicationAIDLength,
00428 PBYTE extraditionTokenSignatureData,
00429 PDWORD extraditionTokenSignatureDataLength);
00430
00432 OPGP_API
00433 OPGP_ERROR_STATUS GP211_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00434 PBYTE securityDomainAID,
00435 DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20],
00436 DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
00437 DWORD nonVolatileDataSpaceLimit, PBYTE loadTokenSignatureData,
00438 PDWORD loadTokenSignatureDataLength);
00439
00441 OPGP_API
00442 OPGP_ERROR_STATUS GP211_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID,
00443 DWORD executableLoadFileAIDLength,
00444 PBYTE executableModuleAID, DWORD executableModuleAIDLength,
00445 PBYTE applicationAID, DWORD applicationAIDLength,
00446 BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
00447 DWORD nonVolatileDataSpaceLimit, PBYTE installParameters,
00448 DWORD installParametersLength, PBYTE installTokenSignatureData,
00449 PDWORD installTokenSignatureDataLength);
00450
00452 OPGP_API
00453 OPGP_ERROR_STATUS GP211_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00454 PBYTE securityDomainAID,
00455 DWORD securityDomainAIDLength, BYTE loadFileDataBlockHash[20],
00456 DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
00457 DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128],
00458 OPGP_STRING PEMKeyFileName, char *passPhrase);
00459
00461 OPGP_API
00462 OPGP_ERROR_STATUS GP211_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00463 PBYTE executableModuleAID,
00464 DWORD executableModuleAIDLength, PBYTE applicationAID,
00465 DWORD applicationAIDLength, BYTE applicationPrivileges,
00466 DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00467 PBYTE installParameters, DWORD installParametersLength,
00468 BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
00469
00471 OPGP_API
00472 OPGP_ERROR_STATUS GP211_calculate_load_file_data_block_hash(OPGP_STRING executableLoadFileName,
00473 unsigned char hash[20]);
00474
00476 OPGP_API
00477 OPGP_ERROR_STATUS GP211_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00478 GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
00479 GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
00480
00482 OPGP_API
00483 OPGP_ERROR_STATUS GP211_load_from_buffer(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00484 GP211_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
00485 PBYTE loadFileBuffer, DWORD loadFileBufSize,
00486 GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
00487
00489 OPGP_API
00490 OPGP_ERROR_STATUS GP211_install_for_install(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00491 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
00492 DWORD executableModuleAIDLength, PBYTE applicationAID, DWORD applicationAIDLength,
00493 BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00494 PBYTE installParameters, DWORD installParametersLength,
00495 BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00496
00498 OPGP_API
00499 OPGP_ERROR_STATUS GP211_install_for_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00500 PBYTE applicationAID, DWORD applicationAIDLength,
00501 BYTE applicationPrivileges, BYTE installToken[128],
00502 GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00503
00505 OPGP_API
00506 OPGP_ERROR_STATUS GP211_install_for_install_and_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00507 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE executableModuleAID,
00508 DWORD executableModuleAIDLength, PBYTE applicationAID,
00509 DWORD applicationAIDLength, BYTE applicationPrivileges,
00510 DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00511 PBYTE installParameters, DWORD installParametersLength,
00512 BYTE installToken[128], GP211_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00513
00515 OPGP_API
00516 OPGP_ERROR_STATUS GP211_install_for_personalization(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo,
00517 GP211_SECURITY_INFO *secInfo,
00518 PBYTE applicationAID,
00519 DWORD applicationAIDLength);
00520
00522 OPGP_API
00523 OPGP_ERROR_STATUS GP211_install_for_extradition(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00524 PBYTE securityDomainAID,
00525 DWORD securityDomainAIDLength, PBYTE applicationAID,
00526 DWORD applicationAIDLength,
00527 BYTE extraditionToken[128], GP211_RECEIPT_DATA *receiptData,
00528 PDWORD receiptDataAvailable);
00529
00531 OPGP_API
00532 OPGP_ERROR_STATUS GP211_put_delegated_management_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00533 BYTE keySetVersion,
00534 BYTE newKeySetVersion,
00535 OPGP_STRING PEMKeyFileName, char *passPhrase,
00536 BYTE receiptKey[16]);
00537
00539 OPGP_API
00540 OPGP_ERROR_STATUS GP211_send_APDU(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00541 PBYTE capdu, DWORD capduLength, PBYTE rapdu,
00542 PDWORD rapduLength);
00543
00545 OPGP_API
00546 OPGP_ERROR_STATUS GP211_calculate_3des_DAP(BYTE loadFileDataBlockHash[20],
00547 PBYTE securityDomainAID,
00548 DWORD securityDomainAIDLength,
00549 BYTE DAPVerificationKey[16], GP211_DAP_BLOCK *loadFileDataBlockSignature);
00550
00552 OPGP_API
00553 OPGP_ERROR_STATUS GP211_calculate_rsa_DAP(BYTE loadFileDataBlockHash[20], PBYTE securityDomainAID,
00554 DWORD securityDomainAIDLength, OPGP_STRING PEMKeyFileName,
00555 char *passPhrase, GP211_DAP_BLOCK *loadFileDataBlockSignature);
00556
00558 OPGP_API
00559 OPGP_ERROR_STATUS GP211_validate_delete_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
00560 DWORD cardUniqueDataLength,
00561 BYTE receiptKey[16], GP211_RECEIPT_DATA receiptData,
00562 PBYTE AID, DWORD AIDLength);
00563
00565 OPGP_API
00566 OPGP_ERROR_STATUS GP211_validate_install_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
00567 DWORD cardUniqueDataLength,
00568 BYTE receiptKey[16], GP211_RECEIPT_DATA receiptData,
00569 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00570 PBYTE applicationAID, DWORD applicationAIDLength);
00571
00573 OPGP_API
00574 OPGP_ERROR_STATUS GP211_validate_load_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
00575 DWORD cardUniqueDataLength,
00576 BYTE receiptKey[16], GP211_RECEIPT_DATA receiptData,
00577 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00578 PBYTE securityDomainAID, DWORD securityDomainAIDLength);
00579
00581 OPGP_ERROR_STATUS GP211_validate_extradition_receipt(DWORD confirmationCounter, PBYTE cardUniqueData,
00582 DWORD cardUniqueDataLength,
00583 BYTE receiptKey[16], GP211_RECEIPT_DATA receiptData,
00584 PBYTE oldSecurityDomainAID, DWORD oldSecurityDomainAIDLength,
00585 PBYTE newSecurityDomainAID, DWORD newSecurityDomainAIDLength,
00586 PBYTE applicationOrExecutableLoadFileAID,
00587 DWORD applicationOrExecutableLoadFileAIDLength);
00588
00590 OPGP_API
00591 OPGP_ERROR_STATUS OPGP_manage_channel(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO *cardInfo, GP211_SECURITY_INFO *secInfo,
00592 BYTE openClose, BYTE channelNumberToClose,
00593 BYTE *channelNumberOpened);
00594
00596 OPGP_API
00597 OPGP_ERROR_STATUS OPGP_select_channel(OPGP_CARD_INFO *cardInfo, BYTE channelNumber);
00598
00600 OPGP_API
00601 OPGP_ERROR_STATUS GP211_store_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo,
00602 PBYTE data, DWORD dataLength);
00603
00605 OPGP_API
00606 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);
00607
00609 OPGP_API
00610 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);
00611
00612
00614 OPGP_API
00615 OPGP_ERROR_STATUS OP201_mutual_authentication(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE baseKey[16], BYTE encKey[16], BYTE macKey[16],
00616 BYTE kekKey[16], BYTE keySetVersion,
00617 BYTE keyIndex, BYTE securityLevel, BYTE derivationMethod,
00618 OP201_SECURITY_INFO *secInfo);
00619
00621 OPGP_API
00622 OPGP_ERROR_STATUS OP201_get_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00623 BYTE identifier[2], PBYTE recvBuffer, PDWORD recvBufferLength);
00624
00626 OPGP_API
00627 OPGP_ERROR_STATUS OP201_put_data(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00628 BYTE identifier[2], PBYTE dataObject, DWORD dataObjectLength);
00629
00631 OPGP_API
00632 OPGP_ERROR_STATUS OP201_pin_change(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00633 BYTE tryLimit, PBYTE newPIN, DWORD newPINLength, BYTE KEK[16]);
00634
00636 OPGP_API
00637 OPGP_ERROR_STATUS OP201_put_3desKey(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00638 BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, BYTE _3desKey[16],
00639 BYTE KEK[16]);
00640
00642 OPGP_API
00643 OPGP_ERROR_STATUS OP201_put_rsa_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00644 BYTE keySetVersion, BYTE keyIndex, BYTE newKeySetVersion, OPGP_STRING PEMKeyFileName, char *passPhrase);
00645
00647 OPGP_API
00648 OPGP_ERROR_STATUS OP201_put_secure_channel_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00649 BYTE keySetVersion, BYTE newKeySetVersion,
00650 BYTE new_encKey[16], BYTE new_macKey[16], BYTE new_KEK[16], BYTE KEK[16]);
00651
00653 OPGP_API
00654 OPGP_ERROR_STATUS OP201_delete_key(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00655 BYTE keySetVersion, BYTE keyIndex);
00656
00658 OPGP_API
00659 OPGP_ERROR_STATUS OP201_get_key_information_templates(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00660 BYTE keyInformationTemplate,
00661 OP201_KEY_INFORMATION *keyInformation, PDWORD keyInformationLength);
00662
00664 OPGP_API
00665 OPGP_ERROR_STATUS OP201_delete_application(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00666 OPGP_AID *AIDs, DWORD AIDsLength,
00667 OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataLength);
00668
00670 OPGP_API
00671 OPGP_ERROR_STATUS OP201_install_for_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00672 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
00673 DWORD securityDomainAIDLength, BYTE loadFileDAP[20], BYTE loadToken[128],
00674 DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
00675 DWORD nonVolatileDataSpaceLimit);
00676
00678 OPGP_API
00679 OPGP_ERROR_STATUS OP201_get_load_token_signature_data(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00680 PBYTE securityDomainAID, DWORD securityDomainAIDLength,
00681 BYTE loadFileDAP[20], DWORD nonVolatileCodeSpaceLimit,
00682 DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00683 PBYTE loadTokenSignatureData, PDWORD loadTokenSignatureDataLength);
00684
00686 OPGP_API
00687 OPGP_ERROR_STATUS OP201_get_install_token_signature_data(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00688 PBYTE AIDWithinLoadFileAID, DWORD AIDWithinLoadFileAIDLength,
00689 PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
00690 BYTE applicationPrivileges, DWORD volatileDataSpaceLimit,
00691 DWORD nonVolatileDataSpaceLimit, PBYTE applicationInstallParameters,
00692 DWORD applicationInstallParametersLength, PBYTE installTokenSignatureData,
00693 PDWORD installTokenSignatureDataLength);
00694
00696 OPGP_API
00697 OPGP_ERROR_STATUS OP201_calculate_load_token(PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE securityDomainAID,
00698 DWORD securityDomainAIDLength, BYTE loadFileDAP[20],
00699 DWORD nonVolatileCodeSpaceLimit, DWORD volatileDataSpaceLimit,
00700 DWORD nonVolatileDataSpaceLimit, BYTE loadToken[128],
00701 OPGP_STRING PEMKeyFileName, char *passPhrase);
00702
00704 OPGP_API
00705 OPGP_ERROR_STATUS OP201_calculate_install_token(BYTE P1, PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
00706 DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
00707 DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
00708 DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00709 PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
00710 BYTE installToken[128], OPGP_STRING PEMKeyFileName, char *passPhrase);
00711
00713 OPGP_API
00714 OPGP_ERROR_STATUS OP201_calculate_load_file_DAP(OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
00715 OPGP_STRING executableLoadFileName, unsigned char hash[20]);
00716
00718 OPGP_API
00719 OPGP_ERROR_STATUS OP201_load(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00720 OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength, OPGP_STRING executableLoadFileName,
00721 OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
00722
00724 OPGP_API
00725 OPGP_ERROR_STATUS OP201_load_from_buffer(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00726 OP201_DAP_BLOCK *dapBlock, DWORD dapBlockLength,
00727 PBYTE loadFilebuf, DWORD loadFileBufSize,
00728 OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable, OPGP_PROGRESS_CALLBACK *callback);
00729
00731 OPGP_API
00732 OPGP_ERROR_STATUS OP201_install_for_install(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00733 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength, PBYTE AIDWithinLoadFileAID,
00734 DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
00735 BYTE applicationPrivileges, DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00736 PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
00737 BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00738
00740 OPGP_API
00741 OPGP_ERROR_STATUS OP201_install_for_make_selectable(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00742 PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength,
00743 BYTE applicationPrivileges, BYTE installToken[128],
00744 OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00745
00747 OPGP_API
00748 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,
00749 DWORD AIDWithinLoadFileAIDLength, PBYTE applicationInstanceAID,
00750 DWORD applicationInstanceAIDLength, BYTE applicationPrivileges,
00751 DWORD volatileDataSpaceLimit, DWORD nonVolatileDataSpaceLimit,
00752 PBYTE applicationInstallParameters, DWORD applicationInstallParametersLength,
00753 BYTE installToken[128], OP201_RECEIPT_DATA *receiptData, PDWORD receiptDataAvailable);
00754
00756 OPGP_API
00757 OPGP_ERROR_STATUS OP201_put_delegated_management_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00758 BYTE keySetVersion,
00759 BYTE newKeySetVersion,
00760 OPGP_STRING PEMKeyFileName, char *passPhrase,
00761 BYTE receiptGenerationKey[16], BYTE KEK[16]);
00762
00764 OPGP_API
00765 OPGP_ERROR_STATUS OP201_send_APDU(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, OP201_SECURITY_INFO *secInfo,
00766 PBYTE capdu, DWORD capduLength, PBYTE rapdu,
00767 PDWORD rapduLength);
00768
00770 OPGP_API
00771 OPGP_ERROR_STATUS OP201_calculate_3des_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
00772 BYTE DAP_verification_key[16], OP201_DAP_BLOCK *dapBlock);
00773
00775 OPGP_API
00776 OPGP_ERROR_STATUS OP201_calculate_rsa_DAP(PBYTE securityDomainAID, DWORD securityDomainAIDLength, OPGP_STRING executableLoadFileName,
00777 OPGP_STRING PEMKeyFileName, char *passPhrase, OP201_DAP_BLOCK *dapBlock);
00778
00780 OPGP_API
00781 OPGP_ERROR_STATUS OP201_validate_delete_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
00782 BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
00783 PBYTE AID, DWORD AIDLength);
00784
00786 OPGP_API
00787 OPGP_ERROR_STATUS OP201_validate_install_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
00788 BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
00789 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00790 PBYTE applicationInstanceAID, DWORD applicationInstanceAIDLength);
00791
00793 OPGP_API
00794 OPGP_ERROR_STATUS OP201_validate_load_receipt(DWORD confirmationCounter, BYTE cardUniqueData[10],
00795 BYTE receiptGenerationKey[16], OP201_RECEIPT_DATA receiptData,
00796 PBYTE executableLoadFileAID, DWORD executableLoadFileAIDLength,
00797 PBYTE securityDomainAID, DWORD securityDomainAIDLength);
00798
00799
00801 OPGP_API
00802 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);
00803
00805 OPGP_API
00806 OPGP_ERROR_STATUS GP211_end_R_MAC(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, GP211_SECURITY_INFO *secInfo);
00807
00809 OPGP_API
00810 OPGP_ERROR_STATUS OPGP_read_executable_load_file_parameters(OPGP_STRING loadFileName, OPGP_LOAD_FILE_PARAMETERS *loadFileParams);
00811
00813 OPGP_API
00814 OPGP_ERROR_STATUS OPGP_VISA2_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, PBYTE AID, DWORD AIDLength, BYTE masterKey[16],
00815 BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
00816
00818 OPGP_API
00819 OPGP_ERROR_STATUS OPGP_cap_to_ijc(OPGP_CSTRING capFileName, OPGP_STRING ijcFileName);
00820
00822 OPGP_API
00823 OPGP_ERROR_STATUS OPGP_extract_cap_file(OPGP_CSTRING fileName, PBYTE loadFileBuf, PDWORD loadFileBufSize);
00824
00826 OPGP_API
00827 OPGP_ERROR_STATUS OPGP_read_executable_load_file_parameters_from_buffer(PBYTE loadFileBuf, DWORD loadFileBufSize, OPGP_LOAD_FILE_PARAMETERS *loadFileParams);
00828
00830 OPGP_API
00831 OPGP_ERROR_STATUS OPGP_EMV_CPS11_derive_keys(OPGP_CARD_CONTEXT cardContext, OPGP_CARD_INFO cardInfo, BYTE masterKey[16],
00832 BYTE S_ENC[16], BYTE S_MAC[16], BYTE DEK[16]);
00833
00834 #ifdef __cplusplus
00835 }
00836 #endif
00837 #endif