Skip to content

Commit d7ee4d0

Browse files
committed
implement error conversions
1 parent ca8f45f commit d7ee4d0

File tree

5 files changed

+43
-13
lines changed

5 files changed

+43
-13
lines changed

ecdsa/src/impl_signature_trait.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use libcrux_traits::signature::arrayref;
2+
13
macro_rules! impl_signature_trait {
24
($digest_alg_name:ident, $pk_len:literal, $sk_len:literal, $sig_len:literal, $alias:ident) => {
35
#[allow(non_camel_case_types)]
@@ -17,7 +19,7 @@ macro_rules! impl_signature_trait {
1719
nonce,
1820
signature,
1921
)
20-
.map_err(|_| todo!())
22+
.map_err(|_| arrayref::SignError::LibraryError)
2123
}
2224
}
2325
impl arrayref::Verify<&(), $pk_len, $sig_len> for $alias {
@@ -35,7 +37,11 @@ macro_rules! impl_signature_trait {
3537
<&[u8; 32]>::try_from(&signature[32..]).unwrap(),
3638
public_key,
3739
)
38-
.map_err(|_| todo!())
40+
.map_err(|e| match e {
41+
crate::Error::InvalidSignature => arrayref::VerifyError::InvalidSignature,
42+
_ => arrayref::VerifyError::LibraryError,
43+
44+
})
3945
}
4046
}
4147
libcrux_traits::impl_signature_slice_trait!($alias => $sk_len, $sig_len, &Nonce, nonce);
@@ -46,8 +52,9 @@ macro_rules! impl_signature_trait {
4652

4753
pub mod p256 {
4854

55+
use super::*;
56+
4957
use crate::p256::Nonce;
50-
use libcrux_traits::signature::arrayref;
5158
pub struct Signer<T> {
5259
_phantom_data: core::marker::PhantomData<T>,
5360
}

libcrux-ml-dsa/src/impl_signature_trait.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
1-
use libcrux_traits::signature::{arrayref, owned};
1+
use libcrux_traits::signature::arrayref;
22

3-
impl From<crate::SigningError> for owned::SignError {
3+
impl From<crate::SigningError> for arrayref::SignError {
44
fn from(e: crate::SigningError) -> Self {
55
match e {
6-
crate::SigningError::RejectionSamplingError => todo!(),
7-
crate::SigningError::ContextTooLongError => todo!(),
6+
crate::SigningError::RejectionSamplingError => arrayref::SignError::LibraryError,
7+
crate::SigningError::ContextTooLongError => arrayref::SignError::LibraryError,
88
}
99
}
1010
}
1111
impl From<crate::VerificationError> for arrayref::VerifyError {
1212
fn from(e: crate::VerificationError) -> Self {
1313
match e {
14-
crate::VerificationError::MalformedHintError => todo!(),
15-
crate::VerificationError::SignerResponseExceedsBoundError => todo!(),
16-
crate::VerificationError::CommitmentHashesDontMatchError => todo!(),
17-
crate::VerificationError::VerificationContextTooLongError => todo!(),
14+
crate::VerificationError::MalformedHintError => arrayref::VerifyError::LibraryError,
15+
crate::VerificationError::SignerResponseExceedsBoundError => {
16+
arrayref::VerifyError::LibraryError
17+
}
18+
crate::VerificationError::CommitmentHashesDontMatchError => {
19+
arrayref::VerifyError::LibraryError
20+
}
21+
crate::VerificationError::VerificationContextTooLongError => {
22+
arrayref::VerifyError::LibraryError
23+
}
1824
}
1925
}
2026
}

rsa/src/impl_signature_trait.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@ macro_rules! impl_signature_trait {
2828
salt,
2929
signature,
3030
)
31-
.map_err(|_| todo!())
31+
.map_err(|e| match e {
32+
// TODO: is this correct?
33+
crate::Error::MessageTooLarge => arrayref::SignError::InvalidPayloadLength,
34+
_ => arrayref::SignError::LibraryError,
35+
36+
})
3237
}
3338
}
3439
impl arrayref::Verify<u32, $bytes, $bytes> for $alias {
@@ -45,7 +50,13 @@ macro_rules! impl_signature_trait {
4550
salt_len,
4651
signature,
4752
)
48-
.map_err(|_| todo!())
53+
.map_err(|e| match e {
54+
// TODO: is this correct?
55+
crate::Error::InvalidSignatureLength => arrayref::VerifyError::InvalidSignature,
56+
crate::Error::MessageTooLarge => arrayref::VerifyError::InvalidPayloadLength,
57+
_ => arrayref::VerifyError::LibraryError,
58+
59+
})
4960
}
5061
}
5162

traits/src/signature/arrayref.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ pub trait Verify<VerifyAux, const PUBLIC_KEY_LEN: usize, const SIGNATURE_LEN: us
2020
#[derive(Debug, PartialEq, Eq)]
2121
pub enum SignError {
2222
InvalidPayloadLength,
23+
LibraryError,
2324
}
2425

2526
#[derive(Debug, PartialEq, Eq)]
2627
pub enum VerifyError {
2728
InvalidSignature,
2829
InvalidPayloadLength,
30+
LibraryError,
2931
}
3032

3133
// No auxiliary information

traits/src/signature/slice.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ pub enum SignError {
3939
InvalidPrivateKeyLength,
4040
InvalidSignatureBufferLength,
4141
InvalidPayloadLength,
42+
LibraryError,
4243
}
4344

4445
#[derive(Debug, PartialEq, Eq)]
@@ -47,12 +48,14 @@ pub enum VerifyError {
4748
InvalidPublicKeyLength,
4849
InvalidSignatureBufferLength,
4950
InvalidSignature,
51+
LibraryError,
5052
}
5153

5254
impl From<super::arrayref::SignError> for SignError {
5355
fn from(e: super::arrayref::SignError) -> Self {
5456
match e {
5557
super::arrayref::SignError::InvalidPayloadLength => Self::InvalidPayloadLength,
58+
super::arrayref::SignError::LibraryError => Self::LibraryError,
5659
}
5760
}
5861
}
@@ -61,6 +64,7 @@ impl From<super::arrayref::VerifyError> for VerifyError {
6164
match e {
6265
super::arrayref::VerifyError::InvalidSignature => Self::InvalidSignature,
6366
super::arrayref::VerifyError::InvalidPayloadLength => Self::InvalidPayloadLength,
67+
super::arrayref::VerifyError::LibraryError => Self::LibraryError,
6468
}
6569
}
6670
}

0 commit comments

Comments
 (0)