mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 15:51:12 +00:00
Use array-bytes for All Array/Bytes/Hex Operations (#12190)
* Use `array-bytes` for All Array/Bytes/Hex Operations Signed-off-by: Xavier Lau <xavier@inv.cafe> * Reorder * Self Review * Format * Fix Tests * Bump `array-bytes` * Optimize large test res Signed-off-by: Xavier Lau <xavier@inv.cafe> Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -421,7 +421,7 @@ impl<T: Sized + AsMut<[u8]> + AsRef<[u8]> + Public + Derive> Ss58Codec for T {
|
||||
let cap = SS58_REGEX.captures(s).ok_or(PublicError::InvalidFormat)?;
|
||||
let s = cap.name("ss58").map(|r| r.as_str()).unwrap_or(DEV_ADDRESS);
|
||||
let addr = if let Some(stripped) = s.strip_prefix("0x") {
|
||||
let d = hex::decode(stripped).map_err(|_| PublicError::InvalidFormat)?;
|
||||
let d = array_bytes::hex2bytes(stripped).map_err(|_| PublicError::InvalidFormat)?;
|
||||
Self::from_slice(&d).map_err(|()| PublicError::BadLength)?
|
||||
} else {
|
||||
Self::from_ss58check(s)?
|
||||
@@ -614,10 +614,7 @@ impl sp_std::str::FromStr for AccountId32 {
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let hex_or_ss58_without_prefix = s.trim_start_matches("0x");
|
||||
if hex_or_ss58_without_prefix.len() == 64 {
|
||||
let mut bytes = [0u8; 32];
|
||||
hex::decode_to_slice(hex_or_ss58_without_prefix, &mut bytes)
|
||||
.map_err(|_| "invalid hex address.")
|
||||
.map(|_| Self::from(bytes))
|
||||
array_bytes::hex_n_into(hex_or_ss58_without_prefix).map_err(|_| "invalid hex address.")
|
||||
} else {
|
||||
Self::from_ss58check(s).map_err(|_| "invalid ss58 address.")
|
||||
}
|
||||
@@ -943,7 +940,7 @@ pub trait Pair: CryptoType + Sized + Clone + Send + Sync + 'static {
|
||||
password_override.or_else(|| password.as_ref().map(|p| p.expose_secret().as_str()));
|
||||
|
||||
let (root, seed) = if let Some(stripped) = phrase.expose_secret().strip_prefix("0x") {
|
||||
hex::decode(stripped)
|
||||
array_bytes::hex2bytes(stripped)
|
||||
.ok()
|
||||
.and_then(|seed_vec| {
|
||||
let mut seed = Self::Seed::default();
|
||||
@@ -1127,7 +1124,6 @@ pub mod key_types {
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::DeriveJunction;
|
||||
use hex_literal::hex;
|
||||
|
||||
#[derive(Clone, Eq, PartialEq, Debug)]
|
||||
enum TestPair {
|
||||
@@ -1269,7 +1265,7 @@ mod tests {
|
||||
fn interpret_std_seed_should_work() {
|
||||
assert_eq!(
|
||||
TestPair::from_string("0x0123456789abcdef", None),
|
||||
Ok(TestPair::Seed(hex!["0123456789abcdef"][..].to_owned()))
|
||||
Ok(TestPair::Seed(array_bytes::hex2bytes_unchecked("0123456789abcdef")))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ impl Serialize for Signature {
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&hex::encode(self))
|
||||
serializer.serialize_str(&array_bytes::bytes2hex("", self.as_ref()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ impl<'de> Deserialize<'de> for Signature {
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let signature_hex = hex::decode(&String::deserialize(deserializer)?)
|
||||
let signature_hex = array_bytes::hex2bytes(&String::deserialize(deserializer)?)
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))?;
|
||||
Signature::try_from(signature_hex.as_ref())
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))
|
||||
@@ -597,7 +597,6 @@ mod test {
|
||||
set_default_ss58_version, PublicError, Ss58AddressFormat, Ss58AddressFormatRegistry,
|
||||
DEV_PHRASE,
|
||||
};
|
||||
use hex_literal::hex;
|
||||
use serde_json;
|
||||
|
||||
#[test]
|
||||
@@ -612,31 +611,35 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn seed_and_derive_should_work() {
|
||||
let seed = hex!("9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60");
|
||||
let seed = array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
);
|
||||
let pair = Pair::from_seed(&seed);
|
||||
assert_eq!(pair.seed(), seed);
|
||||
let path = vec![DeriveJunction::Hard([0u8; 32])];
|
||||
let derived = pair.derive(path.into_iter(), None).ok().unwrap();
|
||||
assert_eq!(
|
||||
derived.0.seed(),
|
||||
hex!("b8eefc4937200a8382d00050e050ced2d4ab72cc2ef1b061477afb51564fdd61")
|
||||
array_bytes::hex2array_unchecked::<32>(
|
||||
"b8eefc4937200a8382d00050e050ced2d4ab72cc2ef1b061477afb51564fdd61"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_vector_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_full(
|
||||
&hex!("8db55b05db86c0b1786ca49f095d76344c9e6056b2f02701a7e7f3c20aabfd913ebbe148dd17c56551a52952371071a6c604b3f3abe8f2c8fa742158ea6dd7d4")[..],
|
||||
&array_bytes::hex2bytes_unchecked("8db55b05db86c0b1786ca49f095d76344c9e6056b2f02701a7e7f3c20aabfd913ebbe148dd17c56551a52952371071a6c604b3f3abe8f2c8fa742158ea6dd7d4"),
|
||||
).unwrap(),
|
||||
);
|
||||
let message = b"";
|
||||
let signature = hex!("3dde91174bd9359027be59a428b8146513df80a2a3c7eda2194f64de04a69ab97b753169e94db6ffd50921a2668a48b94ca11e3d32c1ff19cfe88890aa7e8f3c00");
|
||||
let signature = array_bytes::hex2array_unchecked("3dde91174bd9359027be59a428b8146513df80a2a3c7eda2194f64de04a69ab97b753169e94db6ffd50921a2668a48b94ca11e3d32c1ff19cfe88890aa7e8f3c00");
|
||||
let signature = Signature::from_raw(signature);
|
||||
assert!(pair.sign(&message[..]) == signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
@@ -653,11 +656,11 @@ mod test {
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_full(
|
||||
&hex!("8db55b05db86c0b1786ca49f095d76344c9e6056b2f02701a7e7f3c20aabfd913ebbe148dd17c56551a52952371071a6c604b3f3abe8f2c8fa742158ea6dd7d4")[..],
|
||||
&array_bytes::hex2bytes_unchecked("8db55b05db86c0b1786ca49f095d76344c9e6056b2f02701a7e7f3c20aabfd913ebbe148dd17c56551a52952371071a6c604b3f3abe8f2c8fa742158ea6dd7d4"),
|
||||
).unwrap(),
|
||||
);
|
||||
let message = b"";
|
||||
let signature = hex!("3dde91174bd9359027be59a428b8146513df80a2a3c7eda2194f64de04a69ab97b753169e94db6ffd50921a2668a48b94ca11e3d32c1ff19cfe88890aa7e8f3c00");
|
||||
let signature = array_bytes::hex2array_unchecked("3dde91174bd9359027be59a428b8146513df80a2a3c7eda2194f64de04a69ab97b753169e94db6ffd50921a2668a48b94ca11e3d32c1ff19cfe88890aa7e8f3c00");
|
||||
let signature = Signature::from_raw(signature);
|
||||
assert!(pair.sign(&message[..]) == signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
@@ -680,10 +683,10 @@ mod test {
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_full(
|
||||
&hex!("5676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba995840f3de562156558efbfdac3f16af0065e5f66795f4dd8262a228ef8c6d813")[..],
|
||||
&array_bytes::hex2bytes_unchecked("5676109c54b9a16d271abeb4954316a40a32bcce023ac14c8e26e958aa68fba995840f3de562156558efbfdac3f16af0065e5f66795f4dd8262a228ef8c6d813"),
|
||||
).unwrap(),
|
||||
);
|
||||
let message = hex!("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let message = array_bytes::hex2bytes_unchecked("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let signature = pair.sign(&message[..]);
|
||||
println!("Correct signature: {:?}", signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
|
||||
@@ -228,7 +228,7 @@ impl Serialize for Signature {
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&hex::encode(self))
|
||||
serializer.serialize_str(&array_bytes::bytes2hex("", self.as_ref()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ impl<'de> Deserialize<'de> for Signature {
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let signature_hex = hex::decode(&String::deserialize(deserializer)?)
|
||||
let signature_hex = array_bytes::hex2bytes(&String::deserialize(deserializer)?)
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))?;
|
||||
Signature::try_from(signature_hex.as_ref())
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))
|
||||
@@ -551,7 +551,6 @@ impl CryptoType for Pair {
|
||||
mod test {
|
||||
use super::*;
|
||||
use crate::crypto::DEV_PHRASE;
|
||||
use hex_literal::hex;
|
||||
use serde_json;
|
||||
|
||||
#[test]
|
||||
@@ -566,31 +565,35 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn seed_and_derive_should_work() {
|
||||
let seed = hex!("9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60");
|
||||
let seed = array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
);
|
||||
let pair = Pair::from_seed(&seed);
|
||||
assert_eq!(pair.seed(), seed);
|
||||
let path = vec![DeriveJunction::Hard([0u8; 32])];
|
||||
let derived = pair.derive(path.into_iter(), None).ok().unwrap().0;
|
||||
assert_eq!(
|
||||
derived.seed(),
|
||||
hex!("ede3354e133f9c8e337ddd6ee5415ed4b4ffe5fc7d21e933f4930a3730e5b21c")
|
||||
array_bytes::hex2array_unchecked::<32>(
|
||||
"ede3354e133f9c8e337ddd6ee5415ed4b4ffe5fc7d21e933f4930a3730e5b21c"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_vector_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_raw(hex!(
|
||||
Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a"
|
||||
))
|
||||
);
|
||||
let message = b"";
|
||||
let signature = hex!("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b");
|
||||
let signature = array_bytes::hex2array_unchecked("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b");
|
||||
let signature = Signature::from_raw(signature);
|
||||
assert!(pair.sign(&message[..]) == signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
@@ -606,12 +609,12 @@ mod test {
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_raw(hex!(
|
||||
Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a"
|
||||
))
|
||||
);
|
||||
let message = b"";
|
||||
let signature = hex!("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b");
|
||||
let signature = array_bytes::hex2array_unchecked("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b");
|
||||
let signature = Signature::from_raw(signature);
|
||||
assert!(pair.sign(&message[..]) == signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
@@ -633,11 +636,11 @@ mod test {
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_raw(hex!(
|
||||
Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee"
|
||||
))
|
||||
);
|
||||
let message = hex!("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let message = array_bytes::hex2bytes_unchecked("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let signature = pair.sign(&message[..]);
|
||||
println!("Correct signature: {:?}", signature);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
|
||||
@@ -233,7 +233,7 @@ impl Serialize for Signature {
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&hex::encode(self))
|
||||
serializer.serialize_str(&array_bytes::bytes2hex("", self.as_ref()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ impl<'de> Deserialize<'de> for Signature {
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let signature_hex = hex::decode(&String::deserialize(deserializer)?)
|
||||
let signature_hex = array_bytes::hex2bytes(&String::deserialize(deserializer)?)
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))?;
|
||||
Signature::try_from(signature_hex.as_ref())
|
||||
.map_err(|e| de::Error::custom(format!("{:?}", e)))
|
||||
@@ -664,7 +664,6 @@ pub fn verify_batch(
|
||||
mod compatibility_test {
|
||||
use super::*;
|
||||
use crate::crypto::DEV_PHRASE;
|
||||
use hex_literal::hex;
|
||||
|
||||
// NOTE: tests to ensure addresses that are created with the `0.1.x` version (pre-audit) are
|
||||
// still functional.
|
||||
@@ -673,7 +672,9 @@ mod compatibility_test {
|
||||
fn derive_soft_known_pair_should_work() {
|
||||
let pair = Pair::from_string(&format!("{}/Alice", DEV_PHRASE), None).unwrap();
|
||||
// known address of DEV_PHRASE with 1.1
|
||||
let known = hex!("d6c71059dbbe9ad2b0ed3f289738b800836eb425544ce694825285b958ca755e");
|
||||
let known = array_bytes::hex2bytes_unchecked(
|
||||
"d6c71059dbbe9ad2b0ed3f289738b800836eb425544ce694825285b958ca755e",
|
||||
);
|
||||
assert_eq!(pair.public().to_raw_vec(), known);
|
||||
}
|
||||
|
||||
@@ -681,17 +682,19 @@ mod compatibility_test {
|
||||
fn derive_hard_known_pair_should_work() {
|
||||
let pair = Pair::from_string(&format!("{}//Alice", DEV_PHRASE), None).unwrap();
|
||||
// known address of DEV_PHRASE with 1.1
|
||||
let known = hex!("d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d");
|
||||
let known = array_bytes::hex2bytes_unchecked(
|
||||
"d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d",
|
||||
);
|
||||
assert_eq!(pair.public().to_raw_vec(), known);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn verify_known_old_message_should_work() {
|
||||
let public = Public::from_raw(hex!(
|
||||
"b4bfa1f7a5166695eb75299fd1c4c03ea212871c342f2c5dfea0902b2c246918"
|
||||
let public = Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"b4bfa1f7a5166695eb75299fd1c4c03ea212871c342f2c5dfea0902b2c246918",
|
||||
));
|
||||
// signature generated by the 1.1 version with the same ^^ public key.
|
||||
let signature = Signature::from_raw(hex!(
|
||||
let signature = Signature::from_raw(array_bytes::hex2array_unchecked(
|
||||
"5a9755f069939f45d96aaf125cf5ce7ba1db998686f87f2fb3cbdea922078741a73891ba265f70c31436e18a9acd14d189d73c12317ab6c313285cd938453202"
|
||||
));
|
||||
let message = b"Verifying that I am the owner of 5G9hQLdsKQswNPgB499DeA5PkFBbgkLPJWkkS6FAM6xGQ8xD. Hash: 221455a3\n";
|
||||
@@ -704,7 +707,6 @@ mod compatibility_test {
|
||||
mod test {
|
||||
use super::*;
|
||||
use crate::crypto::{Ss58Codec, DEV_ADDRESS, DEV_PHRASE};
|
||||
use hex_literal::hex;
|
||||
use serde_json;
|
||||
|
||||
#[test]
|
||||
@@ -745,8 +747,8 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn derive_soft_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let derive_1 = pair.derive(Some(DeriveJunction::soft(1)).into_iter(), None).unwrap().0;
|
||||
let derive_1b = pair.derive(Some(DeriveJunction::soft(1)).into_iter(), None).unwrap().0;
|
||||
@@ -757,8 +759,8 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn derive_hard_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let derive_1 = pair.derive(Some(DeriveJunction::hard(1)).into_iter(), None).unwrap().0;
|
||||
let derive_1b = pair.derive(Some(DeriveJunction::hard(1)).into_iter(), None).unwrap().0;
|
||||
@@ -769,8 +771,8 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn derive_soft_public_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let path = Some(DeriveJunction::soft(1));
|
||||
let pair_1 = pair.derive(path.into_iter(), None).unwrap().0;
|
||||
@@ -780,8 +782,8 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn derive_hard_public_should_fail() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let path = Some(DeriveJunction::hard(1));
|
||||
assert!(pair.public().derive(path.into_iter()).is_none());
|
||||
@@ -789,13 +791,13 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn sr_test_vector_should_work() {
|
||||
let pair = Pair::from_seed(&hex!(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60"
|
||||
let pair = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
));
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_raw(hex!(
|
||||
Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"44a996beb1eef7bdcab976ab6d2ca26104834164ecf28fb375600576fcc6eb0f"
|
||||
))
|
||||
);
|
||||
@@ -840,11 +842,11 @@ mod test {
|
||||
let public = pair.public();
|
||||
assert_eq!(
|
||||
public,
|
||||
Public::from_raw(hex!(
|
||||
Public::from_raw(array_bytes::hex2array_unchecked(
|
||||
"741c08a06f41c596608f6774259bd9043304adfa5d3eea62760bd9be97634d63"
|
||||
))
|
||||
);
|
||||
let message = hex!("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let message = array_bytes::hex2bytes_unchecked("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000200d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000");
|
||||
let signature = pair.sign(&message[..]);
|
||||
assert!(Pair::verify(&signature, &message[..], &public));
|
||||
}
|
||||
@@ -865,11 +867,11 @@ mod test {
|
||||
// schnorrkel-js.
|
||||
//
|
||||
// This is to make sure that the wasm library is compatible.
|
||||
let pk = Pair::from_seed(&hex!(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000"
|
||||
let pk = Pair::from_seed(&array_bytes::hex2array_unchecked(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
));
|
||||
let public = pk.public();
|
||||
let js_signature = Signature::from_raw(hex!(
|
||||
let js_signature = Signature::from_raw(array_bytes::hex2array_unchecked(
|
||||
"28a854d54903e056f89581c691c1f7d2ff39f8f896c9e9c22475e60902cc2b3547199e0e91fa32902028f2ca2355e8cdd16cfe19ba5e8b658c94aa80f3b81a00"
|
||||
));
|
||||
assert!(Pair::verify_deprecated(&js_signature, b"SUBSTRATE", &public));
|
||||
|
||||
Reference in New Issue
Block a user