Lines Matching refs:ctx
73 #define M_do_cipher(ctx, out, in, inl) FIPS_cipher(ctx, out, in, inl) argument
75 #define M_do_cipher(ctx, out, in, inl) ctx->cipher->do_cipher(ctx, out, in, inl) argument
81 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) in EVP_CIPHER_CTX_init() argument
83 memset(ctx,0,sizeof(EVP_CIPHER_CTX)); in EVP_CIPHER_CTX_init()
89 EVP_CIPHER_CTX *ctx=OPENSSL_malloc(sizeof *ctx); in EVP_CIPHER_CTX_new() local
90 if (ctx) in EVP_CIPHER_CTX_new()
91 EVP_CIPHER_CTX_init(ctx); in EVP_CIPHER_CTX_new()
92 return ctx; in EVP_CIPHER_CTX_new()
95 int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_CipherInit() argument
99 EVP_CIPHER_CTX_init(ctx); in EVP_CipherInit()
100 return EVP_CipherInit_ex(ctx,cipher,NULL,key,iv,enc); in EVP_CipherInit()
103 int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, in EVP_CipherInit_ex() argument
107 enc = ctx->encrypt; in EVP_CipherInit_ex()
112 ctx->encrypt = enc; in EVP_CipherInit_ex()
119 if (ctx->engine && ctx->cipher && (!cipher || in EVP_CipherInit_ex()
120 (cipher && (cipher->nid == ctx->cipher->nid)))) in EVP_CipherInit_ex()
128 if (ctx->cipher) in EVP_CipherInit_ex()
130 unsigned long flags = ctx->flags; in EVP_CipherInit_ex()
131 EVP_CIPHER_CTX_cleanup(ctx); in EVP_CipherInit_ex()
133 ctx->encrypt = enc; in EVP_CipherInit_ex()
134 ctx->flags = flags; in EVP_CipherInit_ex()
166 ctx->engine = impl; in EVP_CipherInit_ex()
169 ctx->engine = NULL; in EVP_CipherInit_ex()
174 return FIPS_cipherinit(ctx, cipher, key, iv, enc); in EVP_CipherInit_ex()
176 ctx->cipher=cipher; in EVP_CipherInit_ex()
177 if (ctx->cipher->ctx_size) in EVP_CipherInit_ex()
179 ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size); in EVP_CipherInit_ex()
180 if (!ctx->cipher_data) in EVP_CipherInit_ex()
188 ctx->cipher_data = NULL; in EVP_CipherInit_ex()
190 ctx->key_len = cipher->key_len; in EVP_CipherInit_ex()
191 ctx->flags = 0; in EVP_CipherInit_ex()
192 if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT) in EVP_CipherInit_ex()
194 if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) in EVP_CipherInit_ex()
201 else if(!ctx->cipher) in EVP_CipherInit_ex()
211 return FIPS_cipherinit(ctx, cipher, key, iv, enc); in EVP_CipherInit_ex()
214 OPENSSL_assert(ctx->cipher->block_size == 1 in EVP_CipherInit_ex()
215 || ctx->cipher->block_size == 8 in EVP_CipherInit_ex()
216 || ctx->cipher->block_size == 16); in EVP_CipherInit_ex()
218 if(!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { in EVP_CipherInit_ex()
219 switch(EVP_CIPHER_CTX_mode(ctx)) { in EVP_CipherInit_ex()
228 ctx->num = 0; in EVP_CipherInit_ex()
233 OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) <= in EVP_CipherInit_ex()
234 (int)sizeof(ctx->iv)); in EVP_CipherInit_ex()
235 if(iv) memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx)); in EVP_CipherInit_ex()
236 memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); in EVP_CipherInit_ex()
240 ctx->num = 0; in EVP_CipherInit_ex()
243 memcpy(ctx->iv, iv, EVP_CIPHER_CTX_iv_length(ctx)); in EVP_CipherInit_ex()
252 if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { in EVP_CipherInit_ex()
253 if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; in EVP_CipherInit_ex()
255 ctx->buf_len=0; in EVP_CipherInit_ex()
256 ctx->final_used=0; in EVP_CipherInit_ex()
257 ctx->block_mask=ctx->cipher->block_size-1; in EVP_CipherInit_ex()
261 int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_CipherUpdate() argument
264 if (ctx->encrypt) in EVP_CipherUpdate()
265 return EVP_EncryptUpdate(ctx,out,outl,in,inl); in EVP_CipherUpdate()
266 else return EVP_DecryptUpdate(ctx,out,outl,in,inl); in EVP_CipherUpdate()
269 int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_CipherFinal_ex() argument
271 if (ctx->encrypt) in EVP_CipherFinal_ex()
272 return EVP_EncryptFinal_ex(ctx,out,outl); in EVP_CipherFinal_ex()
273 else return EVP_DecryptFinal_ex(ctx,out,outl); in EVP_CipherFinal_ex()
276 int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_CipherFinal() argument
278 if (ctx->encrypt) in EVP_CipherFinal()
279 return EVP_EncryptFinal(ctx,out,outl); in EVP_CipherFinal()
280 else return EVP_DecryptFinal(ctx,out,outl); in EVP_CipherFinal()
283 int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_EncryptInit() argument
286 return EVP_CipherInit(ctx, cipher, key, iv, 1); in EVP_EncryptInit()
289 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, in EVP_EncryptInit_ex() argument
292 return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 1); in EVP_EncryptInit_ex()
295 int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_DecryptInit() argument
298 return EVP_CipherInit(ctx, cipher, key, iv, 0); in EVP_DecryptInit()
301 int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, in EVP_DecryptInit_ex() argument
304 return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 0); in EVP_DecryptInit_ex()
307 int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_EncryptUpdate() argument
312 if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) in EVP_EncryptUpdate()
314 i = M_do_cipher(ctx, out, in, inl); in EVP_EncryptUpdate()
328 if(ctx->buf_len == 0 && (inl&(ctx->block_mask)) == 0) in EVP_EncryptUpdate()
330 if(M_do_cipher(ctx,out,in,inl)) in EVP_EncryptUpdate()
341 i=ctx->buf_len; in EVP_EncryptUpdate()
342 bl=ctx->cipher->block_size; in EVP_EncryptUpdate()
343 OPENSSL_assert(bl <= (int)sizeof(ctx->buf)); in EVP_EncryptUpdate()
348 memcpy(&(ctx->buf[i]),in,inl); in EVP_EncryptUpdate()
349 ctx->buf_len+=inl; in EVP_EncryptUpdate()
356 memcpy(&(ctx->buf[i]),in,j); in EVP_EncryptUpdate()
357 if(!M_do_cipher(ctx,out,ctx->buf,bl)) return 0; in EVP_EncryptUpdate()
370 if(!M_do_cipher(ctx,out,in,inl)) return 0; in EVP_EncryptUpdate()
375 memcpy(ctx->buf,&(in[inl]),i); in EVP_EncryptUpdate()
376 ctx->buf_len=i; in EVP_EncryptUpdate()
380 int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_EncryptFinal() argument
383 ret = EVP_EncryptFinal_ex(ctx, out, outl); in EVP_EncryptFinal()
387 int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_EncryptFinal_ex() argument
392 if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) in EVP_EncryptFinal_ex()
394 ret = M_do_cipher(ctx, out, NULL, 0); in EVP_EncryptFinal_ex()
402 b=ctx->cipher->block_size; in EVP_EncryptFinal_ex()
403 OPENSSL_assert(b <= sizeof ctx->buf); in EVP_EncryptFinal_ex()
409 bl=ctx->buf_len; in EVP_EncryptFinal_ex()
410 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_EncryptFinal_ex()
423 ctx->buf[i]=n; in EVP_EncryptFinal_ex()
424 ret=M_do_cipher(ctx,out,ctx->buf,b); in EVP_EncryptFinal_ex()
433 int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_DecryptUpdate() argument
439 if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) in EVP_DecryptUpdate()
441 fix_len = M_do_cipher(ctx, out, in, inl); in EVP_DecryptUpdate()
458 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_DecryptUpdate()
459 return EVP_EncryptUpdate(ctx, out, outl, in, inl); in EVP_DecryptUpdate()
461 b=ctx->cipher->block_size; in EVP_DecryptUpdate()
462 OPENSSL_assert(b <= sizeof ctx->final); in EVP_DecryptUpdate()
464 if(ctx->final_used) in EVP_DecryptUpdate()
466 memcpy(out,ctx->final,b); in EVP_DecryptUpdate()
474 if(!EVP_EncryptUpdate(ctx,out,outl,in,inl)) in EVP_DecryptUpdate()
479 if (b > 1 && !ctx->buf_len) in EVP_DecryptUpdate()
482 ctx->final_used=1; in EVP_DecryptUpdate()
483 memcpy(ctx->final,&out[*outl],b); in EVP_DecryptUpdate()
486 ctx->final_used = 0; in EVP_DecryptUpdate()
494 int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_DecryptFinal() argument
497 ret = EVP_DecryptFinal_ex(ctx, out, outl); in EVP_DecryptFinal()
501 int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_DecryptFinal_ex() argument
507 if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) in EVP_DecryptFinal_ex()
509 i = M_do_cipher(ctx, out, NULL, 0); in EVP_DecryptFinal_ex()
517 b=ctx->cipher->block_size; in EVP_DecryptFinal_ex()
518 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_DecryptFinal_ex()
520 if(ctx->buf_len) in EVP_DecryptFinal_ex()
530 if (ctx->buf_len || !ctx->final_used) in EVP_DecryptFinal_ex()
535 OPENSSL_assert(b <= sizeof ctx->final); in EVP_DecryptFinal_ex()
536 n=ctx->final[b-1]; in EVP_DecryptFinal_ex()
544 if (ctx->final[--b] != n) in EVP_DecryptFinal_ex()
550 n=ctx->cipher->block_size-n; in EVP_DecryptFinal_ex()
552 out[i]=ctx->final[i]; in EVP_DecryptFinal_ex()
560 void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx) in EVP_CIPHER_CTX_free() argument
562 if (ctx) in EVP_CIPHER_CTX_free()
564 EVP_CIPHER_CTX_cleanup(ctx); in EVP_CIPHER_CTX_free()
565 OPENSSL_free(ctx); in EVP_CIPHER_CTX_free()
610 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad) in EVP_CIPHER_CTX_set_padding() argument
612 if (pad) ctx->flags &= ~EVP_CIPH_NO_PADDING; in EVP_CIPHER_CTX_set_padding()
613 else ctx->flags |= EVP_CIPH_NO_PADDING; in EVP_CIPHER_CTX_set_padding()
617 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) in EVP_CIPHER_CTX_ctrl() argument
620 if(!ctx->cipher) { in EVP_CIPHER_CTX_ctrl()
625 if(!ctx->cipher->ctrl) { in EVP_CIPHER_CTX_ctrl()
630 ret = ctx->cipher->ctrl(ctx, type, arg, ptr); in EVP_CIPHER_CTX_ctrl()
638 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key) in EVP_CIPHER_CTX_rand_key() argument
640 if (ctx->cipher->flags & EVP_CIPH_RAND_KEY) in EVP_CIPHER_CTX_rand_key()
641 return EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_RAND_KEY, 0, key); in EVP_CIPHER_CTX_rand_key()
642 if (RAND_bytes(key, ctx->key_len) <= 0) in EVP_CIPHER_CTX_rand_key()