- fix cflex key generation

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1536 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
okir 2003-10-18 08:39:40 +00:00
parent 937e6c711d
commit 927ae344cc
3 changed files with 6 additions and 2 deletions

View File

@ -864,7 +864,7 @@ static int flex_generate_key(sc_card_t *card, struct sc_cardctl_cryptoflex_genke
{
struct sc_apdu apdu;
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
int r, p2;
int r, p1, p2;
switch (data->key_bits) {
case 512: p2 = 0x40; break;
@ -876,7 +876,9 @@ static int flex_generate_key(sc_card_t *card, struct sc_cardctl_cryptoflex_genke
return SC_ERROR_INVALID_ARGUMENTS;
}
sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x46, 0x01, p2);
p1 = data->key_num;
sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x46, p1, p2);
apdu.cla = 0xF0;
apdu.data = sbuf;
apdu.datalen = 4;

View File

@ -167,6 +167,7 @@ struct sc_cardctl_etoken_genkey_info {
* Cryptoflex info
*/
struct sc_cardctl_cryptoflex_genkey_info {
unsigned int key_num;
unsigned int key_bits;
unsigned long exponent;
unsigned char * pubkey;

View File

@ -301,6 +301,7 @@ cflex_generate_key(sc_profile_t *profile, sc_card_t *card,
memset(&args, 0, sizeof(args));
args.exponent = 0x10001;
args.key_bits = keybits;
args.key_num = key_info->key_reference;
r = sc_card_ctl(card, SC_CARDCTL_CRYPTOFLEX_GENERATE_KEY, &args);
if (r < 0)
goto out;