Escolar Documentos
Profissional Documentos
Cultura Documentos
AAC01 SAMA 4 Middleware CartaoCidadao ManualTecnico v1
AAC01 SAMA 4 Middleware CartaoCidadao ManualTecnico v1
Tabela de Contedos
1.
Viso Global.........................................................................................................4
2.
Documentao CSP.............................................................................................6
3.
2.1.
Introduo ...................................................................................................6
2.2.
2.2.1.
CryptAcquireContext..........................................................................7
2.2.2.
CryptReleaseContext...........................................................................8
2.2.3.
CryptGenerateKey...............................................................................8
2.2.4.
CryptDeriveKey...................................................................................9
2.2.5.
CryptDestroyKey.................................................................................9
2.2.6.
CryptSetKeyParam..............................................................................9
2.2.7.
CryptGetKeyParam ...........................................................................10
2.2.8.
CryptSetProvParam...........................................................................10
2.2.9.
CryptGetProvParam..........................................................................10
2.2.10.
CryptSetHashParam..........................................................................11
2.2.11.
CryptGetHashParam.........................................................................11
2.2.12.
CryptExportKey.................................................................................11
2.2.13.
CryptImportKey ................................................................................12
2.2.14.
CryptEncrypt......................................................................................12
2.2.15.
CryptDecrypt......................................................................................13
2.2.16.
CryptCreateHash...............................................................................13
2.2.17.
CryptHashData ..................................................................................14
2.2.18.
CryptHashSessionKey ......................................................................14
2.2.19.
CryptSignHash...................................................................................14
2.2.20.
CryptDestroyHash ............................................................................15
2.2.21.
CryptVerifySignature........................................................................15
2.2.22.
CryptGenRandom .............................................................................15
2.2.23.
CryptGetUserKey ..............................................................................16
2.2.24.
CryptDuplicateHash .........................................................................16
2.2.25.
CryptDuplicateKey............................................................................16
2/35
May 2007
3.1.
A interface PKCS#11................................................................................17
3.1.1.
4.
3.1.1.1.
Funes Gerais...............................................................................17
3.1.1.2.
3.1.1.3.
3.1.1.4.
3.1.1.5.
3.1.1.6.
Funes de digest..........................................................................18
3.1.1.7.
3.1.2.
3.1.3.
3.1.4.
4.2.
Insero de PIN.........................................................................................20
4.3.
4.4.
Organizao API.......................................................................................21
4.5.
4.6.
Funes de Identity..................................................................................21
4.7.
4.8.
4.9.
4.10.
Caching de ficheiros.................................................................................33
4.11.
3/35
May 2007
1.
Viso Global
CryptoAPI/CSP
PKCS#11
Tray applet
Esta aplicao instalada como uma funcionalidade da rea de notificao.
No Windows, aparece normalmente no canto inferior direito do ecr, no Mac
no canto superior direito do ecr. Quando activada (o utilizador pode
Technical manual for the Portuguese
eID Middleware 1.0
4/35
May 2007
5/35
May 2007
2.
Documentao CSP
2.1. Introduo
Aplicaes
Microsoft
Crypto
API
Aplicaes no
Microsoft
Aplicaes
custom
CSP
PKCS#11
6/35
May 2007
2.2.1. CryptAcquireContext
BOOL WINAPI CryptAcquireContext(HCRYPTPROV *phProv,
LPCTSTR pszContainer,
LPCTSTR pszProvider,
DWORD dwProvType,
DWORD dwFlags);
7/35
May 2007
2.2.2. CryptReleaseContext
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv,
DWORD dwFlags);
Esta chamada API implementada tal como definido pela MSDN.
2.2.3. CryptGenerateKey
BOOL WINAPI CryptGenKey( HCRYPTPROV hProv,
ALG_ID Algid,
DWORD dwFlags,
HCRYPTKEY *phKey);
Technical manual for the Portuguese
eID Middleware 1.0
8/35
May 2007
2.2.4. CryptDeriveKey
BOOL WINAPI CryptDeriveKey(HCRYPTPROV hProv,
ALG_ID Algid,
HCRYPTHASH hBaseData,
DWORD dwFlags,
HCRYPTKEY *phKey);
Visto que esta funcionalidade refere-se apenas a chaves de encryptao e estas
no esto presentes no carto, esta chamada API no implementada.
Chamar esta funo ir gerar o erro E_NOTIMPL definido atravs do
SetLastError ().
2.2.5. CryptDestroyKey
BOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey);
Visto que as chaves e certificados do Carto de Cidado so pr-instalados
pelo governo e o utilizador no tem permisses para criar novos pares de
chaves, esta chamada API no implementada. Chamar esta funo ir
gerar o erro E_NOTIMPL definido atravs do SetLastError ().
2.2.6. CryptSetKeyParam
BOOL WINAPI CryptSetKeyParam(HCRYPTKEY hKey,
DWORD dwParam,
BYTE *pbData,
DWORD dwFlags);
Visto que as chaves e certificados do Carto de Cidado so pr-instalados
pelo governo e o utilizador no tem permisses para criar novos pares de
chaves, esta chamada API no implementada. Chamar esta funo ir
gerar o erro E_NOTIMPL definido atravs do SetLastError ().
9/35
May 2007
2.2.7. CryptGetKeyParam
BOOL WINAPI CryptGetKeyParam(HCRYPTKEY hKey,
DWORD dwParam,
BYTE *pbData,
DWORD *pcbData,
DWORD dwFlags);
Since the key material on the Portuguese identity card is pre-installed by the
government and the user does not have the permissions to create additional
key pairs, this API call is not implemented. Calling this function anyway, will
generate the error E_NOTIMPL set through SetLastError ().
2.2.8. CryptSetProvParam
BOOL WINAPI CryptSetProvParam(HCRYPTPROV hProv,
DWORD dwParam,
BYTE *pbData,
DWORD dwFlags);
De acordo com a documentao da MSDN o parmetro dwParam pode ser
definido para os seguintes valores:
PP_CLIENT_HWND
PP_KEYSET_SEC_DESCR
O ltimo parmetro no faz sentido visto que no possvel escrever
informao sobre as chaves no carto. Este parmetro dever ser ignorado.
2.2.9. CryptGetProvParam
BOOL WINAPI CryptGetProvParam(HCRYPTPROV hProv,
DWORD dwParam,
BYTE *pbData,
DWORD *pcbData,
DWORD dwFlags);
Esta chamada API implementada com base na documentao MSDN
excepo do parmetro PP_KEYSET_SEC_DESCR, que ignorado.
Technical manual for the Portuguese
eID Middleware 1.0
10/35
May 2007
2.2.10. CryptSetHashParam
BOOL WINAPI CryptSetHashParam(HCRYPTHASH hHash,
DWORD dwParam,
BYTE *pbData,
DWORD dwFlags);
Esta chamada API implementada com base na documentao MSDN.
O parmetro dwParam = HP_HASHVAL implementado mas deve ser usado
com cuidado. Este parmetro foi definido de forma a dar s aplicaes a
possibilidade de assinar hash values, sem ter acesso base data. Porque a
aplicao (e muito menos o utilizador) no pode ter ideia do que est a ser
assinado, esta operao intrinsecamente arrisacada.
2.2.11. CryptGetHashParam
BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash,
DWORD dwParam,
BYTE *pbData,
DWORD *pcbData,
DWORD dwFlags);
Esta chamada API implementada com base na documentao MSDN.
2.2.12. CryptExportKey
BOOL WINAPI CryptExportKey(HCRYPTKEY hKey,
HCRYPTKEY hExpKey,
DWORD dwBlobType,
DWORD dwFlags,
BYTE *pbData,
DWORD *pcbDataLen);
Technical manual for the Portuguese
eID Middleware 1.0
11/35
May 2007
Esta funo pode ser usada para exportar a chave pblica associada ao
parmetro hKey. O handle de uma chave pblica pode ser obtido atravs de
uma chamada funo CryptGetUserKey. Visto que as chaves privadas esto
guardadas num smartcard e a exportao destas no permitida, apenas
PUBLICKEYBLOB pode ser definido como dwBlobType. Devido ao facto de
apenas as chaves pblicas poderem ser exportadas, o parmetro hExpKey no
utilizado e deve portanto ser definido como NULL. A chave pblica
retornada como parmetro pbData. Para obter o comprimento dos dados o
parmetro pbData deve ser definido como NULL. O comprimento dos dados
que ser devolvido ento colocado no parmetro pcbDataLen. Se o buffer
para esta funo no for suficientemente grande, ser devolvido o erro
ERROR_MORE_DATA, e o valor correcto para o comprimento do buffer ser
colocado no parmetro pcbDataLen.
2.2.13. CryptImportKey
BOOL WINAPI CryptImportKey(HCRYPTPROV hProv,
BYTE *pbData,
DWORD dwDataLen,
HCRYPTKEY hPubKey,
DWORD dwFlags,
HCRYPTKEY *phKey);
Visto que os chaves e certificados do Carto de Cidado so pr-instalados
pelo governo e o utilizador no tem permisses para criar pares de chaves
adicionais, esta chamada API no implementada. Chamar esta funo ir
gerar o erro E_NOTIMPL definido atravs de SetLastError ().
2.2.14. CryptEncrypt
BOOL WINAPI CryptEncrypt(HCRYPTKEY hKey,
HCRYPTHASH hHash,
BOOL Final,
DWORD dwFlags,
BYTE *pbData,
DWORD *pcbData,
DWORD cbBuffer);
12/35
May 2007
2.2.15. CryptDecrypt
BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey,
HCRYPTHASH hHash,
BOOL Final,
DWORD dwFlags,
BYTE *pbData,
DWORD *pcbData);
Tal como estipulado pelo Governo Portugus, no suportada a utilizao
das chaves para encriptao. Deste modo esta chamada API no
implementada. Chamar esta funo ir gerar o erro E_NOTIMPL definido
atravs de SetLastError ().
Caso no futuro sejam adicionadas chaves de encriptao ao Carto de
Cidado, ento esta funo ser tambm implementada.
2.2.16. CryptCreateHash
BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv,
ALG_ID Algid,
HCRYPTKEY hKey,
DWORD dwFlags,
HCRYPTHASH *phHash);
Esta chamada API implementada com base na documentao MSDN. Um
erro adicional pode ser devolvido atravs de SetLastError ():
ERR_INVALID_PROVIDER_HANDLE (0x1001)
Este erro indica que o handle esperado por hProv no foi encontrado (no foi
criado usando CryptAcquireContext ())
O processamento desta chamada delegado a uma base CSP.
13/35
May 2007
2.2.17. CryptHashData
BOOL WINAPI CryptHashData(HCRYPTHASH hHash,
BYTE *pbData,
DWORD cbData,
DWORD dwFlags);
Esta chamada API implementada com base na documentao MSDN. No
parmetro dwFlags um valor (excepto 0) pode ser especificado:
CRYPT_USERDATA. Dependendo da base CSP escolhida poder ou no ser
implementado. Por exemplo a Microsoft Base CSP no implementa este
parmetro.
O processamento desta chamada delegado a uma base CSP.
2.2.18. CryptHashSessionKey
BOOL WINAPI CryptHashSessionKey(HCRYPTHASH hHash,
HCRYPTKEY hKey,
DWORD dwFlags);
Visto que algumas das chamadas subjacentes necessrias para usar esta
funo no so de momento implementadas por este CSP, esta chamada
tambm no est disponvel. Chamar esta funo ir gerar o erro
E_NOTIMPL definido atravs de SetLastError ().
2.2.19. CryptSignHash
BOOL WINAPI CryptSignHash(HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCTSTR sDescription,
DWORD dwFlags,
BYTE *pbSignature,
DWORD *pdwSigLen);
Esta chamada API implementada com base na documentao MSDN.
Quando esta funo chamada, efectuada uma tentativa de conexo ao
Carto de Cidado (smartcard). Se alguma destas operaes falhar, o seguinte
erro pode ser gerado atravs de SetLastError ():
ERR_CANNOT_LOGON_TO_TOKEN (0x1004)
Technical manual for the Portuguese
eID Middleware 1.0
14/35
May 2007
2.2.20. CryptDestroyHash
BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash);
Esta chamada API implementada com base na documentao MSDN.
2.2.21. CryptVerifySignature
BOOL WINAPI CryptVerifySignature(HCRYPTHASH hHash,
BYTE *pbSignature,
DWORD dwSigLen,
HCRYPTKEY hPubKey,
LPCTSTR sDescription,
DWORD dwFlags);
Esta funo implementada por motivos de convenincia. Esta chamada
delegada para a base CSP.
2.2.22. CryptGenRandom
BOOL WINAPI CryptGenRandom(HCRYPTPROV hProv,
DWORD dwLen,
BYTE *pbBuffer);
15/35
May 2007
2.2.23. CryptGetUserKey
BOOL CryptGetUserKey(HCRYPTPROV hProv,
DWORD dwKeySpec,
HCRYPTKEY *phUserKey);
Esta chamada devolve um handle para a chave pblica do contentor de
chaves que foi definido atravs de CryptAcquireContext. Especificar
AT_SIGNATURE para o parmetro dwKeySpec no suficiente porque com
essa informao o CSP no consegue determinar que chave de assinatura
devolver. Por este motivo a chave a carregar tem de ser primeiro especificada
atravs de CryptAcquireContext.
2.2.24. CryptDuplicateHash
BOOL WINAPI CryptDuplicateHash(HCRYPTHASH hHash,
DWORD *pdwReserved,
DWORD dwFlags,
HCRYPTHASH phHash);
Esta chamada API implementada com base na documentao MSDN.
2.2.25. CryptDuplicateKey
BOOL WINAPI CryptDuplicateKey(HCRYPTKEY hKey,
DWORD *pdwReserved,
DWORD dwFlags,
HCRYPTKEY* phKey);
Visto que as chaves e certificados so guardados no smartcard, esta chamada
API no implementada. Chamar esta funo ir gerar o erro E_NOTIMPL
definido atravs de SetLastError ().
16/35
May 2007
3.
Documentao PKCS#11
3.1. A interface PKCS#11
Funes Gerais
C_Initialize,
C_Finalize
C_GetInfo
C_GetFunctionList
3.1.1.2.
C_GetSlotList
C_GetSlotInfo
C_GetTokenInfo
C_GetMechanismList
C_GetMechanismInfo
C_WaitForSlotEvent (only non-blocking)
C_SetPin
3.1.1.3.
C_OpenSession
C_CloseSession
C_CloseAllSessions
C_GetSessionInfo
Technical manual for the Portuguese
eID Middleware 1.0
17/35
May 2007
C_Login
C_Logout
3.1.1.4.
C_FindObjectsInit
C_FindObjects
C_FindObjectsFinal
C_GetAttributeValue
3.1.1.5.
Funes de assinatura
C_SignInit
C_Sign
C_SignUpdate
C_SignFinal
3.1.1.6.
Funes de digest
C_DigestInit
C_Digest
C_DigestUpdate
C_DigestFinal
3.1.1.7.
C_SeedRandom
C_GenerateRandom
CKM_RIPEMD160_RSA_PKCS, CKM_SHA1_RSA_PKCS,
CKM_MD5_RSA_PKCS
Para digests:
Technical manual for the Portuguese
eID Middleware 1.0
18/35
May 2007
19/35
May 2007
4.
20/35
May 2007
21/35
May 2007
Funes:
-
PTEID_GetID()
PTEID_GetAddr()
PTEID_GetPic()
PTEID_GetCertificates()
PTEID_GetPINs()
PTEID_GetTokenInfo()
PTEID_SelectADF()
PTEID_ReadFile()
PTEID_WriteFile()
PTEID_VerifyPIN()
PTEID_ChangePIN()
PTEID_UnblockPIN()
PTEID_UnblockPIN_Ext()
PTEID_IsActivated()
PTEID_Activate()
a fotografia: PTEID_GetPic()
22/35
May 2007
PTEIDLIB_API long
PTEID_Activate
( char *
pszPin,
23/35
May 2007
PTEIDLIB_API long
PTEID_ChangePIN
( unsigned char
char *
char *
long *
PinId,
pszOldPin,
pszNewPin,
triesLeft
)
Mudar um PIN.
Parmetros:
PinId
in: o PIN ID, ver o registo PTEID_Pins
pszOldPin in: o valor actual do PIN, caso seja NULL o PIN ser solicitado
ao utilizador
pszNewPin in: o novo valor do PIN, caso seja NULL o PIN ser solicitado ao
utilizador
triesLeft
out: as restantes tentativas de PIN
PTEIDLIB_API long
PTEID_CVC_Authenticate
( unsigned char *
pucSignedChallenge,
iSignedChallengeLen
int
)
24/35
May 2007
PTEIDLIB_API long
PTEID_CVC_Init
pucCert,
iCertLen,
pucChallenge,
iChallengeLen
)
Iniciar uma autenticao CVC com o carto.
O challenge resultante dever ser assinado com a chave privada correspondente ao
certificado CVC (raw RSA signature) e fornecido na funo
PTEID_CVC_Authenticate().
Parmetros:
pucCert
iCertLen
pucChallenge
iChallengeLen
PTEIDLIB_API long
PTEID_CVC_ReadFile
( unsigned char *
int
unsigned char *
unsigned long *
file,
filelen,
out,
outlen
)
Ler os contedos de um ficheiro sobre um canal CVC.
PTEID_CVC_Init() e PTEID_CVC_Authenticate() bem sucedidos tero de ser
efectuados anteriormente. Se *outlen for menor que os contedos do ficheiro,
apenas os bytes *outlen sero lidos. Se *outlen for maior os contedos do ficheiro
so devolvidos sem erro.
Parmetros:
file
in: o caminho do ficheiro a ler (e.g. {0x3F, 0x00, 0x5F, 0x00, 0xEF,
0x05}
filelen in: o coprimento do caminho do ficheiro (ex: 6)
out
out: o buffer para armazenar os contedos do ficheiro
outlen out: o nmero de bytes a ler / nmero de bytes lidos.
25/35
May 2007
PTEIDLIB_API long
PTEID_CVC_WriteFile
( unsigned char *
int
unsigned long
const unsigned char *
unsigned long
unsigned long
file,
filelen,
ulFileOffset,
in,
inlen,
ulMode
)
Escrever para um ficheiro no carto sobre um canal CVC
PTEID_CVC_Init() e PTEID_CVC_Authenticate() bem sucedidos tero de ser
efectuados anteriormente
Parmetros:
file
in: o caminho do ficheiro a ler (ex: {0x3F, 0x00, 0x5F, 0x00, 0xEF,
0x05} )
filelen
in: o comprimento do caminho do ficheiro (ex: 6)
ulFileOffset in: escolher qual o offset no ficheiro por onde iniciar a escrita
in
in: os contedos do ficheiro
inlen
in: o nmero de bytes a escrever
ulMode
in: definir como CVC_WRITE_MODE_PAD para preencher o
ficheiro com zeros se (ulFileOffset + inlen) for menor que o
comprimento do ficheiro
PTEIDLIB_API long
PTEID_CVC_WriteSOD
( unsigned long
const unsigned char *
unsigned long
unsigned long
ulFileOffset,
in,
inlen,
ulMode
)
Esta funo chama PTEID_CVC_WriteFile() com o ficheiro SOD file como caminho.
Parmetros:
ulFileOffset in: escolher qual o offset no ficheiro por onde iniciar a escrita
in
in: os contedos do ficheiro
Technical manual for the Portuguese
eID Middleware 1.0
26/35
May 2007
inlen
ulMode
Certifs )
PTEIDLIB_API long
PTEID_GetCVCRoot
( PTEID_RSAPublicKey * pCVCRootKey
Obter a chave pblica CVC CA que este carto utilize para verificar a chave CVC;
permitir que a aplicao seleccione o certificado CVC correcto para este carto.
No ser alocada nenhuma memria para o registo PTEID_RSAPublicKey struct
por isso os campos modulus e exponent devero ter memria suficiente
alocada para guardar os respectivos valores; e a quantidade de memria deve ser
dada nos campos Lenght.
Por exemplo:
unsigned char modulus[128];
unsigned char exponent[3];
PTEID_RSAPublicKey CVCRootKey = {modulus, sizeof(modulus), exponent,
Technical manual for the Portuguese
eID Middleware 1.0
27/35
May 2007
sizeof(exponent)};
Aps retorno bem sucedido, os campos modulusLength e exponentLenght iro
conter os correctos modulus length resp. exponent length.
Parmetros:
pCVCRootKey in: o endereo do registo PTEID_RSAPublicKey
28/35
May 2007
carto removido do leitor, esta funo tem que ser chamada novamente.
Parmetros:
ReaderName in: o nome do leitor PCSC (tal como devolvido por
SCardListReaders()), especifique NULL se quiser seleccionar o
primeiro leitor
PTEIDLIB_API long
PTEID_ReadFile
( unsigned char *
int
unsigned char *
unsigned long *
unsigned char
file,
filelen,
out,
outlen,
PinId
)
Ler um ficheiro no carto.
Se uma referncia PIN fornecida e necessria para ler o ficheiro, o PIN ser
solicitado e verificado se necessrio. Se *outlen for menor que os contedos do
ficheiro, apenas os bytes *outlen sero lidos. Se *outlen for maior os contedos do
ficheiro so devolvidos sem erro.
Parmetros:
file
in: um byte array contendo o caminho do ficheiro, como por exemplo
{0x3F, 0x00, 0x5F, 0x00, 0xEF, 0x02}, para o ficheiro ID
filelen in: comprimento do ficheiro
out
out: o buffer que guarda os contedos do ficheiro
outlen in/out: nmero de bytes alocados / nmero de bytes lidos
PinId in: o ID do PIN de Morada (apenas necessrio aquando da leitura do
ficheiro de Morada)
PTEIDLIB_API long
PTEID_ReadSOD
( unsigned char *
out,
29/35
May 2007
PTEIDLIB_API long
PTEID_SelectADF
( unsigned char *
adf,
adflen
long
)
PTEIDLIB_API long
PTEID_SetSODCAs
( PTEID_Certifs * Certifs )
30/35
May 2007
PTEIDLIB_API long
PTEID_UnblockPIN
( unsigned char
char *
char *
long *
PinId,
pszPuk,
pszNewPin,
triesLeft
)
Desbloquear PIN com alterao de PIN.
Se pszPuk == NULL ou pszNewPin == NULL, uma caixa de dilogo mostrada
solicitando o PUK e o novo PIN
Parmetros:
PinId
pszPuk
pszNewPin
triesLeft
PTEIDLIB_API long
PTEID_UnblockPIN_Ext
( unsigned char
char *
char *
long *
unsigned long
PinId,
pszPuk,
pszNewPin,
triesLeft,
ulFlags
)
Funcionalidade estendida de desbloqueio de PIN
Ex: chamar PTEID_UnblockPIN_Ext() com ulFlags = UNBLOCK_FLAG_NEW_PIN
o mesmo que chamar PTEID_UnblockPIN(...)
Parmetros:
PinId
pszPuk
31/35
May 2007
PTEIDLIB_API long
PTEID_VerifyPIN
( unsigned char
char *
long *
PinId,
Pin,
triesLeft
)
Verificar um PIN.
Parmetros:
PinId in: o PIN ID, ver o registo PTEID_Pins
Pin
in: o valor PIN, se NULL ser solicitado o PIN ao utilizador.
triesLeft out: o nmero restante de tentativas PIN
PTEIDLIB_API long
PTEID_WriteFile
( unsigned char *
int
unsigned char *
unsigned long
unsigned char
file,
filelen,
in,
inlen,
PinId
)
Escrever dados para um ficheiro no carto.
Se for fornecida uma referncia PIN, este ser solicitado e verificado se necessrio
(verificao just-in-time). Esta funo aplica-se apenas a escrita no ficheiro
Personal Data.
Parmetros:
file
in: um array de bytes, contendo o caminho para o ficheiro. Ex: {0x3F,
0x00, 0x5F, 0x00, 0xEF, 0x02} para o ficheiro ID
filelen in: comprimento do ficheiro
in
in: os dados a ser escritos no ficheiro
inlen in: o comprimento dos dados a escrever
PinId in: o ID do PIN de Autenticao, ver o registo PTEID_Pins
32/35
May 2007
o ficheiro ID
o ficheiro SOD
0 /* Function succeeded */
#define PTEID_E_BAD_PARAM
pointer, out of bound, etc.) */
#define PTEID_E_INTERNAL
failed */
#define PTEID_E_INSUFFICIENT_BUFFER
returned data is too small */
#define PTEID_E_KEYPAD_CANCELLED
#define PTEID_E_KEYPAD_TIMEOUT
#define PTEID_E_KEYPAD_PIN_MISMATCH
#define PTEID_E_KEYPAD_MSG_TOO_LONG
33/35
May 2007
#define PTEID_E_INVALID_PIN_LENGTH
#define PTEID_E_NOT_INITIALIZED
#define PTEID_E_UNKNOWN
detected, but the source is unknown */
-1100
#define SC_ERROR_NO_READERS_FOUND
-1101
#define SC_ERROR_SLOT_NOT_FOUND
-1102
#define SC_ERROR_SLOT_ALREADY_CONNECTED
-1103
#define SC_ERROR_CARD_NOT_PRESENT
-1104
#define SC_ERROR_CARD_REMOVED
-1105
#define SC_ERROR_CARD_RESET
-1106
#define SC_ERROR_TRANSMIT_FAILED
-1107
#define SC_ERROR_KEYPAD_TIMEOUT
-1108
#define SC_ERROR_KEYPAD_CANCELLED
-1109
#define SC_ERROR_KEYPAD_PIN_MISMATCH
-1110
#define SC_ERROR_KEYPAD_MSG_TOO_LONG
-1111
#define SC_ERROR_EVENT_TIMEOUT
-1112
#define SC_ERROR_CARD_UNRESPONSIVE
-1113
#define SC_ERROR_READER_DETACHED
-1114
#define SC_ERROR_READER_REATTACHED
-1115
-1200
#define SC_ERROR_FILE_NOT_FOUND
-1201
#define SC_ERROR_RECORD_NOT_FOUND
-1202
#define SC_ERROR_CLASS_NOT_SUPPORTED
-1203
#define SC_ERROR_INS_NOT_SUPPORTED
-1204
#define SC_ERROR_INCORRECT_PARAMETERS
-1205
#define SC_ERROR_WRONG_LENGTH
-1206
#define SC_ERROR_MEMORY_FAILURE
-1207
#define SC_ERROR_NO_CARD_SUPPORT
-1208
#define SC_ERROR_NOT_ALLOWED
-1209
#define SC_ERROR_INVALID_CARD
-1210
#define SC_ERROR_SECURITY_STATUS_NOT_SATISFIED
-1211
#define SC_ERROR_AUTH_METHOD_BLOCKED
-1212
34/35
May 2007
#define SC_ERROR_UNKNOWN_DATA_RECEIVED
-1213
#define SC_ERROR_PIN_CODE_INCORRECT
-1214
#define SC_ERROR_FILE_ALREADY_EXISTS
-1215
-1300
#define SC_ERROR_CMD_TOO_SHORT
-1301
#define SC_ERROR_CMD_TOO_LONG
-1302
#define SC_ERROR_BUFFER_TOO_SMALL
-1303
#define SC_ERROR_INVALID_PIN_LENGTH
-1304
-1400
#define SC_ERROR_INVALID_ASN1_OBJECT
-1401
#define SC_ERROR_ASN1_OBJECT_NOT_FOUND
-1402
#define SC_ERROR_ASN1_END_OF_CONTENTS
-1403
#define SC_ERROR_OUT_OF_MEMORY
-1404
#define SC_ERROR_TOO_MANY_OBJECTS
-1405
#define SC_ERROR_OBJECT_NOT_VALID
-1406
#define SC_ERROR_OBJECT_NOT_FOUND
-1407
#define SC_ERROR_NOT_SUPPORTED
-1408
#define SC_ERROR_PASSPHRASE_REQUIRED
-1409
#define SC_ERROR_EXTRACTABLE_KEY
-1410
#define SC_ERROR_DECRYPT_FAILED
-1411
#define SC_ERROR_WRONG_PADDING
-1412
#define SC_ERROR_WRONG_CARD
-1413
-1500
#define SC_ERROR_SYNTAX_ERROR
-1501
#define SC_ERROR_INCONSISTENT_PROFILE
-1502
#define SC_ERROR_INCOMPATIBLE_KEY
-1503
#define SC_ERROR_NO_DEFAULT_KEY
-1504
#define SC_ERROR_ID_NOT_UNIQUE
-1505
#define SC_ERROR_CANNOT_LOAD_KEY
-1006
-1900
#define SC_ERROR_PKCS15_APP_NOT_FOUND
-1901
35/35
May 2007