ruToken C fixups
http://www.opensc-project.org/pipermail/opensc-devel/2008-April/011011.html By Douglas E. Engert git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3463 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
6e65efb257
commit
66d819a3a6
|
@ -126,6 +126,11 @@ static int rutoken_match_card(sc_card_t *card)
|
|||
static int rutoken_init(sc_card_t *card)
|
||||
{
|
||||
int ret = SC_ERROR_MEMORY_FAILURE;
|
||||
unsigned int flags = SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_PKCS1;
|
||||
/* SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_HASH_SHA1
|
||||
| SC_ALGORITHM_RSA_HASH_MD5_SHA1
|
||||
| SC_ALGORITHM_RSA_PAD_NONE */
|
||||
sc_algorithm_info_t info;
|
||||
|
||||
SC_FUNC_CALLED(card->ctx, 1);
|
||||
|
||||
|
@ -139,17 +144,12 @@ static int rutoken_init(sc_card_t *card)
|
|||
}
|
||||
/* add algorithm
|
||||
TODO: may nid som other flag */
|
||||
unsigned int flags = SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_PKCS1;
|
||||
/* SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_HASH_SHA1
|
||||
| SC_ALGORITHM_RSA_HASH_MD5_SHA1
|
||||
| SC_ALGORITHM_RSA_PAD_NONE */
|
||||
|
||||
_sc_card_add_rsa_alg(card, 256, flags, 0);
|
||||
_sc_card_add_rsa_alg(card, 512, flags, 0);
|
||||
_sc_card_add_rsa_alg(card, 768, flags, 0);
|
||||
_sc_card_add_rsa_alg(card, 1024, flags, 0);
|
||||
_sc_card_add_rsa_alg(card, 2048, flags, 0);
|
||||
sc_algorithm_info_t info;
|
||||
flags = SC_ALGORITHM_GOST_CRYPT_PZ | SC_ALGORITHM_GOST_CRYPT_GAMM
|
||||
| SC_ALGORITHM_GOST_CRYPT_GAMMOS;
|
||||
memset(&info, 0, sizeof(info));
|
||||
|
@ -282,11 +282,11 @@ static int make_le_path(u8 *hPath, size_t len)
|
|||
|
||||
static int rutoken_list_files(sc_card_t *card, u8 *buf, size_t buflen)
|
||||
{
|
||||
SC_FUNC_CALLED(card->ctx, 1);
|
||||
u8 rbuf[256];
|
||||
u8 previd[2];
|
||||
int r = 0, len=0;
|
||||
sc_apdu_t apdu;
|
||||
|
||||
SC_FUNC_CALLED(card->ctx, 1);
|
||||
/* sc_debug(card->ctx, "\n\tpath = %s\n\ttype = %d", hexdump(path, pathlen), in_path->type); */
|
||||
/* prepare & transmit APDU */
|
||||
|
@ -706,12 +706,13 @@ static int rutoken_set_security_env(sc_card_t *card,
|
|||
const sc_security_env_t *env,
|
||||
int se_num)
|
||||
{
|
||||
SC_FUNC_CALLED(card->ctx, 1);
|
||||
sc_apdu_t apdu;
|
||||
auth_senv_t *senv = (auth_senv_t*)card->drv_data;
|
||||
if (!senv || !env) return SC_ERROR_INVALID_ARGUMENTS;
|
||||
u8 data[3] = {0x83, 0x01, env->key_ref[0]};
|
||||
int ret = SC_NO_ERROR;
|
||||
|
||||
SC_FUNC_CALLED(card->ctx, 1);
|
||||
if (!senv || !env) return SC_ERROR_INVALID_ARGUMENTS;
|
||||
if(env->algorithm == SC_ALGORITHM_RSA)
|
||||
{
|
||||
senv->algorithm = SC_ALGORITHM_RSA_RAW;
|
||||
|
@ -1195,8 +1196,9 @@ static int sign_ext(sc_card_t *card, const u8 *data, size_t len, u8 *out, size_t
|
|||
r = RSA_private_encrypt(len, data, out, pkey->pkey.rsa, RSA_PKCS1_PADDING);
|
||||
if ( r < 0)
|
||||
{
|
||||
ret = SC_ERROR_INTERNAL;
|
||||
char error[1024];
|
||||
|
||||
ret = SC_ERROR_INTERNAL;
|
||||
ERR_load_crypto_strings();
|
||||
ERR_error_string(ERR_get_error(), error);
|
||||
sc_error(card->ctx, error);
|
||||
|
@ -1224,8 +1226,9 @@ static int decipher_ext(sc_card_t *card, const u8 *data, size_t len, u8 *out, si
|
|||
ret = RSA_private_decrypt(len, data, out, pkey->pkey.rsa, RSA_PKCS1_PADDING);
|
||||
if ( ret < 0)
|
||||
{
|
||||
ret = SC_ERROR_INTERNAL;
|
||||
char error[1024];
|
||||
|
||||
ret = SC_ERROR_INTERNAL;
|
||||
ERR_load_crypto_strings();
|
||||
ERR_error_string(ERR_get_error(), error);
|
||||
sc_error(card->ctx, error);
|
||||
|
|
|
@ -97,6 +97,7 @@ static int bin_to_private_blob(RUPRIVATEKEYBLOB *pr_blob, const u8* buf, size_t
|
|||
{
|
||||
const u8 *tmp;
|
||||
size_t len = 2 + sizeof(pr_blob->blobheader) + sizeof(pr_blob->rsapubkey);
|
||||
uint32_t bitlen;
|
||||
|
||||
if (buf_len < len)
|
||||
return -1;
|
||||
|
@ -108,7 +109,7 @@ static int bin_to_private_blob(RUPRIVATEKEYBLOB *pr_blob, const u8* buf, size_t
|
|||
memcpy(&pr_blob->rsapubkey, tmp, sizeof(pr_blob->rsapubkey));
|
||||
tmp += sizeof(pr_blob->rsapubkey);
|
||||
|
||||
uint32_t bitlen = pr_blob->rsapubkey.bitlen;
|
||||
bitlen = pr_blob->rsapubkey.bitlen;
|
||||
|
||||
len += bitlen/8 * 2 + bitlen/16 * 5;
|
||||
if (buf_len < len)
|
||||
|
@ -271,6 +272,7 @@ static int get_sc_pksc15_prkey_rsa(const RUPRIVATEKEYBLOB *pr_blob, struct sc_pk
|
|||
|
||||
static int private_blob_to_bin(const RUPRIVATEKEYBLOB *pr_blob, u8 *buf, size_t *buf_len)
|
||||
{
|
||||
u8 *tmp;
|
||||
size_t len = 2 + sizeof(pr_blob->blobheader) + sizeof(pr_blob->rsapubkey);
|
||||
|
||||
if(*buf_len < len)
|
||||
|
@ -278,7 +280,7 @@ static int private_blob_to_bin(const RUPRIVATEKEYBLOB *pr_blob, u8 *buf, size_t
|
|||
|
||||
buf[0] = 2;
|
||||
buf[1] = 1;
|
||||
u8 *tmp = buf + 2;
|
||||
tmp = buf + 2;
|
||||
memcpy(tmp, &pr_blob->blobheader, sizeof(pr_blob->blobheader));
|
||||
tmp += sizeof(pr_blob->blobheader);
|
||||
|
||||
|
|
Loading…
Reference in New Issue