diff options
author | tb <> | 2024-11-08 13:55:45 +0000 |
---|---|---|
committer | tb <> | 2024-11-08 13:55:45 +0000 |
commit | 00706f427c9e58afa96c67c4b88a12253b656f4a (patch) | |
tree | 15461b9d3cf10fd9ae1208ef616b666b1da3c065 /src/lib/libcrypto/ec/ec_asn1.c | |
parent | f631c6b6c7297cc0d3ef18ebf1277dc9b7d3d70d (diff) | |
download | openbsd-00706f427c9e58afa96c67c4b88a12253b656f4a.tar.gz openbsd-00706f427c9e58afa96c67c4b88a12253b656f4a.tar.bz2 openbsd-00706f427c9e58afa96c67c4b88a12253b656f4a.zip |
Relocate ECParameters_dup() to ec_asn1
jsing rightly points out that this has nothing to do with ASN.1, but
ec_lib.c has no EC_KEY knowledge otherwise (it's about groups and points)
and moving it to ec_key.c is also not satisfactory since the weird
d2i/i2d for ECParameters don't belong there either.
no objection from jsing
Diffstat (limited to 'src/lib/libcrypto/ec/ec_asn1.c')
-rw-r--r-- | src/lib/libcrypto/ec/ec_asn1.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c index 006ad7662a..ed7bae16b9 100644 --- a/src/lib/libcrypto/ec/ec_asn1.c +++ b/src/lib/libcrypto/ec/ec_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec_asn1.c,v 1.105 2024/11/02 19:21:24 tb Exp $ */ | 1 | /* $OpenBSD: ec_asn1.c,v 1.106 2024/11/08 13:55:45 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -1403,6 +1403,28 @@ d2i_ECParameters(EC_KEY **out_ec_key, const unsigned char **in, long len) | |||
1403 | LCRYPTO_ALIAS(d2i_ECParameters); | 1403 | LCRYPTO_ALIAS(d2i_ECParameters); |
1404 | 1404 | ||
1405 | EC_KEY * | 1405 | EC_KEY * |
1406 | ECParameters_dup(EC_KEY *key) | ||
1407 | { | ||
1408 | const unsigned char *p; | ||
1409 | unsigned char *der = NULL; | ||
1410 | EC_KEY *dup = NULL; | ||
1411 | int len; | ||
1412 | |||
1413 | if (key == NULL) | ||
1414 | return NULL; | ||
1415 | |||
1416 | if ((len = i2d_ECParameters(key, &der)) <= 0) | ||
1417 | return NULL; | ||
1418 | |||
1419 | p = der; | ||
1420 | dup = d2i_ECParameters(NULL, &p, len); | ||
1421 | freezero(der, len); | ||
1422 | |||
1423 | return dup; | ||
1424 | } | ||
1425 | LCRYPTO_ALIAS(ECParameters_dup); | ||
1426 | |||
1427 | EC_KEY * | ||
1406 | o2i_ECPublicKey(EC_KEY **in_ec_key, const unsigned char **in, long len) | 1428 | o2i_ECPublicKey(EC_KEY **in_ec_key, const unsigned char **in, long len) |
1407 | { | 1429 | { |
1408 | EC_KEY *ec_key = NULL; | 1430 | EC_KEY *ec_key = NULL; |