[BACK]Return to sshkey.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/sshkey.c between version 1.34 and 1.35

version 1.34, 2016/06/17 05:06:23 version 1.35, 2016/06/19 07:48:02
Line 3730 
Line 3730 
   
         if ((pk = PEM_read_bio_PrivateKey(bio, NULL, NULL,          if ((pk = PEM_read_bio_PrivateKey(bio, NULL, NULL,
             (char *)passphrase)) == NULL) {              (char *)passphrase)) == NULL) {
                 unsigned long pem_err = ERR_peek_last_error();                  r = SSH_ERR_KEY_WRONG_PASSPHRASE;
                 int pem_reason = ERR_GET_REASON(pem_err);  
   
                 /*  
                  * Translate OpenSSL error codes to determine whether  
                  * passphrase is required/incorrect.  
                  */  
                 switch (ERR_GET_LIB(pem_err)) {  
                 case ERR_LIB_PEM:  
                         switch (pem_reason) {  
                         case PEM_R_BAD_PASSWORD_READ:  
                         case PEM_R_PROBLEMS_GETTING_PASSWORD:  
                         case PEM_R_BAD_DECRYPT:  
                                 r = SSH_ERR_KEY_WRONG_PASSPHRASE;  
                                 goto out;  
                         default:  
                                 r = SSH_ERR_INVALID_FORMAT;  
                                 goto out;  
                         }  
                 case ERR_LIB_EVP:  
                         switch (pem_reason) {  
                         case EVP_R_BAD_DECRYPT:  
                                 r = SSH_ERR_KEY_WRONG_PASSPHRASE;  
                                 goto out;  
                         case EVP_R_BN_DECODE_ERROR:  
                         case EVP_R_DECODE_ERROR:  
                         case EVP_R_PRIVATE_KEY_DECODE_ERROR:  
                                 r = SSH_ERR_INVALID_FORMAT;  
                                 goto out;  
                         default:  
                                 r = SSH_ERR_LIBCRYPTO_ERROR;  
                                 goto out;  
                         }  
                 case ERR_LIB_ASN1:  
                         r = SSH_ERR_INVALID_FORMAT;  
                         goto out;  
                 }  
                 r = SSH_ERR_LIBCRYPTO_ERROR;  
                 goto out;                  goto out;
         }          }
         if (pk->type == EVP_PKEY_RSA &&          if (pk->type == EVP_PKEY_RSA &&

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35