Latest update.
This commit is contained in:
+10
-6
@@ -10,12 +10,16 @@
|
||||
#include <openssl/dh.h>
|
||||
#include "internal/ffc.h"
|
||||
|
||||
int dh_generate_ffc_parameters(OPENSSL_CTX *libctx, DH *dh, int bits,
|
||||
int qbits, int gindex, BN_GENCB *cb);
|
||||
DH *dh_new_with_ctx(OPENSSL_CTX *libctx);
|
||||
|
||||
int dh_generate_ffc_parameters(DH *dh, int bits,
|
||||
int qbits, int gindex, BN_GENCB *cb);
|
||||
int dh_generate_public_key(BN_CTX *ctx, DH *dh, const BIGNUM *priv_key,
|
||||
BIGNUM *pub_key);
|
||||
|
||||
int dh_compute_key(OPENSSL_CTX *ctx, unsigned char *key, const BIGNUM *pub_key,
|
||||
DH *dh);
|
||||
int dh_compute_key_padded(OPENSSL_CTX *ctx, unsigned char *key,
|
||||
const BIGNUM *pub_key, DH *dh);
|
||||
FFC_PARAMS *dh_get0_params(DH *dh);
|
||||
int dh_get0_nid(const DH *dh);
|
||||
|
||||
int dh_check_pub_key_partial(const DH *dh, const BIGNUM *pub_key, int *ret);
|
||||
int dh_check_priv_key(const DH *dh, const BIGNUM *priv_key, int *ret);
|
||||
int dh_check_pairwise(DH *dh);
|
||||
+11
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -12,16 +12,19 @@
|
||||
#define DSA_PARAMGEN_TYPE_FIPS_186_2 1 /* Use legacy FIPS186-2 standard */
|
||||
#define DSA_PARAMGEN_TYPE_FIPS_186_4 2 /* Use FIPS186-4 standard */
|
||||
|
||||
int dsa_generate_parameters_ctx(OPENSSL_CTX *libctx, DSA *dsa, int bits,
|
||||
const unsigned char *seed_in, int seed_len,
|
||||
int *counter_ret, unsigned long *h_ret,
|
||||
BN_GENCB *cb);
|
||||
DSA *dsa_new_with_ctx(OPENSSL_CTX *libctx);
|
||||
|
||||
int dsa_generate_ffc_parameters(OPENSSL_CTX *libctx, DSA *dsa, int type,
|
||||
int dsa_generate_ffc_parameters(DSA *dsa, int type,
|
||||
int pbits, int qbits, int gindex,
|
||||
BN_GENCB *cb);
|
||||
|
||||
int dsa_sign_int(OPENSSL_CTX *libctx, int type, const unsigned char *dgst,
|
||||
int dsa_sign_int(int type, const unsigned char *dgst,
|
||||
int dlen, unsigned char *sig, unsigned int *siglen, DSA *dsa);
|
||||
int dsa_generate_key_ctx(OPENSSL_CTX *libctx, DSA *dsa);
|
||||
const unsigned char *dsa_algorithmidentifier_encoding(int md_nid, size_t *len);
|
||||
int dsa_generate_public_key(BN_CTX *ctx, const DSA *dsa, const BIGNUM *priv_key,
|
||||
BIGNUM *pub_key);
|
||||
int dsa_check_params(const DSA *dsa, int *ret);
|
||||
int dsa_check_pub_key(const DSA *dsa, const BIGNUM *pub_key, int *ret);
|
||||
int dsa_check_pub_key_partial(const DSA *dsa, const BIGNUM *pub_key, int *ret);
|
||||
int dsa_check_priv_key(const DSA *dsa, const BIGNUM *priv_key, int *ret);
|
||||
int dsa_check_pairwise(const DSA *dsa);
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/* Internal EC functions for other submodules: not for application use */
|
||||
|
||||
#ifndef OSSL_CRYPTO_ECX_H
|
||||
# define OSSL_CRYPTO_ECX_H
|
||||
# include <openssl/opensslconf.h>
|
||||
|
||||
# ifndef OPENSSL_NO_EC
|
||||
|
||||
# include <openssl/e_os2.h>
|
||||
# include <openssl/crypto.h>
|
||||
# include "internal/refcount.h"
|
||||
|
||||
# define X25519_KEYLEN 32
|
||||
# define X448_KEYLEN 56
|
||||
# define ED25519_KEYLEN 32
|
||||
# define ED448_KEYLEN 57
|
||||
|
||||
# define MAX_KEYLEN ED448_KEYLEN
|
||||
|
||||
# define X25519_BITS 253
|
||||
# define X25519_SECURITY_BITS 128
|
||||
|
||||
# define ED25519_SIGSIZE 64
|
||||
|
||||
# define X448_BITS 448
|
||||
# define ED448_BITS 456
|
||||
# define X448_SECURITY_BITS 224
|
||||
|
||||
# define ED448_SIGSIZE 114
|
||||
|
||||
struct ecx_key_st {
|
||||
unsigned int haspubkey:1;
|
||||
unsigned char pubkey[MAX_KEYLEN];
|
||||
unsigned char *privkey;
|
||||
size_t keylen;
|
||||
CRYPTO_REF_COUNT references;
|
||||
CRYPTO_RWLOCK *lock;
|
||||
};
|
||||
|
||||
typedef struct ecx_key_st ECX_KEY;
|
||||
|
||||
ECX_KEY *ecx_key_new(size_t keylen, int haspubkey);
|
||||
unsigned char *ecx_key_allocate_privkey(ECX_KEY *key);
|
||||
void ecx_key_free(ECX_KEY *key);
|
||||
int ecx_key_up_ref(ECX_KEY *key);
|
||||
|
||||
int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32],
|
||||
const uint8_t peer_public_value[32]);
|
||||
void X25519_public_from_private(uint8_t out_public_value[32],
|
||||
const uint8_t private_key[32]);
|
||||
|
||||
int X448(uint8_t out_shared_key[56], const uint8_t private_key[56],
|
||||
const uint8_t peer_public_value[56]);
|
||||
void X448_public_from_private(uint8_t out_public_value[56],
|
||||
const uint8_t private_key[56]);
|
||||
|
||||
int s390x_x25519_mul(unsigned char u_dst[32],
|
||||
const unsigned char u_src[32],
|
||||
const unsigned char d_src[32]);
|
||||
int s390x_x448_mul(unsigned char u_dst[56],
|
||||
const unsigned char u_src[56],
|
||||
const unsigned char d_src[56]);
|
||||
|
||||
# endif /* OPENSSL_NO_EC */
|
||||
#endif
|
||||
+1
-17
@@ -10,6 +10,7 @@
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/core_numbers.h>
|
||||
#include "internal/refcount.h"
|
||||
#include "crypto/ecx.h"
|
||||
|
||||
/*
|
||||
* Don't free up md_ctx->pctx in EVP_MD_CTX_reset, use the reserved flag
|
||||
@@ -495,23 +496,6 @@ const EVP_CIPHER *EVP_##cname##_ecb(void) { return &cname##_ecb; }
|
||||
(fl)|EVP_CIPH_FLAG_DEFAULT_ASN1, \
|
||||
cipher##_init_key, NULL, NULL, NULL, NULL)
|
||||
|
||||
|
||||
# ifndef OPENSSL_NO_EC
|
||||
|
||||
#define X25519_KEYLEN 32
|
||||
#define X448_KEYLEN 56
|
||||
#define ED25519_KEYLEN 32
|
||||
#define ED448_KEYLEN 57
|
||||
|
||||
#define MAX_KEYLEN ED448_KEYLEN
|
||||
|
||||
typedef struct {
|
||||
unsigned char pubkey[MAX_KEYLEN];
|
||||
unsigned char *privkey;
|
||||
} ECX_KEY;
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Type needs to be a bit field Sub-type needs to be for variations on the
|
||||
* method, as in, can it do arbitrary encryption....
|
||||
|
||||
@@ -56,12 +56,15 @@ typedef unsigned char u8;
|
||||
asm ("bswapl %0" \
|
||||
: "+r"(ret_)); ret_; })
|
||||
# elif defined(__aarch64__)
|
||||
# define BSWAP8(x) ({ u64 ret_; \
|
||||
# if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
|
||||
__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
|
||||
# define BSWAP8(x) ({ u64 ret_; \
|
||||
asm ("rev %0,%1" \
|
||||
: "=r"(ret_) : "r"(x)); ret_; })
|
||||
# define BSWAP4(x) ({ u32 ret_; \
|
||||
# define BSWAP4(x) ({ u32 ret_; \
|
||||
asm ("rev %w0,%w1" \
|
||||
: "=r"(ret_) : "r"(x)); ret_; })
|
||||
# endif
|
||||
# elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT)
|
||||
# define BSWAP8(x) ({ u32 lo_=(u64)(x)>>32,hi_=(x); \
|
||||
asm ("rev %0,%0; rev %1,%1" \
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
RSA *rsa_new_with_ctx(OPENSSL_CTX *libctx);
|
||||
|
||||
int rsa_set0_all_params(RSA *r, const STACK_OF(BIGNUM) *primes,
|
||||
const STACK_OF(BIGNUM) *exps,
|
||||
const STACK_OF(BIGNUM) *coeffs);
|
||||
|
||||
@@ -288,5 +288,6 @@ struct x509_object_st {
|
||||
|
||||
int a2i_ipadd(unsigned char *ipout, const char *ipasc);
|
||||
int x509_set1_time(ASN1_TIME **ptm, const ASN1_TIME *tm);
|
||||
int x509_print_ex_brief(BIO *bio, X509 *cert, unsigned long neg_cflags);
|
||||
|
||||
void x509_init_sig_info(X509 *x);
|
||||
Reference in New Issue
Block a user