Add error codes for blob sanity checks, rebuild error table.

This commit is contained in:
Dr. Stephen Henson 2008-05-30 11:58:50 +00:00
parent 2f2f032497
commit 00f716bbe6
3 changed files with 17 additions and 15 deletions

View file

@ -494,8 +494,7 @@ static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
bh = (BLOBHEADER *)pubkey;
if (bh->bType != PUBLICKEYBLOB)
{
/* FIXME */
fprintf(stderr, "Invalid public key blob\n");
CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_INVALID_PUBLIC_KEY_BLOB);
goto err;
}
if (bh->aiKeyAlg == CALG_RSA_SIGN || bh->aiKeyAlg == CALG_RSA_KEYX)
@ -539,8 +538,7 @@ static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
}
else
{
fprintf(stderr, "Unsupported Key Algorithm %x\n",
bh->aiKeyAlg);
CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_UNSUPPORTED_PUBLIC_KEY_ALGORITHM);
goto err;
}
@ -675,7 +673,7 @@ int capi_rsa_priv_dec(int flen, const unsigned char *from,
capi_key = RSA_get_ex_data(rsa, rsa_capi_idx);
if (!capi_key)
{
CAPIerr(CAPI_F_CAPI_RSA_DECRYPT, CAPI_R_CANT_GET_KEY);
CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_CANT_GET_KEY);
return -1;
}
@ -683,7 +681,7 @@ int capi_rsa_priv_dec(int flen, const unsigned char *from,
{
char errstr[10];
sprintf(errstr, "%d", padding);
CAPIerr(CAPI_F_CAPI_RSA_DECRYPT, CAPI_R_UNSUPPORTED_PADDING);
CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_UNSUPPORTED_PADDING);
ERR_add_error_data(2, "padding=", errstr);
return -1;
}
@ -691,7 +689,7 @@ int capi_rsa_priv_dec(int flen, const unsigned char *from,
/* Create temp reverse order version of input */
if(!(tmpbuf = OPENSSL_malloc(flen)) )
{
CAPIerr(CAPI_F_CAPI_RSA_DECRYPT, ERR_R_MALLOC_FAILURE);
CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, ERR_R_MALLOC_FAILURE);
return -1;
}
for(i = 0; i < flen; i++) tmpbuf[flen - i - 1] = from[i];
@ -699,7 +697,7 @@ int capi_rsa_priv_dec(int flen, const unsigned char *from,
/* Finally decrypt it */
if(!CryptDecrypt(capi_key->key, 0, TRUE, 0, tmpbuf, &flen))
{
CAPIerr(CAPI_F_CAPI_RSA_DECRYPT, CAPI_R_DECRYPT_ERROR);
CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_DECRYPT_ERROR);
capi_addlasterror();
OPENSSL_free(tmpbuf);
return -1;

View file

@ -81,7 +81,7 @@ static ERR_STRING_DATA CAPI_str_functs[]=
{ERR_FUNC(CAPI_F_CAPI_LIST_CONTAINERS), "CAPI_LIST_CONTAINERS"},
{ERR_FUNC(CAPI_F_CAPI_LOAD_PRIVKEY), "CAPI_LOAD_PRIVKEY"},
{ERR_FUNC(CAPI_F_CAPI_OPEN_STORE), "CAPI_OPEN_STORE"},
{ERR_FUNC(CAPI_F_CAPI_RSA_DECRYPT), "CAPI_RSA_DECRYPT"},
{ERR_FUNC(CAPI_F_CAPI_RSA_PRIV_DEC), "CAPI_RSA_PRIV_DEC"},
{ERR_FUNC(CAPI_F_CAPI_RSA_PRIV_ENC), "CAPI_RSA_PRIV_ENC"},
{ERR_FUNC(CAPI_F_CAPI_RSA_SIGN), "CAPI_RSA_SIGN"},
{ERR_FUNC(CAPI_F_WIDE_TO_ASC), "WIDE_TO_ASC"},
@ -106,11 +106,13 @@ static ERR_STRING_DATA CAPI_str_reasons[]=
{ERR_REASON(CAPI_R_FUNCTION_NOT_SUPPORTED),"function not supported"},
{ERR_REASON(CAPI_R_GETUSERKEY_ERROR) ,"getuserkey error"},
{ERR_REASON(CAPI_R_INVALID_LOOKUP_METHOD),"invalid lookup method"},
{ERR_REASON(CAPI_R_INVALID_PUBLIC_KEY_BLOB),"invalid public key blob"},
{ERR_REASON(CAPI_R_PUBKEY_EXPORT_ERROR) ,"pubkey export error"},
{ERR_REASON(CAPI_R_PUBKEY_EXPORT_LENGTH_ERROR),"pubkey export length error"},
{ERR_REASON(CAPI_R_UNKNOWN_COMMAND) ,"unknown command"},
{ERR_REASON(CAPI_R_UNSUPPORTED_ALGORITHM_NID),"unsupported algorithm nid"},
{ERR_REASON(CAPI_R_UNSUPPORTED_PADDING) ,"unsupported padding"},
{ERR_REASON(CAPI_R_UNSUPPORTED_PUBLIC_KEY_ALGORITHM),"unsupported public key algorithm"},
{0,NULL}
};

View file

@ -78,7 +78,7 @@ static void ERR_CAPI_error(int function, int reason, char *file, int line);
#define CAPI_F_CAPI_LIST_CONTAINERS 107
#define CAPI_F_CAPI_LOAD_PRIVKEY 108
#define CAPI_F_CAPI_OPEN_STORE 109
#define CAPI_F_CAPI_RSA_DECRYPT 110
#define CAPI_F_CAPI_RSA_PRIV_DEC 110
#define CAPI_F_CAPI_RSA_PRIV_ENC 111
#define CAPI_F_CAPI_RSA_SIGN 112
#define CAPI_F_WIDE_TO_ASC 113
@ -100,11 +100,13 @@ static void ERR_CAPI_error(int function, int reason, char *file, int line);
#define CAPI_R_FUNCTION_NOT_SUPPORTED 112
#define CAPI_R_GETUSERKEY_ERROR 113
#define CAPI_R_INVALID_LOOKUP_METHOD 114
#define CAPI_R_PUBKEY_EXPORT_ERROR 115
#define CAPI_R_PUBKEY_EXPORT_LENGTH_ERROR 116
#define CAPI_R_UNKNOWN_COMMAND 117
#define CAPI_R_UNSUPPORTED_ALGORITHM_NID 118
#define CAPI_R_UNSUPPORTED_PADDING 119
#define CAPI_R_INVALID_PUBLIC_KEY_BLOB 115
#define CAPI_R_PUBKEY_EXPORT_ERROR 116
#define CAPI_R_PUBKEY_EXPORT_LENGTH_ERROR 117
#define CAPI_R_UNKNOWN_COMMAND 118
#define CAPI_R_UNSUPPORTED_ALGORITHM_NID 119
#define CAPI_R_UNSUPPORTED_PADDING 120
#define CAPI_R_UNSUPPORTED_PUBLIC_KEY_ALGORITHM 121
#ifdef __cplusplus
}