diff mbox

crypto: fix test cert generation to not use SHA1 algorithm

Message ID 20170829162727.13081-1-berrange@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel P. Berrangé Aug. 29, 2017, 4:27 p.m. UTC
GNUTLS 3.6.0 marked SHA1 as untrusted for certificates.
Unfortunately the gnutls_x509_crt_sign() method we are
using to create certificates in the test suite is fixed
to always use SHA1. We must switch to a different method
and explicitly ask for SHA256.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 tests/crypto-tls-x509-helpers.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Eric Blake Aug. 29, 2017, 4:31 p.m. UTC | #1
On 08/29/2017 11:27 AM, Daniel P. Berrange wrote:
> GNUTLS 3.6.0 marked SHA1 as untrusted for certificates.
> Unfortunately the gnutls_x509_crt_sign() method we are
> using to create certificates in the test suite is fixed
> to always use SHA1. We must switch to a different method
> and explicitly ask for SHA256.
> 
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
>  tests/crypto-tls-x509-helpers.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/crypto-tls-x509-helpers.c b/tests/crypto-tls-x509-helpers.c
> index 64073d3bd3..173d4e28fb 100644
> --- a/tests/crypto-tls-x509-helpers.c
> +++ b/tests/crypto-tls-x509-helpers.c
> @@ -406,7 +406,8 @@ test_tls_generate_cert(QCryptoTLSTestCertReq *req,
>       * If no 'ca' is set then we are self signing
>       * the cert. This is done for the root CA certs
>       */
> -    err = gnutls_x509_crt_sign(crt, ca ? ca : crt, privkey);
> +    err = gnutls_x509_crt_sign2(crt, ca ? ca : crt, privkey,
> +                                GNUTLS_DIG_SHA256, 0);

Is _sign2() available on all the older versions of gnutls that we must
support, or do we need this to be a conditional compilation?
Daniel P. Berrangé Aug. 29, 2017, 4:34 p.m. UTC | #2
On Tue, Aug 29, 2017 at 11:31:24AM -0500, Eric Blake wrote:
> On 08/29/2017 11:27 AM, Daniel P. Berrange wrote:
> > GNUTLS 3.6.0 marked SHA1 as untrusted for certificates.
> > Unfortunately the gnutls_x509_crt_sign() method we are
> > using to create certificates in the test suite is fixed
> > to always use SHA1. We must switch to a different method
> > and explicitly ask for SHA256.
> > 
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> >  tests/crypto-tls-x509-helpers.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tests/crypto-tls-x509-helpers.c b/tests/crypto-tls-x509-helpers.c
> > index 64073d3bd3..173d4e28fb 100644
> > --- a/tests/crypto-tls-x509-helpers.c
> > +++ b/tests/crypto-tls-x509-helpers.c
> > @@ -406,7 +406,8 @@ test_tls_generate_cert(QCryptoTLSTestCertReq *req,
> >       * If no 'ca' is set then we are self signing
> >       * the cert. This is done for the root CA certs
> >       */
> > -    err = gnutls_x509_crt_sign(crt, ca ? ca : crt, privkey);
> > +    err = gnutls_x509_crt_sign2(crt, ca ? ca : crt, privkey,
> > +                                GNUTLS_DIG_SHA256, 0);
> 
> Is _sign2() available on all the older versions of gnutls that we must
> support, or do we need this to be a conditional compilation?

It dates to gnutls 1.2.0 from 2005, so we're fine even if using RHEL5
vintage :-)

Regards,
Daniel
Eric Blake Aug. 29, 2017, 4:42 p.m. UTC | #3
On 08/29/2017 11:34 AM, Daniel P. Berrange wrote:
> On Tue, Aug 29, 2017 at 11:31:24AM -0500, Eric Blake wrote:
>> On 08/29/2017 11:27 AM, Daniel P. Berrange wrote:
>>> GNUTLS 3.6.0 marked SHA1 as untrusted for certificates.
>>> Unfortunately the gnutls_x509_crt_sign() method we are
>>> using to create certificates in the test suite is fixed
>>> to always use SHA1. We must switch to a different method
>>> and explicitly ask for SHA256.
>>>
>>> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>>> ---
>>>  tests/crypto-tls-x509-helpers.c | 3 ++-
>>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tests/crypto-tls-x509-helpers.c b/tests/crypto-tls-x509-helpers.c
>>> index 64073d3bd3..173d4e28fb 100644
>>> --- a/tests/crypto-tls-x509-helpers.c
>>> +++ b/tests/crypto-tls-x509-helpers.c
>>> @@ -406,7 +406,8 @@ test_tls_generate_cert(QCryptoTLSTestCertReq *req,
>>>       * If no 'ca' is set then we are self signing
>>>       * the cert. This is done for the root CA certs
>>>       */
>>> -    err = gnutls_x509_crt_sign(crt, ca ? ca : crt, privkey);
>>> +    err = gnutls_x509_crt_sign2(crt, ca ? ca : crt, privkey,
>>> +                                GNUTLS_DIG_SHA256, 0);
>>
>> Is _sign2() available on all the older versions of gnutls that we must
>> support, or do we need this to be a conditional compilation?
> 
> It dates to gnutls 1.2.0 from 2005, so we're fine even if using RHEL5
> vintage :-)

Good to know. Not sure if it's worth mentioning that in the commit
message.  Either way,

Reviewed-by: Eric Blake <eblake@redhat.com>
diff mbox

Patch

diff --git a/tests/crypto-tls-x509-helpers.c b/tests/crypto-tls-x509-helpers.c
index 64073d3bd3..173d4e28fb 100644
--- a/tests/crypto-tls-x509-helpers.c
+++ b/tests/crypto-tls-x509-helpers.c
@@ -406,7 +406,8 @@  test_tls_generate_cert(QCryptoTLSTestCertReq *req,
      * If no 'ca' is set then we are self signing
      * the cert. This is done for the root CA certs
      */
-    err = gnutls_x509_crt_sign(crt, ca ? ca : crt, privkey);
+    err = gnutls_x509_crt_sign2(crt, ca ? ca : crt, privkey,
+                                GNUTLS_DIG_SHA256, 0);
     if (err < 0) {
         g_critical("Failed to sign certificate %s",
                    gnutls_strerror(err));