OLD | NEW |
1 /* crypto/evp/evp_lib.c */ | 1 /* crypto/evp/evp_lib.c */ |
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 * |
5 * This package is an SSL implementation written | 5 * This package is an SSL implementation written |
6 * by Eric Young (eay@cryptsoft.com). | 6 * by Eric Young (eay@cryptsoft.com). |
7 * The implementation was written so as to conform with Netscapes SSL. | 7 * The implementation was written so as to conform with Netscapes SSL. |
8 * | 8 * |
9 * This library is free for commercial and non-commercial use as long as | 9 * This library is free for commercial and non-commercial use as long as |
10 * the following conditions are aheared to. The following conditions | 10 * the following conditions are aheared to. The following conditions |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 #include "cryptlib.h" | 60 #include "cryptlib.h" |
61 #include <openssl/evp.h> | 61 #include <openssl/evp.h> |
62 #include <openssl/objects.h> | 62 #include <openssl/objects.h> |
63 | 63 |
64 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type) | 64 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type) |
65 { | 65 { |
66 int ret; | 66 int ret; |
67 | 67 |
68 if (c->cipher->set_asn1_parameters != NULL) | 68 if (c->cipher->set_asn1_parameters != NULL) |
69 ret=c->cipher->set_asn1_parameters(c,type); | 69 ret=c->cipher->set_asn1_parameters(c,type); |
70 else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) | |
71 ret=EVP_CIPHER_set_asn1_iv(c, type); | |
72 else | 70 else |
73 ret=-1; | 71 ret=-1; |
74 return(ret); | 72 return(ret); |
75 } | 73 } |
76 | 74 |
77 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type) | 75 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type) |
78 { | 76 { |
79 int ret; | 77 int ret; |
80 | 78 |
81 if (c->cipher->get_asn1_parameters != NULL) | 79 if (c->cipher->get_asn1_parameters != NULL) |
82 ret=c->cipher->get_asn1_parameters(c,type); | 80 ret=c->cipher->get_asn1_parameters(c,type); |
83 else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) | |
84 ret=EVP_CIPHER_get_asn1_iv(c, type); | |
85 else | 81 else |
86 ret=-1; | 82 ret=-1; |
87 return(ret); | 83 return(ret); |
88 } | 84 } |
89 | 85 |
90 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type) | 86 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type) |
91 { | 87 { |
92 int i=0; | 88 int i=0; |
93 unsigned int l; | 89 unsigned int l; |
94 | 90 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 int EVP_CIPHER_block_size(const EVP_CIPHER *e) | 177 int EVP_CIPHER_block_size(const EVP_CIPHER *e) |
182 { | 178 { |
183 return e->block_size; | 179 return e->block_size; |
184 } | 180 } |
185 | 181 |
186 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx) | 182 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx) |
187 { | 183 { |
188 return ctx->cipher->block_size; | 184 return ctx->cipher->block_size; |
189 } | 185 } |
190 | 186 |
| 187 int EVP_Cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in,
unsigned int inl) |
| 188 { |
| 189 return ctx->cipher->do_cipher(ctx,out,in,inl); |
| 190 } |
| 191 |
191 const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx) | 192 const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx) |
192 { | 193 { |
193 return ctx->cipher; | 194 return ctx->cipher; |
194 } | 195 } |
195 | 196 |
196 unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher) | 197 unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher) |
197 { | 198 { |
198 return cipher->flags; | 199 return cipher->flags; |
199 } | 200 } |
200 | 201 |
| 202 unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx) |
| 203 { |
| 204 return ctx->cipher->flags; |
| 205 } |
| 206 |
201 void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx) | 207 void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx) |
202 { | 208 { |
203 return ctx->app_data; | 209 return ctx->app_data; |
204 } | 210 } |
205 | 211 |
206 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data) | 212 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data) |
207 { | 213 { |
208 ctx->app_data = data; | 214 ctx->app_data = data; |
209 } | 215 } |
210 | 216 |
211 int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher) | 217 int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher) |
212 { | 218 { |
213 return cipher->iv_len; | 219 return cipher->iv_len; |
214 } | 220 } |
215 | 221 |
| 222 int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx) |
| 223 { |
| 224 return ctx->cipher->iv_len; |
| 225 } |
| 226 |
216 int EVP_CIPHER_key_length(const EVP_CIPHER *cipher) | 227 int EVP_CIPHER_key_length(const EVP_CIPHER *cipher) |
217 { | 228 { |
218 return cipher->key_len; | 229 return cipher->key_len; |
219 } | 230 } |
220 | 231 |
221 int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) | 232 int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) |
222 { | 233 { |
223 return ctx->key_len; | 234 return ctx->key_len; |
224 } | 235 } |
225 | 236 |
| 237 int EVP_CIPHER_nid(const EVP_CIPHER *cipher) |
| 238 { |
| 239 return cipher->nid; |
| 240 } |
| 241 |
226 int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx) | 242 int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx) |
227 { | 243 { |
228 return ctx->cipher->nid; | 244 return ctx->cipher->nid; |
229 } | 245 } |
230 | 246 |
231 int EVP_MD_block_size(const EVP_MD *md) | 247 int EVP_MD_block_size(const EVP_MD *md) |
232 { | 248 { |
233 return md->block_size; | 249 return md->block_size; |
234 } | 250 } |
235 | 251 |
236 int EVP_MD_type(const EVP_MD *md) | 252 int EVP_MD_type(const EVP_MD *md) |
237 { | 253 { |
238 return md->type; | 254 return md->type; |
239 } | 255 } |
240 | 256 |
241 int EVP_MD_pkey_type(const EVP_MD *md) | 257 int EVP_MD_pkey_type(const EVP_MD *md) |
242 { | 258 { |
243 return md->pkey_type; | 259 return md->pkey_type; |
244 } | 260 } |
245 | 261 |
246 int EVP_MD_size(const EVP_MD *md) | 262 int EVP_MD_size(const EVP_MD *md) |
247 { | 263 { |
| 264 if (!md) |
| 265 { |
| 266 EVPerr(EVP_F_EVP_MD_SIZE, EVP_R_MESSAGE_DIGEST_IS_NULL); |
| 267 return -1; |
| 268 } |
248 return md->md_size; | 269 return md->md_size; |
249 } | 270 } |
250 | 271 |
251 const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX *ctx) | 272 unsigned long EVP_MD_flags(const EVP_MD *md) |
252 { | 273 { |
| 274 return md->flags; |
| 275 } |
| 276 |
| 277 const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx) |
| 278 { |
| 279 if (!ctx) |
| 280 return NULL; |
253 return ctx->digest; | 281 return ctx->digest; |
254 } | 282 } |
255 | 283 |
256 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags) | 284 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags) |
257 { | 285 { |
258 ctx->flags |= flags; | 286 ctx->flags |= flags; |
259 } | 287 } |
260 | 288 |
261 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags) | 289 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags) |
262 { | 290 { |
(...skipping 12 matching lines...) Expand all Loading... |
275 | 303 |
276 void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags) | 304 void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags) |
277 { | 305 { |
278 ctx->flags &= ~flags; | 306 ctx->flags &= ~flags; |
279 } | 307 } |
280 | 308 |
281 int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags) | 309 int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags) |
282 { | 310 { |
283 return (ctx->flags & flags); | 311 return (ctx->flags & flags); |
284 } | 312 } |
OLD | NEW |