(sealctx, sec_level, scheme)
| 122 | |
| 123 | |
| 124 | def context_asserts(sealctx, sec_level, scheme): |
| 125 | assert sealctx.parameters_set() is True |
| 126 | assert sealctx.parameters_error_name() == "success" |
| 127 | assert sealctx.parameters_error_message() == "valid" |
| 128 | |
| 129 | orig_ctx_data = sealctx.key_context_data() |
| 130 | parms = orig_ctx_data.parms() |
| 131 | poly_modulus_degree = parms.poly_modulus_degree() |
| 132 | coeff_mod_count = len(parms.coeff_modulus()) |
| 133 | |
| 134 | def context_data_sanity(ctx_data, ctx_alias, index): |
| 135 | assert ctx_data.parms().poly_modulus_degree() == poly_modulus_degree |
| 136 | assert len(ctx_data.parms_id()) == 4 |
| 137 | assert ctx_data.chain_index() == ctx_alias.chain_index() |
| 138 | assert ctx_data.chain_index() == index |
| 139 | assert ( |
| 140 | ctx_data.total_coeff_modulus() != 0 |
| 141 | and ctx_data.total_coeff_modulus() == ctx_alias.total_coeff_modulus() |
| 142 | ) |
| 143 | assert ctx_data.total_coeff_modulus_bit_count() == ctx_alias.total_coeff_modulus_bit_count() |
| 144 | |
| 145 | assert ctx_data.plain_upper_half_threshold() == ctx_alias.plain_upper_half_threshold() |
| 146 | if scheme == sealapi.SCHEME_TYPE.BFV: |
| 147 | assert ( |
| 148 | ctx_data.coeff_div_plain_modulus().operand |
| 149 | == ctx_alias.coeff_div_plain_modulus().operand |
| 150 | ) |
| 151 | assert ctx_data.upper_half_increment() == ctx_alias.upper_half_increment() |
| 152 | assert ctx_data.upper_half_threshold() == ctx_alias.upper_half_threshold() |
| 153 | |
| 154 | assert ctx_data.rns_tool() != None |
| 155 | assert ctx_data.small_ntt_tables().coeff_count_power() > 0 |
| 156 | if scheme == sealapi.SCHEME_TYPE.BFV: |
| 157 | assert ctx_data.plain_ntt_tables().coeff_count_power() > 0 |
| 158 | assert len(ctx_data.galois_tool().get_elts_all()) > 0 |
| 159 | |
| 160 | qualifiers = ctx_data.qualifiers() |
| 161 | assert qualifiers.parameters_set() is True |
| 162 | assert qualifiers.using_fft is True |
| 163 | assert qualifiers.using_ntt is True |
| 164 | assert qualifiers.using_batching is True |
| 165 | assert qualifiers.using_fast_plain_lift == (scheme == sealapi.SCHEME_TYPE.BFV) |
| 166 | assert qualifiers.sec_level == sec_level |
| 167 | |
| 168 | for (parms_id, ctx_data, index) in [ |
| 169 | (sealctx.first_parms_id(), sealctx.first_context_data(), coeff_mod_count - 2), |
| 170 | (sealctx.last_parms_id(), sealctx.last_context_data(), 0), |
| 171 | (sealctx.key_parms_id(), sealctx.key_context_data(), coeff_mod_count - 1), |
| 172 | ]: |
| 173 | should_be_same_ctx = sealctx.get_context_data(parms_id) |
| 174 | context_data_sanity(ctx_data, should_be_same_ctx, index) |
| 175 | |
| 176 | assert sealctx.last_context_data().next_context_data() is None |
| 177 | assert ( |
| 178 | sealctx.first_context_data().prev_context_data().chain_index() |
| 179 | == sealctx.key_context_data().chain_index() |
| 180 | ) |
| 181 |
no test coverage detected