feat: rsa jwk
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
mod jose;
|
||||
|
||||
use crate::jose::{deserialize_jwe_aes, serialize_jwe_aes_2};
|
||||
use base64::engine::general_purpose::STANDARD;
|
||||
use base64::Engine;
|
||||
use jose_jwk::jose_b64::serde::Bytes;
|
||||
use jose_jwk::Rsa;
|
||||
use jose_jwk::{Jwk, Key, Rsa};
|
||||
use rand::random;
|
||||
use rand::rngs::ThreadRng;
|
||||
use rsa::traits::{PrivateKeyParts, PublicKeyParts};
|
||||
use rsa::Pkcs1v15Encrypt;
|
||||
use serde_json::Value;
|
||||
use crate::jose::{deserialize_jwe_aes, serialize_jwe_aes_2};
|
||||
|
||||
fn main() {
|
||||
let key: [u8; 32] = random();
|
||||
@@ -19,6 +19,24 @@ fn main() {
|
||||
let (d, h) = deserialize_jwe_aes(&e, &key).unwrap();
|
||||
println!("{:?}", d);
|
||||
println!("{:?}", h);
|
||||
|
||||
let rsa_key = jose::generate_rsa_key_2(2048).unwrap();
|
||||
let rsa_public_key = rsa_key.as_ref();
|
||||
let public_rsa: Rsa = rsa_public_key.into();
|
||||
// let rsa: Rsa = rsa_key.into();
|
||||
// println!("{:?}", public_rsa);
|
||||
// println!("{:?}", rsa);
|
||||
|
||||
let jwk = Jwk {
|
||||
key: Key::Rsa(public_rsa),
|
||||
prm: Default::default(),
|
||||
};
|
||||
println!("{}", serde_json::to_string(&jwk).unwrap());
|
||||
|
||||
// let rsa_key_2: RsaPrivateKey = rsa.try_into().unwrap();
|
||||
// println!("{:?}", rsa_key_2);
|
||||
|
||||
main2();
|
||||
}
|
||||
|
||||
fn main2() {
|
||||
@@ -39,27 +57,12 @@ fn main2() {
|
||||
let rsa_jwk = rsa_jwk.replace("\n", "");
|
||||
|
||||
println!("{}", rsa_jwk);
|
||||
let val: Value = serde_json::from_str(&rsa_jwk).unwrap();
|
||||
|
||||
let rsa = match val {
|
||||
Value::Object(rsa_pub_key) => {
|
||||
let e = rsa_pub_key.get("e").unwrap().as_str().unwrap();
|
||||
let n = rsa_pub_key.get("n").unwrap().as_str().unwrap();
|
||||
println!("{}", e);
|
||||
println!("{}", n);
|
||||
Rsa {
|
||||
n: Bytes::from(base64::engine::general_purpose::URL_SAFE_NO_PAD.decode(n).unwrap()),
|
||||
e: Bytes::from(base64::engine::general_purpose::URL_SAFE_NO_PAD.decode(e).unwrap()),
|
||||
prv: None,
|
||||
}
|
||||
}
|
||||
_ => panic!("Unknown value"),
|
||||
};
|
||||
let rsa: Rsa = serde_json::from_str(&rsa_jwk).unwrap();
|
||||
|
||||
let rsa_public_key = rsa::RsaPublicKey::try_from(rsa).unwrap();
|
||||
println!("{:?}", rsa_public_key);
|
||||
// println!("{:?}", rsa_public_key);
|
||||
|
||||
let mut r = ThreadRng::default();
|
||||
let enc = rsa_public_key.encrypt(&mut r, Pkcs1v15Encrypt, b"").unwrap();
|
||||
println!("{}", base64::engine::general_purpose::STANDARD.encode(&enc));
|
||||
let enc = rsa_public_key.encrypt(&mut r, Pkcs1v15Encrypt, b"aaaaaaaa").unwrap();
|
||||
println!("{}", STANDARD.encode(&enc));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user