use ed25519_dalek::{Signer, SigningKey}; use ledger_core::EntryUnsigned; fn hex(bytes: &[u8]) -> String { bytes.iter().map(|b| format!("{:02x}", b)).collect() } #[test] fn golden_vectors_v0_signing_message_and_hashes() { let seed = [0u8; 32]; let signing_key = SigningKey::from_bytes(&seed); let author_pubkey = signing_key.verifying_key().to_bytes(); let unsigned = EntryUnsigned { prev_hash: [0u8; 32], ts_ms: 1, namespace: "law".to_string(), payload_cbor: vec![0x65, b'h', b'e', b'l', b'l', b'o'], author_pubkey, }; let msg = unsigned.signing_message(); let sig = signing_key.sign(&msg).to_bytes(); let entry = unsigned.to_entry(sig); assert_eq!( hex(&author_pubkey), "3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29" ); assert_eq!( hex(&entry.payload_hash()), "90eeb71f0d4b768a5d449e30035beb7ffccd75d228e5b38e8e9cbfaa01ddfae9" ); assert_eq!( hex(&msg), "434c763000000000000000000000000000000000000000000000000000000000000000000100000000000000030000006c617790eeb71f0d4b768a5d449e30035beb7ffccd75d228e5b38e8e9cbfaa01ddfae93b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29" ); assert_eq!( hex(&entry.sig), "03c91ecb5ab44a4329c12c1e789d22d685b81a0d16483d869d88fa24dd2c20a8b786066d12c8a238c88cea0b969f1c707df305b1edc56238d5d6166ecf986e05" ); assert_eq!( hex(&entry.hash()), "ce13e5272d6705d9cbf2e261d2b9862abb187f737bea6fe3542e8680d689cc8e" ); }