Lines Matching refs:ctx
71 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) in EVP_CIPHER_CTX_init() argument
73 memset(ctx,0,sizeof(EVP_CIPHER_CTX)); in EVP_CIPHER_CTX_init()
78 int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_CipherInit() argument
82 EVP_CIPHER_CTX_init(ctx); in EVP_CipherInit()
83 return EVP_CipherInit_ex(ctx,cipher,NULL,key,iv,enc); in EVP_CipherInit()
86 int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, in EVP_CipherInit_ex() argument
90 enc = ctx->encrypt; in EVP_CipherInit_ex()
95 ctx->encrypt = enc; in EVP_CipherInit_ex()
102 if (ctx->engine && ctx->cipher && (!cipher || in EVP_CipherInit_ex()
103 (cipher && (cipher->nid == ctx->cipher->nid)))) in EVP_CipherInit_ex()
111 EVP_CIPHER_CTX_cleanup(ctx); in EVP_CipherInit_ex()
114 ctx->encrypt = enc; in EVP_CipherInit_ex()
145 ctx->engine = impl; in EVP_CipherInit_ex()
148 ctx->engine = NULL; in EVP_CipherInit_ex()
151 ctx->cipher=cipher; in EVP_CipherInit_ex()
152 if (ctx->cipher->ctx_size) in EVP_CipherInit_ex()
154 ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size); in EVP_CipherInit_ex()
155 if (!ctx->cipher_data) in EVP_CipherInit_ex()
163 ctx->cipher_data = NULL; in EVP_CipherInit_ex()
165 ctx->key_len = cipher->key_len; in EVP_CipherInit_ex()
166 ctx->flags = 0; in EVP_CipherInit_ex()
167 if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT) in EVP_CipherInit_ex()
169 if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) in EVP_CipherInit_ex()
176 else if(!ctx->cipher) in EVP_CipherInit_ex()
185 OPENSSL_assert(ctx->cipher->block_size == 1 in EVP_CipherInit_ex()
186 || ctx->cipher->block_size == 8 in EVP_CipherInit_ex()
187 || ctx->cipher->block_size == 16); in EVP_CipherInit_ex()
189 if(!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { in EVP_CipherInit_ex()
190 switch(EVP_CIPHER_CTX_mode(ctx)) { in EVP_CipherInit_ex()
199 ctx->num = 0; in EVP_CipherInit_ex()
203 OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) <= in EVP_CipherInit_ex()
204 (int)sizeof(ctx->iv)); in EVP_CipherInit_ex()
205 if(iv) memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx)); in EVP_CipherInit_ex()
206 memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); in EVP_CipherInit_ex()
215 if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { in EVP_CipherInit_ex()
216 if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; in EVP_CipherInit_ex()
218 ctx->buf_len=0; in EVP_CipherInit_ex()
219 ctx->final_used=0; in EVP_CipherInit_ex()
220 ctx->block_mask=ctx->cipher->block_size-1; in EVP_CipherInit_ex()
224 int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_CipherUpdate() argument
227 if (ctx->encrypt) in EVP_CipherUpdate()
228 return EVP_EncryptUpdate(ctx,out,outl,in,inl); in EVP_CipherUpdate()
229 else return EVP_DecryptUpdate(ctx,out,outl,in,inl); in EVP_CipherUpdate()
232 int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_CipherFinal_ex() argument
234 if (ctx->encrypt) in EVP_CipherFinal_ex()
235 return EVP_EncryptFinal_ex(ctx,out,outl); in EVP_CipherFinal_ex()
236 else return EVP_DecryptFinal_ex(ctx,out,outl); in EVP_CipherFinal_ex()
239 int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_CipherFinal() argument
241 if (ctx->encrypt) in EVP_CipherFinal()
242 return EVP_EncryptFinal(ctx,out,outl); in EVP_CipherFinal()
243 else return EVP_DecryptFinal(ctx,out,outl); in EVP_CipherFinal()
246 int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_EncryptInit() argument
249 return EVP_CipherInit(ctx, cipher, key, iv, 1); in EVP_EncryptInit()
252 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, in EVP_EncryptInit_ex() argument
255 return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 1); in EVP_EncryptInit_ex()
258 int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, in EVP_DecryptInit() argument
261 return EVP_CipherInit(ctx, cipher, key, iv, 0); in EVP_DecryptInit()
264 int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, in EVP_DecryptInit_ex() argument
267 return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 0); in EVP_DecryptInit_ex()
270 int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_EncryptUpdate() argument
276 if(ctx->buf_len == 0 && (inl&(ctx->block_mask)) == 0) in EVP_EncryptUpdate()
278 if(ctx->cipher->do_cipher(ctx,out,in,inl)) in EVP_EncryptUpdate()
289 i=ctx->buf_len; in EVP_EncryptUpdate()
290 bl=ctx->cipher->block_size; in EVP_EncryptUpdate()
291 OPENSSL_assert(bl <= (int)sizeof(ctx->buf)); in EVP_EncryptUpdate()
296 memcpy(&(ctx->buf[i]),in,inl); in EVP_EncryptUpdate()
297 ctx->buf_len+=inl; in EVP_EncryptUpdate()
304 memcpy(&(ctx->buf[i]),in,j); in EVP_EncryptUpdate()
305 if(!ctx->cipher->do_cipher(ctx,out,ctx->buf,bl)) return 0; in EVP_EncryptUpdate()
318 if(!ctx->cipher->do_cipher(ctx,out,in,inl)) return 0; in EVP_EncryptUpdate()
323 memcpy(ctx->buf,&(in[inl]),i); in EVP_EncryptUpdate()
324 ctx->buf_len=i; in EVP_EncryptUpdate()
328 int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_EncryptFinal() argument
331 ret = EVP_EncryptFinal_ex(ctx, out, outl); in EVP_EncryptFinal()
335 int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_EncryptFinal_ex() argument
340 b=ctx->cipher->block_size; in EVP_EncryptFinal_ex()
341 OPENSSL_assert(b <= sizeof ctx->buf); in EVP_EncryptFinal_ex()
347 bl=ctx->buf_len; in EVP_EncryptFinal_ex()
348 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_EncryptFinal_ex()
361 ctx->buf[i]=n; in EVP_EncryptFinal_ex()
362 ret=ctx->cipher->do_cipher(ctx,out,ctx->buf,b); in EVP_EncryptFinal_ex()
371 int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, in EVP_DecryptUpdate() argument
383 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_DecryptUpdate()
384 return EVP_EncryptUpdate(ctx, out, outl, in, inl); in EVP_DecryptUpdate()
386 b=ctx->cipher->block_size; in EVP_DecryptUpdate()
387 OPENSSL_assert(b <= sizeof ctx->final); in EVP_DecryptUpdate()
389 if(ctx->final_used) in EVP_DecryptUpdate()
391 memcpy(out,ctx->final,b); in EVP_DecryptUpdate()
399 if(!EVP_EncryptUpdate(ctx,out,outl,in,inl)) in EVP_DecryptUpdate()
404 if (b > 1 && !ctx->buf_len) in EVP_DecryptUpdate()
407 ctx->final_used=1; in EVP_DecryptUpdate()
408 memcpy(ctx->final,&out[*outl],b); in EVP_DecryptUpdate()
411 ctx->final_used = 0; in EVP_DecryptUpdate()
419 int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_DecryptFinal() argument
422 ret = EVP_DecryptFinal_ex(ctx, out, outl); in EVP_DecryptFinal()
426 int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl) in EVP_DecryptFinal_ex() argument
432 b=ctx->cipher->block_size; in EVP_DecryptFinal_ex()
433 if (ctx->flags & EVP_CIPH_NO_PADDING) in EVP_DecryptFinal_ex()
435 if(ctx->buf_len) in EVP_DecryptFinal_ex()
445 if (ctx->buf_len || !ctx->final_used) in EVP_DecryptFinal_ex()
450 OPENSSL_assert(b <= sizeof ctx->final); in EVP_DecryptFinal_ex()
451 n=ctx->final[b-1]; in EVP_DecryptFinal_ex()
459 if (ctx->final[--b] != n) in EVP_DecryptFinal_ex()
465 n=ctx->cipher->block_size-n; in EVP_DecryptFinal_ex()
467 out[i]=ctx->final[i]; in EVP_DecryptFinal_ex()
511 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad) in EVP_CIPHER_CTX_set_padding() argument
513 if (pad) ctx->flags &= ~EVP_CIPH_NO_PADDING; in EVP_CIPHER_CTX_set_padding()
514 else ctx->flags |= EVP_CIPH_NO_PADDING; in EVP_CIPHER_CTX_set_padding()
518 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) in EVP_CIPHER_CTX_ctrl() argument
521 if(!ctx->cipher) { in EVP_CIPHER_CTX_ctrl()
526 if(!ctx->cipher->ctrl) { in EVP_CIPHER_CTX_ctrl()
531 ret = ctx->cipher->ctrl(ctx, type, arg, ptr); in EVP_CIPHER_CTX_ctrl()
539 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key) in EVP_CIPHER_CTX_rand_key() argument
541 if (ctx->cipher->flags & EVP_CIPH_RAND_KEY) in EVP_CIPHER_CTX_rand_key()
542 return EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_RAND_KEY, 0, key); in EVP_CIPHER_CTX_rand_key()
543 if (RAND_bytes(key, ctx->key_len) <= 0) in EVP_CIPHER_CTX_rand_key()