Imported OpenSSL 1.1.1d
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/obj_mac.h>
|
||||
#include "testutil.h"
|
||||
|
||||
#ifndef OPENSSL_NO_DH
|
||||
@@ -62,6 +63,17 @@ static int dh_test(void)
|
||||
|| !TEST_true(DH_set0_pqg(dh, p, q, g)))
|
||||
goto err1;
|
||||
|
||||
if (!DH_check(dh, &i))
|
||||
goto err2;
|
||||
if (!TEST_false(i & DH_CHECK_P_NOT_PRIME)
|
||||
|| !TEST_false(i & DH_CHECK_P_NOT_SAFE_PRIME)
|
||||
|| !TEST_false(i & DH_CHECK_INVALID_Q_VALUE)
|
||||
|| !TEST_false(i & DH_CHECK_Q_NOT_PRIME)
|
||||
|| !TEST_false(i & DH_UNABLE_TO_CHECK_GENERATOR)
|
||||
|| !TEST_false(i & DH_NOT_SUITABLE_GENERATOR)
|
||||
|| !TEST_false(i))
|
||||
goto err2;
|
||||
|
||||
/* test the combined getter for p, q, and g */
|
||||
DH_get0_pqg(dh, &p2, &q2, &g2);
|
||||
if (!TEST_ptr_eq(p2, p)
|
||||
@@ -130,7 +142,8 @@ static int dh_test(void)
|
||||
if (!TEST_false(i & DH_CHECK_P_NOT_PRIME)
|
||||
|| !TEST_false(i & DH_CHECK_P_NOT_SAFE_PRIME)
|
||||
|| !TEST_false(i & DH_UNABLE_TO_CHECK_GENERATOR)
|
||||
|| !TEST_false(i & DH_NOT_SUITABLE_GENERATOR))
|
||||
|| !TEST_false(i & DH_NOT_SUITABLE_GENERATOR)
|
||||
|| !TEST_false(i))
|
||||
goto err3;
|
||||
|
||||
DH_get0_pqg(a, &ap, NULL, &ag);
|
||||
@@ -193,7 +206,7 @@ static int dh_test(void)
|
||||
BN_free(q);
|
||||
BN_free(g);
|
||||
err2:
|
||||
/* an error occured before priv_key was assigned to dh */
|
||||
/* an error occurred before priv_key was assigned to dh */
|
||||
BN_free(priv_key);
|
||||
err3:
|
||||
success:
|
||||
@@ -609,6 +622,63 @@ static int rfc5114_test(void)
|
||||
TEST_error("Test failed RFC5114 set %d\n", i + 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rfc7919_test(void)
|
||||
{
|
||||
DH *a = NULL, *b = NULL;
|
||||
const BIGNUM *apub_key = NULL, *bpub_key = NULL;
|
||||
unsigned char *abuf = NULL;
|
||||
unsigned char *bbuf = NULL;
|
||||
int i, alen, blen, aout, bout;
|
||||
int ret = 0;
|
||||
|
||||
if (!TEST_ptr(a = DH_new_by_nid(NID_ffdhe2048)))
|
||||
goto err;
|
||||
|
||||
if (!DH_check(a, &i))
|
||||
goto err;
|
||||
if (!TEST_false(i & DH_CHECK_P_NOT_PRIME)
|
||||
|| !TEST_false(i & DH_CHECK_P_NOT_SAFE_PRIME)
|
||||
|| !TEST_false(i & DH_UNABLE_TO_CHECK_GENERATOR)
|
||||
|| !TEST_false(i & DH_NOT_SUITABLE_GENERATOR)
|
||||
|| !TEST_false(i))
|
||||
goto err;
|
||||
|
||||
if (!DH_generate_key(a))
|
||||
goto err;
|
||||
DH_get0_key(a, &apub_key, NULL);
|
||||
|
||||
/* now create another copy of the DH group for the peer */
|
||||
if (!TEST_ptr(b = DH_new_by_nid(NID_ffdhe2048)))
|
||||
goto err;
|
||||
|
||||
if (!DH_generate_key(b))
|
||||
goto err;
|
||||
DH_get0_key(b, &bpub_key, NULL);
|
||||
|
||||
alen = DH_size(a);
|
||||
if (!TEST_ptr(abuf = OPENSSL_malloc(alen))
|
||||
|| !TEST_true((aout = DH_compute_key(abuf, bpub_key, a)) != -1))
|
||||
goto err;
|
||||
|
||||
blen = DH_size(b);
|
||||
if (!TEST_ptr(bbuf = OPENSSL_malloc(blen))
|
||||
|| !TEST_true((bout = DH_compute_key(bbuf, apub_key, b)) != -1))
|
||||
goto err;
|
||||
|
||||
if (!TEST_true(aout >= 20)
|
||||
|| !TEST_mem_eq(abuf, aout, bbuf, bout))
|
||||
goto err;
|
||||
|
||||
ret = 1;
|
||||
|
||||
err:
|
||||
OPENSSL_free(abuf);
|
||||
OPENSSL_free(bbuf);
|
||||
DH_free(a);
|
||||
DH_free(b);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -619,6 +689,7 @@ int setup_tests(void)
|
||||
#else
|
||||
ADD_TEST(dh_test);
|
||||
ADD_TEST(rfc5114_test);
|
||||
ADD_TEST(rfc7919_test);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user