sync code with last fixes and improvements from OpenBSD
This commit is contained in:
parent
f960599e67
commit
691f97cc10
215 changed files with 1520 additions and 11518 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bn.h,v 1.72 2023/06/13 09:12:22 tb Exp $ */
|
||||
/* $OpenBSD: bn.h,v 1.74 2023/07/28 10:07:30 tb Exp $ */
|
||||
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -449,40 +449,11 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
|
|||
BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
|
||||
const BIGNUM *mod, BN_CTX *ctx);
|
||||
|
||||
/* BN_BLINDING flags */
|
||||
#define BN_BLINDING_NO_UPDATE 0x00000001
|
||||
#define BN_BLINDING_NO_RECREATE 0x00000002
|
||||
|
||||
BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
|
||||
void BN_BLINDING_free(BN_BLINDING *b);
|
||||
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||
|
||||
CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *);
|
||||
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
|
||||
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
|
||||
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
|
||||
const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
|
||||
int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx),
|
||||
BN_MONT_CTX *m_ctx);
|
||||
|
||||
/* Primes from RFC 2409 */
|
||||
BIGNUM *get_rfc2409_prime_768(BIGNUM *bn);
|
||||
BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn);
|
||||
|
||||
/* Primes from RFC 3526 */
|
||||
BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn);
|
||||
BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn);
|
||||
BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn);
|
||||
BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn);
|
||||
BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn);
|
||||
BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bn_blind.c,v 1.23 2023/07/08 12:21:58 beck Exp $ */
|
||||
/* $OpenBSD: bn_blind.c,v 1.24 2023/07/28 10:05:16 tb Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
|
@ -169,7 +169,6 @@ err:
|
|||
BN_BLINDING_free(ret);
|
||||
return (NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_new);
|
||||
|
||||
void
|
||||
BN_BLINDING_free(BN_BLINDING *r)
|
||||
|
@ -183,7 +182,6 @@ BN_BLINDING_free(BN_BLINDING *r)
|
|||
BN_free(r->mod);
|
||||
free(r);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_free);
|
||||
|
||||
int
|
||||
BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx)
|
||||
|
@ -217,14 +215,12 @@ err:
|
|||
b->counter = 0;
|
||||
return (ret);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_update);
|
||||
|
||||
int
|
||||
BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx)
|
||||
{
|
||||
return BN_BLINDING_convert_ex(n, NULL, b, ctx);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_convert);
|
||||
|
||||
int
|
||||
BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx)
|
||||
|
@ -253,14 +249,12 @@ BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx)
|
|||
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_convert_ex);
|
||||
|
||||
int
|
||||
BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx)
|
||||
{
|
||||
return BN_BLINDING_invert_ex(n, NULL, b, ctx);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_invert);
|
||||
|
||||
int
|
||||
BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx)
|
||||
|
@ -280,28 +274,24 @@ BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx)
|
|||
|
||||
return (ret);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_invert_ex);
|
||||
|
||||
CRYPTO_THREADID *
|
||||
BN_BLINDING_thread_id(BN_BLINDING *b)
|
||||
{
|
||||
return &b->tid;
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_thread_id);
|
||||
|
||||
unsigned long
|
||||
BN_BLINDING_get_flags(const BN_BLINDING *b)
|
||||
{
|
||||
return b->flags;
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_get_flags);
|
||||
|
||||
void
|
||||
BN_BLINDING_set_flags(BN_BLINDING *b, unsigned long flags)
|
||||
{
|
||||
b->flags = flags;
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_set_flags);
|
||||
|
||||
BN_BLINDING *
|
||||
BN_BLINDING_create_param(BN_BLINDING *b, const BIGNUM *e, BIGNUM *m,
|
||||
|
@ -373,4 +363,3 @@ err:
|
|||
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_BLINDING_create_param);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bn_const.c,v 1.7 2023/07/10 03:26:30 tb Exp $ */
|
||||
/* $OpenBSD: bn_const.c,v 1.8 2023/07/28 10:07:30 tb Exp $ */
|
||||
/* Insert boilerplate */
|
||||
|
||||
#include <openssl/bn.h>
|
||||
|
@ -23,13 +23,6 @@ static const unsigned char RFC2409_PRIME_768[] = {
|
|||
0xA6, 0x3A, 0x36, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc2409_prime_768(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC2409_PRIME_768, sizeof(RFC2409_PRIME_768), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc2409_prime_768);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc2409_prime_768(BIGNUM *bn)
|
||||
{
|
||||
|
@ -60,13 +53,6 @@ static const unsigned char RFC2409_PRIME_1024[] = {
|
|||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc2409_prime_1024(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC2409_PRIME_1024, sizeof(RFC2409_PRIME_1024), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc2409_prime_1024);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc2409_prime_1024(BIGNUM *bn)
|
||||
{
|
||||
|
@ -102,13 +88,6 @@ static const unsigned char RFC3526_PRIME_1536[] = {
|
|||
0xCA, 0x23, 0x73, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_1536(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_1536, sizeof(RFC3526_PRIME_1536), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_1536);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_1536(BIGNUM *bn)
|
||||
{
|
||||
|
@ -149,13 +128,6 @@ static const unsigned char RFC3526_PRIME_2048[] = {
|
|||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_2048(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_2048, sizeof(RFC3526_PRIME_2048), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_2048);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_2048(BIGNUM *bn)
|
||||
{
|
||||
|
@ -206,13 +178,6 @@ static const unsigned char RFC3526_PRIME_3072[] = {
|
|||
0xA9, 0x3A, 0xD2, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_3072(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_3072, sizeof(RFC3526_PRIME_3072), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_3072);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_3072(BIGNUM *bn)
|
||||
{
|
||||
|
@ -274,13 +239,6 @@ static const unsigned char RFC3526_PRIME_4096[] = {
|
|||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_4096(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_4096, sizeof(RFC3526_PRIME_4096), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_4096);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_4096(BIGNUM *bn)
|
||||
{
|
||||
|
@ -363,13 +321,6 @@ static const unsigned char RFC3526_PRIME_6144[] = {
|
|||
0x6D, 0xCC, 0x40, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_6144(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_6144, sizeof(RFC3526_PRIME_6144), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_6144);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_6144(BIGNUM *bn)
|
||||
{
|
||||
|
@ -474,13 +425,6 @@ static const unsigned char RFC3526_PRIME_8192[] = {
|
|||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
BIGNUM *
|
||||
get_rfc3526_prime_8192(BIGNUM *bn)
|
||||
{
|
||||
return BN_bin2bn(RFC3526_PRIME_8192, sizeof(RFC3526_PRIME_8192), bn);
|
||||
}
|
||||
LCRYPTO_ALIAS(get_rfc3526_prime_8192);
|
||||
|
||||
BIGNUM *
|
||||
BN_get_rfc3526_prime_8192(BIGNUM *bn)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bn_lib.c,v 1.89 2023/07/08 12:21:58 beck Exp $ */
|
||||
/* $OpenBSD: bn_lib.c,v 1.90 2023/07/28 10:35:14 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -655,26 +655,6 @@ BN_is_negative(const BIGNUM *a)
|
|||
}
|
||||
LCRYPTO_ALIAS(BN_is_negative);
|
||||
|
||||
char *
|
||||
BN_options(void)
|
||||
{
|
||||
static int init = 0;
|
||||
static char data[16];
|
||||
|
||||
if (!init) {
|
||||
init++;
|
||||
#ifdef BN_LLONG
|
||||
snprintf(data,sizeof data, "bn(%d,%d)",
|
||||
(int)sizeof(BN_ULLONG) * 8, (int)sizeof(BN_ULONG) * 8);
|
||||
#else
|
||||
snprintf(data,sizeof data, "bn(%d,%d)",
|
||||
(int)sizeof(BN_ULONG) * 8, (int)sizeof(BN_ULONG) * 8);
|
||||
#endif
|
||||
}
|
||||
return (data);
|
||||
}
|
||||
LCRYPTO_ALIAS(BN_options);
|
||||
|
||||
/*
|
||||
* Bits of security, see SP800-57, section 5.6.11, table 2.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bn_local.h,v 1.26 2023/07/09 18:27:22 tb Exp $ */
|
||||
/* $OpenBSD: bn_local.h,v 1.27 2023/07/28 10:05:16 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -291,6 +291,27 @@ int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
|||
int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
|
||||
BN_RECP_CTX *recp, BN_CTX *ctx);
|
||||
|
||||
/* BN_BLINDING flags */
|
||||
#define BN_BLINDING_NO_UPDATE 0x00000001
|
||||
#define BN_BLINDING_NO_RECREATE 0x00000002
|
||||
|
||||
BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
|
||||
void BN_BLINDING_free(BN_BLINDING *b);
|
||||
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||
|
||||
CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *);
|
||||
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
|
||||
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
|
||||
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
|
||||
const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
|
||||
int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx),
|
||||
BN_MONT_CTX *m_ctx);
|
||||
|
||||
/* Explicitly const time / non-const time versions for internal use */
|
||||
int BN_mod_exp_ct(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue