diff options
Diffstat (limited to 'src/lib/libcrypto/ec')
| -rw-r--r-- | src/lib/libcrypto/ec/ec_asn1.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c index 0d5d761261..41eb2d2842 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.62 2024/10/11 18:18:10 tb Exp $ */ | 1 | /* $OpenBSD: ec_asn1.c,v 1.63 2024/10/11 18:30:58 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -961,28 +961,31 @@ ec_asn1_parameters2group(const ECPARAMETERS *params) | |||
| 961 | EC_GROUP * | 961 | EC_GROUP * |
| 962 | ec_asn1_pkparameters2group(const ECPKPARAMETERS *params) | 962 | ec_asn1_pkparameters2group(const ECPKPARAMETERS *params) |
| 963 | { | 963 | { |
| 964 | EC_GROUP *ret = NULL; | 964 | EC_GROUP *group; |
| 965 | int tmp = 0; | 965 | int nid; |
| 966 | 966 | ||
| 967 | if (params == NULL) { | 967 | if (params == NULL) { |
| 968 | ECerror(EC_R_MISSING_PARAMETERS); | 968 | ECerror(EC_R_MISSING_PARAMETERS); |
| 969 | return NULL; | 969 | return NULL; |
| 970 | } | 970 | } |
| 971 | if (params->type == 0) {/* the curve is given by an OID */ | 971 | if (params->type == 0) {/* the curve is given by an OID */ |
| 972 | tmp = OBJ_obj2nid(params->value.named_curve); | 972 | if ((nid = OBJ_obj2nid(params->value.named_curve)) == NID_undef) { |
| 973 | if ((ret = EC_GROUP_new_by_curve_name(tmp)) == NULL) { | 973 | ECerror(EC_R_UNKNOWN_GROUP); |
| 974 | return NULL; | ||
| 975 | } | ||
| 976 | if ((group = EC_GROUP_new_by_curve_name(nid)) == NULL) { | ||
| 974 | ECerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); | 977 | ECerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); |
| 975 | return NULL; | 978 | return NULL; |
| 976 | } | 979 | } |
| 977 | EC_GROUP_set_asn1_flag(ret, OPENSSL_EC_NAMED_CURVE); | 980 | EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); |
| 978 | } else if (params->type == 1) { /* the parameters are given by a | 981 | } else if (params->type == 1) { /* the parameters are given by a |
| 979 | * ECPARAMETERS structure */ | 982 | * ECPARAMETERS structure */ |
| 980 | ret = ec_asn1_parameters2group(params->value.parameters); | 983 | group = ec_asn1_parameters2group(params->value.parameters); |
| 981 | if (!ret) { | 984 | if (group == NULL) { |
| 982 | ECerror(ERR_R_EC_LIB); | 985 | ECerror(ERR_R_EC_LIB); |
| 983 | return NULL; | 986 | return NULL; |
| 984 | } | 987 | } |
| 985 | EC_GROUP_set_asn1_flag(ret, 0x0); | 988 | EC_GROUP_set_asn1_flag(group, 0); |
| 986 | } else if (params->type == 2) { /* implicitlyCA */ | 989 | } else if (params->type == 2) { /* implicitlyCA */ |
| 987 | return NULL; | 990 | return NULL; |
| 988 | } else { | 991 | } else { |
| @@ -990,7 +993,7 @@ ec_asn1_pkparameters2group(const ECPKPARAMETERS *params) | |||
| 990 | return NULL; | 993 | return NULL; |
| 991 | } | 994 | } |
| 992 | 995 | ||
| 993 | return ret; | 996 | return group; |
| 994 | } | 997 | } |
| 995 | 998 | ||
| 996 | EC_GROUP * | 999 | EC_GROUP * |
