RT2210: Add missing EVP_cleanup to example
[oweals/openssl.git] / crypto / pem / pem_lib.c
index 18cde7c2d9fb06d522af50cb4e5000785d1753c3..2d328b4d36c4b997a3ab716f82006caca00f007f 100644 (file)
@@ -236,6 +236,9 @@ static int check_pem(const char *nm, const char *name)
                        }
                return 0;
                }
+       /* If reading DH parameters handle X9.42 DH format too */
+       if(!strcmp(nm,PEM_STRING_DHXPARAMS) &&
+               !strcmp(name,PEM_STRING_DHPARAMS)) return 1;
 
        /* Permit older strings */
 
@@ -477,8 +480,9 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
        EVP_CIPHER_CTX_cleanup(&ctx);
        OPENSSL_cleanse((char *)buf,sizeof(buf));
        OPENSSL_cleanse((char *)key,sizeof(key));
-       j+=i;
-       if (!o)
+       if (o)
+               j+=i;
+       else
                {
                PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT);
                return(0);
@@ -489,7 +493,6 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
 
 int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
        {
-       int o;
        const EVP_CIPHER *enc=NULL;
        char *p,c;
        char **header_pp = &header;
@@ -529,7 +532,6 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
                header++;
                }
        *header='\0';
-       o=OBJ_sn2nid(p);
        cipher->cipher=enc=EVP_get_cipherbyname(p);
        *header=c;
        header++;
@@ -575,8 +577,8 @@ static int load_iv(char **fromp, unsigned char *to, int num)
        }
 
 #ifndef OPENSSL_NO_FP_API
-int PEM_write(FILE *fp, char *name, char *header, unsigned char *data,
-            long len)
+int PEM_write(FILE *fp, const char *name, const char *header,
+             const unsigned char *data, long len)
         {
         BIO *b;
         int ret;
@@ -593,8 +595,8 @@ int PEM_write(FILE *fp, char *name, char *header, unsigned char *data,
         }
 #endif
 
-int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
-            long len)
+int PEM_write_bio(BIO *bp, const char *name, const char *header,
+                 const unsigned char *data, long len)
        {
        int nlen,n,i,j,outl;
        unsigned char *buf = NULL;