feat: encrypt works
This commit is contained in:
40
src/jose.rs
40
src/jose.rs
@@ -2,20 +2,20 @@ use josekit::jwe;
|
||||
use josekit::jwe::alg::aeskw::AeskwJweAlgorithm;
|
||||
use josekit::jwe::alg::rsaes::RsaesJweAlgorithm;
|
||||
use josekit::jwe::JweHeader;
|
||||
use josekit::jwk::{Jwk, KeyPair};
|
||||
use josekit::jwk::alg::rsa::RsaKeyPair;
|
||||
use josekit::jwk::Jwk;
|
||||
use rust_util::XResult;
|
||||
|
||||
pub fn generate_rsa_key(bits: u32) -> XResult<RsaKeyPair> {
|
||||
Ok(RsaKeyPair::generate(bits)?)
|
||||
}
|
||||
|
||||
pub fn serialize_jwe_rsa(payload: &[u8], jwk: &Jwk) -> XResult<String> {
|
||||
let mut header = JweHeader::new();
|
||||
header.set_content_encryption("A256GCM");
|
||||
let encrypter = RsaesJweAlgorithm::RsaOaep.encrypter_from_jwk(&jwk)?;
|
||||
Ok(jwe::serialize_compact(payload, &header, &encrypter)?)
|
||||
}
|
||||
// pub fn serialize_jwe_rsa(payload: &[u8], jwk: &Jwk) -> XResult<String> {
|
||||
// let mut header = JweHeader::new();
|
||||
// header.set_content_encryption("A256GCM");
|
||||
// let encrypter = RsaesJweAlgorithm::RsaOaep.encrypter_from_jwk(&jwk)?;
|
||||
// Ok(jwe::serialize_compact(payload, &header, &encrypter)?)
|
||||
// }
|
||||
|
||||
pub fn deserialize_jwe_rsa(jwe: &str, jwk: &Jwk) -> XResult<(Vec<u8>, JweHeader)> {
|
||||
let decrypter = RsaesJweAlgorithm::RsaOaep.decrypter_from_jwk(jwk)?;
|
||||
@@ -30,28 +30,6 @@ pub fn serialize_jwe_aes(payload: &[u8], key: &[u8]) -> XResult<String> {
|
||||
}
|
||||
|
||||
pub fn deserialize_jwe_aes(jwe: &str, key: &[u8]) -> XResult<(Vec<u8>, JweHeader)> {
|
||||
let decrypter = AeskwJweAlgorithm::A192kw.decrypter_from_bytes(key)?;
|
||||
Ok(jwe::deserialize_json(jwe, &decrypter)?)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a() {
|
||||
let k = generate_rsa_key(4096).unwrap();
|
||||
let k = k.to_jwk_key_pair();
|
||||
let kk = k.to_public_key().unwrap();
|
||||
|
||||
println!("{:?}", k);
|
||||
println!("{:?}", kk);
|
||||
|
||||
let mut header = JweHeader::new();
|
||||
header.set_content_encryption("A256GCM");
|
||||
let encrypter = RsaesJweAlgorithm::RsaOaep.encrypter_from_jwk(&kk).unwrap();
|
||||
let payload = "helloworld";
|
||||
let r = jwe::serialize_compact(payload.as_bytes(), &header, &encrypter);
|
||||
|
||||
println!("{:?}", r);
|
||||
|
||||
let k = "abcdefghijklmnopqrstuvwxyz123456";
|
||||
let t = serialize_jwe_aes(payload.as_bytes(), k.as_bytes());
|
||||
println!("{:?}", t);
|
||||
let decrypter = AeskwJweAlgorithm::A256kw.decrypter_from_bytes(key)?;
|
||||
Ok(jwe::deserialize_compact(jwe, &decrypter)?)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user