Skip to content

Commit 19238d9

Browse files
committed
fix serialization
Signed-off-by: Dave Huseby <[email protected]>
1 parent f73dfef commit 19238d9

File tree

5 files changed

+56
-64
lines changed

5 files changed

+56
-64
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "multikey"
3-
version = "1.0.4"
3+
version = "1.0.5"
44
edition = "2021"
55
authors = ["Dave Grantham <[email protected]>"]
66
description = "Multikey self-describing cryptographic key data"

src/mk.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,8 +1178,9 @@ mod tests {
11781178

11791179
let signmk = shares[0].sign_view().unwrap();
11801180
let signature = signmk.sign(msg.as_slice(), false, Some(2_u8)).unwrap();
1181-
let s: Vec<u8> = signature.into();
1182-
println!("{}", hex::encode(&s));
1181+
let ms: EncodedMultisig = BaseEncoded::new(Base::Base32Z, signature);
1182+
let s = ms.to_string();
1183+
println!("Bls Sig Share: {}", s);
11831184

11841185
let mut builder = Builder::new(Codec::Bls12381G1Priv).with_comment("test key");
11851186
for share in &shares {

src/serde/de.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::{
55
};
66
use core::fmt;
77
use multicodec::Codec;
8-
use multiutil::{EncodedVarbytes, Varbytes};
8+
use multiutil::EncodedVarbytes;
99
use serde::{
1010
de::{Error, MapAccess, Visitor},
1111
Deserialize, Deserializer,
@@ -59,14 +59,8 @@ impl<'de> Deserialize<'de> for Nonce {
5959
if deserializer.is_human_readable() {
6060
deserializer.deserialize_struct(nonce::SIGIL.as_str(), FIELDS, NonceVisitor)
6161
} else {
62-
let (sigil, nonce): (Codec, Varbytes) = Deserialize::deserialize(deserializer)?;
63-
64-
if sigil != nonce::SIGIL {
65-
return Err(Error::custom("deserialized sigil is not a Nonce sigil"));
66-
}
67-
let nonce = nonce.to_inner();
68-
69-
Ok(Self { nonce })
62+
let b: &'de [u8] = Deserialize::deserialize(deserializer)?;
63+
Ok(Self::try_from(b).map_err(|e| Error::custom(e.to_string()))?)
7064
}
7165
}
7266
}

src/serde/mod.rs

Lines changed: 47 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ mod tests {
108108

109109
assert_tokens(
110110
&pk.readable(),
111-
&[Token::BorrowedStr(
111+
&[Token::Str(
112112
"zVCYiTqf3RfiqqE4RxExy5XEvCWJKnHH4P67PLC1VuAuA1N8X1qQhM3Y3Bp1xmTQ5",
113113
)],
114114
);
@@ -137,15 +137,15 @@ mod tests {
137137
name: "multikey",
138138
len: 3,
139139
},
140-
Token::BorrowedStr("codec"),
141-
Token::BorrowedStr("ed25519-pub"),
142-
Token::BorrowedStr("comment"),
143-
Token::BorrowedStr("test key"),
144-
Token::BorrowedStr("attributes"),
140+
Token::Str("codec"),
141+
Token::Str("ed25519-pub"),
142+
Token::Str("comment"),
143+
Token::Str("test key"),
144+
Token::Str("attributes"),
145145
Token::Seq { len: Some(1) },
146146
Token::Tuple { len: 2 },
147-
Token::BorrowedStr("key-data"), // AttrId::KeyData
148-
Token::BorrowedStr(
147+
Token::Str("key-data"), // AttrId::KeyData
148+
Token::Str(
149149
"f2013e1e6e8c353672b759c93c397956927e1503c6edd73f240ccff2b7dd04558b6",
150150
),
151151
Token::TupleEnd,
@@ -305,43 +305,43 @@ mod tests {
305305
name: "multikey",
306306
len: 3,
307307
},
308-
Token::BorrowedStr("codec"),
309-
Token::BorrowedStr("ed25519-priv"),
310-
Token::BorrowedStr("comment"),
311-
Token::BorrowedStr("test key"),
312-
Token::BorrowedStr("attributes"),
308+
Token::Str("codec"),
309+
Token::Str("ed25519-priv"),
310+
Token::Str("comment"),
311+
Token::Str("test key"),
312+
Token::Str("attributes"),
313313
Token::Seq { len: Some(8) },
314314
Token::Tuple { len: 2 },
315-
Token::BorrowedStr("key-is-encrypted"),
316-
Token::BorrowedStr("f0101"),
315+
Token::Str("key-is-encrypted"),
316+
Token::Str("f0101"),
317317
Token::TupleEnd,
318318
Token::Tuple { len: 2 },
319-
Token::BorrowedStr("key-data"),
320-
Token::BorrowedStr("f30b7a928df6568bf6cbecc2e1e9afeb835be69083e3fe25f5738ad16575435b4ab6a679e08696b1fc4637fbbad85d0529a"),
319+
Token::Str("key-data"),
320+
Token::Str("f30b7a928df6568bf6cbecc2e1e9afeb835be69083e3fe25f5738ad16575435b4ab6a679e08696b1fc4637fbbad85d0529a"),
321321
Token::TupleEnd,
322322
Token::Tuple { len: 2 },
323-
Token::BorrowedStr("cipher-codec"),
324-
Token::BorrowedStr("f02a501"),
323+
Token::Str("cipher-codec"),
324+
Token::Str("f02a501"),
325325
Token::TupleEnd,
326326
Token::Tuple { len: 2 },
327-
Token::BorrowedStr("cipher-key-len"),
328-
Token::BorrowedStr("f0120"),
327+
Token::Str("cipher-key-len"),
328+
Token::Str("f0120"),
329329
Token::TupleEnd,
330330
Token::Tuple { len: 2 },
331-
Token::BorrowedStr("cipher-nonce"),
332-
Token::BorrowedStr("f08714e5abf0f7beae8"),
331+
Token::Str("cipher-nonce"),
332+
Token::Str("f08714e5abf0f7beae8"),
333333
Token::TupleEnd,
334334
Token::Tuple { len: 2 },
335-
Token::BorrowedStr("kdf-codec"),
336-
Token::BorrowedStr("f038da003"),
335+
Token::Str("kdf-codec"),
336+
Token::Str("f038da003"),
337337
Token::TupleEnd,
338338
Token::Tuple { len: 2 },
339-
Token::BorrowedStr("kdf-salt"),
340-
Token::BorrowedStr("f20621f20cfda140bd8bf83a899167428462929a41e9b68a8467bfc2455e9f98406"),
339+
Token::Str("kdf-salt"),
340+
Token::Str("f20621f20cfda140bd8bf83a899167428462929a41e9b68a8467bfc2455e9f98406"),
341341
Token::TupleEnd,
342342
Token::Tuple { len: 2 },
343-
Token::BorrowedStr("kdf-rounds"),
344-
Token::BorrowedStr("f010a"),
343+
Token::Str("kdf-rounds"),
344+
Token::Str("f010a"),
345345
Token::TupleEnd,
346346
Token::SeqEnd,
347347
Token::StructEnd,
@@ -501,14 +501,13 @@ mod tests {
501501
assert_tokens(
502502
&n.compact(),
503503
&[
504-
Token::Tuple { len: 2 },
505-
Token::BorrowedBytes(&[0x3b]), // Nonce sigil as varuint
506504
Token::BorrowedBytes(&[
507-
// Nonce data as varbytes
508-
32, 118, 137, 82, 114, 197, 206, 92, 12, 114, 181, 236, 84, 148, 78, 173, 115,
509-
148, 130, 248, 112, 72, 219, 191, 193, 59, 135, 48, 8, 179, 29, 89, 149,
505+
59, 32, 118, 137, 82, 114, 197, 206,
506+
92, 12, 114, 181, 236, 84, 148, 78,
507+
173, 115, 148, 130, 248, 112, 72, 219,
508+
191, 193, 59, 135, 48, 8, 179, 29,
509+
89, 149
510510
]),
511-
Token::TupleEnd,
512511
],
513512
);
514513
}
@@ -523,7 +522,7 @@ mod tests {
523522

524523
assert_tokens(
525524
&n.readable(),
526-
&[Token::BorrowedStr(
525+
&[Token::Str(
527526
"f3b2076895272c5ce5c0c72b5ec54944ead739482f87048dbbfc13b873008b31d5995",
528527
)],
529528
);
@@ -542,8 +541,8 @@ mod tests {
542541
name: "nonce",
543542
len: 1,
544543
},
545-
Token::BorrowedStr("nonce"),
546-
Token::BorrowedStr(
544+
Token::Str("nonce"),
545+
Token::Str(
547546
"f2076895272c5ce5c0c72b5ec54944ead739482f87048dbbfc13b873008b31d5995",
548547
),
549548
Token::StructEnd,
@@ -569,11 +568,11 @@ mod tests {
569568
&mk.readable(),
570569
&[
571570
Token::Struct { name: "multikey", len: 3, },
572-
Token::BorrowedStr("codec"),
573-
Token::BorrowedStr("identity"),
574-
Token::BorrowedStr("comment"),
575-
Token::BorrowedStr(""),
576-
Token::BorrowedStr("attributes"),
571+
Token::Str("codec"),
572+
Token::Str("identity"),
573+
Token::Str("comment"),
574+
Token::Str(""),
575+
Token::Str("attributes"),
577576
Token::Seq { len: Some(0), },
578577
Token::SeqEnd,
579578
Token::StructEnd,
@@ -587,7 +586,7 @@ mod tests {
587586
assert_tokens(
588587
&mk.readable(),
589588
&[
590-
Token::BorrowedStr("f3a000000"),
589+
Token::Str("f3a000000"),
591590
]
592591
);
593592
}
@@ -598,10 +597,7 @@ mod tests {
598597
assert_tokens(
599598
&n.compact(),
600599
&[
601-
Token::Tuple { len: 2 },
602-
Token::BorrowedBytes(&[0x3b]),
603-
Token::BorrowedBytes(&[0x0]),
604-
Token::TupleEnd,
600+
Token::BorrowedBytes(&[59, 0]),
605601
]
606602
);
607603
}
@@ -613,8 +609,8 @@ mod tests {
613609
&n.readable(),
614610
&[
615611
Token::Struct { name: "nonce", len: 1, },
616-
Token::BorrowedStr("nonce"),
617-
Token::BorrowedStr("f00"),
612+
Token::Str("nonce"),
613+
Token::Str("f00"),
618614
Token::StructEnd,
619615
]
620616
);
@@ -626,7 +622,7 @@ mod tests {
626622
assert_tokens(
627623
&n.readable(),
628624
&[
629-
Token::BorrowedStr("f3b00"),
625+
Token::Str("f3b00"),
630626
]
631627
);
632628
}

src/serde/ser.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ impl ser::Serialize for Nonce {
1717
)?;
1818
ss.end()
1919
} else {
20-
(nonce::SIGIL, Varbytes(self.nonce.clone())).serialize(serializer)
20+
let v: Vec<u8> = self.clone().into();
21+
serializer.serialize_bytes(v.as_slice())
2122
}
2223
}
2324
}

0 commit comments

Comments
 (0)