Move tests
This commit is contained in:
parent
7bc97d63ca
commit
9782878160
2 changed files with 70 additions and 54 deletions
70
src/crypt.rs
70
src/crypt.rs
|
@ -45,3 +45,73 @@ pub fn verify_rsa(signature: &str, data: &str, key: &[u8], digest: MessageDigest
|
||||||
verifier.update(data.as_bytes()).unwrap();
|
verifier.update(data.as_bytes()).unwrap();
|
||||||
verifier.finish(&signature_bytes).unwrap()
|
verifier.finish(&signature_bytes).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::{
|
||||||
|
sign,
|
||||||
|
sign_rsa,
|
||||||
|
verify,
|
||||||
|
verify_rsa
|
||||||
|
};
|
||||||
|
use std::io::{Error, Read};
|
||||||
|
use std::fs::File;
|
||||||
|
use openssl::hash::MessageDigest;
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
struct EmptyClaim { }
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn sign_data() {
|
||||||
|
let header = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
|
||||||
|
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
||||||
|
let real_sig = "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=";
|
||||||
|
let data = format!("{}.{}", header, claims);
|
||||||
|
|
||||||
|
let sig = sign(&*data, "secret".as_bytes(), MessageDigest::sha256());
|
||||||
|
|
||||||
|
assert_eq!(sig, real_sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn sign_data_rsa() {
|
||||||
|
let header = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9";
|
||||||
|
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
||||||
|
let real_sig = "nXdpIkFQYZXZ0VlJjHmAc5_aewHCCJpT5jP1fpexUCF_9m3NxlC7uYNXAl6NKno520oh9wVT4VV_vmPeEin7BnnoIJNPcImWcUzkYpLTrDBntiF9HCuqFaniuEVzlf8dVlRJgo8QxhmUZEjyDFjPZXZxPlPV1LD6hrtItxMKZbh1qoNY3OL7Mwo-WuSRQ0mmKj-_y3weAmx_9EaTLY639uD8-o5iZxIIf85U4e55Wdp-C9FJ4RxyHpjgoG8p87IbChfleSdWcZL3NZuxjRCHVWgS1uYG0I-LqBWpWyXnJ1zk6-w4tfxOYpZFMOIyq4tY2mxJQ78Kvcu8bTO7UdI7iA==";
|
||||||
|
let data = format!("{}.{}", header, claims);
|
||||||
|
|
||||||
|
let key = load_key("./examples/privateKey.pem").unwrap();
|
||||||
|
|
||||||
|
let sig = sign_rsa(&*data, key.as_bytes(), MessageDigest::sha256());
|
||||||
|
|
||||||
|
assert_eq!(sig.trim(), real_sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn verify_data() {
|
||||||
|
let header = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
|
||||||
|
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
||||||
|
let target = "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
|
||||||
|
let data = format!("{}.{}", header, claims);
|
||||||
|
|
||||||
|
assert!(verify(target, &*data, "secret".as_bytes(), MessageDigest::sha256()));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn verify_data_rsa() {
|
||||||
|
let header = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9";
|
||||||
|
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
||||||
|
let real_sig = "nXdpIkFQYZXZ0VlJjHmAc5_aewHCCJpT5jP1fpexUCF_9m3NxlC7uYNXAl6NKno520oh9wVT4VV_vmPeEin7BnnoIJNPcImWcUzkYpLTrDBntiF9HCuqFaniuEVzlf8dVlRJgo8QxhmUZEjyDFjPZXZxPlPV1LD6hrtItxMKZbh1qoNY3OL7Mwo-WuSRQ0mmKj-_y3weAmx_9EaTLY639uD8-o5iZxIIf85U4e55Wdp-C9FJ4RxyHpjgoG8p87IbChfleSdWcZL3NZuxjRCHVWgS1uYG0I-LqBWpWyXnJ1zk6-w4tfxOYpZFMOIyq4tY2mxJQ78Kvcu8bTO7UdI7iA";
|
||||||
|
let data = format!("{}.{}", header, claims);
|
||||||
|
|
||||||
|
let key = load_key("./examples/publicKey.pub").unwrap();
|
||||||
|
assert!(verify_rsa(&real_sig, &*data, key.as_bytes(), MessageDigest::sha256()));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_key(keypath: &str) -> Result<String, Error> {
|
||||||
|
let mut key_file = try!(File::open(keypath));
|
||||||
|
let mut key = String::new();
|
||||||
|
try!(key_file.read_to_string(&mut key));
|
||||||
|
Ok(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
54
src/lib.rs
54
src/lib.rs
|
@ -154,70 +154,16 @@ impl<H, C> PartialEq for Token<H, C>
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crypt::{
|
|
||||||
sign,
|
|
||||||
sign_rsa,
|
|
||||||
verify,
|
|
||||||
verify_rsa
|
|
||||||
};
|
|
||||||
use Claims;
|
use Claims;
|
||||||
use Token;
|
use Token;
|
||||||
use header::Algorithm::{HS256,RS512};
|
use header::Algorithm::{HS256,RS512};
|
||||||
use header::DefaultHeader;
|
use header::DefaultHeader;
|
||||||
use std::io::{Error, Read};
|
use std::io::{Error, Read};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use openssl::hash::MessageDigest;
|
|
||||||
|
|
||||||
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
struct EmptyClaim { }
|
struct EmptyClaim { }
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn sign_data() {
|
|
||||||
let header = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
|
|
||||||
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
|
||||||
let real_sig = "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=";
|
|
||||||
let data = format!("{}.{}", header, claims);
|
|
||||||
|
|
||||||
let sig = sign(&*data, "secret".as_bytes(), MessageDigest::sha256());
|
|
||||||
|
|
||||||
assert_eq!(sig, real_sig);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn sign_data_rsa() {
|
|
||||||
let header = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9";
|
|
||||||
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
|
||||||
let real_sig = "nXdpIkFQYZXZ0VlJjHmAc5_aewHCCJpT5jP1fpexUCF_9m3NxlC7uYNXAl6NKno520oh9wVT4VV_vmPeEin7BnnoIJNPcImWcUzkYpLTrDBntiF9HCuqFaniuEVzlf8dVlRJgo8QxhmUZEjyDFjPZXZxPlPV1LD6hrtItxMKZbh1qoNY3OL7Mwo-WuSRQ0mmKj-_y3weAmx_9EaTLY639uD8-o5iZxIIf85U4e55Wdp-C9FJ4RxyHpjgoG8p87IbChfleSdWcZL3NZuxjRCHVWgS1uYG0I-LqBWpWyXnJ1zk6-w4tfxOYpZFMOIyq4tY2mxJQ78Kvcu8bTO7UdI7iA==";
|
|
||||||
let data = format!("{}.{}", header, claims);
|
|
||||||
|
|
||||||
let key = load_key("./examples/privateKey.pem").unwrap();
|
|
||||||
|
|
||||||
let sig = sign_rsa(&*data, key.as_bytes(), MessageDigest::sha256());
|
|
||||||
|
|
||||||
assert_eq!(sig.trim(), real_sig);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn verify_data() {
|
|
||||||
let header = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
|
|
||||||
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
|
||||||
let target = "TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
|
|
||||||
let data = format!("{}.{}", header, claims);
|
|
||||||
|
|
||||||
assert!(verify(target, &*data, "secret".as_bytes(), MessageDigest::sha256()));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn verify_data_rsa() {
|
|
||||||
let header = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9";
|
|
||||||
let claims = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
|
|
||||||
let real_sig = "nXdpIkFQYZXZ0VlJjHmAc5_aewHCCJpT5jP1fpexUCF_9m3NxlC7uYNXAl6NKno520oh9wVT4VV_vmPeEin7BnnoIJNPcImWcUzkYpLTrDBntiF9HCuqFaniuEVzlf8dVlRJgo8QxhmUZEjyDFjPZXZxPlPV1LD6hrtItxMKZbh1qoNY3OL7Mwo-WuSRQ0mmKj-_y3weAmx_9EaTLY639uD8-o5iZxIIf85U4e55Wdp-C9FJ4RxyHpjgoG8p87IbChfleSdWcZL3NZuxjRCHVWgS1uYG0I-LqBWpWyXnJ1zk6-w4tfxOYpZFMOIyq4tY2mxJQ78Kvcu8bTO7UdI7iA";
|
|
||||||
let data = format!("{}.{}", header, claims);
|
|
||||||
|
|
||||||
let key = load_key("./examples/publicKey.pub").unwrap();
|
|
||||||
assert!(verify_rsa(&real_sig, &*data, key.as_bytes(), MessageDigest::sha256()));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
pub fn raw_data() {
|
pub fn raw_data() {
|
||||||
let raw = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
|
let raw = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
|
||||||
|
|
Loading…
Reference in a new issue