Skip to content

Commit e98d4d7

Browse files
committed
dsa: derive serde
1 parent c0ab70c commit e98d4d7

File tree

6 files changed

+27
-0
lines changed

6 files changed

+27
-0
lines changed

Cargo.lock

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dsa/Cargo.toml

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ num-bigint = { package = "num-bigint-dig", version = "0.8", default-features = f
2121
num-traits = { version = "0.2", default-features = false }
2222
pkcs8 = { version = "=0.11.0-rc.1", default-features = false, features = ["alloc"] }
2323
rfc6979 = { version = "=0.5.0-pre.4", path = "../rfc6979" }
24+
serde = { version = "1.0", default-features = false, features = ["derive"], optional = true }
2425
sha2 = { version = "=0.11.0-pre.4", default-features = false }
2526
signature = { version = "=2.3.0-pre.4", default-features = false, features = ["alloc", "digest", "rand_core"] }
2627
zeroize = { version = "1", default-features = false }
@@ -32,4 +33,9 @@ rand_chacha = "0.3"
3233
sha1 = "=0.11.0-pre.4"
3334

3435
[features]
36+
serde = [
37+
"dep:serde",
38+
"num-bigint/serde",
39+
"zeroize/serde",
40+
]
3541
std = []

dsa/src/components.rs

+4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,14 @@ use pkcs8::der::{
1111
};
1212
use signature::rand_core::CryptoRngCore;
1313

14+
#[cfg(feature = "serde")]
15+
use serde::{Deserialize, Serialize};
16+
1417
/// The common components of an DSA keypair
1518
///
1619
/// (the prime p, quotient q and generator g)
1720
#[derive(Clone, Debug, PartialEq, PartialOrd)]
21+
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
1822
#[must_use]
1923
pub struct Components {
2024
/// Prime p

dsa/src/lib.rs

+4
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ use pkcs8::der::{
7575
};
7676
use signature::SignatureEncoding;
7777

78+
#[cfg(feature = "serde")]
79+
use serde::{Deserialize, Serialize};
80+
7881
/// Container of the DSA signature
7982
#[derive(Clone, Debug)]
83+
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
8084
#[must_use]
8185
pub struct Signature {
8286
/// Signature part r

dsa/src/signing_key.rs

+4
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@ use signature::{
2424
};
2525
use zeroize::{Zeroize, Zeroizing};
2626

27+
#[cfg(feature = "serde")]
28+
use serde::{Deserialize, Serialize};
29+
2730
/// DSA private key.
2831
///
2932
/// The [`(try_)sign_digest_with_rng`](::signature::RandomizedDigestSigner) API uses regular non-deterministic signatures,
3033
/// while the [`(try_)sign_digest`](::signature::DigestSigner) API uses deterministic signatures as described in RFC 6979
3134
#[derive(Clone, PartialEq)]
35+
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
3236
#[must_use]
3337
pub struct SigningKey {
3438
/// Public key

dsa/src/verifying_key.rs

+4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@ use pkcs8::{
1616
};
1717
use signature::{hazmat::PrehashVerifier, DigestVerifier, Verifier};
1818

19+
#[cfg(feature = "serde")]
20+
use serde::{Deserialize, Serialize};
21+
1922
/// DSA public key.
2023
#[derive(Clone, Debug, PartialEq, PartialOrd)]
24+
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
2125
#[must_use]
2226
pub struct VerifyingKey {
2327
/// common components

0 commit comments

Comments
 (0)