Lines Matching refs:ctx
131 void mbedtls_cipher_init( mbedtls_cipher_context_t *ctx ) in mbedtls_cipher_init() argument
133 memset( ctx, 0, sizeof( mbedtls_cipher_context_t ) ); in mbedtls_cipher_init()
136 void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ) in mbedtls_cipher_free() argument
138 if( ctx == NULL ) in mbedtls_cipher_free()
142 if( ctx->cmac_ctx ) in mbedtls_cipher_free()
144 mbedtls_zeroize( ctx->cmac_ctx, sizeof( mbedtls_cmac_context_t ) ); in mbedtls_cipher_free()
145 mbedtls_free( ctx->cmac_ctx ); in mbedtls_cipher_free()
149 if( ctx->cipher_ctx ) in mbedtls_cipher_free()
150 ctx->cipher_info->base->ctx_free_func( ctx->cipher_ctx ); in mbedtls_cipher_free()
152 mbedtls_zeroize( ctx, sizeof(mbedtls_cipher_context_t) ); in mbedtls_cipher_free()
155 int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info ) in mbedtls_cipher_setup() argument
157 if( NULL == cipher_info || NULL == ctx ) in mbedtls_cipher_setup()
160 memset( ctx, 0, sizeof( mbedtls_cipher_context_t ) ); in mbedtls_cipher_setup()
162 if( NULL == ( ctx->cipher_ctx = cipher_info->base->ctx_alloc_func() ) ) in mbedtls_cipher_setup()
165 ctx->cipher_info = cipher_info; in mbedtls_cipher_setup()
172 (void) mbedtls_cipher_set_padding_mode( ctx, MBEDTLS_PADDING_PKCS7 ); in mbedtls_cipher_setup()
174 (void) mbedtls_cipher_set_padding_mode( ctx, MBEDTLS_PADDING_NONE ); in mbedtls_cipher_setup()
181 int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, const unsigned char *key, in mbedtls_cipher_setkey() argument
184 if( NULL == ctx || NULL == ctx->cipher_info ) in mbedtls_cipher_setkey()
187 if( ( ctx->cipher_info->flags & MBEDTLS_CIPHER_VARIABLE_KEY_LEN ) == 0 && in mbedtls_cipher_setkey()
188 (int) ctx->cipher_info->key_bitlen != key_bitlen ) in mbedtls_cipher_setkey()
193 ctx->key_bitlen = key_bitlen; in mbedtls_cipher_setkey()
194 ctx->operation = operation; in mbedtls_cipher_setkey()
200 MBEDTLS_MODE_CFB == ctx->cipher_info->mode || in mbedtls_cipher_setkey()
201 MBEDTLS_MODE_CTR == ctx->cipher_info->mode ) in mbedtls_cipher_setkey()
203 return ctx->cipher_info->base->setkey_enc_func( ctx->cipher_ctx, key, in mbedtls_cipher_setkey()
204 ctx->key_bitlen ); in mbedtls_cipher_setkey()
208 return ctx->cipher_info->base->setkey_dec_func( ctx->cipher_ctx, key, in mbedtls_cipher_setkey()
209 ctx->key_bitlen ); in mbedtls_cipher_setkey()
214 int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_set_iv() argument
219 if( NULL == ctx || NULL == ctx->cipher_info || NULL == iv ) in mbedtls_cipher_set_iv()
226 if( ( ctx->cipher_info->flags & MBEDTLS_CIPHER_VARIABLE_IV_LEN ) != 0 ) in mbedtls_cipher_set_iv()
230 actual_iv_size = ctx->cipher_info->iv_size; in mbedtls_cipher_set_iv()
237 memcpy( ctx->iv, iv, actual_iv_size ); in mbedtls_cipher_set_iv()
238 ctx->iv_size = actual_iv_size; in mbedtls_cipher_set_iv()
243 int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ) in mbedtls_cipher_reset() argument
245 if( NULL == ctx || NULL == ctx->cipher_info ) in mbedtls_cipher_reset()
248 ctx->unprocessed_len = 0; in mbedtls_cipher_reset()
254 int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_update_ad() argument
257 if( NULL == ctx || NULL == ctx->cipher_info ) in mbedtls_cipher_update_ad()
260 if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) in mbedtls_cipher_update_ad()
262 return mbedtls_gcm_starts( (mbedtls_gcm_context *) ctx->cipher_ctx, ctx->operation, in mbedtls_cipher_update_ad()
263 ctx->iv, ctx->iv_size, ad, ad_len ); in mbedtls_cipher_update_ad()
270 int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, in mbedtls_cipher_update() argument
276 if( NULL == ctx || NULL == ctx->cipher_info || NULL == olen ) in mbedtls_cipher_update()
282 block_size = mbedtls_cipher_get_block_size( ctx ); in mbedtls_cipher_update()
284 if( ctx->cipher_info->mode == MBEDTLS_MODE_ECB ) in mbedtls_cipher_update()
291 if( 0 != ( ret = ctx->cipher_info->base->ecb_func( ctx->cipher_ctx, in mbedtls_cipher_update()
292 ctx->operation, input, output ) ) ) in mbedtls_cipher_update()
301 if( ctx->cipher_info->mode == MBEDTLS_MODE_GCM ) in mbedtls_cipher_update()
304 return mbedtls_gcm_update( (mbedtls_gcm_context *) ctx->cipher_ctx, ilen, input, in mbedtls_cipher_update()
315 ( ctx->unprocessed_len != 0 || ilen % block_size ) ) in mbedtls_cipher_update()
321 if( ctx->cipher_info->mode == MBEDTLS_MODE_CBC ) in mbedtls_cipher_update()
328 if( ( ctx->operation == MBEDTLS_DECRYPT && in mbedtls_cipher_update()
329 ilen + ctx->unprocessed_len <= block_size ) || in mbedtls_cipher_update()
330 ( ctx->operation == MBEDTLS_ENCRYPT && in mbedtls_cipher_update()
331 ilen + ctx->unprocessed_len < block_size ) ) in mbedtls_cipher_update()
333 memcpy( &( ctx->unprocessed_data[ctx->unprocessed_len] ), input, in mbedtls_cipher_update()
336 ctx->unprocessed_len += ilen; in mbedtls_cipher_update()
343 if( 0 != ctx->unprocessed_len ) in mbedtls_cipher_update()
345 copy_len = block_size - ctx->unprocessed_len; in mbedtls_cipher_update()
347 memcpy( &( ctx->unprocessed_data[ctx->unprocessed_len] ), input, in mbedtls_cipher_update()
350 if( 0 != ( ret = ctx->cipher_info->base->cbc_func( ctx->cipher_ctx, in mbedtls_cipher_update()
351 ctx->operation, block_size, ctx->iv, in mbedtls_cipher_update()
352 ctx->unprocessed_data, output ) ) ) in mbedtls_cipher_update()
359 ctx->unprocessed_len = 0; in mbedtls_cipher_update()
376 if( copy_len == 0 && ctx->operation == MBEDTLS_DECRYPT ) in mbedtls_cipher_update()
379 memcpy( ctx->unprocessed_data, &( input[ilen - copy_len] ), in mbedtls_cipher_update()
382 ctx->unprocessed_len += copy_len; in mbedtls_cipher_update()
391 if( 0 != ( ret = ctx->cipher_info->base->cbc_func( ctx->cipher_ctx, in mbedtls_cipher_update()
392 ctx->operation, ilen, ctx->iv, input, output ) ) ) in mbedtls_cipher_update()
405 if( ctx->cipher_info->mode == MBEDTLS_MODE_CFB ) in mbedtls_cipher_update()
407 if( 0 != ( ret = ctx->cipher_info->base->cfb_func( ctx->cipher_ctx, in mbedtls_cipher_update()
408 ctx->operation, ilen, &ctx->unprocessed_len, ctx->iv, in mbedtls_cipher_update()
421 if( ctx->cipher_info->mode == MBEDTLS_MODE_CTR ) in mbedtls_cipher_update()
423 if( 0 != ( ret = ctx->cipher_info->base->ctr_func( ctx->cipher_ctx, in mbedtls_cipher_update()
424 ilen, &ctx->unprocessed_len, ctx->iv, in mbedtls_cipher_update()
425 ctx->unprocessed_data, input, output ) ) ) in mbedtls_cipher_update()
437 if( ctx->cipher_info->mode == MBEDTLS_MODE_STREAM ) in mbedtls_cipher_update()
439 if( 0 != ( ret = ctx->cipher_info->base->stream_func( ctx->cipher_ctx, in mbedtls_cipher_update()
626 int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_finish() argument
629 if( NULL == ctx || NULL == ctx->cipher_info || NULL == olen ) in mbedtls_cipher_finish()
634 if( MBEDTLS_MODE_CFB == ctx->cipher_info->mode || in mbedtls_cipher_finish()
635 MBEDTLS_MODE_CTR == ctx->cipher_info->mode || in mbedtls_cipher_finish()
636 MBEDTLS_MODE_GCM == ctx->cipher_info->mode || in mbedtls_cipher_finish()
637 MBEDTLS_MODE_STREAM == ctx->cipher_info->mode ) in mbedtls_cipher_finish()
642 if( MBEDTLS_MODE_ECB == ctx->cipher_info->mode ) in mbedtls_cipher_finish()
644 if( ctx->unprocessed_len != 0 ) in mbedtls_cipher_finish()
651 if( MBEDTLS_MODE_CBC == ctx->cipher_info->mode ) in mbedtls_cipher_finish()
655 if( MBEDTLS_ENCRYPT == ctx->operation ) in mbedtls_cipher_finish()
658 if( NULL == ctx->add_padding ) in mbedtls_cipher_finish()
660 if( 0 != ctx->unprocessed_len ) in mbedtls_cipher_finish()
666 ctx->add_padding( ctx->unprocessed_data, mbedtls_cipher_get_iv_size( ctx ), in mbedtls_cipher_finish()
667 ctx->unprocessed_len ); in mbedtls_cipher_finish()
669 else if( mbedtls_cipher_get_block_size( ctx ) != ctx->unprocessed_len ) in mbedtls_cipher_finish()
675 if( NULL == ctx->add_padding && 0 == ctx->unprocessed_len ) in mbedtls_cipher_finish()
682 if( 0 != ( ret = ctx->cipher_info->base->cbc_func( ctx->cipher_ctx, in mbedtls_cipher_finish()
683 ctx->operation, mbedtls_cipher_get_block_size( ctx ), ctx->iv, in mbedtls_cipher_finish()
684 ctx->unprocessed_data, output ) ) ) in mbedtls_cipher_finish()
690 if( MBEDTLS_DECRYPT == ctx->operation ) in mbedtls_cipher_finish()
691 return ctx->get_padding( output, mbedtls_cipher_get_block_size( ctx ), in mbedtls_cipher_finish()
695 *olen = mbedtls_cipher_get_block_size( ctx ); in mbedtls_cipher_finish()
706 int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode ) in mbedtls_cipher_set_padding_mode() argument
708 if( NULL == ctx || in mbedtls_cipher_set_padding_mode()
709 MBEDTLS_MODE_CBC != ctx->cipher_info->mode ) in mbedtls_cipher_set_padding_mode()
718 ctx->add_padding = add_pkcs_padding; in mbedtls_cipher_set_padding_mode()
719 ctx->get_padding = get_pkcs_padding; in mbedtls_cipher_set_padding_mode()
724 ctx->add_padding = add_one_and_zeros_padding; in mbedtls_cipher_set_padding_mode()
725 ctx->get_padding = get_one_and_zeros_padding; in mbedtls_cipher_set_padding_mode()
730 ctx->add_padding = add_zeros_and_len_padding; in mbedtls_cipher_set_padding_mode()
731 ctx->get_padding = get_zeros_and_len_padding; in mbedtls_cipher_set_padding_mode()
736 ctx->add_padding = add_zeros_padding; in mbedtls_cipher_set_padding_mode()
737 ctx->get_padding = get_zeros_padding; in mbedtls_cipher_set_padding_mode()
741 ctx->add_padding = NULL; in mbedtls_cipher_set_padding_mode()
742 ctx->get_padding = get_no_padding; in mbedtls_cipher_set_padding_mode()
754 int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_write_tag() argument
757 if( NULL == ctx || NULL == ctx->cipher_info || NULL == tag ) in mbedtls_cipher_write_tag()
760 if( MBEDTLS_ENCRYPT != ctx->operation ) in mbedtls_cipher_write_tag()
763 if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) in mbedtls_cipher_write_tag()
764 return mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, tag, tag_len ); in mbedtls_cipher_write_tag()
769 int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_check_tag() argument
774 if( NULL == ctx || NULL == ctx->cipher_info || in mbedtls_cipher_check_tag()
775 MBEDTLS_DECRYPT != ctx->operation ) in mbedtls_cipher_check_tag()
780 if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) in mbedtls_cipher_check_tag()
789 if( 0 != ( ret = mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, in mbedtls_cipher_check_tag()
812 int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_crypt() argument
820 if( ( ret = mbedtls_cipher_set_iv( ctx, iv, iv_len ) ) != 0 ) in mbedtls_cipher_crypt()
823 if( ( ret = mbedtls_cipher_reset( ctx ) ) != 0 ) in mbedtls_cipher_crypt()
826 if( ( ret = mbedtls_cipher_update( ctx, input, ilen, output, olen ) ) != 0 ) in mbedtls_cipher_crypt()
829 if( ( ret = mbedtls_cipher_finish( ctx, output + *olen, &finish_olen ) ) != 0 ) in mbedtls_cipher_crypt()
841 int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_auth_encrypt() argument
849 if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) in mbedtls_cipher_auth_encrypt()
852 return( mbedtls_gcm_crypt_and_tag( ctx->cipher_ctx, MBEDTLS_GCM_ENCRYPT, ilen, in mbedtls_cipher_auth_encrypt()
858 if( MBEDTLS_MODE_CCM == ctx->cipher_info->mode ) in mbedtls_cipher_auth_encrypt()
861 return( mbedtls_ccm_encrypt_and_tag( ctx->cipher_ctx, ilen, in mbedtls_cipher_auth_encrypt()
873 int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, in mbedtls_cipher_auth_decrypt() argument
881 if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) in mbedtls_cipher_auth_decrypt()
886 ret = mbedtls_gcm_auth_decrypt( ctx->cipher_ctx, ilen, in mbedtls_cipher_auth_decrypt()
897 if( MBEDTLS_MODE_CCM == ctx->cipher_info->mode ) in mbedtls_cipher_auth_decrypt()
902 ret = mbedtls_ccm_auth_decrypt( ctx->cipher_ctx, ilen, in mbedtls_cipher_auth_decrypt()