Skip to content

Commit 0218f08

Browse files
committed
arithmetic: Simplify construction of IntoMont.
Don't require the caller to construct a `Value` first.
1 parent 59f2370 commit 0218f08

File tree

6 files changed

+15
-10
lines changed

6 files changed

+15
-10
lines changed

src/arithmetic/bigint/exp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,8 +398,7 @@ mod tests {
398398
modulus::ValidatedInput::try_from_be_bytes(untrusted::Input::from(&m_input))
399399
.unwrap();
400400
let im = m_input
401-
.build_value::<M>()
402-
.into_into_mont(cpu_features)
401+
.build_into_mont::<M>(cpu_features)
403402
.intoRRR(cpu_features);
404403
let m = im.modulus(cpu_features);
405404
let expected_result = consume_elem(test_case, "ModExp", &m);

src/arithmetic/bigint/modulus/mont.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
use super::super::{
1616
super::montgomery::{Unencoded, RR, RRR},
17-
modulus::value::Value,
17+
modulus::{value::Value, ValidatedInput},
1818
Elem, One, PublicModulus, Uninit, N0,
1919
};
2020
use crate::{
@@ -45,8 +45,14 @@ impl<M: PublicModulus, E> Clone for IntoMont<M, E> {
4545
}
4646
}
4747

48+
impl ValidatedInput<'_> {
49+
pub(crate) fn build_into_mont<M>(&self, cpu: cpu::Features) -> IntoMont<M, RR> {
50+
self.build_value().into_into_mont(cpu)
51+
}
52+
}
53+
4854
impl<M> Value<M> {
49-
pub fn into_into_mont(self, cpu: cpu::Features) -> IntoMont<M, RR> {
55+
pub(super) fn into_into_mont(self, cpu: cpu::Features) -> IntoMont<M, RR> {
5056
let out = self.alloc_uninit();
5157
let one =
5258
One::newRR(out, &self, cpu).unwrap_or_else(|LenMismatchError { .. }| unreachable!());

src/arithmetic/bigint/modulus/testutil.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@ pub fn consume_modulus<M>(
1111
ValidatedInput::try_from_be_bytes(value.as_slice().into())
1212
.map_err(error::erase::<KeyRejected>)
1313
.unwrap()
14-
.build_value()
15-
.into_into_mont(cpu::features())
14+
.build_into_mont(cpu::features())
1615
}

src/arithmetic/bigint/modulus/value.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl<'a> ValidatedInput<'a> {
112112
self.input
113113
}
114114

115-
pub(crate) fn build_value<M>(&self) -> Value<M> {
115+
pub(super) fn build_value<M>(&self) -> Value<M> {
116116
let limbs = Uninit::new_less_safe(self.num_limbs)
117117
.write_from_be_bytes_padded(self.input)
118118
.unwrap_or_else(|LenMismatchError { .. }| unreachable!());

src/rsa/keypair.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ impl ValidatedPrivatePrimeInput<'_> {
462462

463463
// Steps 5.e and 5.f are omitted as explained above.
464464
PrivatePrime {
465-
modulus: self.inner.build_value().into_into_mont(cpu_features),
465+
modulus: self.inner.build_into_mont(cpu_features),
466466
}
467467
}
468468
}

src/rsa/public_modulus.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ impl<'a> ValidatedInput<'a> {
6969
}
7070

7171
pub(super) fn build(&self, cpu_features: cpu::Features) -> PublicModulus {
72-
let value = self.input.build_value().into_into_mont(cpu_features);
73-
PublicModulus { value }
72+
PublicModulus {
73+
value: self.input.build_into_mont(cpu_features),
74+
}
7475
}
7576
}
7677

0 commit comments

Comments
 (0)