public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Tomas Mraz <tmraz@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/openssl] rebase_40beta: add API necessary for CAVS testing of the new DSA parameter generation
Date: Tue, 09 Jun 2026 12:42:25 GMT [thread overview]
Message-ID: <178100894589.1.10690992125935569038.rpms-openssl-19062db533d6@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/openssl
Branch : rebase_40beta
Commit : 19062db533d6a2faa990e24e1ed5b3749b2b6176
Author : Tomas Mraz <tmraz@fedoraproject.org>
Date : 2011-05-24T14:57:29+02:00
Stats : +240/-3 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/openssl/c/19062db533d6a2faa990e24e1ed5b3749b2b6176?branch=rebase_40beta
Log:
add API necessary for CAVS testing of the new DSA parameter generation
---
diff --git a/openssl-1.0.0d-cavs.patch b/openssl-1.0.0d-cavs.patch
new file mode 100644
index 0000000..eed8559
--- /dev/null
+++ b/openssl-1.0.0d-cavs.patch
@@ -0,0 +1,232 @@
+diff -up openssl-1.0.0d/crypto/dsa/dsa_gen.c.cavs openssl-1.0.0d/crypto/dsa/dsa_gen.c
+--- openssl-1.0.0d/crypto/dsa/dsa_gen.c.cavs 2011-05-23 19:59:56.000000000 +0200
++++ openssl-1.0.0d/crypto/dsa/dsa_gen.c 2011-05-23 22:32:45.000000000 +0200
+@@ -85,6 +85,14 @@
+ #endif
+ #include "dsa_locl.h"
+
++#ifndef OPENSSL_FIPS
++static int FIPS_dsa_generate_pq(BN_CTX *ctx, size_t bits, size_t qbits,
++ const EVP_MD *evpmd, unsigned char *seed, int seed_len,
++ BIGNUM **p_ret, BIGNUM **q_ret, int *counter_ret, BN_GENCB *cb);
++static int FIPS_dsa_generate_g(BN_CTX *ctx, BIGNUM *p, BIGNUM *q,
++ BIGNUM **g_ret, unsigned long *h_ret, BN_GENCB *cb);
++#endif
++
+ int DSA_generate_parameters_ex(DSA *ret, int bits,
+ const unsigned char *seed_in, int seed_len,
+ int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
+@@ -113,22 +121,26 @@ int DSA_generate_parameters_ex(DSA *ret,
+ }
+ }
+
++#ifdef OPENSSL_FIPS
++int FIPS_dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
++ const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len,
++ int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
++ {
++ return dsa_builtin_paramgen(ret, bits, qbits,
++ evpmd, seed_in, seed_len,
++ counter_ret, h_ret, cb);
++ }
++#endif
++
+ int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
+ const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len,
+ int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
+ {
+ int ok=0;
+ unsigned char seed[SHA256_DIGEST_LENGTH];
+- unsigned char md[SHA256_DIGEST_LENGTH];
+- unsigned char buf[SHA256_DIGEST_LENGTH];
+- BIGNUM *r0,*W,*X,*c,*test;
+ BIGNUM *g=NULL,*q=NULL,*p=NULL;
+- BN_MONT_CTX *mont=NULL;
+- int i, k, b, n=0, m=0, qsize = qbits >> 3;
+- int counter=0;
+- int r=0;
++ size_t qsize = qbits >> 3;
+ BN_CTX *ctx=NULL;
+- unsigned int h=2;
+
+ #ifdef OPENSSL_FIPS
+ if(FIPS_selftest_failed())
+@@ -148,6 +160,65 @@ int dsa_builtin_paramgen(DSA *ret, size_
+ goto err;
+ }
+ #endif
++ if (seed_len && (seed_len < (size_t)qsize))
++ seed_in = NULL; /* seed buffer too small -- ignore */
++ if (seed_len > sizeof(seed))
++ seed_len = sizeof(seed); /* App. 2.2 of FIPS PUB 186 allows larger SEED,
++ * but our internal buffers are restricted to 256 bits*/
++ if (seed_in != NULL)
++ memcpy(seed, seed_in, seed_len);
++ else
++ seed_len = 0;
++
++ if ((ctx=BN_CTX_new()) == NULL)
++ goto err;
++
++ BN_CTX_start(ctx);
++
++ if (!FIPS_dsa_generate_pq(ctx, bits, qbits, evpmd,
++ seed, seed_len, &p, &q, counter_ret, cb))
++ goto err;
++
++ if (!FIPS_dsa_generate_g(ctx, p, q, &g, h_ret, cb))
++ goto err;
++
++ ok=1;
++err:
++ if (ok)
++ {
++ if(ret->p) BN_free(ret->p);
++ if(ret->q) BN_free(ret->q);
++ if(ret->g) BN_free(ret->g);
++ ret->p=BN_dup(p);
++ ret->q=BN_dup(q);
++ ret->g=BN_dup(g);
++ if (ret->p == NULL || ret->q == NULL || ret->g == NULL)
++ ok=0;
++ }
++ if(ctx)
++ {
++ BN_CTX_end(ctx);
++ BN_CTX_free(ctx);
++ }
++ return ok;
++ }
++
++#ifndef OPENSSL_FIPS
++static
++#endif
++int FIPS_dsa_generate_pq(BN_CTX *ctx, size_t bits, size_t qbits,
++ const EVP_MD *evpmd, unsigned char *seed, int seed_len,
++ BIGNUM **p_ret, BIGNUM **q_ret, int *counter_ret, BN_GENCB *cb)
++ {
++ int ok=0;
++ unsigned char md[SHA256_DIGEST_LENGTH];
++ unsigned char buf[SHA256_DIGEST_LENGTH];
++ BIGNUM *r0,*W,*X,*c,*test;
++ BIGNUM *g=NULL,*q=NULL,*p=NULL;
++ BN_MONT_CTX *mont=NULL;
++ int i, k, b, n=0, m=0, qsize = qbits >> 3;
++ int counter=0;
++ int r=0;
+
+ if (qsize != SHA_DIGEST_LENGTH && qsize != SHA224_DIGEST_LENGTH &&
+ qsize != SHA256_DIGEST_LENGTH)
+@@ -169,28 +240,12 @@ int dsa_builtin_paramgen(DSA *ret, size_
+
+ bits = (bits+63)/64*64;
+
+- if (seed_len && (seed_len < (size_t)qsize))
+- seed_in = NULL; /* seed buffer too small -- ignore */
+- if (seed_len > (size_t)qsize)
+- seed_len = qsize; /* App. 2.2 of FIPS PUB 186 allows larger SEED,
+- * but our internal buffers are restricted to 256 bits*/
+- if (seed_in != NULL)
+- memcpy(seed, seed_in, seed_len);
+-
+- if ((ctx=BN_CTX_new()) == NULL)
+- goto err;
+-
+- if ((mont=BN_MONT_CTX_new()) == NULL)
+- goto err;
+-
+- BN_CTX_start(ctx);
+ r0 = BN_CTX_get(ctx);
+- g = BN_CTX_get(ctx);
+ W = BN_CTX_get(ctx);
+- q = BN_CTX_get(ctx);
++ *q_ret = q = BN_CTX_get(ctx);
+ X = BN_CTX_get(ctx);
+ c = BN_CTX_get(ctx);
+- p = BN_CTX_get(ctx);
++ *p_ret = p = BN_CTX_get(ctx);
+ test = BN_CTX_get(ctx);
+
+ if (!BN_lshift(test,BN_value_one(),bits-1))
+@@ -312,7 +367,33 @@ end:
+ if(!BN_GENCB_call(cb, 2, 1))
+ goto err;
+
+- /* We now need to generate g */
++ ok=1;
++err:
++ if (ok)
++ {
++ if (counter_ret != NULL) *counter_ret=counter;
++ }
++ return ok;
++ }
++
++#ifndef OPENSSL_FIPS
++static
++#endif
++int FIPS_dsa_generate_g(BN_CTX *ctx, BIGNUM *p, BIGNUM *q,
++ BIGNUM **g_ret, unsigned long *h_ret, BN_GENCB *cb)
++ {
++ int ok=0;
++ BIGNUM *r0, *test, *g = NULL;
++ BN_MONT_CTX *mont;
++ unsigned int h=2;
++
++ if ((mont=BN_MONT_CTX_new()) == NULL)
++ goto err;
++
++ r0 = BN_CTX_get(ctx);
++ *g_ret = g = BN_CTX_get(ctx);
++ test = BN_CTX_get(ctx);
++
+ /* Set r0=(p-1)/q */
+ if (!BN_sub(test,p,BN_value_one())) goto err;
+ if (!BN_div(r0,NULL,test,q,ctx)) goto err;
+@@ -336,25 +417,8 @@ end:
+ err:
+ if (ok)
+ {
+- if(ret->p) BN_free(ret->p);
+- if(ret->q) BN_free(ret->q);
+- if(ret->g) BN_free(ret->g);
+- ret->p=BN_dup(p);
+- ret->q=BN_dup(q);
+- ret->g=BN_dup(g);
+- if (ret->p == NULL || ret->q == NULL || ret->g == NULL)
+- {
+- ok=0;
+- goto err;
+- }
+- if (counter_ret != NULL) *counter_ret=counter;
+ if (h_ret != NULL) *h_ret=h;
+ }
+- if(ctx)
+- {
+- BN_CTX_end(ctx);
+- BN_CTX_free(ctx);
+- }
+ if (mont != NULL) BN_MONT_CTX_free(mont);
+ return ok;
+ }
+diff -up openssl-1.0.0d/crypto/dsa/dsa.h.cavs openssl-1.0.0d/crypto/dsa/dsa.h
+--- openssl-1.0.0d/crypto/dsa/dsa.h.cavs 2011-05-23 19:59:56.000000000 +0200
++++ openssl-1.0.0d/crypto/dsa/dsa.h 2011-05-23 22:33:33.000000000 +0200
+@@ -266,6 +266,17 @@ int DSA_print_fp(FILE *bp, const DSA *x,
+ DH *DSA_dup_DH(const DSA *r);
+ #endif
+
++#ifdef OPENSSL_FIPS
++int FIPS_dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
++ const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len,
++ int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
++int FIPS_dsa_generate_pq(BN_CTX *ctx, size_t bits, size_t qbits,
++ const EVP_MD *evpmd, unsigned char *seed, int seed_len,
++ BIGNUM **p_ret, BIGNUM **q_ret, int *counter_ret, BN_GENCB *cb);
++int FIPS_dsa_generate_g(BN_CTX *ctx, BIGNUM *p, BIGNUM *q,
++ BIGNUM **g_ret, unsigned long *h_ret, BN_GENCB *cb);
++#endif
++
+ #define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \
+ EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \
+ EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL)
diff --git a/openssl.spec b/openssl.spec
index 2f66dbe..15605df 100644
--- a/openssl.spec
+++ b/openssl.spec
@@ -21,7 +21,7 @@
Summary: A general purpose cryptography library with TLS implementation
Name: openssl
Version: 1.0.0d
-Release: 3%{?dist}
+Release: 4%{?dist}
# We remove certain patented algorithms from the openssl source tarball
# with the hobble-openssl script which is included below.
Source: openssl-%{version}-usa.tar.bz2
@@ -70,8 +70,9 @@ Patch57: openssl-1.0.0c-fips186-3.patch
Patch58: openssl-1.0.0c-fips-md5-allow.patch
Patch59: openssl-1.0.0c-pkcs12-fips-default.patch
Patch60: openssl-1.0.0d-apps-dgst.patch
+Patch61: openssl-1.0.0d-cavs.patch
# Backported fixes including security fixes
-Patch61: openssl-1.0.0d-padlock64.patch
+Patch81: openssl-1.0.0d-padlock64.patch
License: OpenSSL
Group: System Environment/Libraries
@@ -161,7 +162,8 @@ from other formats to the formats used by the OpenSSL toolkit.
%patch58 -p1 -b .md5-allow
%patch59 -p1 -b .fips-default
%patch60 -p1 -b .dgst
-%patch61 -p1 -b .padlock64
+%patch61 -p1 -b .cavs
+%patch81 -p1 -b .padlock64
# Modify the various perl scripts to reference perl in the right location.
perl util/perlpath.pl `dirname %{__perl}`
@@ -411,6 +413,9 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/fipscanister.*
%postun -p /sbin/ldconfig
%changelog
+* Tue May 24 2011 Tomas Mraz <tmraz@redhat.com> 1.0.0d-4
+- add API necessary for CAVS testing of the new DSA parameter generation
+
* Thu Apr 28 2011 Tomas Mraz <tmraz@redhat.com> 1.0.0d-3
- add support for VIA Padlock on 64bit arch from upstream (#617539)
- do not return bogus values from load_certs (#652286)
reply other threads:[~2026-06-09 12:42 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178100894589.1.10690992125935569038.rpms-openssl-19062db533d6@fedoraproject.org \
--to=tmraz@fedoraproject.org \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox