Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
20bee968
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
20bee968
编写于
11月 13, 2011
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add RFC5114 DH parameters to OpenSSL. Add test data to dhtest.
上级
0c58d22a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
594 addition
and
3 deletion
+594
-3
CHANGES
CHANGES
+3
-0
crypto/bn/bntest.c
crypto/bn/bntest.c
+0
-1
crypto/dh/Makefile
crypto/dh/Makefile
+2
-2
crypto/dh/dh.h
crypto/dh/dh.h
+5
-0
crypto/dh/dh_rfc5114.c
crypto/dh/dh_rfc5114.c
+274
-0
crypto/dh/dhtest.c
crypto/dh/dhtest.c
+310
-0
未找到文件。
CHANGES
浏览文件 @
20bee968
...
...
@@ -4,6 +4,9 @@
Changes between 1.0.1 and 1.1.0 [xx XXX xxxx]
*) Add DH parameters from RFC5114 including test data to dhtest.
[Steve Henson]
*) Update fips_test_suite to support multiple command line options. New
test to induce all self test errors in sequence and check expected
failures.
...
...
crypto/bn/bntest.c
浏览文件 @
20bee968
...
...
@@ -1020,7 +1020,6 @@ int test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx)
int
test_mod_exp_mont5
(
BIO
*
bp
,
BN_CTX
*
ctx
)
{
BIGNUM
*
a
,
*
p
,
*
m
,
*
d
,
*
e
;
int
i
;
BN_MONT_CTX
*
mont
;
...
...
crypto/dh/Makefile
浏览文件 @
20bee968
...
...
@@ -18,9 +18,9 @@ APPS=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_depr.c
\
dh_ameth.c dh_pmeth.c dh_prn.c
dh_ameth.c dh_pmeth.c dh_prn.c
dh_rfc5114.c
LIBOBJ
=
dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o dh_depr.o
\
dh_ameth.o dh_pmeth.o dh_prn.o
dh_ameth.o dh_pmeth.o dh_prn.o
dh_rfc5114.o
SRC
=
$(LIBSRC)
...
...
crypto/dh/dh.h
浏览文件 @
20bee968
...
...
@@ -229,6 +229,11 @@ int DHparams_print(BIO *bp, const DH *x);
int
DHparams_print
(
char
*
bp
,
const
DH
*
x
);
#endif
/* RFC 5114 parameters */
DH
*
DH_get_1024_160
(
void
);
DH
*
DH_get_2048_224
(
void
);
DH
*
DH_get_2048_256
(
void
);
#define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \
EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL)
...
...
crypto/dh/dh_rfc5114.c
0 → 100644
浏览文件 @
20bee968
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2011.
*/
/* ====================================================================
* Copyright (c) 2011 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* licensing@OpenSSL.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#include <stdio.h>
#include "cryptlib.h"
#include <openssl/dh.h>
#include <openssl/bn.h>
/* DH parameters from RFC5114 */
#if BN_BITS2 == 64
static
const
BN_ULONG
dh1024_160_p
[]
=
{
0xDF1FB2BC2E4A4371ULL
,
0xE68CFDA76D4DA708ULL
,
0x45BF37DF365C1A65ULL
,
0xA151AF5F0DC8B4BDULL
,
0xFAA31A4FF55BCCC0ULL
,
0x4EFFD6FAE5644738ULL
,
0x98488E9C219A7372ULL
,
0xACCBDD7D90C4BD70ULL
,
0x24975C3CD49B83BFULL
,
0x13ECB4AEA9061123ULL
,
0x9838EF1E2EE652C0ULL
,
0x6073E28675A23D18ULL
,
0x9A6A9DCA52D23B61ULL
,
0x52C99FBCFB06A3C6ULL
,
0xDE92DE5EAE5D54ECULL
,
0xB10B8F96A080E01DULL
};
static
const
BN_ULONG
dh1024_160_g
[]
=
{
0x855E6EEB22B3B2E5ULL
,
0x858F4DCEF97C2A24ULL
,
0x2D779D5918D08BC8ULL
,
0xD662A4D18E73AFA3ULL
,
0x1DBF0A0169B6A28AULL
,
0xA6A24C087A091F53ULL
,
0x909D0D2263F80A76ULL
,
0xD7FBD7D3B9A92EE1ULL
,
0x5E91547F9E2749F4ULL
,
0x160217B4B01B886AULL
,
0x777E690F5504F213ULL
,
0x266FEA1E5C41564BULL
,
0xD6406CFF14266D31ULL
,
0xF8104DD258AC507FULL
,
0x6765A442EFB99905ULL
,
0xA4D1CBD5C3FD3412ULL
};
static
const
BN_ULONG
dh1024_160_q
[]
=
{
0x0000000049462353ULL
,
0x8ABA4E7D64B7CB9DULL
,
0xF518AA8781A8DF27ULL
};
static
const
BN_ULONG
dh2048_224_p
[]
=
{
0x0AC4DFFE0C10E64FULL
,
0xCF9DE5384E71B81CULL
,
0x7EF363E2FFA31F71ULL
,
0xE3FB73C16B8E75B9ULL
,
0xC9B53DCF4BA80A29ULL
,
0x23F10B0E16E79763ULL
,
0xC52172E413042E9BULL
,
0xBE60E69CC928B2B9ULL
,
0x80CD86A1B9E587E8ULL
,
0x315D75E198C641A4ULL
,
0xCDF93ACC44328387ULL
,
0x15987D9ADC0A486DULL
,
0x7310F7121FD5A074ULL
,
0x278273C7DE31EFDCULL
,
0x1602E714415D9330ULL
,
0x81286130BC8985DBULL
,
0xB3BF8A3170918836ULL
,
0x6A00E0A0B9C49708ULL
,
0xC6BA0B2C8BBC27BEULL
,
0xC9F98D11ED34DBF6ULL
,
0x7AD5B7D0B6C12207ULL
,
0xD91E8FEF55B7394BULL
,
0x9037C9EDEFDA4DF8ULL
,
0x6D3F8152AD6AC212ULL
,
0x1DE6B85A1274A0A6ULL
,
0xEB3D688A309C180EULL
,
0xAF9A3C407BA1DF15ULL
,
0xE6FA141DF95A56DBULL
,
0xB54B1597B61D0A75ULL
,
0xA20D64E5683B9FD1ULL
,
0xD660FAA79559C51FULL
,
0xAD107E1E9123A9D0ULL
};
static
const
BN_ULONG
dh2048_224_g
[]
=
{
0x84B890D3191F2BFAULL
,
0x81BC087F2A7065B3ULL
,
0x19C418E1F6EC0179ULL
,
0x7B5A0F1C71CFFF4CULL
,
0xEDFE72FE9B6AA4BDULL
,
0x81E1BCFE94B30269ULL
,
0x566AFBB48D6C0191ULL
,
0xB539CCE3409D13CDULL
,
0x6AA21E7F5F2FF381ULL
,
0xD9E263E4770589EFULL
,
0x10E183EDD19963DDULL
,
0xB70A8137150B8EEBULL
,
0x051AE3D428C8F8ACULL
,
0xBB77A86F0C1AB15BULL
,
0x6E3025E316A330EFULL
,
0x19529A45D6F83456ULL
,
0xF180EB34118E98D1ULL
,
0xB5F6C6B250717CBEULL
,
0x09939D54DA7460CDULL
,
0xE247150422EA1ED4ULL
,
0xB8A762D0521BC98AULL
,
0xF4D027275AC1348BULL
,
0xC17669101999024AULL
,
0xBE5E9001A8D66AD7ULL
,
0xC57DB17C620A8652ULL
,
0xAB739D7700C29F52ULL
,
0xDD921F01A70C4AFAULL
,
0xA6824A4E10B9A6F0ULL
,
0x74866A08CFE4FFE3ULL
,
0x6CDEBE7B89998CAFULL
,
0x9DF30B5C8FFDAC50ULL
,
0xAC4032EF4F2D9AE3ULL
};
static
const
BN_ULONG
dh2048_224_q
[]
=
{
0x00000000B36371EBULL
,
0x4738CEBCBF389A99ULL
,
0x997177101F80535AULL
,
0x801C0D34C58D93FEULL
};
static
const
BN_ULONG
dh2048_256_p
[]
=
{
0xDB094AE91E1A1597ULL
,
0x693877FAD7EF09CAULL
,
0x6116D2276E11715FULL
,
0xA4B54330C198AF12ULL
,
0x75F26375D7014103ULL
,
0xC3A3960A54E710C3ULL
,
0xDED4010ABD0BE621ULL
,
0xC0B857F689962856ULL
,
0xB3CA3F7971506026ULL
,
0x1CCACB83E6B486F6ULL
,
0x67E144E514056425ULL
,
0xF6A167B5A41825D9ULL
,
0x3AD8347796524D8EULL
,
0xF13C6D9A51BFA4ABULL
,
0x2D52526735488A0EULL
,
0xB63ACAE1CAA6B790ULL
,
0x4FDB70C581B23F76ULL
,
0xBC39A0BF12307F5CULL
,
0xB941F54EB1E59BB8ULL
,
0x6C5BFC11D45F9088ULL
,
0x22E0B1EF4275BF7BULL
,
0x91F9E6725B4758C0ULL
,
0x5A8A9D306BCF67EDULL
,
0x209E0C6497517ABDULL
,
0x3BF4296D830E9A7CULL
,
0x16C3D91134096FAAULL
,
0xFAF7DF4561B2AA30ULL
,
0xE00DF8F1D61957D4ULL
,
0x5D2CEED4435E3B00ULL
,
0x8CEEF608660DD0F2ULL
,
0xFFBBD19C65195999ULL
,
0x87A8E61DB4B6663CULL
};
static
const
BN_ULONG
dh2048_256_g
[]
=
{
0x664B4C0F6CC41659ULL
,
0x5E2327CFEF98C582ULL
,
0xD647D148D4795451ULL
,
0x2F63078490F00EF8ULL
,
0x184B523D1DB246C3ULL
,
0xC7891428CDC67EB6ULL
,
0x7FD028370DF92B52ULL
,
0xB3353BBB64E0EC37ULL
,
0xECD06E1557CD0915ULL
,
0xB7D2BBD2DF016199ULL
,
0xC8484B1E052588B9ULL
,
0xDB2A3B7313D3FE14ULL
,
0xD052B985D182EA0AULL
,
0xA4BD1BFFE83B9C80ULL
,
0xDFC967C1FB3F2E55ULL
,
0xB5045AF2767164E1ULL
,
0x1D14348F6F2F9193ULL
,
0x64E67982428EBC83ULL
,
0x8AC376D282D6ED38ULL
,
0x777DE62AAAB8A862ULL
,
0xDDF463E5E9EC144BULL
,
0x0196F931C77A57F2ULL
,
0xA55AE31341000A65ULL
,
0x901228F8C28CBB18ULL
,
0xBC3773BF7E8C6F62ULL
,
0xBE3A6C1B0C6B47B1ULL
,
0xFF4FED4AAC0BB555ULL
,
0x10DBC15077BE463FULL
,
0x07F4793A1A0BA125ULL
,
0x4CA7B18F21EF2054ULL
,
0x2E77506660EDBD48ULL
,
0x3FB32C9B73134D0BULL
};
static
const
BN_ULONG
dh2048_256_q
[]
=
{
0xA308B0FE64F5FBD3ULL
,
0x99B1A47D1EB3750BULL
,
0xB447997640129DA2ULL
,
0x8CF83642A709A097ULL
};
#elif BN_BITS2 == 32
static
const
BN_ULONG
dh1024_160_p
[]
=
{
0x2E4A4371
,
0xDF1FB2BC
,
0x6D4DA708
,
0xE68CFDA7
,
0x365C1A65
,
0x45BF37DF
,
0x0DC8B4BD
,
0xA151AF5F
,
0xF55BCCC0
,
0xFAA31A4F
,
0xE5644738
,
0x4EFFD6FA
,
0x219A7372
,
0x98488E9C
,
0x90C4BD70
,
0xACCBDD7D
,
0xD49B83BF
,
0x24975C3C
,
0xA9061123
,
0x13ECB4AE
,
0x2EE652C0
,
0x9838EF1E
,
0x75A23D18
,
0x6073E286
,
0x52D23B61
,
0x9A6A9DCA
,
0xFB06A3C6
,
0x52C99FBC
,
0xAE5D54EC
,
0xDE92DE5E
,
0xA080E01D
,
0xB10B8F96
};
static
const
BN_ULONG
dh1024_160_g
[]
=
{
0x22B3B2E5
,
0x855E6EEB
,
0xF97C2A24
,
0x858F4DCE
,
0x18D08BC8
,
0x2D779D59
,
0x8E73AFA3
,
0xD662A4D1
,
0x69B6A28A
,
0x1DBF0A01
,
0x7A091F53
,
0xA6A24C08
,
0x63F80A76
,
0x909D0D22
,
0xB9A92EE1
,
0xD7FBD7D3
,
0x9E2749F4
,
0x5E91547F
,
0xB01B886A
,
0x160217B4
,
0x5504F213
,
0x777E690F
,
0x5C41564B
,
0x266FEA1E
,
0x14266D31
,
0xD6406CFF
,
0x58AC507F
,
0xF8104DD2
,
0xEFB99905
,
0x6765A442
,
0xC3FD3412
,
0xA4D1CBD5
};
static
const
BN_ULONG
dh1024_160_q
[]
=
{
0x49462353
,
0x64B7CB9D
,
0x8ABA4E7D
,
0x81A8DF27
,
0xF518AA87
};
static
const
BN_ULONG
dh2048_224_p
[]
=
{
0x0C10E64F
,
0x0AC4DFFE
,
0x4E71B81C
,
0xCF9DE538
,
0xFFA31F71
,
0x7EF363E2
,
0x6B8E75B9
,
0xE3FB73C1
,
0x4BA80A29
,
0xC9B53DCF
,
0x16E79763
,
0x23F10B0E
,
0x13042E9B
,
0xC52172E4
,
0xC928B2B9
,
0xBE60E69C
,
0xB9E587E8
,
0x80CD86A1
,
0x98C641A4
,
0x315D75E1
,
0x44328387
,
0xCDF93ACC
,
0xDC0A486D
,
0x15987D9A
,
0x1FD5A074
,
0x7310F712
,
0xDE31EFDC
,
0x278273C7
,
0x415D9330
,
0x1602E714
,
0xBC8985DB
,
0x81286130
,
0x70918836
,
0xB3BF8A31
,
0xB9C49708
,
0x6A00E0A0
,
0x8BBC27BE
,
0xC6BA0B2C
,
0xED34DBF6
,
0xC9F98D11
,
0xB6C12207
,
0x7AD5B7D0
,
0x55B7394B
,
0xD91E8FEF
,
0xEFDA4DF8
,
0x9037C9ED
,
0xAD6AC212
,
0x6D3F8152
,
0x1274A0A6
,
0x1DE6B85A
,
0x309C180E
,
0xEB3D688A
,
0x7BA1DF15
,
0xAF9A3C40
,
0xF95A56DB
,
0xE6FA141D
,
0xB61D0A75
,
0xB54B1597
,
0x683B9FD1
,
0xA20D64E5
,
0x9559C51F
,
0xD660FAA7
,
0x9123A9D0
,
0xAD107E1E
};
static
const
BN_ULONG
dh2048_224_g
[]
=
{
0x191F2BFA
,
0x84B890D3
,
0x2A7065B3
,
0x81BC087F
,
0xF6EC0179
,
0x19C418E1
,
0x71CFFF4C
,
0x7B5A0F1C
,
0x9B6AA4BD
,
0xEDFE72FE
,
0x94B30269
,
0x81E1BCFE
,
0x8D6C0191
,
0x566AFBB4
,
0x409D13CD
,
0xB539CCE3
,
0x5F2FF381
,
0x6AA21E7F
,
0x770589EF
,
0xD9E263E4
,
0xD19963DD
,
0x10E183ED
,
0x150B8EEB
,
0xB70A8137
,
0x28C8F8AC
,
0x051AE3D4
,
0x0C1AB15B
,
0xBB77A86F
,
0x16A330EF
,
0x6E3025E3
,
0xD6F83456
,
0x19529A45
,
0x118E98D1
,
0xF180EB34
,
0x50717CBE
,
0xB5F6C6B2
,
0xDA7460CD
,
0x09939D54
,
0x22EA1ED4
,
0xE2471504
,
0x521BC98A
,
0xB8A762D0
,
0x5AC1348B
,
0xF4D02727
,
0x1999024A
,
0xC1766910
,
0xA8D66AD7
,
0xBE5E9001
,
0x620A8652
,
0xC57DB17C
,
0x00C29F52
,
0xAB739D77
,
0xA70C4AFA
,
0xDD921F01
,
0x10B9A6F0
,
0xA6824A4E
,
0xCFE4FFE3
,
0x74866A08
,
0x89998CAF
,
0x6CDEBE7B
,
0x8FFDAC50
,
0x9DF30B5C
,
0x4F2D9AE3
,
0xAC4032EF
};
static
const
BN_ULONG
dh2048_224_q
[]
=
{
0xB36371EB
,
0xBF389A99
,
0x4738CEBC
,
0x1F80535A
,
0x99717710
,
0xC58D93FE
,
0x801C0D34
};
static
const
BN_ULONG
dh2048_256_p
[]
=
{
0x1E1A1597
,
0xDB094AE9
,
0xD7EF09CA
,
0x693877FA
,
0x6E11715F
,
0x6116D227
,
0xC198AF12
,
0xA4B54330
,
0xD7014103
,
0x75F26375
,
0x54E710C3
,
0xC3A3960A
,
0xBD0BE621
,
0xDED4010A
,
0x89962856
,
0xC0B857F6
,
0x71506026
,
0xB3CA3F79
,
0xE6B486F6
,
0x1CCACB83
,
0x14056425
,
0x67E144E5
,
0xA41825D9
,
0xF6A167B5
,
0x96524D8E
,
0x3AD83477
,
0x51BFA4AB
,
0xF13C6D9A
,
0x35488A0E
,
0x2D525267
,
0xCAA6B790
,
0xB63ACAE1
,
0x81B23F76
,
0x4FDB70C5
,
0x12307F5C
,
0xBC39A0BF
,
0xB1E59BB8
,
0xB941F54E
,
0xD45F9088
,
0x6C5BFC11
,
0x4275BF7B
,
0x22E0B1EF
,
0x5B4758C0
,
0x91F9E672
,
0x6BCF67ED
,
0x5A8A9D30
,
0x97517ABD
,
0x209E0C64
,
0x830E9A7C
,
0x3BF4296D
,
0x34096FAA
,
0x16C3D911
,
0x61B2AA30
,
0xFAF7DF45
,
0xD61957D4
,
0xE00DF8F1
,
0x435E3B00
,
0x5D2CEED4
,
0x660DD0F2
,
0x8CEEF608
,
0x65195999
,
0xFFBBD19C
,
0xB4B6663C
,
0x87A8E61D
};
static
const
BN_ULONG
dh2048_256_g
[]
=
{
0x6CC41659
,
0x664B4C0F
,
0xEF98C582
,
0x5E2327CF
,
0xD4795451
,
0xD647D148
,
0x90F00EF8
,
0x2F630784
,
0x1DB246C3
,
0x184B523D
,
0xCDC67EB6
,
0xC7891428
,
0x0DF92B52
,
0x7FD02837
,
0x64E0EC37
,
0xB3353BBB
,
0x57CD0915
,
0xECD06E15
,
0xDF016199
,
0xB7D2BBD2
,
0x052588B9
,
0xC8484B1E
,
0x13D3FE14
,
0xDB2A3B73
,
0xD182EA0A
,
0xD052B985
,
0xE83B9C80
,
0xA4BD1BFF
,
0xFB3F2E55
,
0xDFC967C1
,
0x767164E1
,
0xB5045AF2
,
0x6F2F9193
,
0x1D14348F
,
0x428EBC83
,
0x64E67982
,
0x82D6ED38
,
0x8AC376D2
,
0xAAB8A862
,
0x777DE62A
,
0xE9EC144B
,
0xDDF463E5
,
0xC77A57F2
,
0x0196F931
,
0x41000A65
,
0xA55AE313
,
0xC28CBB18
,
0x901228F8
,
0x7E8C6F62
,
0xBC3773BF
,
0x0C6B47B1
,
0xBE3A6C1B
,
0xAC0BB555
,
0xFF4FED4A
,
0x77BE463F
,
0x10DBC150
,
0x1A0BA125
,
0x07F4793A
,
0x21EF2054
,
0x4CA7B18F
,
0x60EDBD48
,
0x2E775066
,
0x73134D0B
,
0x3FB32C9B
};
static
const
BN_ULONG
dh2048_256_q
[]
=
{
0x64F5FBD3
,
0xA308B0FE
,
0x1EB3750B
,
0x99B1A47D
,
0x40129DA2
,
0xB4479976
,
0xA709A097
,
0x8CF83642
};
#else
#error "unsupported BN_BITS2"
#endif
/* Macro to make a BIGNUM from static data */
#define make_dh_bn(x) static const BIGNUM _bignum_##x = { (BN_ULONG *) x, \
sizeof(x)/sizeof(BN_ULONG),\
sizeof(x)/sizeof(BN_ULONG),\
0, BN_FLG_STATIC_DATA }
/* Macro to make a DH structure from BIGNUM data. NB: although just copying
* the BIGNUM static pointers would be more efficient we can't as they get
* wiped using BN_clear_free() when DH_free() is called.
*/
#define make_dh(x) \
DH * DH_get_##x(void) \
{ \
DH *dh; \
make_dh_bn(dh##x##_p); \
make_dh_bn(dh##x##_q); \
make_dh_bn(dh##x##_g); \
dh = DH_new(); \
if (!dh) \
return NULL; \
dh->p = BN_dup(&_bignum_dh##x##_p); \
dh->g = BN_dup(&_bignum_dh##x##_g); \
dh->q = BN_dup(&_bignum_dh##x##_q); \
if (!dh->p || !dh->q || !dh->g) \
{ \
DH_free(dh); \
return NULL; \
} \
return dh; \
}
make_dh
(
1024
_160
)
make_dh
(
2048
_224
)
make_dh
(
2048
_256
)
crypto/dh/dhtest.c
浏览文件 @
20bee968
...
...
@@ -93,6 +93,8 @@ static int MS_CALLBACK cb(int p, int n, BN_GENCB *arg);
static
const
char
rnd_seed
[]
=
"string to make the random number generator think it has entropy"
;
static
int
run_rfc5114_tests
(
void
);
int
main
(
int
argc
,
char
*
argv
[])
{
BN_GENCB
_cb
;
...
...
@@ -193,6 +195,8 @@ int main(int argc, char *argv[])
}
else
ret
=
0
;
if
(
!
run_rfc5114_tests
())
ret
=
1
;
err:
ERR_print_errors_fp
(
stderr
);
...
...
@@ -223,4 +227,310 @@ static int MS_CALLBACK cb(int p, int n, BN_GENCB *arg)
#endif
return
1
;
}
/* Test data from RFC 5114 */
static
const
unsigned
char
dhtest_1024_160_xA
[]
=
{
0xB9
,
0xA3
,
0xB3
,
0xAE
,
0x8F
,
0xEF
,
0xC1
,
0xA2
,
0x93
,
0x04
,
0x96
,
0x50
,
0x70
,
0x86
,
0xF8
,
0x45
,
0x5D
,
0x48
,
0x94
,
0x3E
};
static
const
unsigned
char
dhtest_1024_160_yA
[]
=
{
0x2A
,
0x85
,
0x3B
,
0x3D
,
0x92
,
0x19
,
0x75
,
0x01
,
0xB9
,
0x01
,
0x5B
,
0x2D
,
0xEB
,
0x3E
,
0xD8
,
0x4F
,
0x5E
,
0x02
,
0x1D
,
0xCC
,
0x3E
,
0x52
,
0xF1
,
0x09
,
0xD3
,
0x27
,
0x3D
,
0x2B
,
0x75
,
0x21
,
0x28
,
0x1C
,
0xBA
,
0xBE
,
0x0E
,
0x76
,
0xFF
,
0x57
,
0x27
,
0xFA
,
0x8A
,
0xCC
,
0xE2
,
0x69
,
0x56
,
0xBA
,
0x9A
,
0x1F
,
0xCA
,
0x26
,
0xF2
,
0x02
,
0x28
,
0xD8
,
0x69
,
0x3F
,
0xEB
,
0x10
,
0x84
,
0x1D
,
0x84
,
0xA7
,
0x36
,
0x00
,
0x54
,
0xEC
,
0xE5
,
0xA7
,
0xF5
,
0xB7
,
0xA6
,
0x1A
,
0xD3
,
0xDF
,
0xB3
,
0xC6
,
0x0D
,
0x2E
,
0x43
,
0x10
,
0x6D
,
0x87
,
0x27
,
0xDA
,
0x37
,
0xDF
,
0x9C
,
0xCE
,
0x95
,
0xB4
,
0x78
,
0x75
,
0x5D
,
0x06
,
0xBC
,
0xEA
,
0x8F
,
0x9D
,
0x45
,
0x96
,
0x5F
,
0x75
,
0xA5
,
0xF3
,
0xD1
,
0xDF
,
0x37
,
0x01
,
0x16
,
0x5F
,
0xC9
,
0xE5
,
0x0C
,
0x42
,
0x79
,
0xCE
,
0xB0
,
0x7F
,
0x98
,
0x95
,
0x40
,
0xAE
,
0x96
,
0xD5
,
0xD8
,
0x8E
,
0xD7
,
0x76
};
static
const
unsigned
char
dhtest_1024_160_xB
[]
=
{
0x93
,
0x92
,
0xC9
,
0xF9
,
0xEB
,
0x6A
,
0x7A
,
0x6A
,
0x90
,
0x22
,
0xF7
,
0xD8
,
0x3E
,
0x72
,
0x23
,
0xC6
,
0x83
,
0x5B
,
0xBD
,
0xDA
};
static
const
unsigned
char
dhtest_1024_160_yB
[]
=
{
0x71
,
0x7A
,
0x6C
,
0xB0
,
0x53
,
0x37
,
0x1F
,
0xF4
,
0xA3
,
0xB9
,
0x32
,
0x94
,
0x1C
,
0x1E
,
0x56
,
0x63
,
0xF8
,
0x61
,
0xA1
,
0xD6
,
0xAD
,
0x34
,
0xAE
,
0x66
,
0x57
,
0x6D
,
0xFB
,
0x98
,
0xF6
,
0xC6
,
0xCB
,
0xF9
,
0xDD
,
0xD5
,
0xA5
,
0x6C
,
0x78
,
0x33
,
0xF6
,
0xBC
,
0xFD
,
0xFF
,
0x09
,
0x55
,
0x82
,
0xAD
,
0x86
,
0x8E
,
0x44
,
0x0E
,
0x8D
,
0x09
,
0xFD
,
0x76
,
0x9E
,
0x3C
,
0xEC
,
0xCD
,
0xC3
,
0xD3
,
0xB1
,
0xE4
,
0xCF
,
0xA0
,
0x57
,
0x77
,
0x6C
,
0xAA
,
0xF9
,
0x73
,
0x9B
,
0x6A
,
0x9F
,
0xEE
,
0x8E
,
0x74
,
0x11
,
0xF8
,
0xD6
,
0xDA
,
0xC0
,
0x9D
,
0x6A
,
0x4E
,
0xDB
,
0x46
,
0xCC
,
0x2B
,
0x5D
,
0x52
,
0x03
,
0x09
,
0x0E
,
0xAE
,
0x61
,
0x26
,
0x31
,
0x1E
,
0x53
,
0xFD
,
0x2C
,
0x14
,
0xB5
,
0x74
,
0xE6
,
0xA3
,
0x10
,
0x9A
,
0x3D
,
0xA1
,
0xBE
,
0x41
,
0xBD
,
0xCE
,
0xAA
,
0x18
,
0x6F
,
0x5C
,
0xE0
,
0x67
,
0x16
,
0xA2
,
0xB6
,
0xA0
,
0x7B
,
0x3C
,
0x33
,
0xFE
};
static
const
unsigned
char
dhtest_1024_160_Z
[]
=
{
0x5C
,
0x80
,
0x4F
,
0x45
,
0x4D
,
0x30
,
0xD9
,
0xC4
,
0xDF
,
0x85
,
0x27
,
0x1F
,
0x93
,
0x52
,
0x8C
,
0x91
,
0xDF
,
0x6B
,
0x48
,
0xAB
,
0x5F
,
0x80
,
0xB3
,
0xB5
,
0x9C
,
0xAA
,
0xC1
,
0xB2
,
0x8F
,
0x8A
,
0xCB
,
0xA9
,
0xCD
,
0x3E
,
0x39
,
0xF3
,
0xCB
,
0x61
,
0x45
,
0x25
,
0xD9
,
0x52
,
0x1D
,
0x2E
,
0x64
,
0x4C
,
0x53
,
0xB8
,
0x07
,
0xB8
,
0x10
,
0xF3
,
0x40
,
0x06
,
0x2F
,
0x25
,
0x7D
,
0x7D
,
0x6F
,
0xBF
,
0xE8
,
0xD5
,
0xE8
,
0xF0
,
0x72
,
0xE9
,
0xB6
,
0xE9
,
0xAF
,
0xDA
,
0x94
,
0x13
,
0xEA
,
0xFB
,
0x2E
,
0x8B
,
0x06
,
0x99
,
0xB1
,
0xFB
,
0x5A
,
0x0C
,
0xAC
,
0xED
,
0xDE
,
0xAE
,
0xAD
,
0x7E
,
0x9C
,
0xFB
,
0xB3
,
0x6A
,
0xE2
,
0xB4
,
0x20
,
0x83
,
0x5B
,
0xD8
,
0x3A
,
0x19
,
0xFB
,
0x0B
,
0x5E
,
0x96
,
0xBF
,
0x8F
,
0xA4
,
0xD0
,
0x9E
,
0x34
,
0x55
,
0x25
,
0x16
,
0x7E
,
0xCD
,
0x91
,
0x55
,
0x41
,
0x6F
,
0x46
,
0xF4
,
0x08
,
0xED
,
0x31
,
0xB6
,
0x3C
,
0x6E
,
0x6D
};
static
const
unsigned
char
dhtest_2048_224_xA
[]
=
{
0x22
,
0xE6
,
0x26
,
0x01
,
0xDB
,
0xFF
,
0xD0
,
0x67
,
0x08
,
0xA6
,
0x80
,
0xF7
,
0x47
,
0xF3
,
0x61
,
0xF7
,
0x6D
,
0x8F
,
0x4F
,
0x72
,
0x1A
,
0x05
,
0x48
,
0xE4
,
0x83
,
0x29
,
0x4B
,
0x0C
};
static
const
unsigned
char
dhtest_2048_224_yA
[]
=
{
0x1B
,
0x3A
,
0x63
,
0x45
,
0x1B
,
0xD8
,
0x86
,
0xE6
,
0x99
,
0xE6
,
0x7B
,
0x49
,
0x4E
,
0x28
,
0x8B
,
0xD7
,
0xF8
,
0xE0
,
0xD3
,
0x70
,
0xBA
,
0xDD
,
0xA7
,
0xA0
,
0xEF
,
0xD2
,
0xFD
,
0xE7
,
0xD8
,
0xF6
,
0x61
,
0x45
,
0xCC
,
0x9F
,
0x28
,
0x04
,
0x19
,
0x97
,
0x5E
,
0xB8
,
0x08
,
0x87
,
0x7C
,
0x8A
,
0x4C
,
0x0C
,
0x8E
,
0x0B
,
0xD4
,
0x8D
,
0x4A
,
0x54
,
0x01
,
0xEB
,
0x1E
,
0x87
,
0x76
,
0xBF
,
0xEE
,
0xE1
,
0x34
,
0xC0
,
0x38
,
0x31
,
0xAC
,
0x27
,
0x3C
,
0xD9
,
0xD6
,
0x35
,
0xAB
,
0x0C
,
0xE0
,
0x06
,
0xA4
,
0x2A
,
0x88
,
0x7E
,
0x3F
,
0x52
,
0xFB
,
0x87
,
0x66
,
0xB6
,
0x50
,
0xF3
,
0x80
,
0x78
,
0xBC
,
0x8E
,
0xE8
,
0x58
,
0x0C
,
0xEF
,
0xE2
,
0x43
,
0x96
,
0x8C
,
0xFC
,
0x4F
,
0x8D
,
0xC3
,
0xDB
,
0x08
,
0x45
,
0x54
,
0x17
,
0x1D
,
0x41
,
0xBF
,
0x2E
,
0x86
,
0x1B
,
0x7B
,
0xB4
,
0xD6
,
0x9D
,
0xD0
,
0xE0
,
0x1E
,
0xA3
,
0x87
,
0xCB
,
0xAA
,
0x5C
,
0xA6
,
0x72
,
0xAF
,
0xCB
,
0xE8
,
0xBD
,
0xB9
,
0xD6
,
0x2D
,
0x4C
,
0xE1
,
0x5F
,
0x17
,
0xDD
,
0x36
,
0xF9
,
0x1E
,
0xD1
,
0xEE
,
0xDD
,
0x65
,
0xCA
,
0x4A
,
0x06
,
0x45
,
0x5C
,
0xB9
,
0x4C
,
0xD4
,
0x0A
,
0x52
,
0xEC
,
0x36
,
0x0E
,
0x84
,
0xB3
,
0xC9
,
0x26
,
0xE2
,
0x2C
,
0x43
,
0x80
,
0xA3
,
0xBF
,
0x30
,
0x9D
,
0x56
,
0x84
,
0x97
,
0x68
,
0xB7
,
0xF5
,
0x2C
,
0xFD
,
0xF6
,
0x55
,
0xFD
,
0x05
,
0x3A
,
0x7E
,
0xF7
,
0x06
,
0x97
,
0x9E
,
0x7E
,
0x58
,
0x06
,
0xB1
,
0x7D
,
0xFA
,
0xE5
,
0x3A
,
0xD2
,
0xA5
,
0xBC
,
0x56
,
0x8E
,
0xBB
,
0x52
,
0x9A
,
0x7A
,
0x61
,
0xD6
,
0x8D
,
0x25
,
0x6F
,
0x8F
,
0xC9
,
0x7C
,
0x07
,
0x4A
,
0x86
,
0x1D
,
0x82
,
0x7E
,
0x2E
,
0xBC
,
0x8C
,
0x61
,
0x34
,
0x55
,
0x31
,
0x15
,
0xB7
,
0x0E
,
0x71
,
0x03
,
0x92
,
0x0A
,
0xA1
,
0x6D
,
0x85
,
0xE5
,
0x2B
,
0xCB
,
0xAB
,
0x8D
,
0x78
,
0x6A
,
0x68
,
0x17
,
0x8F
,
0xA8
,
0xFF
,
0x7C
,
0x2F
,
0x5C
,
0x71
,
0x64
,
0x8D
,
0x6F
};
static
const
unsigned
char
dhtest_2048_224_xB
[]
=
{
0x4F
,
0xF3
,
0xBC
,
0x96
,
0xC7
,
0xFC
,
0x6A
,
0x6D
,
0x71
,
0xD3
,
0xB3
,
0x63
,
0x80
,
0x0A
,
0x7C
,
0xDF
,
0xEF
,
0x6F
,
0xC4
,
0x1B
,
0x44
,
0x17
,
0xEA
,
0x15
,
0x35
,
0x3B
,
0x75
,
0x90
};
static
const
unsigned
char
dhtest_2048_224_yB
[]
=
{
0x4D
,
0xCE
,
0xE9
,
0x92
,
0xA9
,
0x76
,
0x2A
,
0x13
,
0xF2
,
0xF8
,
0x38
,
0x44
,
0xAD
,
0x3D
,
0x77
,
0xEE
,
0x0E
,
0x31
,
0xC9
,
0x71
,
0x8B
,
0x3D
,
0xB6
,
0xC2
,
0x03
,
0x5D
,
0x39
,
0x61
,
0x18
,
0x2C
,
0x3E
,
0x0B
,
0xA2
,
0x47
,
0xEC
,
0x41
,
0x82
,
0xD7
,
0x60
,
0xCD
,
0x48
,
0xD9
,
0x95
,
0x99
,
0x97
,
0x06
,
0x22
,
0xA1
,
0x88
,
0x1B
,
0xBA
,
0x2D
,
0xC8
,
0x22
,
0x93
,
0x9C
,
0x78
,
0xC3
,
0x91
,
0x2C
,
0x66
,
0x61
,
0xFA
,
0x54
,
0x38
,
0xB2
,
0x07
,
0x66
,
0x22
,
0x2B
,
0x75
,
0xE2
,
0x4C
,
0x2E
,
0x3A
,
0xD0
,
0xC7
,
0x28
,
0x72
,
0x36
,
0x12
,
0x95
,
0x25
,
0xEE
,
0x15
,
0xB5
,
0xDD
,
0x79
,
0x98
,
0xAA
,
0x04
,
0xC4
,
0xA9
,
0x69
,
0x6C
,
0xAC
,
0xD7
,
0x17
,
0x20
,
0x83
,
0xA9
,
0x7A
,
0x81
,
0x66
,
0x4E
,
0xAD
,
0x2C
,
0x47
,
0x9E
,
0x44
,
0x4E
,
0x4C
,
0x06
,
0x54
,
0xCC
,
0x19
,
0xE2
,
0x8D
,
0x77
,
0x03
,
0xCE
,
0xE8
,
0xDA
,
0xCD
,
0x61
,
0x26
,
0xF5
,
0xD6
,
0x65
,
0xEC
,
0x52
,
0xC6
,
0x72
,
0x55
,
0xDB
,
0x92
,
0x01
,
0x4B
,
0x03
,
0x7E
,
0xB6
,
0x21
,
0xA2
,
0xAC
,
0x8E
,
0x36
,
0x5D
,
0xE0
,
0x71
,
0xFF
,
0xC1
,
0x40
,
0x0A
,
0xCF
,
0x07
,
0x7A
,
0x12
,
0x91
,
0x3D
,
0xD8
,
0xDE
,
0x89
,
0x47
,
0x34
,
0x37
,
0xAB
,
0x7B
,
0xA3
,
0x46
,
0x74
,
0x3C
,
0x1B
,
0x21
,
0x5D
,
0xD9
,
0xC1
,
0x21
,
0x64
,
0xA7
,
0xE4
,
0x05
,
0x31
,
0x18
,
0xD1
,
0x99
,
0xBE
,
0xC8
,
0xEF
,
0x6F
,
0xC5
,
0x61
,
0x17
,
0x0C
,
0x84
,
0xC8
,
0x7D
,
0x10
,
0xEE
,
0x9A
,
0x67
,
0x4A
,
0x1F
,
0xA8
,
0xFF
,
0xE1
,
0x3B
,
0xDF
,
0xBA
,
0x1D
,
0x44
,
0xDE
,
0x48
,
0x94
,
0x6D
,
0x68
,
0xDC
,
0x0C
,
0xDD
,
0x77
,
0x76
,
0x35
,
0xA7
,
0xAB
,
0x5B
,
0xFB
,
0x1E
,
0x4B
,
0xB7
,
0xB8
,
0x56
,
0xF9
,
0x68
,
0x27
,
0x73
,
0x4C
,
0x18
,
0x41
,
0x38
,
0xE9
,
0x15
,
0xD9
,
0xC3
,
0x00
,
0x2E
,
0xBC
,
0xE5
,
0x31
,
0x20
,
0x54
,
0x6A
,
0x7E
,
0x20
,
0x02
,
0x14
,
0x2B
,
0x6C
};
static
const
unsigned
char
dhtest_2048_224_Z
[]
=
{
0x34
,
0xD9
,
0xBD
,
0xDC
,
0x1B
,
0x42
,
0x17
,
0x6C
,
0x31
,
0x3F
,
0xEA
,
0x03
,
0x4C
,
0x21
,
0x03
,
0x4D
,
0x07
,
0x4A
,
0x63
,
0x13
,
0xBB
,
0x4E
,
0xCD
,
0xB3
,
0x70
,
0x3F
,
0xFF
,
0x42
,
0x45
,
0x67
,
0xA4
,
0x6B
,
0xDF
,
0x75
,
0x53
,
0x0E
,
0xDE
,
0x0A
,
0x9D
,
0xA5
,
0x22
,
0x9D
,
0xE7
,
0xD7
,
0x67
,
0x32
,
0x28
,
0x6C
,
0xBC
,
0x0F
,
0x91
,
0xDA
,
0x4C
,
0x3C
,
0x85
,
0x2F
,
0xC0
,
0x99
,
0xC6
,
0x79
,
0x53
,
0x1D
,
0x94
,
0xC7
,
0x8A
,
0xB0
,
0x3D
,
0x9D
,
0xEC
,
0xB0
,
0xA4
,
0xE4
,
0xCA
,
0x8B
,
0x2B
,
0xB4
,
0x59
,
0x1C
,
0x40
,
0x21
,
0xCF
,
0x8C
,
0xE3
,
0xA2
,
0x0A
,
0x54
,
0x1D
,
0x33
,
0x99
,
0x40
,
0x17
,
0xD0
,
0x20
,
0x0A
,
0xE2
,
0xC9
,
0x51
,
0x6E
,
0x2F
,
0xF5
,
0x14
,
0x57
,
0x79
,
0x26
,
0x9E
,
0x86
,
0x2B
,
0x0F
,
0xB4
,
0x74
,
0xA2
,
0xD5
,
0x6D
,
0xC3
,
0x1E
,
0xD5
,
0x69
,
0xA7
,
0x70
,
0x0B
,
0x4C
,
0x4A
,
0xB1
,
0x6B
,
0x22
,
0xA4
,
0x55
,
0x13
,
0x53
,
0x1E
,
0xF5
,
0x23
,
0xD7
,
0x12
,
0x12
,
0x07
,
0x7B
,
0x5A
,
0x16
,
0x9B
,
0xDE
,
0xFF
,
0xAD
,
0x7A
,
0xD9
,
0x60
,
0x82
,
0x84
,
0xC7
,
0x79
,
0x5B
,
0x6D
,
0x5A
,
0x51
,
0x83
,
0xB8
,
0x70
,
0x66
,
0xDE
,
0x17
,
0xD8
,
0xD6
,
0x71
,
0xC9
,
0xEB
,
0xD8
,
0xEC
,
0x89
,
0x54
,
0x4D
,
0x45
,
0xEC
,
0x06
,
0x15
,
0x93
,
0xD4
,
0x42
,
0xC6
,
0x2A
,
0xB9
,
0xCE
,
0x3B
,
0x1C
,
0xB9
,
0x94
,
0x3A
,
0x1D
,
0x23
,
0xA5
,
0xEA
,
0x3B
,
0xCF
,
0x21
,
0xA0
,
0x14
,
0x71
,
0xE6
,
0x7E
,
0x00
,
0x3E
,
0x7F
,
0x8A
,
0x69
,
0xC7
,
0x28
,
0xBE
,
0x49
,
0x0B
,
0x2F
,
0xC8
,
0x8C
,
0xFE
,
0xB9
,
0x2D
,
0xB6
,
0xA2
,
0x15
,
0xE5
,
0xD0
,
0x3C
,
0x17
,
0xC4
,
0x64
,
0xC9
,
0xAC
,
0x1A
,
0x46
,
0xE2
,
0x03
,
0xE1
,
0x3F
,
0x95
,
0x29
,
0x95
,
0xFB
,
0x03
,
0xC6
,
0x9D
,
0x3C
,
0xC4
,
0x7F
,
0xCB
,
0x51
,
0x0B
,
0x69
,
0x98
,
0xFF
,
0xD3
,
0xAA
,
0x6D
,
0xE7
,
0x3C
,
0xF9
,
0xF6
,
0x38
,
0x69
};
static
const
unsigned
char
dhtest_2048_256_xA
[]
=
{
0x08
,
0x81
,
0x38
,
0x2C
,
0xDB
,
0x87
,
0x66
,
0x0C
,
0x6D
,
0xC1
,
0x3E
,
0x61
,
0x49
,
0x38
,
0xD5
,
0xB9
,
0xC8
,
0xB2
,
0xF2
,
0x48
,
0x58
,
0x1C
,
0xC5
,
0xE3
,
0x1B
,
0x35
,
0x45
,
0x43
,
0x97
,
0xFC
,
0xE5
,
0x0E
};
static
const
unsigned
char
dhtest_2048_256_yA
[]
=
{
0x2E
,
0x93
,
0x80
,
0xC8
,
0x32
,
0x3A
,
0xF9
,
0x75
,
0x45
,
0xBC
,
0x49
,
0x41
,
0xDE
,
0xB0
,
0xEC
,
0x37
,
0x42
,
0xC6
,
0x2F
,
0xE0
,
0xEC
,
0xE8
,
0x24
,
0xA6
,
0xAB
,
0xDB
,
0xE6
,
0x6C
,
0x59
,
0xBE
,
0xE0
,
0x24
,
0x29
,
0x11
,
0xBF
,
0xB9
,
0x67
,
0x23
,
0x5C
,
0xEB
,
0xA3
,
0x5A
,
0xE1
,
0x3E
,
0x4E
,
0xC7
,
0x52
,
0xBE
,
0x63
,
0x0B
,
0x92
,
0xDC
,
0x4B
,
0xDE
,
0x28
,
0x47
,
0xA9
,
0xC6
,
0x2C
,
0xB8
,
0x15
,
0x27
,
0x45
,
0x42
,
0x1F
,
0xB7
,
0xEB
,
0x60
,
0xA6
,
0x3C
,
0x0F
,
0xE9
,
0x15
,
0x9F
,
0xCC
,
0xE7
,
0x26
,
0xCE
,
0x7C
,
0xD8
,
0x52
,
0x3D
,
0x74
,
0x50
,
0x66
,
0x7E
,
0xF8
,
0x40
,
0xE4
,
0x91
,
0x91
,
0x21
,
0xEB
,
0x5F
,
0x01
,
0xC8
,
0xC9
,
0xB0
,
0xD3
,
0xD6
,
0x48
,
0xA9
,
0x3B
,
0xFB
,
0x75
,
0x68
,
0x9E
,
0x82
,
0x44
,
0xAC
,
0x13
,
0x4A
,
0xF5
,
0x44
,
0x71
,
0x1C
,
0xE7
,
0x9A
,
0x02
,
0xDC
,
0xC3
,
0x42
,
0x26
,
0x68
,
0x47
,
0x80
,
0xDD
,
0xDC
,
0xB4
,
0x98
,
0x59
,
0x41
,
0x06
,
0xC3
,
0x7F
,
0x5B
,
0xC7
,
0x98
,
0x56
,
0x48
,
0x7A
,
0xF5
,
0xAB
,
0x02
,
0x2A
,
0x2E
,
0x5E
,
0x42
,
0xF0
,
0x98
,
0x97
,
0xC1
,
0xA8
,
0x5A
,
0x11
,
0xEA
,
0x02
,
0x12
,
0xAF
,
0x04
,
0xD9
,
0xB4
,
0xCE
,
0xBC
,
0x93
,
0x7C
,
0x3C
,
0x1A
,
0x3E
,
0x15
,
0xA8
,
0xA0
,
0x34
,
0x2E
,
0x33
,
0x76
,
0x15
,
0xC8
,
0x4E
,
0x7F
,
0xE3
,
0xB8
,
0xB9
,
0xB8
,
0x7F
,
0xB1
,
0xE7
,
0x3A
,
0x15
,
0xAF
,
0x12
,
0xA3
,
0x0D
,
0x74
,
0x6E
,
0x06
,
0xDF
,
0xC3
,
0x4F
,
0x29
,
0x0D
,
0x79
,
0x7C
,
0xE5
,
0x1A
,
0xA1
,
0x3A
,
0xA7
,
0x85
,
0xBF
,
0x66
,
0x58
,
0xAF
,
0xF5
,
0xE4
,
0xB0
,
0x93
,
0x00
,
0x3C
,
0xBE
,
0xAF
,
0x66
,
0x5B
,
0x3C
,
0x2E
,
0x11
,
0x3A
,
0x3A
,
0x4E
,
0x90
,
0x52
,
0x69
,
0x34
,
0x1D
,
0xC0
,
0x71
,
0x14
,
0x26
,
0x68
,
0x5F
,
0x4E
,
0xF3
,
0x7E
,
0x86
,
0x8A
,
0x81
,
0x26
,
0xFF
,
0x3F
,
0x22
,
0x79
,
0xB5
,
0x7C
,
0xA6
,
0x7E
,
0x29
};
static
const
unsigned
char
dhtest_2048_256_xB
[]
=
{
0x7D
,
0x62
,
0xA7
,
0xE3
,
0xEF
,
0x36
,
0xDE
,
0x61
,
0x7B
,
0x13
,
0xD1
,
0xAF
,
0xB8
,
0x2C
,
0x78
,
0x0D
,
0x83
,
0xA2
,
0x3B
,
0xD4
,
0xEE
,
0x67
,
0x05
,
0x64
,
0x51
,
0x21
,
0xF3
,
0x71
,
0xF5
,
0x46
,
0xA5
,
0x3D
};
static
const
unsigned
char
dhtest_2048_256_yB
[]
=
{
0x57
,
0x5F
,
0x03
,
0x51
,
0xBD
,
0x2B
,
0x1B
,
0x81
,
0x74
,
0x48
,
0xBD
,
0xF8
,
0x7A
,
0x6C
,
0x36
,
0x2C
,
0x1E
,
0x28
,
0x9D
,
0x39
,
0x03
,
0xA3
,
0x0B
,
0x98
,
0x32
,
0xC5
,
0x74
,
0x1F
,
0xA2
,
0x50
,
0x36
,
0x3E
,
0x7A
,
0xCB
,
0xC7
,
0xF7
,
0x7F
,
0x3D
,
0xAC
,
0xBC
,
0x1F
,
0x13
,
0x1A
,
0xDD
,
0x8E
,
0x03
,
0x36
,
0x7E
,
0xFF
,
0x8F
,
0xBB
,
0xB3
,
0xE1
,
0xC5
,
0x78
,
0x44
,
0x24
,
0x80
,
0x9B
,
0x25
,
0xAF
,
0xE4
,
0xD2
,
0x26
,
0x2A
,
0x1A
,
0x6F
,
0xD2
,
0xFA
,
0xB6
,
0x41
,
0x05
,
0xCA
,
0x30
,
0xA6
,
0x74
,
0xE0
,
0x7F
,
0x78
,
0x09
,
0x85
,
0x20
,
0x88
,
0x63
,
0x2F
,
0xC0
,
0x49
,
0x23
,
0x37
,
0x91
,
0xAD
,
0x4E
,
0xDD
,
0x08
,
0x3A
,
0x97
,
0x8B
,
0x88
,
0x3E
,
0xE6
,
0x18
,
0xBC
,
0x5E
,
0x0D
,
0xD0
,
0x47
,
0x41
,
0x5F
,
0x2D
,
0x95
,
0xE6
,
0x83
,
0xCF
,
0x14
,
0x82
,
0x6B
,
0x5F
,
0xBE
,
0x10
,
0xD3
,
0xCE
,
0x41
,
0xC6
,
0xC1
,
0x20
,
0xC7
,
0x8A
,
0xB2
,
0x00
,
0x08
,
0xC6
,
0x98
,
0xBF
,
0x7F
,
0x0B
,
0xCA
,
0xB9
,
0xD7
,
0xF4
,
0x07
,
0xBE
,
0xD0
,
0xF4
,
0x3A
,
0xFB
,
0x29
,
0x70
,
0xF5
,
0x7F
,
0x8D
,
0x12
,
0x04
,
0x39
,
0x63
,
0xE6
,
0x6D
,
0xDD
,
0x32
,
0x0D
,
0x59
,
0x9A
,
0xD9
,
0x93
,
0x6C
,
0x8F
,
0x44
,
0x13
,
0x7C
,
0x08
,
0xB1
,
0x80
,
0xEC
,
0x5E
,
0x98
,
0x5C
,
0xEB
,
0xE1
,
0x86
,
0xF3
,
0xD5
,
0x49
,
0x67
,
0x7E
,
0x80
,
0x60
,
0x73
,
0x31
,
0xEE
,
0x17
,
0xAF
,
0x33
,
0x80
,
0xA7
,
0x25
,
0xB0
,
0x78
,
0x23
,
0x17
,
0xD7
,
0xDD
,
0x43
,
0xF5
,
0x9D
,
0x7A
,
0xF9
,
0x56
,
0x8A
,
0x9B
,
0xB6
,
0x3A
,
0x84
,
0xD3
,
0x65
,
0xF9
,
0x22
,
0x44
,
0xED
,
0x12
,
0x09
,
0x88
,
0x21
,
0x93
,
0x02
,
0xF4
,
0x29
,
0x24
,
0xC7
,
0xCA
,
0x90
,
0xB8
,
0x9D
,
0x24
,
0xF7
,
0x1B
,
0x0A
,
0xB6
,
0x97
,
0x82
,
0x3D
,
0x7D
,
0xEB
,
0x1A
,
0xFF
,
0x5B
,
0x0E
,
0x8E
,
0x4A
,
0x45
,
0xD4
,
0x9F
,
0x7F
,
0x53
,
0x75
,
0x7E
,
0x19
,
0x13
};
static
const
unsigned
char
dhtest_2048_256_Z
[]
=
{
0x86
,
0xC7
,
0x0B
,
0xF8
,
0xD0
,
0xBB
,
0x81
,
0xBB
,
0x01
,
0x07
,
0x8A
,
0x17
,
0x21
,
0x9C
,
0xB7
,
0xD2
,
0x72
,
0x03
,
0xDB
,
0x2A
,
0x19
,
0xC8
,
0x77
,
0xF1
,
0xD1
,
0xF1
,
0x9F
,
0xD7
,
0xD7
,
0x7E
,
0xF2
,
0x25
,
0x46
,
0xA6
,
0x8F
,
0x00
,
0x5A
,
0xD5
,
0x2D
,
0xC8
,
0x45
,
0x53
,
0xB7
,
0x8F
,
0xC6
,
0x03
,
0x30
,
0xBE
,
0x51
,
0xEA
,
0x7C
,
0x06
,
0x72
,
0xCA
,
0xC1
,
0x51
,
0x5E
,
0x4B
,
0x35
,
0xC0
,
0x47
,
0xB9
,
0xA5
,
0x51
,
0xB8
,
0x8F
,
0x39
,
0xDC
,
0x26
,
0xDA
,
0x14
,
0xA0
,
0x9E
,
0xF7
,
0x47
,
0x74
,
0xD4
,
0x7C
,
0x76
,
0x2D
,
0xD1
,
0x77
,
0xF9
,
0xED
,
0x5B
,
0xC2
,
0xF1
,
0x1E
,
0x52
,
0xC8
,
0x79
,
0xBD
,
0x95
,
0x09
,
0x85
,
0x04
,
0xCD
,
0x9E
,
0xEC
,
0xD8
,
0xA8
,
0xF9
,
0xB3
,
0xEF
,
0xBD
,
0x1F
,
0x00
,
0x8A
,
0xC5
,
0x85
,
0x30
,
0x97
,
0xD9
,
0xD1
,
0x83
,
0x7F
,
0x2B
,
0x18
,
0xF7
,
0x7C
,
0xD7
,
0xBE
,
0x01
,
0xAF
,
0x80
,
0xA7
,
0xC7
,
0xB5
,
0xEA
,
0x3C
,
0xA5
,
0x4C
,
0xC0
,
0x2D
,
0x0C
,
0x11
,
0x6F
,
0xEE
,
0x3F
,
0x95
,
0xBB
,
0x87
,
0x39
,
0x93
,
0x85
,
0x87
,
0x5D
,
0x7E
,
0x86
,
0x74
,
0x7E
,
0x67
,
0x6E
,
0x72
,
0x89
,
0x38
,
0xAC
,
0xBF
,
0xF7
,
0x09
,
0x8E
,
0x05
,
0xBE
,
0x4D
,
0xCF
,
0xB2
,
0x40
,
0x52
,
0xB8
,
0x3A
,
0xEF
,
0xFB
,
0x14
,
0x78
,
0x3F
,
0x02
,
0x9A
,
0xDB
,
0xDE
,
0x7F
,
0x53
,
0xFA
,
0xE9
,
0x20
,
0x84
,
0x22
,
0x40
,
0x90
,
0xE0
,
0x07
,
0xCE
,
0xE9
,
0x4D
,
0x4B
,
0xF2
,
0xBA
,
0xCE
,
0x9F
,
0xFD
,
0x4B
,
0x57
,
0xD2
,
0xAF
,
0x7C
,
0x72
,
0x4D
,
0x0C
,
0xAA
,
0x19
,
0xBF
,
0x05
,
0x01
,
0xF6
,
0xF1
,
0x7B
,
0x4A
,
0xA1
,
0x0F
,
0x42
,
0x5E
,
0x3E
,
0xA7
,
0x60
,
0x80
,
0xB4
,
0xB9
,
0xD6
,
0xB3
,
0xCE
,
0xFE
,
0xA1
,
0x15
,
0xB2
,
0xCE
,
0xB8
,
0x78
,
0x9B
,
0xB8
,
0xA3
,
0xB0
,
0xEA
,
0x87
,
0xFE
,
0xBE
,
0x63
,
0xB6
,
0xC8
,
0xF8
,
0x46
,
0xEC
,
0x6D
,
0xB0
,
0xC2
,
0x6C
,
0x5D
,
0x7C
};
typedef
struct
{
DH
*
(
*
get_param
)(
void
);
const
unsigned
char
*
xA
;
size_t
xA_len
;
const
unsigned
char
*
yA
;
size_t
yA_len
;
const
unsigned
char
*
xB
;
size_t
xB_len
;
const
unsigned
char
*
yB
;
size_t
yB_len
;
const
unsigned
char
*
Z
;
size_t
Z_len
;
}
rfc5114_td
;
#define make_rfc5114_td(pre) { \
DH_get_##pre, \
dhtest_##pre##_xA, sizeof(dhtest_##pre##_xA), \
dhtest_##pre##_yA, sizeof(dhtest_##pre##_yA), \
dhtest_##pre##_xB, sizeof(dhtest_##pre##_xB), \
dhtest_##pre##_yB, sizeof(dhtest_##pre##_yB), \
dhtest_##pre##_Z, sizeof(dhtest_##pre##_Z) \
}
static
const
rfc5114_td
rfctd
[]
=
{
make_rfc5114_td
(
1024
_160
),
make_rfc5114_td
(
2048
_224
),
make_rfc5114_td
(
2048
_256
)
};
static
int
run_rfc5114_tests
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
(
int
)(
sizeof
(
rfctd
)
/
sizeof
(
rfc5114_td
));
i
++
)
{
DH
*
dhA
,
*
dhB
;
unsigned
char
*
Z1
=
NULL
,
*
Z2
=
NULL
;
const
rfc5114_td
*
td
=
rfctd
+
i
;
/* Set up DH structures setting key components */
dhA
=
td
->
get_param
();
dhB
=
td
->
get_param
();
if
(
!
dhA
||
!
dhB
)
goto
bad_err
;
dhA
->
priv_key
=
BN_bin2bn
(
td
->
xA
,
td
->
xA_len
,
NULL
);
dhA
->
pub_key
=
BN_bin2bn
(
td
->
yA
,
td
->
yA_len
,
NULL
);
dhB
->
priv_key
=
BN_bin2bn
(
td
->
xB
,
td
->
xB_len
,
NULL
);
dhB
->
pub_key
=
BN_bin2bn
(
td
->
yB
,
td
->
yB_len
,
NULL
);
if
(
!
dhA
->
priv_key
||
!
dhA
->
pub_key
||
!
dhB
->
priv_key
||
!
dhB
->
pub_key
)
goto
bad_err
;
if
((
td
->
Z_len
!=
(
size_t
)
DH_size
(
dhA
))
||
(
td
->
Z_len
!=
(
size_t
)
DH_size
(
dhB
)))
goto
err
;
Z1
=
OPENSSL_malloc
(
DH_size
(
dhA
));
Z2
=
OPENSSL_malloc
(
DH_size
(
dhB
));
/* Work out shared secrets using both sides and compare
* with expected values.
*/
if
(
!
DH_compute_key
(
Z1
,
dhB
->
pub_key
,
dhA
))
goto
bad_err
;
if
(
!
DH_compute_key
(
Z2
,
dhA
->
pub_key
,
dhB
))
goto
bad_err
;
if
(
memcmp
(
Z1
,
td
->
Z
,
td
->
Z_len
))
goto
err
;
if
(
memcmp
(
Z2
,
td
->
Z
,
td
->
Z_len
))
goto
err
;
printf
(
"RFC5114 parameter test %d OK
\n
"
,
i
+
1
);
DH_free
(
dhA
);
DH_free
(
dhB
);
OPENSSL_free
(
Z1
);
OPENSSL_free
(
Z2
);
}
return
1
;
bad_err:
fprintf
(
stderr
,
"Initalisation error RFC5114 set %d
\n
"
,
i
+
1
);
ERR_print_errors_fp
(
stderr
);
return
0
;
err:
fprintf
(
stderr
,
"Test failed RFC5114 set %d
\n
"
,
i
+
1
);
return
0
;
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录