crypto_bigint/modular/boxed_monty_form/
from.rs1use super::{BoxedMontyForm, BoxedMontyParams, MontyParams};
4use crate::{
5 BoxedUint,
6 modular::{ConstMontyForm, ConstMontyParams, FixedMontyForm, FixedMontyParams},
7};
8
9impl<const LIMBS: usize, Params> From<ConstMontyForm<Params, LIMBS>> for BoxedMontyForm
10where
11 Params: ConstMontyParams<LIMBS>,
12{
13 fn from(input: ConstMontyForm<Params, LIMBS>) -> Self {
14 Self::from(&input)
15 }
16}
17
18impl<const LIMBS: usize, Params> From<&ConstMontyForm<Params, LIMBS>> for BoxedMontyForm
19where
20 Params: ConstMontyParams<LIMBS>,
21{
22 fn from(input: &ConstMontyForm<Params, LIMBS>) -> Self {
23 BoxedMontyForm {
24 montgomery_form: input.as_montgomery().into(),
25 params: Params::PARAMS.into(),
26 }
27 }
28}
29
30impl<const LIMBS: usize> From<FixedMontyForm<LIMBS>> for BoxedMontyForm {
31 fn from(input: FixedMontyForm<LIMBS>) -> Self {
32 Self::from(&input)
33 }
34}
35
36impl<const LIMBS: usize> From<&FixedMontyForm<LIMBS>> for BoxedMontyForm {
37 fn from(input: &FixedMontyForm<LIMBS>) -> Self {
38 BoxedMontyForm {
39 montgomery_form: input.as_montgomery().into(),
40 params: input.params().into(),
41 }
42 }
43}
44
45impl<const LIMBS: usize> From<&FixedMontyParams<LIMBS>> for BoxedMontyParams {
46 fn from(params: &FixedMontyParams<LIMBS>) -> Self {
47 MontyParams::<BoxedUint> {
48 modulus: params.modulus.into(),
49 one: params.one.into(),
50 r2: params.r2.into(),
51 mod_inv: params.mod_inv,
52 mod_leading_zeros: params.mod_leading_zeros,
53 }
54 .into()
55 }
56}
57
58impl<const LIMBS: usize> From<FixedMontyParams<LIMBS>> for BoxedMontyParams {
59 fn from(params: FixedMontyParams<LIMBS>) -> Self {
60 BoxedMontyParams::from(¶ms)
61 }
62}