polymorph_webcrypto_guest/
rsassa_pkcs1_v15.rs1use crate::{bindings, Error, VerifyingKey};
5#[cfg(feature = "rsa-sign")]
6use crate::{SigningKey, SigningKeyOptions};
7
8pub use crate::bindings::rsassa_pkcs1_v15_verify::RsaVariant;
9
10#[cfg(feature = "rsa-sign")]
11pub use crate::bindings::rsassa_pkcs1_v15_sign::RsaModulus;
12
13pub async fn import_verifying_key_spki(
17 variant: RsaVariant,
18 spki: impl Into<Vec<u8>>,
19) -> Result<VerifyingKey, Error> {
20 Ok(VerifyingKey::from_raw(
21 bindings::rsassa_pkcs1_v15_verify::import_verifying_key_spki(variant, spki.into()).await?,
22 ))
23}
24
25pub async fn import_verifying_key_jwk(
30 variant: RsaVariant,
31 jwk: impl Into<String>,
32) -> Result<VerifyingKey, Error> {
33 Ok(VerifyingKey::from_raw(
34 bindings::rsassa_pkcs1_v15_verify::import_verifying_key_jwk(variant, jwk.into()).await?,
35 ))
36}
37
38#[cfg(feature = "rsa-sign")]
42pub async fn generate_key(
43 variant: RsaVariant,
44 modulus: RsaModulus,
45 options: SigningKeyOptions,
46) -> Result<(SigningKey, VerifyingKey), Error> {
47 let (signing, verifying) =
48 bindings::rsassa_pkcs1_v15_sign::generate_key(variant, modulus, options.lower()).await?;
49 Ok((
50 SigningKey::from_raw(signing),
51 VerifyingKey::from_raw(verifying),
52 ))
53}
54
55#[cfg(feature = "rsa-sign")]
62pub async fn import_signing_key_pkcs8(
63 variant: RsaVariant,
64 pkcs8: impl Into<Vec<u8>>,
65 options: SigningKeyOptions,
66) -> Result<SigningKey, Error> {
67 Ok(SigningKey::from_raw(
68 bindings::rsassa_pkcs1_v15_sign::import_signing_key_pkcs8(
69 variant,
70 pkcs8.into(),
71 options.lower(),
72 )
73 .await?,
74 ))
75}
76
77#[cfg(feature = "rsa-sign")]
83pub async fn import_signing_key_jwk(
84 variant: RsaVariant,
85 jwk: impl Into<String>,
86 options: SigningKeyOptions,
87) -> Result<SigningKey, Error> {
88 Ok(SigningKey::from_raw(
89 bindings::rsassa_pkcs1_v15_sign::import_signing_key_jwk(
90 variant,
91 jwk.into(),
92 options.lower(),
93 )
94 .await?,
95 ))
96}