globalplatform/globalplatform.h

Go to the documentation of this file.
00001 /*  Copyright (c) 2009, Karsten Ohme
00002  *  This file is part of GlobalPlatform.
00003  *
00004  *  GlobalPlatform is free software: you can redistribute it and/or modify
00005  *  it under the terms of the GNU Lesser General Public License as published by
00006  *  the Free Software Foundation, either version 3 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  GlobalPlatform is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Lesser General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Lesser General Public License
00015  *  along with GlobalPlatform.  If not, see <http://www.gnu.org/licenses/>.
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 /* consts for MANAGE CHANNEL */
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 // Some possible identifiers to retrieve card data with get_data() and put_data().
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 // Some possible identifiers to retrieve card data with get_data() and put_data().
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
Generated on Wed Aug 11 00:24:28 2010 for GlobalPlatformLibrary by  doxygen 1.6.3