diff options
author | tb <> | 2023-11-13 16:16:14 +0000 |
---|---|---|
committer | tb <> | 2023-11-13 16:16:14 +0000 |
commit | dafc9641de7c842b3e4f4f884ba8c77ccf9b1052 (patch) | |
tree | 7a64dbc70711c29ed81a983742deaeb381eb8323 | |
parent | da9360872bc2fd8e8a1a9cfeafe335fd0c356342 (diff) | |
download | openbsd-dafc9641de7c842b3e4f4f884ba8c77ccf9b1052.tar.gz openbsd-dafc9641de7c842b3e4f4f884ba8c77ccf9b1052.tar.bz2 openbsd-dafc9641de7c842b3e4f4f884ba8c77ccf9b1052.zip |
Make X509_certificate_type() less bad
This converts to proper single exit and undoes a number of unnecessarily
silly muppet antics.
ok beck
-rw-r--r-- | src/lib/libcrypto/x509/x509type.c | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/src/lib/libcrypto/x509/x509type.c b/src/lib/libcrypto/x509/x509type.c index 7d07d2b5fe..1698d8a0ab 100644 --- a/src/lib/libcrypto/x509/x509type.c +++ b/src/lib/libcrypto/x509/x509type.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509type.c,v 1.23 2023/11/13 15:44:15 tb Exp $ */ | 1 | /* $OpenBSD: x509type.c,v 1.24 2023/11/13 16:16:14 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -73,12 +73,12 @@ X509_certificate_type(const X509 *x, const EVP_PKEY *pkey) | |||
73 | int ret = 0; | 73 | int ret = 0; |
74 | 74 | ||
75 | if (x == NULL) | 75 | if (x == NULL) |
76 | return (0); | 76 | goto done; |
77 | 77 | ||
78 | if (pk == NULL) { | 78 | if (pk == NULL) |
79 | if ((pk = X509_get0_pubkey(x)) == NULL) | 79 | pk = X509_get0_pubkey(x); |
80 | return (0); | 80 | if (pk == NULL) |
81 | } | 81 | goto done; |
82 | 82 | ||
83 | switch (pk->type) { | 83 | switch (pk->type) { |
84 | case EVP_PKEY_RSA: | 84 | case EVP_PKEY_RSA: |
@@ -107,25 +107,30 @@ X509_certificate_type(const X509 *x, const EVP_PKEY *pkey) | |||
107 | break; | 107 | break; |
108 | } | 108 | } |
109 | 109 | ||
110 | nid = X509_get_signature_nid(x); | 110 | if ((nid = X509_get_signature_nid(x)) == NID_undef) |
111 | if (nid && OBJ_find_sigid_algs(nid, NULL, &nid)) { | 111 | goto done; |
112 | switch (nid) { | 112 | |
113 | case NID_rsaEncryption: | 113 | if (!OBJ_find_sigid_algs(nid, NULL, &nid)) |
114 | case NID_rsa: | 114 | goto done; |
115 | ret |= EVP_PKS_RSA; | 115 | |
116 | break; | 116 | switch (nid) { |
117 | case NID_dsa: | 117 | case NID_rsaEncryption: |
118 | case NID_dsa_2: | 118 | case NID_rsa: |
119 | ret |= EVP_PKS_DSA; | 119 | ret |= EVP_PKS_RSA; |
120 | break; | 120 | break; |
121 | case NID_X9_62_id_ecPublicKey: | 121 | case NID_dsa: |
122 | ret |= EVP_PKS_EC; | 122 | case NID_dsa_2: |
123 | break; | 123 | ret |= EVP_PKS_DSA; |
124 | default: | 124 | break; |
125 | break; | 125 | case NID_X9_62_id_ecPublicKey: |
126 | } | 126 | ret |= EVP_PKS_EC; |
127 | break; | ||
128 | default: | ||
129 | break; | ||
127 | } | 130 | } |
128 | 131 | ||
129 | return (ret); | 132 | done: |
133 | |||
134 | return ret; | ||
130 | } | 135 | } |
131 | LCRYPTO_ALIAS(X509_certificate_type); | 136 | LCRYPTO_ALIAS(X509_certificate_type); |