feat: rsa jwk
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
mod jose;
|
mod jose;
|
||||||
|
|
||||||
|
use crate::jose::{deserialize_jwe_aes, serialize_jwe_aes_2};
|
||||||
|
use base64::engine::general_purpose::STANDARD;
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use jose_jwk::jose_b64::serde::Bytes;
|
use jose_jwk::{Jwk, Key, Rsa};
|
||||||
use jose_jwk::Rsa;
|
|
||||||
use rand::random;
|
use rand::random;
|
||||||
use rand::rngs::ThreadRng;
|
use rand::rngs::ThreadRng;
|
||||||
|
use rsa::traits::{PrivateKeyParts, PublicKeyParts};
|
||||||
use rsa::Pkcs1v15Encrypt;
|
use rsa::Pkcs1v15Encrypt;
|
||||||
use serde_json::Value;
|
|
||||||
use crate::jose::{deserialize_jwe_aes, serialize_jwe_aes_2};
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let key: [u8; 32] = random();
|
let key: [u8; 32] = random();
|
||||||
@@ -19,6 +19,24 @@ fn main() {
|
|||||||
let (d, h) = deserialize_jwe_aes(&e, &key).unwrap();
|
let (d, h) = deserialize_jwe_aes(&e, &key).unwrap();
|
||||||
println!("{:?}", d);
|
println!("{:?}", d);
|
||||||
println!("{:?}", h);
|
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() {
|
fn main2() {
|
||||||
@@ -39,27 +57,12 @@ fn main2() {
|
|||||||
let rsa_jwk = rsa_jwk.replace("\n", "");
|
let rsa_jwk = rsa_jwk.replace("\n", "");
|
||||||
|
|
||||||
println!("{}", rsa_jwk);
|
println!("{}", rsa_jwk);
|
||||||
let val: Value = serde_json::from_str(&rsa_jwk).unwrap();
|
let rsa: Rsa = 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_public_key = rsa::RsaPublicKey::try_from(rsa).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 mut r = ThreadRng::default();
|
||||||
let enc = rsa_public_key.encrypt(&mut r, Pkcs1v15Encrypt, b"").unwrap();
|
let enc = rsa_public_key.encrypt(&mut r, Pkcs1v15Encrypt, b"aaaaaaaa").unwrap();
|
||||||
println!("{}", base64::engine::general_purpose::STANDARD.encode(&enc));
|
println!("{}", STANDARD.encode(&enc));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user