Use constants from base64.
This commit is contained in:
parent
302e401a80
commit
03fcf7281d
@ -14,7 +14,6 @@ version = "0.4.2"
|
||||
|
||||
[dependencies]
|
||||
base64 = "0.10.1"
|
||||
lazy_static = "1.3.0"
|
||||
ring = "0.14.6"
|
||||
serde_json = "1.0.39"
|
||||
untrusted = "0.6.2"
|
||||
|
43
src/lib.rs
43
src/lib.rs
@ -148,8 +148,7 @@ use std::{
|
||||
fmt::{Debug, Display, Formatter, Result as FmtResult},
|
||||
};
|
||||
|
||||
use base64::{decode_config, encode_config, CharacterSet, Config};
|
||||
use lazy_static::lazy_static;
|
||||
use base64::{decode_config, encode_config, STANDARD_NO_PAD};
|
||||
use ring::signature::{verify, Ed25519KeyPair as RingEd25519KeyPair, ED25519};
|
||||
use serde::{
|
||||
de::{Error as SerdeError, MapAccess, Unexpected, Visitor},
|
||||
@ -162,10 +161,6 @@ use url::Url;
|
||||
|
||||
pub use url::Host;
|
||||
|
||||
lazy_static! {
|
||||
static ref BASE64_CONFIG: Config = Config::new(CharacterSet::Standard, false);
|
||||
}
|
||||
|
||||
/// Signs an arbitrary JSON object.
|
||||
///
|
||||
/// # Parameters
|
||||
@ -501,8 +496,10 @@ impl Signature {
|
||||
}
|
||||
|
||||
/// A Base64 encoding of the signature.
|
||||
///
|
||||
/// Uses the standard character set with no padding.
|
||||
pub fn base64(&self) -> String {
|
||||
encode_config(self.signature.as_slice(), *BASE64_CONFIG)
|
||||
encode_config(self.signature.as_slice(), STANDARD_NO_PAD)
|
||||
}
|
||||
|
||||
/// The key identifier, a string containing the signature algorithm and the key "version"
|
||||
@ -727,7 +724,7 @@ impl<'de> Visitor<'de> for SignatureSetVisitor {
|
||||
}
|
||||
})?;
|
||||
|
||||
let signature_bytes: Vec<u8> = match decode_config(&value, *BASE64_CONFIG) {
|
||||
let signature_bytes: Vec<u8> = match decode_config(&value, STANDARD_NO_PAD) {
|
||||
Ok(raw) => raw,
|
||||
Err(error) => return Err(M::Error::custom(error.description())),
|
||||
};
|
||||
@ -757,13 +754,13 @@ impl Display for Algorithm {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use base64::decode_config;
|
||||
use base64::{decode_config, STANDARD_NO_PAD};
|
||||
use serde::Serialize;
|
||||
use serde_json::{from_str, to_string, to_value};
|
||||
|
||||
use super::{
|
||||
sign_json, verify_json, Ed25519KeyPair, Ed25519Verifier, KeyPair, Signature, SignatureSet,
|
||||
Signatures, BASE64_CONFIG,
|
||||
Signatures,
|
||||
};
|
||||
|
||||
const PUBLIC_KEY: &str = "XGX0JRS2Af3be3knz2fBiRbApjm2Dh61gXDJA8kcJNI";
|
||||
@ -777,10 +774,10 @@ mod test {
|
||||
#[test]
|
||||
fn sign_empty_json() {
|
||||
let key_pair = Ed25519KeyPair::new(
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
decode_config(&PRIVATE_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PRIVATE_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
"1".to_string(),
|
||||
@ -798,7 +795,7 @@ mod test {
|
||||
fn verify_empty_json() {
|
||||
let signature = Signature::new(
|
||||
"ed25519:1",
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, *BASE64_CONFIG)
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
)
|
||||
@ -810,7 +807,7 @@ mod test {
|
||||
|
||||
assert!(verify_json(
|
||||
&verifier,
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
&signature,
|
||||
@ -828,7 +825,7 @@ mod test {
|
||||
|
||||
let signature = Signature::new(
|
||||
"ed25519:1",
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, *BASE64_CONFIG)
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
)
|
||||
@ -865,10 +862,10 @@ mod test {
|
||||
}
|
||||
|
||||
let key_pair = Ed25519KeyPair::new(
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
decode_config(&PRIVATE_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PRIVATE_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
"1".to_string(),
|
||||
@ -900,7 +897,7 @@ mod test {
|
||||
fn verify_minimal_json() {
|
||||
let signature = Signature::new(
|
||||
"ed25519:1",
|
||||
decode_config(&MINIMAL_JSON_SIGNATURE, *BASE64_CONFIG)
|
||||
decode_config(&MINIMAL_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
)
|
||||
@ -914,7 +911,7 @@ mod test {
|
||||
|
||||
assert!(verify_json(
|
||||
&verifier,
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
&signature,
|
||||
@ -928,7 +925,7 @@ mod test {
|
||||
|
||||
assert!(verify_json(
|
||||
&verifier,
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
&signature,
|
||||
@ -948,7 +945,7 @@ mod test {
|
||||
|
||||
let signature = Signature::new(
|
||||
"ed25519:1",
|
||||
decode_config(&MINIMAL_JSON_SIGNATURE, *BASE64_CONFIG)
|
||||
decode_config(&MINIMAL_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
)
|
||||
@ -977,7 +974,7 @@ mod test {
|
||||
fn fail_verify() {
|
||||
let signature = Signature::new(
|
||||
"ed25519:1",
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, *BASE64_CONFIG)
|
||||
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
)
|
||||
@ -989,7 +986,7 @@ mod test {
|
||||
|
||||
assert!(verify_json(
|
||||
&verifier,
|
||||
decode_config(&PUBLIC_KEY, *BASE64_CONFIG)
|
||||
decode_config(&PUBLIC_KEY, STANDARD_NO_PAD)
|
||||
.unwrap()
|
||||
.as_slice(),
|
||||
&signature,
|
||||
|
Loading…
x
Reference in New Issue
Block a user