Add error codes for blob sanity checks, rebuild error table.
authorDr. Stephen Henson <steve@openssl.org>
Fri, 30 May 2008 11:58:50 +0000 (11:58 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 30 May 2008 11:58:50 +0000 (11:58 +0000)
engines/e_capi.c
engines/e_capi_err.c
engines/e_capi_err.h

index 86fa204990f665b16687a684bce2ca2660fa8b69..10f15da138ec87b73c3a640fa52aee5d2afa3c02 100644 (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;
index 64e10e929d0a4568a035770313520093d186fa29..bfead58c5997e7dc8e362e11b74e9f7648706a4b 100644 (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}
        };
 
index 50ad51d9c47a18c7526c7dabf70fe17b2e8f35f0..f0e1ff1f957f9b53f2f89db9fc571e4fa4dfb519 100644 (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
 }