For a long time, I've wanted to be able to easily run one or a few
[oweals/openssl.git] / crypto / pkcs12 / p12_mutl.c
index d1c35ea05aa501c949a983e60df76a6711aa540e..13d866da51290fca62cba9fef55e187b795e61ff 100644 (file)
@@ -56,6 +56,7 @@
  *
  */
 
+#ifndef NO_HMAC
 #include <stdio.h>
 #include "cryptlib.h"
 #include <openssl/hmac.h>
@@ -105,10 +106,7 @@ int PKCS12_verify_mac (PKCS12 *p12, const char *pass, int passlen)
                return 0;
        }
        if ((maclen != (unsigned int)p12->mac->dinfo->digest->length)
-       || memcmp (mac, p12->mac->dinfo->digest->data, maclen)) {
-               PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_VERIFY_ERROR);
-               return 0;
-       }
+       || memcmp (mac, p12->mac->dinfo->digest->data, maclen)) return 0;
        return 1;
 }
 
@@ -130,7 +128,7 @@ int PKCS12_set_mac (PKCS12 *p12, const char *pass, int passlen,
                PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_GENERATION_ERROR);
                return 0;
        }
-       if (!(ASN1_OCTET_STRING_set (p12->mac->dinfo->digest, mac, maclen))) {
+       if (!(M_ASN1_OCTET_STRING_set (p12->mac->dinfo->digest, mac, maclen))) {
                PKCS12err(PKCS12_F_PKCS12_SET_MAC,PKCS12_R_MAC_STRING_SET_ERROR);
                                                return 0;
        }
@@ -141,21 +139,24 @@ int PKCS12_set_mac (PKCS12 *p12, const char *pass, int passlen,
 int PKCS12_setup_mac (PKCS12 *p12, int iter, unsigned char *salt, int saltlen,
             EVP_MD *md_type)
 {
-       if (!(p12->mac = PKCS12_MAC_DATA_new ())) return PKCS12_ERROR;
+       if (!(p12->mac = PKCS12_MAC_DATA_new())) return PKCS12_ERROR;
        if (iter > 1) {
-               if(!(p12->mac->iter = ASN1_INTEGER_new())) {
+               if(!(p12->mac->iter = M_ASN1_INTEGER_new())) {
                        PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE);
                        return 0;
                }
-               ASN1_INTEGER_set (p12->mac->iter, iter);
+               ASN1_INTEGER_set(p12->mac->iter, iter);
        }
        if (!saltlen) saltlen = PKCS12_SALT_LEN;
        p12->mac->salt->length = saltlen;
-       if (!(p12->mac->salt->data = Malloc (saltlen))) {
+       if (!(p12->mac->salt->data = OPENSSL_malloc (saltlen))) {
                PKCS12err(PKCS12_F_PKCS12_SETUP_MAC, ERR_R_MALLOC_FAILURE);
                return 0;
        }
-       if (!salt) RAND_bytes (p12->mac->salt->data, saltlen);
+       if (!salt) {
+               if (RAND_pseudo_bytes (p12->mac->salt->data, saltlen) < 0)
+                       return 0;
+       }
        else memcpy (p12->mac->salt->data, salt, saltlen);
        p12->mac->dinfo->algor->algorithm = OBJ_nid2obj(EVP_MD_type(md_type));
        if (!(p12->mac->dinfo->algor->parameter = ASN1_TYPE_new())) {
@@ -166,3 +167,4 @@ int PKCS12_setup_mac (PKCS12 *p12, int iter, unsigned char *salt, int saltlen,
        
        return 1;
 }
+#endif