Changeset 3318 for trunk/src/libopensc/card-atrust-acos.c
- Timestamp:
- 02/01/08 14:31:02 (11 months ago)
- Files:
-
- 1 modified
-
trunk/src/libopensc/card-atrust-acos.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libopensc/card-atrust-acos.c
r3085 r3318 29 29 /*****************************************************************************/ 30 30 31 #define ACOS_EMV_A03 "A-TRUST ACOS" 32 #define ACOS_EMV_A05 "A-TRUST ACOS A05" 33 31 34 static const char *atrust_acos_atrs[] = { 32 35 "3B:BF:11:00:81:31:fe:45:45:50:41", 33 36 "3B:BF:11:00:81:31:fe:45:4d:43:41", 37 "3B:BF:13:00:81:31:fe:45:45:50:41", 38 "3B:BF:13:00:81:31:fe:45:4d:43:41", 39 NULL 40 }; 41 42 // sequence and number has to match atr table ! 43 static const char *atrust_acos_names[] = { 44 ACOS_EMV_A03, 45 ACOS_EMV_A03, 46 ACOS_EMV_A05, 47 ACOS_EMV_A05, 34 48 NULL 35 49 }; … … 73 87 if (memcmp(card->atr, defatr, len) != 0) 74 88 continue; 89 75 90 match = 1; 91 card->name = atrust_acos_names[i]; 92 76 93 break; 77 94 } … … 90 107 return SC_ERROR_OUT_OF_MEMORY; 91 108 92 card->name = "A-TRUST ACOS";93 109 card->cla = 0x00; 94 110 card->drv_data = (void *)ex_data; … … 103 119 | SC_ALGORITHM_RSA_HASH_MD5_SHA1; 104 120 105 _sc_card_add_rsa_alg(card,1536, flags, 0x10001); 121 if (!strcmp(card->name, ACOS_EMV_A05)) 122 flags |= SC_ALGORITHM_RSA_HASH_SHA256; 123 124 _sc_card_add_rsa_alg(card, 1536, flags, 0x10001); 106 125 107 126 /* we need read_binary&friends with max 128 bytes per read */ … … 508 527 } 509 528 510 511 529 /** atrust_acos_set_security_env 512 530 * sets the security enviroment … … 726 744 r = sc_transmit_apdu(card, &apdu); 727 745 SC_TEST_RET(card->ctx, r, "APDU transmit failed"); 746 if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00) 747 SC_FUNC_RETURN(card->ctx, 4, sc_check_sw(card, apdu.sw1, apdu.sw2)); 728 748 { 729 749 size_t len = apdu.resplen > outlen ? outlen : apdu.resplen;
