Lines Matching refs:alg

774 ipsec_alg_reg(ipsec_algtype_t algtype, ipsec_alginfo_t *alg, netstack_t *ns)  in ipsec_alg_reg()  argument
780 ASSERT(ipss->ipsec_alglists[algtype][alg->alg_id] == NULL); in ipsec_alg_reg()
781 ipsec_alg_fix_min_max(alg, algtype, ns); in ipsec_alg_reg()
782 ipss->ipsec_alglists[algtype][alg->alg_id] = alg; in ipsec_alg_reg()
785 alg_insert_sortlist(algtype, alg->alg_id, ns); in ipsec_alg_reg()
1264 #define SET_EXP_MINMAX(type, wild, alg, min, max, ipss) \ in ipsec_act_wildcard_expand() argument
1267 if (ipss->ipsec_alglists[type][alg] != NULL) \ in ipsec_act_wildcard_expand()
4694 ipsec_alg_fix_min_max(ipsec_alginfo_t *alg, ipsec_algtype_t alg_type, in ipsec_alg_fix_min_max() argument
4716 alg->alg_default_bits = alg->alg_key_sizes[0]; in ipsec_alg_fix_min_max()
4717 alg->alg_default = 0; in ipsec_alg_fix_min_max()
4718 if (alg->alg_increment != 0) { in ipsec_alg_fix_min_max()
4720 alg->alg_minbits = alg->alg_key_sizes[1]; in ipsec_alg_fix_min_max()
4721 alg->alg_maxbits = alg->alg_key_sizes[2]; in ipsec_alg_fix_min_max()
4722 } else if (alg->alg_nkey_sizes == 0) { in ipsec_alg_fix_min_max()
4724 alg->alg_minbits = alg->alg_maxbits = 0; in ipsec_alg_fix_min_max()
4727 alg->alg_minbits = (uint16_t)-1; in ipsec_alg_fix_min_max()
4728 alg->alg_maxbits = 0; in ipsec_alg_fix_min_max()
4730 for (i = 0; i < alg->alg_nkey_sizes; i++) { in ipsec_alg_fix_min_max()
4731 if (alg->alg_key_sizes[i] < alg->alg_minbits) in ipsec_alg_fix_min_max()
4732 alg->alg_minbits = alg->alg_key_sizes[i]; in ipsec_alg_fix_min_max()
4733 if (alg->alg_key_sizes[i] > alg->alg_maxbits) in ipsec_alg_fix_min_max()
4734 alg->alg_maxbits = alg->alg_key_sizes[i]; in ipsec_alg_fix_min_max()
4738 if (!(alg->alg_flags & ALG_FLAG_VALID)) in ipsec_alg_fix_min_max()
4745 if (alg->alg_id == SADB_EALG_NULL) in ipsec_alg_fix_min_max()
4754 crypto_rc = crypto_get_all_mech_info(alg->alg_mech_type, in ipsec_alg_fix_min_max()
4757 alg->alg_flags &= ~ALG_FLAG_VALID; in ipsec_alg_fix_min_max()
4806 alg->alg_flags &= ~ALG_FLAG_VALID; in ipsec_alg_fix_min_max()
4815 alg->alg_ef_default_bits = alg->alg_key_sizes[0]; in ipsec_alg_fix_min_max()
4821 alg->alg_ivlen = alg->alg_datalen; in ipsec_alg_fix_min_max()
4828 for (i = 0; i < alg->alg_nparams; i++) { in ipsec_alg_fix_min_max()
4832 alg->alg_ivlen = alg->alg_params[0]; in ipsec_alg_fix_min_max()
4836 alg->alg_icvlen = alg->alg_params[1]; in ipsec_alg_fix_min_max()
4840 alg->alg_saltlen = (uint8_t)alg->alg_params[2]; in ipsec_alg_fix_min_max()
4848 if (alg_type == IPSEC_ALG_ENCR && alg->alg_ivlen == 0) in ipsec_alg_fix_min_max()
4849 alg->alg_ivlen = alg->alg_datalen; in ipsec_alg_fix_min_max()
4851 alg_flag_check(alg); in ipsec_alg_fix_min_max()
4853 if (alg->alg_increment != 0) { in ipsec_alg_fix_min_max()
4855 crypto_min = ALGBITS_ROUND_UP(crypto_min, alg->alg_increment); in ipsec_alg_fix_min_max()
4856 crypto_max = ALGBITS_ROUND_DOWN(crypto_max, alg->alg_increment); in ipsec_alg_fix_min_max()
4858 alg->alg_ef_minbits = MAX(alg->alg_minbits, in ipsec_alg_fix_min_max()
4860 alg->alg_ef_maxbits = MIN(alg->alg_maxbits, in ipsec_alg_fix_min_max()
4869 if (alg->alg_ef_minbits > alg->alg_ef_maxbits) { in ipsec_alg_fix_min_max()
4870 alg->alg_flags &= ~ALG_FLAG_VALID; in ipsec_alg_fix_min_max()
4873 if (alg->alg_ef_default_bits < alg->alg_ef_minbits) in ipsec_alg_fix_min_max()
4874 alg->alg_ef_default_bits = alg->alg_ef_minbits; in ipsec_alg_fix_min_max()
4875 if (alg->alg_ef_default_bits > alg->alg_ef_maxbits) in ipsec_alg_fix_min_max()
4876 alg->alg_ef_default_bits = alg->alg_ef_maxbits; in ipsec_alg_fix_min_max()
4877 } else if (alg->alg_nkey_sizes == 0) { in ipsec_alg_fix_min_max()
4879 alg->alg_ef_minbits = alg->alg_ef_maxbits = 0; in ipsec_alg_fix_min_max()
4882 alg->alg_ef_minbits = (uint16_t)-1; in ipsec_alg_fix_min_max()
4883 alg->alg_ef_maxbits = 0; in ipsec_alg_fix_min_max()
4885 for (i = 0, is_valid = B_FALSE; i < alg->alg_nkey_sizes; i++) { in ipsec_alg_fix_min_max()
4890 if (alg->alg_key_sizes[i] < crypto_min || in ipsec_alg_fix_min_max()
4891 alg->alg_key_sizes[i] > crypto_max) in ipsec_alg_fix_min_max()
4893 if (alg->alg_key_sizes[i] < alg->alg_ef_minbits) in ipsec_alg_fix_min_max()
4894 alg->alg_ef_minbits = alg->alg_key_sizes[i]; in ipsec_alg_fix_min_max()
4895 if (alg->alg_key_sizes[i] > alg->alg_ef_maxbits) in ipsec_alg_fix_min_max()
4896 alg->alg_ef_maxbits = alg->alg_key_sizes[i]; in ipsec_alg_fix_min_max()
4901 alg->alg_flags &= ~ALG_FLAG_VALID; in ipsec_alg_fix_min_max()
4904 alg->alg_ef_default = 0; in ipsec_alg_fix_min_max()
4915 alg_flag_check(ipsec_alginfo_t *alg) in alg_flag_check() argument
4917 alg->alg_flags &= ~ALG_FLAG_VALID; in alg_flag_check()
4924 if ((alg->alg_flags & (ALG_FLAG_CCM|ALG_FLAG_GCM)) == in alg_flag_check()
4927 if (alg->alg_flags & (ALG_FLAG_CCM|ALG_FLAG_GCM)) { in alg_flag_check()
4928 if (!(alg->alg_flags & ALG_FLAG_COUNTERMODE)) in alg_flag_check()
4930 if (!(alg->alg_flags & ALG_FLAG_COMBINED)) in alg_flag_check()
4938 if (alg->alg_flags & ALG_FLAG_COUNTERMODE) { in alg_flag_check()
4939 if (alg->alg_ivlen != sizeof (((ipsec_nonce_t *)NULL)->iv)) in alg_flag_check()
4941 if (alg->alg_saltlen > sizeof (((ipsec_nonce_t *)NULL)->salt)) in alg_flag_check()
4944 if ((alg->alg_flags & ALG_FLAG_COMBINED) && in alg_flag_check()
4945 (alg->alg_icvlen == 0)) in alg_flag_check()
4949 alg->alg_flags |= ALG_FLAG_VALID; in alg_flag_check()
4956 ipsec_alg_free(ipsec_alginfo_t *alg) in ipsec_alg_free() argument
4958 if (alg == NULL) in ipsec_alg_free()
4961 if (alg->alg_key_sizes != NULL) { in ipsec_alg_free()
4962 kmem_free(alg->alg_key_sizes, in ipsec_alg_free()
4963 (alg->alg_nkey_sizes + 1) * sizeof (uint16_t)); in ipsec_alg_free()
4964 alg->alg_key_sizes = NULL; in ipsec_alg_free()
4966 if (alg->alg_block_sizes != NULL) { in ipsec_alg_free()
4967 kmem_free(alg->alg_block_sizes, in ipsec_alg_free()
4968 (alg->alg_nblock_sizes + 1) * sizeof (uint16_t)); in ipsec_alg_free()
4969 alg->alg_block_sizes = NULL; in ipsec_alg_free()
4971 if (alg->alg_params != NULL) { in ipsec_alg_free()
4972 kmem_free(alg->alg_params, in ipsec_alg_free()
4973 (alg->alg_nparams + 1) * sizeof (uint16_t)); in ipsec_alg_free()
4974 alg->alg_params = NULL; in ipsec_alg_free()
4976 kmem_free(alg, sizeof (*alg)); in ipsec_alg_free()
4984 ipsec_valid_key_size(uint16_t key_size, ipsec_alginfo_t *alg) in ipsec_valid_key_size() argument
4986 if (key_size < alg->alg_ef_minbits || key_size > alg->alg_ef_maxbits) in ipsec_valid_key_size()
4989 if (alg->alg_increment == 0 && alg->alg_nkey_sizes != 0) { in ipsec_valid_key_size()
4996 for (i = 0; i < alg->alg_nkey_sizes; i++) in ipsec_valid_key_size()
4997 if (key_size == alg->alg_key_sizes[i]) in ipsec_valid_key_size()
4999 if (i == alg->alg_nkey_sizes) in ipsec_valid_key_size()
5037 ipsec_alginfo_t *alg; in ipsec_prov_update_callback_stack() local
5065 alg = ipss->ipsec_alglists[algtype][algid]; in ipsec_prov_update_callback_stack()
5066 ASSERT(alg != NULL); in ipsec_prov_update_callback_stack()
5072 if (strncmp(alg->alg_mech_name, in ipsec_prov_update_callback_stack()
5083 if (strncmp(alg->alg_mech_name, in ipsec_prov_update_callback_stack()
5087 alg->alg_flags & ALG_FLAG_VALID) { in ipsec_prov_update_callback_stack()
5088 alg->alg_flags &= ~ALG_FLAG_VALID; in ipsec_prov_update_callback_stack()
5091 !(alg->alg_flags & ALG_FLAG_VALID)) { in ipsec_prov_update_callback_stack()
5092 alg->alg_flags |= ALG_FLAG_VALID; in ipsec_prov_update_callback_stack()
5101 oalg = *alg; in ipsec_prov_update_callback_stack()
5102 ipsec_alg_fix_min_max(alg, algtype, ns); in ipsec_prov_update_callback_stack()
5104 alg->alg_ef_minbits != oalg.alg_ef_minbits || in ipsec_prov_update_callback_stack()
5105 alg->alg_ef_maxbits != oalg.alg_ef_maxbits || in ipsec_prov_update_callback_stack()
5106 alg->alg_ef_default != oalg.alg_ef_default || in ipsec_prov_update_callback_stack()
5107 alg->alg_ef_default_bits != in ipsec_prov_update_callback_stack()
5117 sadb_alg_update(algtype, alg->alg_id, in ipsec_prov_update_callback_stack()