Changeset 3306

Show
Ignore:
Timestamp:
12/19/07 09:58:29 (13 months ago)
Author:
jps
Message:

support for Siemens CardOS V4.2C

Location:
trunk/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/libopensc/card-cardos.c

    r3303 r3306  
    9494                        sc_debug(card->ctx, "found cardos m4.01"); 
    9595                        card->type = SC_CARD_TYPE_CARDOS_M4_01; 
    96                 } else if (card->atr[11] >= 0x08) { 
    97                         sc_debug(card->ctx, "found cardos v4.3b or higher"); 
     96                } else if (card->atr[11] == 0x08) { 
     97                        sc_debug(card->ctx, "found cardos v4.3b"); 
    9898                        card->type = SC_CARD_TYPE_CARDOS_M4_3; 
    99                 } else if (card->atr[11] >= 0x09) { 
    100                         sc_debug(card->ctx, "found cardos v4.2b or higher"); 
     99                } else if (card->atr[11] == 0x09) { 
     100                        sc_debug(card->ctx, "found cardos v4.2b"); 
    101101                        card->type = SC_CARD_TYPE_CARDOS_M4_2B; 
     102                } else if (card->atr[11] >= 0x0B) { 
     103                        sc_debug(card->ctx, "found cardos v4.2c or higher"); 
     104                        card->type = SC_CARD_TYPE_CARDOS_M4_2C; 
    102105                } else { 
    103106                        sc_debug(card->ctx, "found cardos m4.2"); 
     
    168171                card->caps |= SC_CARD_CAP_APDU_EXT; 
    169172        } else if (card->type == SC_CARD_TYPE_CARDOS_M4_3  
    170                 || card->type == SC_CARD_TYPE_CARDOS_M4_2B) { 
     173                || card->type == SC_CARD_TYPE_CARDOS_M4_2B 
     174                || card->type == SC_CARD_TYPE_CARDOS_M4_2C) { 
    171175                card->caps |= SC_CARD_CAP_RSA_2048; 
    172176                card->caps |= SC_CARD_CAP_APDU_EXT; 
     
    646650        } else if (card->type == SC_CARD_TYPE_CARDOS_M4_2 || 
    647651                   card->type == SC_CARD_TYPE_CARDOS_M4_3 || 
    648                    card->type == SC_CARD_TYPE_CARDOS_M4_2B) { 
     652                   card->type == SC_CARD_TYPE_CARDOS_M4_2B || 
     653                   card->type == SC_CARD_TYPE_CARDOS_M4_2C) { 
    649654                u8        sbuf[SC_MAX_APDU_BUFFER_SIZE]; 
    650655                size_t    len = sizeof(sbuf); 
  • trunk/src/libopensc/cards.h

    r3237 r3306  
    4343        SC_CARD_TYPE_CARDOS_M4_2, 
    4444        SC_CARD_TYPE_CARDOS_M4_3, 
    45         SC_CARD_TYPE_CARDOS_M4_2B, /* 4.2b is the latest after 4.3b */ 
     45        SC_CARD_TYPE_CARDOS_M4_2B, /* 4.2b is after 4.3b */ 
     46        SC_CARD_TYPE_CARDOS_M4_2C, 
    4647 
    4748        /* flex/cyberflex drivers */ 
  • trunk/src/pkcs15init/pkcs15-cardos.c

    r3237 r3306  
    623623 
    624624        if (key_info->modulus_length > 1024 && (card->type == SC_CARD_TYPE_CARDOS_M4_2 || 
    625             card->type == SC_CARD_TYPE_CARDOS_M4_3 ||card->type == SC_CARD_TYPE_CARDOS_M4_2B)) { 
     625            card->type == SC_CARD_TYPE_CARDOS_M4_3 ||card->type == SC_CARD_TYPE_CARDOS_M4_2B || 
     626            card->type == SC_CARD_TYPE_CARDOS_M4_2C )) { 
    626627                r = cardos_store_key_component(card, algorithm, key_id, pin_id, 0, 
    627628                        key->p.data, key->p.len, 0, 0); 
  • trunk/src/tools/cardos-info.c

    r3237 r3306  
    137137                return 1; 
    138138        } 
    139  
    140139        printf("OS Version: %d.%d", apdu.resp[0], apdu.resp[1]); 
    141140        if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x02) { 
     
    153152        } else if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x09) { 
    154153                printf(" (that's CardOS M4.2b)\n"); 
     154        } else if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x0B) { 
     155                printf(" (that's CardOS M4.2c)\n");      
    155156        } else { 
    156157                printf(" (unknown Version)\n");