@@ -102,24 +102,6 @@ struct mcrd_priv_data {
102
102
103
103
#define DRVDATA (card ) ((struct mcrd_priv_data *) ((card)->drv_data))
104
104
105
- // Control Reference Template Tag for Key Agreement (ISO 7816-4:2013 Table 54)
106
- static const struct sc_asn1_entry c_asn1_control [] = {
107
- { "control" , SC_ASN1_STRUCT , SC_ASN1_CONS | SC_ASN1_CTX | 0xA6 , 0 , NULL , NULL },
108
- { NULL , 0 , 0 , 0 , NULL , NULL }
109
- };
110
-
111
- // Ephemeral public key Template Tag (ISO 7816-8:2016 Table 3)
112
- static const struct sc_asn1_entry c_asn1_ephermal [] = {
113
- { "ephemeral" , SC_ASN1_STRUCT , SC_ASN1_CONS | SC_ASN1_APP | 0x7F49 , 0 , NULL , NULL },
114
- { NULL , 0 , 0 , 0 , NULL , NULL }
115
- };
116
-
117
- // External Public Key
118
- static const struct sc_asn1_entry c_asn1_public [] = {
119
- { "publicKey" , SC_ASN1_OCTET_STRING , SC_ASN1_CTX | 0x86 , 0 , NULL , NULL },
120
- { NULL , 0 , 0 , 0 , NULL , NULL }
121
- };
122
-
123
105
static int load_special_files (sc_card_t * card );
124
106
static int select_part (sc_card_t * card , u8 kind , unsigned short int fid , sc_file_t * * file );
125
107
@@ -950,7 +932,6 @@ static int mcrd_set_security_env(sc_card_t * card,
950
932
951
933
switch (env -> operation ) {
952
934
case SC_SEC_OPERATION_DECIPHER :
953
- case SC_SEC_OPERATION_DERIVE :
954
935
sc_log (card -> ctx , "Using keyref %d to decipher\n" , env -> key_ref [0 ]);
955
936
mcrd_delete_ref_to_authkey (card );
956
937
mcrd_delete_ref_to_signkey (card );
@@ -966,7 +947,6 @@ static int mcrd_set_security_env(sc_card_t * card,
966
947
sbuf [3 ] = env -> key_ref [0 ];
967
948
switch (env -> operation ) {
968
949
case SC_SEC_OPERATION_DECIPHER :
969
- case SC_SEC_OPERATION_DERIVE :
970
950
sc_format_apdu_ex (& apdu , 0x00 , 0x22 , 0x41 , 0xB8 , sbuf , 5 , NULL , 0 );
971
951
break ;
972
952
case SC_SEC_OPERATION_SIGN :
@@ -1043,55 +1023,6 @@ static int mcrd_compute_signature(sc_card_t * card,
1043
1023
SC_FUNC_RETURN (card -> ctx , SC_LOG_DEBUG_VERBOSE , (int )apdu .resplen );
1044
1024
}
1045
1025
1046
- static int mcrd_decipher (struct sc_card * card ,
1047
- const u8 * crgram , size_t crgram_len ,
1048
- u8 * out , size_t outlen )
1049
- {
1050
- sc_security_env_t * env = NULL ;
1051
- int r = 0 ;
1052
- size_t sbuf_len = 0 ;
1053
- sc_apdu_t apdu ;
1054
- u8 * sbuf = NULL ;
1055
- struct sc_asn1_entry asn1_control [2 ], asn1_ephermal [2 ], asn1_public [2 ];
1056
-
1057
- if (card == NULL || crgram == NULL || out == NULL )
1058
- return SC_ERROR_INVALID_ARGUMENTS ;
1059
- env = & DRVDATA (card )-> sec_env ;
1060
-
1061
- LOG_FUNC_CALLED (card -> ctx );
1062
- if (env -> operation != SC_SEC_OPERATION_DERIVE )
1063
- SC_FUNC_RETURN (card -> ctx , SC_LOG_DEBUG_VERBOSE , iso_ops -> decipher (card , crgram , crgram_len , out , outlen ));
1064
- if (crgram_len > 255 )
1065
- SC_FUNC_RETURN (card -> ctx , SC_LOG_DEBUG_VERBOSE , SC_ERROR_INVALID_ARGUMENTS );
1066
-
1067
- sc_log (card -> ctx ,
1068
- "Will derive (%d) for %" SC_FORMAT_LEN_SIZE_T "u (0x%02" SC_FORMAT_LEN_SIZE_T "x) bytes using key %d algorithm %lu flags %lu\n" ,
1069
- env -> operation , crgram_len , crgram_len , env -> key_ref [0 ],
1070
- env -> algorithm , env -> algorithm_flags );
1071
-
1072
- // Encode TLV
1073
- sc_copy_asn1_entry (c_asn1_control , asn1_control );
1074
- sc_copy_asn1_entry (c_asn1_ephermal , asn1_ephermal );
1075
- sc_copy_asn1_entry (c_asn1_public , asn1_public );
1076
- sc_format_asn1_entry (asn1_public + 0 , (void * )crgram , & crgram_len , 1 );
1077
- sc_format_asn1_entry (asn1_ephermal + 0 , & asn1_public , NULL , 1 );
1078
- sc_format_asn1_entry (asn1_control + 0 , & asn1_ephermal , NULL , 1 );
1079
- r = sc_asn1_encode (card -> ctx , asn1_control , & sbuf , & sbuf_len );
1080
- LOG_TEST_RET (card -> ctx , r , "Error encoding TLV." );
1081
-
1082
- // Create APDU
1083
- sc_format_apdu_ex (& apdu , 0x00 , 0x2A , 0x80 , 0x86 , sbuf , sbuf_len , out , MIN (0x80U , outlen ));
1084
- r = sc_transmit_apdu (card , & apdu );
1085
- sc_mem_clear (sbuf , sbuf_len );
1086
- free (sbuf );
1087
- LOG_TEST_RET (card -> ctx , r , "APDU transmit failed" );
1088
-
1089
- r = sc_check_sw (card , apdu .sw1 , apdu .sw2 );
1090
- LOG_TEST_RET (card -> ctx , r , "Card returned error" );
1091
-
1092
- SC_FUNC_RETURN (card -> ctx , SC_LOG_DEBUG_VERBOSE , (int )apdu .resplen );
1093
- }
1094
-
1095
1026
/* added by -mp, to give pin information in the card driver (pkcs15emu->driver needed) */
1096
1027
static int mcrd_pin_cmd (sc_card_t * card , struct sc_pin_cmd_data * data ,
1097
1028
int * tries_left )
@@ -1127,7 +1058,6 @@ static struct sc_card_driver *sc_get_driver(void)
1127
1058
mcrd_ops .select_file = mcrd_select_file ;
1128
1059
mcrd_ops .set_security_env = mcrd_set_security_env ;
1129
1060
mcrd_ops .compute_signature = mcrd_compute_signature ;
1130
- mcrd_ops .decipher = mcrd_decipher ;
1131
1061
mcrd_ops .pin_cmd = mcrd_pin_cmd ;
1132
1062
mcrd_ops .logout = mcrd_logout ;
1133
1063
0 commit comments