diff options
author | tb <> | 2023-12-29 06:56:38 +0000 |
---|---|---|
committer | tb <> | 2023-12-29 06:56:38 +0000 |
commit | dcce5b53c436a7f7e89c09cb79d8512ee35e639d (patch) | |
tree | e7daccee053f837bd336e49300c0c146d03388a8 | |
parent | 0700355f46080e6b4362c7960fed662a918720ed (diff) | |
download | openbsd-dcce5b53c436a7f7e89c09cb79d8512ee35e639d.tar.gz openbsd-dcce5b53c436a7f7e89c09cb79d8512ee35e639d.tar.bz2 openbsd-dcce5b53c436a7f7e89c09cb79d8512ee35e639d.zip |
Merge the EVP_CIPHER_meth_* API into evp_cipher.c
-rw-r--r-- | src/lib/libcrypto/Makefile | 3 | ||||
-rw-r--r-- | src/lib/libcrypto/evp/cipher_method_lib.c | 185 | ||||
-rw-r--r-- | src/lib/libcrypto/evp/evp_cipher.c | 176 |
3 files changed, 176 insertions, 188 deletions
diff --git a/src/lib/libcrypto/Makefile b/src/lib/libcrypto/Makefile index a1ea4b5343..2a12e43a7c 100644 --- a/src/lib/libcrypto/Makefile +++ b/src/lib/libcrypto/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.161 2023/12/29 06:17:58 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.162 2023/12/29 06:56:38 tb Exp $ |
2 | 2 | ||
3 | LIB= crypto | 3 | LIB= crypto |
4 | LIBREBUILD=y | 4 | LIBREBUILD=y |
@@ -349,7 +349,6 @@ SRCS+= bio_b64.c | |||
349 | SRCS+= bio_enc.c | 349 | SRCS+= bio_enc.c |
350 | SRCS+= bio_md.c | 350 | SRCS+= bio_md.c |
351 | SRCS+= c_all.c | 351 | SRCS+= c_all.c |
352 | SRCS+= cipher_method_lib.c | ||
353 | SRCS+= e_aes.c | 352 | SRCS+= e_aes.c |
354 | SRCS+= e_aes_cbc_hmac_sha1.c | 353 | SRCS+= e_aes_cbc_hmac_sha1.c |
355 | SRCS+= e_bf.c | 354 | SRCS+= e_bf.c |
diff --git a/src/lib/libcrypto/evp/cipher_method_lib.c b/src/lib/libcrypto/evp/cipher_method_lib.c deleted file mode 100644 index d3931522d8..0000000000 --- a/src/lib/libcrypto/evp/cipher_method_lib.c +++ /dev/null | |||
@@ -1,185 +0,0 @@ | |||
1 | /* $OpenBSD: cipher_method_lib.c,v 1.11 2023/12/20 14:05:58 tb Exp $ */ | ||
2 | /* | ||
3 | * Written by Richard Levitte (levitte@openssl.org) for the OpenSSL project | ||
4 | * 2015. | ||
5 | */ | ||
6 | /* ==================================================================== | ||
7 | * Copyright (c) 2015 The OpenSSL Project. All rights reserved. | ||
8 | * | ||
9 | * Redistribution and use in source and binary forms, with or without | ||
10 | * modification, are permitted provided that the following conditions | ||
11 | * are met: | ||
12 | * | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions and the following disclaimer. | ||
15 | * | ||
16 | * 2. Redistributions in binary form must reproduce the above copyright | ||
17 | * notice, this list of conditions and the following disclaimer in | ||
18 | * the documentation and/or other materials provided with the | ||
19 | * distribution. | ||
20 | * | ||
21 | * 3. All advertising materials mentioning features or use of this | ||
22 | * software must display the following acknowledgment: | ||
23 | * "This product includes software developed by the OpenSSL Project | ||
24 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
25 | * | ||
26 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
27 | * endorse or promote products derived from this software without | ||
28 | * prior written permission. For written permission, please contact | ||
29 | * licensing@OpenSSL.org. | ||
30 | * | ||
31 | * 5. Products derived from this software may not be called "OpenSSL" | ||
32 | * nor may "OpenSSL" appear in their names without prior written | ||
33 | * permission of the OpenSSL Project. | ||
34 | * | ||
35 | * 6. Redistributions of any form whatsoever must retain the following | ||
36 | * acknowledgment: | ||
37 | * "This product includes software developed by the OpenSSL Project | ||
38 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
39 | * | ||
40 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
41 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
43 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
44 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
45 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
46 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
47 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
49 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
50 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
51 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
52 | * ==================================================================== | ||
53 | * | ||
54 | * This product includes cryptographic software written by Eric Young | ||
55 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
56 | * Hudson (tjh@cryptsoft.com). | ||
57 | * | ||
58 | */ | ||
59 | |||
60 | #include <stdlib.h> | ||
61 | |||
62 | #include <openssl/evp.h> | ||
63 | |||
64 | #include "evp_local.h" | ||
65 | |||
66 | EVP_CIPHER * | ||
67 | EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) | ||
68 | { | ||
69 | EVP_CIPHER *cipher; | ||
70 | |||
71 | if (cipher_type < 0 || key_len < 0) | ||
72 | return NULL; | ||
73 | |||
74 | /* EVP_CipherInit() will fail for any other value. */ | ||
75 | if (block_size != 1 && block_size != 8 && block_size != 16) | ||
76 | return NULL; | ||
77 | |||
78 | if ((cipher = calloc(1, sizeof(*cipher))) == NULL) | ||
79 | return NULL; | ||
80 | |||
81 | cipher->nid = cipher_type; | ||
82 | cipher->block_size = block_size; | ||
83 | cipher->key_len = key_len; | ||
84 | |||
85 | return cipher; | ||
86 | } | ||
87 | |||
88 | EVP_CIPHER * | ||
89 | EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher) | ||
90 | { | ||
91 | EVP_CIPHER *copy; | ||
92 | |||
93 | if ((copy = calloc(1, sizeof(*copy))) == NULL) | ||
94 | return NULL; | ||
95 | |||
96 | *copy = *cipher; | ||
97 | |||
98 | return copy; | ||
99 | } | ||
100 | |||
101 | void | ||
102 | EVP_CIPHER_meth_free(EVP_CIPHER *cipher) | ||
103 | { | ||
104 | free(cipher); | ||
105 | } | ||
106 | |||
107 | int | ||
108 | EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len) | ||
109 | { | ||
110 | cipher->iv_len = iv_len; | ||
111 | |||
112 | return 1; | ||
113 | } | ||
114 | |||
115 | int | ||
116 | EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags) | ||
117 | { | ||
118 | cipher->flags = flags; | ||
119 | |||
120 | return 1; | ||
121 | } | ||
122 | |||
123 | int | ||
124 | EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size) | ||
125 | { | ||
126 | cipher->ctx_size = ctx_size; | ||
127 | |||
128 | return 1; | ||
129 | } | ||
130 | |||
131 | int | ||
132 | EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, | ||
133 | int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
134 | const unsigned char *iv, int enc)) | ||
135 | { | ||
136 | cipher->init = init; | ||
137 | |||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | int | ||
142 | EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, | ||
143 | int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
144 | const unsigned char *in, size_t inl)) | ||
145 | { | ||
146 | cipher->do_cipher = do_cipher; | ||
147 | |||
148 | return 1; | ||
149 | } | ||
150 | |||
151 | int | ||
152 | EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, | ||
153 | int (*cleanup)(EVP_CIPHER_CTX *)) | ||
154 | { | ||
155 | cipher->cleanup = cleanup; | ||
156 | |||
157 | return 1; | ||
158 | } | ||
159 | |||
160 | int | ||
161 | EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, | ||
162 | int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) | ||
163 | { | ||
164 | cipher->set_asn1_parameters = set_asn1_parameters; | ||
165 | |||
166 | return 1; | ||
167 | } | ||
168 | |||
169 | int | ||
170 | EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, | ||
171 | int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) | ||
172 | { | ||
173 | cipher->get_asn1_parameters = get_asn1_parameters; | ||
174 | |||
175 | return 1; | ||
176 | } | ||
177 | |||
178 | int | ||
179 | EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, | ||
180 | int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr)) | ||
181 | { | ||
182 | cipher->ctrl = ctrl; | ||
183 | |||
184 | return 1; | ||
185 | } | ||
diff --git a/src/lib/libcrypto/evp/evp_cipher.c b/src/lib/libcrypto/evp/evp_cipher.c index b8945520b4..751360cd7b 100644 --- a/src/lib/libcrypto/evp/evp_cipher.c +++ b/src/lib/libcrypto/evp/evp_cipher.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_cipher.c,v 1.2 2023/12/29 06:17:58 tb Exp $ */ | 1 | /* $OpenBSD: evp_cipher.c,v 1.3 2023/12/29 06:56:38 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 | * |
@@ -55,6 +55,59 @@ | |||
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | /* ==================================================================== | ||
59 | * Copyright (c) 2015 The OpenSSL Project. All rights reserved. | ||
60 | * | ||
61 | * Redistribution and use in source and binary forms, with or without | ||
62 | * modification, are permitted provided that the following conditions | ||
63 | * are met: | ||
64 | * | ||
65 | * 1. Redistributions of source code must retain the above copyright | ||
66 | * notice, this list of conditions and the following disclaimer. | ||
67 | * | ||
68 | * 2. Redistributions in binary form must reproduce the above copyright | ||
69 | * notice, this list of conditions and the following disclaimer in | ||
70 | * the documentation and/or other materials provided with the | ||
71 | * distribution. | ||
72 | * | ||
73 | * 3. All advertising materials mentioning features or use of this | ||
74 | * software must display the following acknowledgment: | ||
75 | * "This product includes software developed by the OpenSSL Project | ||
76 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
77 | * | ||
78 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
79 | * endorse or promote products derived from this software without | ||
80 | * prior written permission. For written permission, please contact | ||
81 | * licensing@OpenSSL.org. | ||
82 | * | ||
83 | * 5. Products derived from this software may not be called "OpenSSL" | ||
84 | * nor may "OpenSSL" appear in their names without prior written | ||
85 | * permission of the OpenSSL Project. | ||
86 | * | ||
87 | * 6. Redistributions of any form whatsoever must retain the following | ||
88 | * acknowledgment: | ||
89 | * "This product includes software developed by the OpenSSL Project | ||
90 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
91 | * | ||
92 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
93 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
94 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
95 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
96 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
97 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
98 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
99 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
100 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
101 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
102 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
103 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
104 | * ==================================================================== | ||
105 | * | ||
106 | * This product includes cryptographic software written by Eric Young | ||
107 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
108 | * Hudson (tjh@cryptsoft.com). | ||
109 | * | ||
110 | */ | ||
58 | 111 | ||
59 | #include <limits.h> | 112 | #include <limits.h> |
60 | #include <stdio.h> | 113 | #include <stdio.h> |
@@ -980,3 +1033,124 @@ EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags) | |||
980 | { | 1033 | { |
981 | return (ctx->flags & flags); | 1034 | return (ctx->flags & flags); |
982 | } | 1035 | } |
1036 | |||
1037 | EVP_CIPHER * | ||
1038 | EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) | ||
1039 | { | ||
1040 | EVP_CIPHER *cipher; | ||
1041 | |||
1042 | if (cipher_type < 0 || key_len < 0) | ||
1043 | return NULL; | ||
1044 | |||
1045 | /* EVP_CipherInit() will fail for any other value. */ | ||
1046 | if (block_size != 1 && block_size != 8 && block_size != 16) | ||
1047 | return NULL; | ||
1048 | |||
1049 | if ((cipher = calloc(1, sizeof(*cipher))) == NULL) | ||
1050 | return NULL; | ||
1051 | |||
1052 | cipher->nid = cipher_type; | ||
1053 | cipher->block_size = block_size; | ||
1054 | cipher->key_len = key_len; | ||
1055 | |||
1056 | return cipher; | ||
1057 | } | ||
1058 | |||
1059 | EVP_CIPHER * | ||
1060 | EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher) | ||
1061 | { | ||
1062 | EVP_CIPHER *copy; | ||
1063 | |||
1064 | if ((copy = calloc(1, sizeof(*copy))) == NULL) | ||
1065 | return NULL; | ||
1066 | |||
1067 | *copy = *cipher; | ||
1068 | |||
1069 | return copy; | ||
1070 | } | ||
1071 | |||
1072 | void | ||
1073 | EVP_CIPHER_meth_free(EVP_CIPHER *cipher) | ||
1074 | { | ||
1075 | free(cipher); | ||
1076 | } | ||
1077 | |||
1078 | int | ||
1079 | EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len) | ||
1080 | { | ||
1081 | cipher->iv_len = iv_len; | ||
1082 | |||
1083 | return 1; | ||
1084 | } | ||
1085 | |||
1086 | int | ||
1087 | EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags) | ||
1088 | { | ||
1089 | cipher->flags = flags; | ||
1090 | |||
1091 | return 1; | ||
1092 | } | ||
1093 | |||
1094 | int | ||
1095 | EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size) | ||
1096 | { | ||
1097 | cipher->ctx_size = ctx_size; | ||
1098 | |||
1099 | return 1; | ||
1100 | } | ||
1101 | |||
1102 | int | ||
1103 | EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, | ||
1104 | int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
1105 | const unsigned char *iv, int enc)) | ||
1106 | { | ||
1107 | cipher->init = init; | ||
1108 | |||
1109 | return 1; | ||
1110 | } | ||
1111 | |||
1112 | int | ||
1113 | EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, | ||
1114 | int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
1115 | const unsigned char *in, size_t inl)) | ||
1116 | { | ||
1117 | cipher->do_cipher = do_cipher; | ||
1118 | |||
1119 | return 1; | ||
1120 | } | ||
1121 | |||
1122 | int | ||
1123 | EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, | ||
1124 | int (*cleanup)(EVP_CIPHER_CTX *)) | ||
1125 | { | ||
1126 | cipher->cleanup = cleanup; | ||
1127 | |||
1128 | return 1; | ||
1129 | } | ||
1130 | |||
1131 | int | ||
1132 | EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, | ||
1133 | int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) | ||
1134 | { | ||
1135 | cipher->set_asn1_parameters = set_asn1_parameters; | ||
1136 | |||
1137 | return 1; | ||
1138 | } | ||
1139 | |||
1140 | int | ||
1141 | EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, | ||
1142 | int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *)) | ||
1143 | { | ||
1144 | cipher->get_asn1_parameters = get_asn1_parameters; | ||
1145 | |||
1146 | return 1; | ||
1147 | } | ||
1148 | |||
1149 | int | ||
1150 | EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, | ||
1151 | int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr)) | ||
1152 | { | ||
1153 | cipher->ctrl = ctrl; | ||
1154 | |||
1155 | return 1; | ||
1156 | } | ||