Skip to content

Commit e5e22ee

Browse files
committed
Test serde support in no-std crate
1 parent d0afb87 commit e5e22ee

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

no_std_test/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ version = "0.1.0"
44
authors = ["Elichai Turkel <[email protected]>"]
55

66
[dependencies]
7-
secp256k1 = { path = "../", default-features = false, features = ["rand"] }
7+
secp256k1 = { path = "../", default-features = false, features = ["serde", "rand"] }
88
libc = { version = "0.2", default-features = false }
9+
serde_cbor = { version = "0.10", default-features = false } # A random serializer that supports no-std.
910

1011

1112
[profile.release]

no_std_test/src/main.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#![no_std]
66
extern crate libc;
77
extern crate secp256k1;
8+
extern crate serde_cbor;
89

910
use core::fmt::{self, write, Write};
1011
use core::intrinsics;
@@ -14,6 +15,10 @@ use secp256k1::rand::{self, RngCore};
1415
use secp256k1::serde::Serialize;
1516
use secp256k1::*;
1617

18+
use serde_cbor::de;
19+
use serde_cbor::ser::SliceWrite;
20+
use serde_cbor::Serializer;
21+
1722
struct FakeRng;
1823
impl RngCore for FakeRng {
1924
fn next_u32(&mut self) -> u32 {
@@ -48,6 +53,14 @@ fn start(_argc: isize, _argv: *const *const u8) -> isize {
4853
let sig = secp.sign(&message, &secret_key);
4954
assert!(secp.verify(&message, &sig, &public_key).is_ok());
5055

56+
let mut cbor_ser = [0u8; 100];
57+
let writer = SliceWrite::new(&mut cbor_ser[..]);
58+
let mut ser = Serializer::new(writer);
59+
sig.serialize(&mut ser).unwrap();
60+
let size = ser.into_inner().bytes_written();
61+
let new_sig: Signature = de::from_mut_slice(&mut cbor_ser[..size]).unwrap();
62+
assert_eq!(sig, new_sig);
63+
5164
unsafe { libc::printf("Verified Successfully!\n\0".as_ptr() as _) };
5265
0
5366
}

0 commit comments

Comments
 (0)