Hello,

I am sending changes that we have applied to the distribution of OpenSSL.

Enhancements are:
- engines/e_capi.c - Adding SHA2 to capi engine.
- crypto/x509v3/v3_lib.c - Prioritizing user X509V3_EXT_METHODover 
standard X509V3_EXT_METHOD, which allow us to extend display of 
GeneralName/Othername in text format.

Regards
Libor Krystek


diff -uNr openssl-1.0.1g/crypto/cms/cms_lcl.h 
openssl-1.0.1g-ICA/crypto/cms/cms_lcl.h
--- openssl-1.0.1g/crypto/cms/cms_lcl.h 2014-03-17 17:14:20.000000000 +0100
+++ openssl-1.0.1g-ICA/crypto/cms/cms_lcl.h     2014-05-23 12:01:00.000000000 
+0200
@@ -418,7 +418,7 @@
 DECLARE_ASN1_ITEM(CMS_Attributes_Verify)
 DECLARE_ASN1_ITEM(CMS_RecipientInfo)
 DECLARE_ASN1_ITEM(CMS_PasswordRecipientInfo)
-DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_IssuerAndSerialNumber)
+/* DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_IssuerAndSerialNumber) */
 
 #define CMS_SIGNERINFO_ISSUER_SERIAL   0
 #define CMS_SIGNERINFO_KEYIDENTIFIER   1
@@ -442,8 +442,10 @@
                                        X509_NAME **issuer, ASN1_INTEGER **sno);
 int cms_SignerIdentifier_cert_cmp(CMS_SignerIdentifier *sid, X509 *cert);
 
+#ifdef ZLIB
 CMS_ContentInfo *cms_CompressedData_create(int comp_nid);
 BIO *cms_CompressedData_init_bio(CMS_ContentInfo *cms);
+#endif
 
 void cms_DigestAlgorithm_set(X509_ALGOR *alg, const EVP_MD *md);
 BIO *cms_DigestAlgorithm_init_bio(X509_ALGOR *digestAlgorithm);
diff -uNr openssl-1.0.1g/crypto/ec/ec_lcl.h 
openssl-1.0.1g-ICA/crypto/ec/ec_lcl.h
--- openssl-1.0.1g/crypto/ec/ec_lcl.h   2014-03-17 17:14:20.000000000 +0100
+++ openssl-1.0.1g-ICA/crypto/ec/ec_lcl.h       2014-05-23 12:01:00.000000000 
+0200
@@ -404,7 +404,7 @@
 int ec_GF2m_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
 int ec_GF2m_have_precompute_mult(const EC_GROUP *group);
 
-#ifndef OPENSSL_EC_NISTP_64_GCC_128
+#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
 /* method functions in ecp_nistp224.c */
 int ec_GFp_nistp224_group_init(EC_GROUP *group);
 int ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p, const 
BIGNUM *a, const BIGNUM *n, BN_CTX *);
diff -uNr openssl-1.0.1g/crypto/x509v3/v3_lib.c 
openssl-1.0.1g-ICA/crypto/x509v3/v3_lib.c
--- openssl-1.0.1g/crypto/x509v3/v3_lib.c       2014-03-17 17:14:20.000000000 
+0100
+++ openssl-1.0.1g-ICA/crypto/x509v3/v3_lib.c   2014-05-23 12:19:50.039029618 
+0200
@@ -101,12 +101,16 @@
        int idx;
        if(nid < 0) return NULL;
        tmp.ext_nid = nid;
+// ICA - begin
+       if(ext_list)
+       {
+               idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp);
+               if(idx != -1) return sk_X509V3_EXT_METHOD_value(ext_list, idx);
+       }
        ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT);
        if(ret) return *ret;
-       if(!ext_list) return NULL;
-       idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp);
-       if(idx == -1) return NULL;
-       return sk_X509V3_EXT_METHOD_value(ext_list, idx);
+       return NULL;
+// ICA - end
 }
 
 const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext)
diff -uNr openssl-1.0.1g/engines/e_capi.c openssl-1.0.1g-ICA/engines/e_capi.c
--- openssl-1.0.1g/engines/e_capi.c     2014-03-17 17:14:20.000000000 +0100
+++ openssl-1.0.1g-ICA/engines/e_capi.c 2014-05-23 12:19:58.204137871 +0200
@@ -109,6 +109,26 @@
 #define CERT_SYSTEM_STORE_CURRENT_USER                 0x00010000
 #endif 
 
+#ifndef        ALG_SID_SHA_256
+       #define ALG_SID_SHA_256                 12
+#endif
+#ifndef        ALG_SID_SHA_384
+       #define ALG_SID_SHA_384                 13
+#endif
+#ifndef        ALG_SID_SHA_512
+       #define ALG_SID_SHA_512                 14
+#endif
+
+#ifndef        CALG_SHA_256
+       #define CALG_SHA_256            (ALG_CLASS_HASH | ALG_TYPE_ANY | 
ALG_SID_SHA_256)
+#endif
+#ifndef        CALG_SHA_384
+       #define CALG_SHA_384            (ALG_CLASS_HASH | ALG_TYPE_ANY | 
ALG_SID_SHA_384)
+#endif
+#ifndef        CALG_SHA_512
+       #define CALG_SHA_512            (ALG_CLASS_HASH | ALG_TYPE_ANY | 
ALG_SID_SHA_512)
+#endif
+
 #include <openssl/engine.h>
 #include <openssl/pem.h>
 #include <openssl/x509v3.h>
@@ -816,6 +836,18 @@
 /* Convert the signature type to a CryptoAPI algorithm ID */
        switch(dtype)
                {
+       case NID_sha256:
+               alg = CALG_SHA_256;
+               break;
+
+       case NID_sha384:
+               alg = CALG_SHA_384;
+               break;
+
+       case NID_sha512:
+               alg = CALG_SHA_512;
+               break;
+
        case NID_sha1:
                alg = CALG_SHA1;
                break;

Reply via email to