projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add the library ctx into an ECX_KEY
[oweals/openssl.git]
/
crypto
/
ec
/
ecx_meth.c
diff --git
a/crypto/ec/ecx_meth.c
b/crypto/ec/ecx_meth.c
index 3944f483ed0b89e5c51398616567eba65e4effae..eedb1c92593b7d5cce97b1db95448bd7c1a924d4 100644
(file)
--- a/
crypto/ec/ecx_meth.c
+++ b/
crypto/ec/ecx_meth.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright 2006-20
18
The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-20
20
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
*
* 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
@@
-59,7
+59,7
@@
static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
}
}
}
}
- key = ecx_key_new(KEYNID2TYPE(id), 1);
+ key = ecx_key_new(
libctx,
KEYNID2TYPE(id), 1);
if (key == NULL) {
ECerr(EC_F_ECX_KEY_OP, ERR_R_MALLOC_FAILURE);
return 0;
if (key == NULL) {
ECerr(EC_F_ECX_KEY_OP, ERR_R_MALLOC_FAILURE);
return 0;
@@
-88,23
+88,9
@@
static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
} else {
memcpy(privkey, p, KEYLENID(id));
}
} else {
memcpy(privkey, p, KEYLENID(id));
}
- switch (id) {
- case EVP_PKEY_X25519:
- X25519_public_from_private(pubkey, privkey);
- break;
- case EVP_PKEY_ED25519:
- /*
- * TODO(3.0): We set the library context to NULL for now. This will
- * need to change.
- */
- ED25519_public_from_private(NULL, pubkey, privkey);
- break;
- case EVP_PKEY_X448:
- X448_public_from_private(pubkey, privkey);
- break;
- case EVP_PKEY_ED448:
- ED448_public_from_private(libctx, pubkey, privkey);
- break;
+ if (!ecx_public_from_private(key)) {
+ ECerr(EC_F_ECX_KEY_OP, EC_R_FAILED_MAKING_PUBLIC_KEY);
+ goto err;
}
}
}
}
@@
-448,11
+434,12
@@
static int ecx_pkey_export_to(const EVP_PKEY *from, void *to_keydata,
return rv;
}
return rv;
}
-static int ecx_generic_import_from(const OSSL_PARAM params[], void *
key
,
+static int ecx_generic_import_from(const OSSL_PARAM params[], void *
vpctx
,
int keytype)
{
int keytype)
{
- EVP_PKEY *pkey = key;
- ECX_KEY *ecx = ecx_key_new(KEYNID2TYPE(keytype), 0);
+ EVP_PKEY_CTX *pctx = vpctx;
+ EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(pctx);
+ ECX_KEY *ecx = ecx_key_new(pctx->libctx, KEYNID2TYPE(keytype), 0);
if (ecx == NULL) {
ERR_raise(ERR_LIB_DH, ERR_R_MALLOC_FAILURE);
if (ecx == NULL) {
ERR_raise(ERR_LIB_DH, ERR_R_MALLOC_FAILURE);
@@
-467,9
+454,9
@@
static int ecx_generic_import_from(const OSSL_PARAM params[], void *key,
return 1;
}
return 1;
}
-static int x25519_import_from(const OSSL_PARAM params[], void *
key
)
+static int x25519_import_from(const OSSL_PARAM params[], void *
vpctx
)
{
{
- return ecx_generic_import_from(params,
key
, EVP_PKEY_X25519);
+ return ecx_generic_import_from(params,
vpctx
, EVP_PKEY_X25519);
}
const EVP_PKEY_ASN1_METHOD ecx25519_asn1_meth = {
}
const EVP_PKEY_ASN1_METHOD ecx25519_asn1_meth = {
@@
-520,9
+507,9
@@
const EVP_PKEY_ASN1_METHOD ecx25519_asn1_meth = {
ecx_priv_decode_with_libctx
};
ecx_priv_decode_with_libctx
};
-static int x448_import_from(const OSSL_PARAM params[], void *
key
)
+static int x448_import_from(const OSSL_PARAM params[], void *
vpctx
)
{
{
- return ecx_generic_import_from(params,
key
, EVP_PKEY_X448);
+ return ecx_generic_import_from(params,
vpctx
, EVP_PKEY_X448);
}
const EVP_PKEY_ASN1_METHOD ecx448_asn1_meth = {
}
const EVP_PKEY_ASN1_METHOD ecx448_asn1_meth = {
@@
-645,9
+632,9
@@
static int ecd_sig_info_set448(X509_SIG_INFO *siginf, const X509_ALGOR *alg,
return 1;
}
return 1;
}
-static int ed25519_import_from(const OSSL_PARAM params[], void *
key
)
+static int ed25519_import_from(const OSSL_PARAM params[], void *
vpctx
)
{
{
- return ecx_generic_import_from(params,
key
, EVP_PKEY_ED25519);
+ return ecx_generic_import_from(params,
vpctx
, EVP_PKEY_ED25519);
}
const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth = {
}
const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth = {
@@
-697,9
+684,9
@@
const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth = {
ecx_priv_decode_with_libctx
};
ecx_priv_decode_with_libctx
};
-static int ed448_import_from(const OSSL_PARAM params[], void *
key
)
+static int ed448_import_from(const OSSL_PARAM params[], void *
vpctx
)
{
{
- return ecx_generic_import_from(params,
key
, EVP_PKEY_ED448);
+ return ecx_generic_import_from(params,
vpctx
, EVP_PKEY_ED448);
}
const EVP_PKEY_ASN1_METHOD ed448_asn1_meth = {
}
const EVP_PKEY_ASN1_METHOD ed448_asn1_meth = {
@@
-960,7
+947,7
@@
static int s390x_pkey_ecx_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
- ECX_KEY *key = ecx_key_new(ECX_KEY_TYPE_X25519, 1);
+ ECX_KEY *key = ecx_key_new(
ctx->libctx,
ECX_KEY_TYPE_X25519, 1);
unsigned char *privkey = NULL, *pubkey;
if (key == NULL) {
unsigned char *privkey = NULL, *pubkey;
if (key == NULL) {
@@
-1002,7
+989,7
@@
static int s390x_pkey_ecx_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
- ECX_KEY *key = ecx_key_new(ECX_KEY_TYPE_X448, 1);
+ ECX_KEY *key = ecx_key_new(
ctx->libctx,
ECX_KEY_TYPE_X448, 1);
unsigned char *privkey = NULL, *pubkey;
if (key == NULL) {
unsigned char *privkey = NULL, *pubkey;
if (key == NULL) {
@@
-1047,7
+1034,7
@@
static int s390x_pkey_ecd_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
};
unsigned char x_dst[32], buff[SHA512_DIGEST_LENGTH];
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
};
unsigned char x_dst[32], buff[SHA512_DIGEST_LENGTH];
- ECX_KEY *key = ecx_key_new(ECX_KEY_TYPE_ED25519, 1);
+ ECX_KEY *key = ecx_key_new(
ctx->libctx,
ECX_KEY_TYPE_ED25519, 1);
unsigned char *privkey = NULL, *pubkey;
unsigned int sz;
unsigned char *privkey = NULL, *pubkey;
unsigned int sz;
@@
-1104,7
+1091,7
@@
static int s390x_pkey_ecd_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
0x24, 0xbc, 0xb6, 0x6e, 0x71, 0x46, 0x3f, 0x69, 0x00
};
unsigned char x_dst[57], buff[114];
0x24, 0xbc, 0xb6, 0x6e, 0x71, 0x46, 0x3f, 0x69, 0x00
};
unsigned char x_dst[57], buff[114];
- ECX_KEY *key = ecx_key_new(ECX_KEY_TYPE_ED448, 1);
+ ECX_KEY *key = ecx_key_new(
ctx->libctx,
ECX_KEY_TYPE_ED448, 1);
unsigned char *privkey = NULL, *pubkey;
EVP_MD_CTX *hashctx = NULL;
unsigned char *privkey = NULL, *pubkey;
EVP_MD_CTX *hashctx = NULL;