3131#include "asn1.h"
3232#include "cardctl.h"
3333
34- #define _FINEID_BROKEN_SELECT_FLAG 1
35-
3634static const struct sc_atr_table setcos_atrs [] = {
3735 /* some Nokia branded SC */
3836 { "3B:1F:11:00:67:80:42:46:49:53:45:10:52:66:FF:81:90:00" , NULL , NULL , SC_CARD_TYPE_SETCOS_GENERIC , 0 , NULL },
3937 /* RSA SecurID 3100 */
4038 { "3B:9F:94:40:1E:00:67:16:43:46:49:53:45:10:52:66:FF:81:90:00" , NULL , NULL , SC_CARD_TYPE_SETCOS_PKI , 0 , NULL },
41-
42- /* FINEID 1016 (SetCOS 4.3.1B3/PKCS#15, VRK) */
43- { "3b:9f:94:40:1e:00:67:00:43:46:49:53:45:10:52:66:ff:81:90:00" , "ff:ff:ff:ff:ff:ff:ff:00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff" , NULL , SC_CARD_TYPE_SETCOS_FINEID , SC_CARD_FLAG_RNG , NULL },
44- /* FINEID 2032 (EIDApplet/7816-15, VRK test) */
45- { "3b:6b:00:ff:80:62:00:a2:56:46:69:6e:45:49:44" , "ff:ff:00:ff:ff:ff:00:ff:ff:ff:ff:ff:ff:ff:ff" , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
46- /* FINEID 2132 (EIDApplet/7816-15, 3rdparty test) */
47- { "3b:64:00:ff:80:62:00:a2" , "ff:ff:00:ff:ff:ff:00:ff" , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
48- /* FINEID 2064 (EIDApplet/7816-15, VRK) */
49- { "3b:7b:00:00:00:80:62:00:51:56:46:69:6e:45:49:44" , "ff:ff:00:ff:ff:ff:ff:f0:ff:ff:ff:ff:ff:ff:ff:ff" , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
50- /* FINEID 2164 (EIDApplet/7816-15, 3rdparty) */
51- { "3b:64:00:00:80:62:00:51" , "ff:ff:ff:ff:ff:ff:f0:ff" , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
52- /* FINEID 2264 (EIDApplet/7816-15, OPK/EMV/AVANT) */
53- { "3b:6e:00:00:00:62:00:00:57:41:56:41:4e:54:10:81:90:00" , NULL , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
54- { "3b:7b:94:00:00:80:62:11:51:56:46:69:6e:45:49:44" , NULL , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , 0 , NULL },
55- /* FINEID cards 1.3.2011 with Samsung chips (round connector) that supports 2048 bit keys. */
56- { "3b:7b:94:00:00:80:62:12:51:56:46:69:6e:45:49:44" , NULL , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2_2048 , 0 , NULL },
57- /* FINEID card for organisations, chip unknown. */
58- { "3b:7b:18:00:00:80:62:01:54:56:46:69:6e:45:49:44" , NULL , NULL , SC_CARD_TYPE_SETCOS_FINEID_V2 , _FINEID_BROKEN_SELECT_FLAG , NULL },
5939 /* Swedish NIDEL card */
6040 { "3b:9f:94:80:1f:c3:00:68:10:44:05:01:46:49:53:45:31:c8:07:90:00:18" , NULL , NULL , SC_CARD_TYPE_SETCOS_NIDEL , 0 , NULL },
6141 /* Setcos 4.4.1 */
@@ -107,11 +87,6 @@ static int setcos_match_card(sc_card_t *card)
10787
10888 i = _sc_match_atr (card , setcos_atrs , & card -> type );
10989 if (i < 0 ) {
110- /* Unknown card, but has the FinEID application for sure */
111- if (match_hist_bytes (card , "FinEID" , 0 )) {
112- card -> type = SC_CARD_TYPE_SETCOS_FINEID_V2_2048 ;
113- return 1 ;
114- }
11590 if (match_hist_bytes (card , "FISE" , 0 )) {
11691 card -> type = SC_CARD_TYPE_SETCOS_GENERIC ;
11792 return 1 ;
@@ -164,8 +139,6 @@ static int setcos_init(sc_card_t *card)
164139 }
165140
166141 switch (card -> type ) {
167- case SC_CARD_TYPE_SETCOS_FINEID :
168- case SC_CARD_TYPE_SETCOS_FINEID_V2_2048 :
169142 case SC_CARD_TYPE_SETCOS_NIDEL :
170143 card -> cla = 0x00 ;
171144 select_pkcs15_app (card );
@@ -190,7 +163,6 @@ static int setcos_init(sc_card_t *card)
190163
191164 switch (card -> type ) {
192165 case SC_CARD_TYPE_SETCOS_PKI :
193- case SC_CARD_TYPE_SETCOS_FINEID_V2_2048 :
194166 {
195167 unsigned long flags ;
196168
@@ -593,9 +565,7 @@ static int setcos_set_security_env2(sc_card_t *card,
593565 break ;
594566 case SC_SEC_OPERATION_SIGN :
595567 /* Should be 0x41 */
596- apdu .p1 = ((card -> type == SC_CARD_TYPE_SETCOS_FINEID_V2 ) ||
597- (card -> type == SC_CARD_TYPE_SETCOS_FINEID_V2_2048 ) ||
598- (card -> type == SC_CARD_TYPE_SETCOS_44 ) ||
568+ apdu .p1 = ((card -> type == SC_CARD_TYPE_SETCOS_44 ) ||
599569 (card -> type == SC_CARD_TYPE_SETCOS_NIDEL ) ||
600570 SETCOS_IS_EID_APPLET (card )) ? 0x41 : 0x81 ;
601571 apdu .p2 = 0xB6 ;
@@ -617,8 +587,7 @@ static int setcos_set_security_env2(sc_card_t *card,
617587 p += env -> file_ref .len ;
618588 }
619589 if (env -> flags & SC_SEC_ENV_KEY_REF_PRESENT &&
620- !(card -> type == SC_CARD_TYPE_SETCOS_NIDEL ||
621- card -> type == SC_CARD_TYPE_SETCOS_FINEID_V2_2048 )) {
590+ !(card -> type == SC_CARD_TYPE_SETCOS_NIDEL )) {
622591 if (env -> flags & SC_SEC_ENV_KEY_REF_SYMMETRIC )
623592 * p ++ = 0x83 ;
624593 else
@@ -679,8 +648,6 @@ static int setcos_set_security_env(sc_card_t *card,
679648 }
680649 switch (card -> type ) {
681650 case SC_CARD_TYPE_SETCOS_PKI :
682- case SC_CARD_TYPE_SETCOS_FINEID :
683- case SC_CARD_TYPE_SETCOS_FINEID_V2_2048 :
684651 case SC_CARD_TYPE_SETCOS_NIDEL :
685652 case SC_CARD_TYPE_SETCOS_44 :
686653 case SC_CARD_TYPE_SETCOS_EID_V2_0 :
@@ -922,9 +889,6 @@ static int setcos_select_file(sc_card_t *card,
922889 int r ;
923890
924891 r = iso_ops -> select_file (card , in_path , file );
925- /* Certain FINeID cards for organisations return 6A88 instead of 6A82 for missing files */
926- if (card -> flags & _FINEID_BROKEN_SELECT_FLAG && r == SC_ERROR_DATA_OBJECT_NOT_FOUND )
927- return SC_ERROR_FILE_NOT_FOUND ;
928892 if (r )
929893 return r ;
930894 if (file != NULL ) {
0 commit comments