Add new error codes, log unknown magic or algorithm IDs.

This commit is contained in:
Dr. Stephen Henson 2008-05-30 15:24:19 +00:00
parent 0330a13aea
commit 058ffd7623
3 changed files with 18 additions and 8 deletions

View File

@ -527,8 +527,10 @@ static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
rp = (RSAPUBKEY *)(bh + 1); rp = (RSAPUBKEY *)(bh + 1);
if (rp->magic != 0x31415352) if (rp->magic != 0x31415352)
{ {
fprintf(stderr, "Invalid blob Magic %x\n", char magstr[10];
rp->magic); BIO_snprintf(10, magstr, "%lx", rp->magic);
CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_INVALID_RSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER);
ERR_add_error_data(2, "magic=0x", magstr);
goto err; goto err;
} }
rsa_modulus = (unsigned char *)(rp + 1); rsa_modulus = (unsigned char *)(rp + 1);
@ -566,8 +568,10 @@ static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
dp = (DSSPUBKEY *)(bh + 1); dp = (DSSPUBKEY *)(bh + 1);
if (dp->magic != 0x31535344) if (dp->magic != 0x31535344)
{ {
fprintf(stderr, "Invalid blob Magic %x\n", char magstr[10];
dp->magic); BIO_snprintf(10, magstr, "%lx", rp->magic);
CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_INVALID_DSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER);
ERR_add_error_data(2, "magic=0x", magstr);
goto err; goto err;
} }
dsa_plen = dp->bitlen / 8; dsa_plen = dp->bitlen / 8;
@ -604,8 +608,10 @@ static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
} }
else else
{ {
BIO_dump_fp(stderr, pubkey, len); char algstr[10];
BIO_snprintf(10, algstr, "%lx", bh->aiKeyAlg);
CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_UNSUPPORTED_PUBLIC_KEY_ALGORITHM); CAPIerr(CAPI_F_CAPI_LOAD_PRIVKEY, CAPI_R_UNSUPPORTED_PUBLIC_KEY_ALGORITHM);
ERR_add_error_data(2, "aiKeyAlg=0x", algstr);
goto err; goto err;
} }
@ -676,7 +682,7 @@ int capi_rsa_sign(int dtype, const unsigned char *m, unsigned int m_len,
default: default:
{ {
char algstr[10]; char algstr[10];
sprintf(algstr, "%lx", dtype); BIO_snprintf(10, algstr, "%lx", dtype);
CAPIerr(CAPI_F_CAPI_RSA_SIGN, CAPI_R_UNSUPPORTED_ALGORITHM_NID); CAPIerr(CAPI_F_CAPI_RSA_SIGN, CAPI_R_UNSUPPORTED_ALGORITHM_NID);
ERR_add_error_data(2, "NID=0x", algstr); ERR_add_error_data(2, "NID=0x", algstr);
return -1; return -1;
@ -749,7 +755,7 @@ int capi_rsa_priv_dec(int flen, const unsigned char *from,
if(padding != RSA_PKCS1_PADDING) if(padding != RSA_PKCS1_PADDING)
{ {
char errstr[10]; char errstr[10];
sprintf(errstr, "%d", padding); BIO_snprintf(10, errstr, "%d", padding);
CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_UNSUPPORTED_PADDING); CAPIerr(CAPI_F_CAPI_RSA_PRIV_DEC, CAPI_R_UNSUPPORTED_PADDING);
ERR_add_error_data(2, "padding=", errstr); ERR_add_error_data(2, "padding=", errstr);
return -1; return -1;
@ -814,7 +820,7 @@ static void capi_addlasterror(void)
static void capi_adderror(DWORD err) static void capi_adderror(DWORD err)
{ {
char errstr[10]; char errstr[10];
sprintf(errstr, "%lX", err); BIO_snprintf(10, errstr, "%lX", err);
ERR_add_error_data(2, "Error code= 0x", errstr); ERR_add_error_data(2, "Error code= 0x", errstr);
} }

View File

@ -105,8 +105,10 @@ static ERR_STRING_DATA CAPI_str_reasons[]=
{ERR_REASON(CAPI_R_ERROR_SIGNING_HASH) ,"error signing hash"}, {ERR_REASON(CAPI_R_ERROR_SIGNING_HASH) ,"error signing hash"},
{ERR_REASON(CAPI_R_FUNCTION_NOT_SUPPORTED),"function not supported"}, {ERR_REASON(CAPI_R_FUNCTION_NOT_SUPPORTED),"function not supported"},
{ERR_REASON(CAPI_R_GETUSERKEY_ERROR) ,"getuserkey error"}, {ERR_REASON(CAPI_R_GETUSERKEY_ERROR) ,"getuserkey error"},
{ERR_REASON(CAPI_R_INVALID_DSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER),"invalid dsa public key blob magic number"},
{ERR_REASON(CAPI_R_INVALID_LOOKUP_METHOD),"invalid lookup method"}, {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_INVALID_PUBLIC_KEY_BLOB),"invalid public key blob"},
{ERR_REASON(CAPI_R_INVALID_RSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER),"invalid rsa public key blob magic number"},
{ERR_REASON(CAPI_R_PUBKEY_EXPORT_ERROR) ,"pubkey export error"}, {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_PUBKEY_EXPORT_LENGTH_ERROR),"pubkey export length error"},
{ERR_REASON(CAPI_R_UNKNOWN_COMMAND) ,"unknown command"}, {ERR_REASON(CAPI_R_UNKNOWN_COMMAND) ,"unknown command"},

View File

@ -99,8 +99,10 @@ static void ERR_CAPI_error(int function, int reason, char *file, int line);
#define CAPI_R_ERROR_SIGNING_HASH 111 #define CAPI_R_ERROR_SIGNING_HASH 111
#define CAPI_R_FUNCTION_NOT_SUPPORTED 112 #define CAPI_R_FUNCTION_NOT_SUPPORTED 112
#define CAPI_R_GETUSERKEY_ERROR 113 #define CAPI_R_GETUSERKEY_ERROR 113
#define CAPI_R_INVALID_DSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER 122
#define CAPI_R_INVALID_LOOKUP_METHOD 114 #define CAPI_R_INVALID_LOOKUP_METHOD 114
#define CAPI_R_INVALID_PUBLIC_KEY_BLOB 115 #define CAPI_R_INVALID_PUBLIC_KEY_BLOB 115
#define CAPI_R_INVALID_RSA_PUBLIC_KEY_BLOB_MAGIC_NUMBER 123
#define CAPI_R_PUBKEY_EXPORT_ERROR 116 #define CAPI_R_PUBKEY_EXPORT_ERROR 116
#define CAPI_R_PUBKEY_EXPORT_LENGTH_ERROR 117 #define CAPI_R_PUBKEY_EXPORT_LENGTH_ERROR 117
#define CAPI_R_UNKNOWN_COMMAND 118 #define CAPI_R_UNKNOWN_COMMAND 118