Skip to content

Commit 29def2e

Browse files
committed
more CI fixes
Signed-off-by: Mike Lodder <redmike7@gmail.com>
1 parent c50948c commit 29def2e

3 files changed

Lines changed: 58 additions & 10 deletions

File tree

hqc-kem/src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,31 @@
3636
//! - `alloc`: Enables PKCS#8 encoding (requires `alloc`)
3737
//! - `serde`: Serde serialization support
3838
39+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
3940
mod code;
4041
mod error;
42+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
4143
mod fft;
44+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
4245
mod gf256;
46+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
4347
mod kem;
4448
#[cfg(feature = "kem")]
4549
mod kem_impl;
4650
mod params;
4751
#[cfg(feature = "pkcs8")]
4852
mod pkcs8_impl;
53+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
4954
mod pke;
55+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
5056
mod poly;
57+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
5158
mod reed_muller;
59+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
5260
mod reed_solomon;
61+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
5362
mod sampling;
63+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
5464
mod shake;
5565
#[cfg(feature = "kem")]
5666
mod sizes;

hqc-kem/src/params.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
//! HQC parameter definitions for all security levels.
22
33
/// Seed size in bytes.
4+
#[cfg(any(
5+
feature = "kgen",
6+
feature = "ecap",
7+
feature = "dcap",
8+
feature = "pkcs8",
9+
feature = "kem"
10+
))]
411
pub(crate) const SEED_BYTES: usize = 32;
512
/// Salt size in bytes.
613
pub(crate) const SALT_BYTES: usize = 16;
714
/// Shared secret size in bytes.
815
pub(crate) const SS_BYTES: usize = 32;
916
/// GF(2^M) parameter M.
17+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
1018
pub(crate) const PARAM_M: usize = 8;
1119

1220
/// Internal runtime parameter set.
@@ -147,7 +155,9 @@ pub(crate) const HQC_256: HqcParameters = HqcParameters {
147155
};
148156

149157
// Maximum sizes for stack-allocated arrays.
158+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
150159
pub(crate) const MAX_N1: usize = 90;
160+
#[cfg(any(feature = "kgen", feature = "ecap", feature = "dcap"))]
151161
pub(crate) const MAX_DELTA: usize = 29;
152162

153163
mod sealed {

hqc-kem/src/types.rs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,36 +66,64 @@ macro_rules! basic_bytes {
6666
/// HQC encapsulation key (public key).
6767
#[derive(Clone)]
6868
pub struct EncapsulationKey<P: HqcParams> {
69-
bytes: Vec<u8>,
70-
_marker: PhantomData<P>,
69+
pub(crate) bytes: Vec<u8>,
70+
pub(crate) _marker: PhantomData<P>,
7171
}
7272

7373
/// HQC decapsulation key (secret key).
7474
#[derive(Clone)]
7575
pub struct DecapsulationKey<P: HqcParams> {
76-
bytes: Vec<u8>,
77-
ek: EncapsulationKey<P>,
78-
_marker: PhantomData<P>,
76+
pub(crate) bytes: Vec<u8>,
77+
pub(crate) ek: EncapsulationKey<P>,
78+
pub(crate) _marker: PhantomData<P>,
7979
}
8080

8181
/// HQC ciphertext.
8282
#[derive(Clone)]
8383
pub struct Ciphertext<P: HqcParams> {
84-
bytes: Vec<u8>,
85-
_marker: PhantomData<P>,
84+
pub(crate) bytes: Vec<u8>,
85+
pub(crate) _marker: PhantomData<P>,
8686
}
8787

8888
/// HQC shared secret.
8989
#[derive(Clone)]
9090
pub struct SharedSecret<P: HqcParams> {
91-
bytes: Vec<u8>,
92-
_marker: PhantomData<P>,
91+
pub(crate) bytes: Vec<u8>,
92+
pub(crate) _marker: PhantomData<P>,
9393
}
9494

9595
from_bytes!(EncapsulationKey, P::PK_BYTES, InvalidPublicKeySize);
9696
from_bytes!(Ciphertext, P::CT_BYTES, InvalidCiphertextSize);
9797
from_bytes!(SharedSecret, P::SS_BYTES, InvalidSharedSecretSize);
9898

99+
// ---------------------------------------------------------------------------
100+
// Internal constructors (crate-only)
101+
// ---------------------------------------------------------------------------
102+
103+
#[cfg(any(feature = "kem", feature = "pkcs8"))]
104+
impl<P: HqcParams> EncapsulationKey<P> {
105+
pub(crate) fn from_vec(bytes: Vec<u8>) -> Self {
106+
debug_assert_eq!(bytes.len(), P::PK_BYTES);
107+
Self {
108+
bytes,
109+
_marker: PhantomData,
110+
}
111+
}
112+
}
113+
114+
#[cfg(any(feature = "kem", feature = "pkcs8"))]
115+
impl<P: HqcParams> DecapsulationKey<P> {
116+
pub(crate) fn from_vec(bytes: Vec<u8>) -> Self {
117+
debug_assert_eq!(bytes.len(), P::SK_BYTES);
118+
let ek = EncapsulationKey::from_vec(bytes[..P::PK_BYTES].to_vec());
119+
Self {
120+
bytes,
121+
ek,
122+
_marker: PhantomData,
123+
}
124+
}
125+
}
126+
99127
/// HQC Key Encapsulation Mechanism parameterized by security level.
100128
///
101129
/// Zero-sized marker type providing [`generate_key`](HqcKem::generate_key).
@@ -360,7 +388,7 @@ mod serde_impl {
360388
use super::*;
361389

362390
macro_rules! ser_impl {
363-
($name:ident, ) => {
391+
($name:ident) => {
364392
impl<P: HqcParams> serde::Serialize for $name<P> {
365393
fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
366394
serdect::slice::serialize_hex_lower_or_bin(&self.bytes, s)

0 commit comments

Comments
 (0)