#jsonwebtoken #jsonwebkey

jsonwebkey-convert

Convert an RSA public key between Json Web Key and DER/PEM format

3 releases (breaking)

0.3.0 Jan 9, 2021
0.2.0 Jan 3, 2021
0.1.0 Jul 25, 2020

#7 in #jsonwebtoken

Apache-2.0

23KB
546 lines

jsonwebkey-convert

Convert an RSA public key between Json Web Key and DER/PEM format.

Convert PEM to JWK

use jsonwebkey_convert::*;
use jsonwebkey_convert::der::FromPem;

fn main() -> Result<(), Error> {
    let pem_data = include_str!("../testfiles/test1.pem");
    let rsa_jwk = RSAPublicKey::from_pem(pem_data)?;
    let jwk_byte_vec = serde_json::to_string(&rsa_jwk);
    Ok(())
}

Convert JWK to PEM

use jsonwebkey_convert::*;
use jsonwebkey_convert::der::ToPem;

fn main() -> Result<(), Error> {
    let jwk_data = include_str!("../testfiles/test1.json");
    let rsa_jwk: RSAPublicKey = jwk_data.parse()?;
    let pem_data = rsa_jwk.to_pem()?;
    Ok(())
}

lib.rs:

jsonwebkey-convert

Handle Json Web Key without nightly rust compiler.

Load JSON Web Key Set

use jsonwebkey_convert::JsonWebKeySet;
# use jsonwebkey_convert::Error;

# fn main() -> Result<(), Error> {
# let jwks_str = include_str!("../testfiles/example-public-key.json");
let jwks: JsonWebKeySet = jwks_str.parse()?;
# Ok(())
# }

Convert PEM to JWK

pem_support feature is required.

use jsonwebkey_convert::*;
use jsonwebkey_convert::der::FromPem;

# fn main() -> Result<(), Error> {
# let pem_data = include_str!("../testfiles/test1.pem");
let rsa_jwk = RSAPublicKey::from_pem(pem_data)?;
let jwk_byte_vec = serde_json::to_string(&rsa_jwk);
# Ok(())
# }

Convert JWK to PEM

pem_support feature is required.

use jsonwebkey_convert::*;
use jsonwebkey_convert::der::ToPem;

# fn main() -> Result<(), Error> {
# let jwk_data = include_str!("../testfiles/test1.json");
let rsa_jwk: RSAPublicKey = jwk_data.parse()?;
let pem_data = rsa_jwk.to_pem()?;
# Ok(())
# }

Dependencies

~1.6–4.5MB
~108K SLoC