summaryrefslogtreecommitdiff
path: root/extensions/crypto/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/crypto/lib.rs')
-rw-r--r--extensions/crypto/lib.rs27
1 files changed, 14 insertions, 13 deletions
diff --git a/extensions/crypto/lib.rs b/extensions/crypto/lib.rs
index d1908120d..5989b121a 100644
--- a/extensions/crypto/lib.rs
+++ b/extensions/crypto/lib.rs
@@ -32,11 +32,12 @@ use ring::rand::SecureRandom;
use ring::signature::EcdsaKeyPair;
use ring::signature::EcdsaSigningAlgorithm;
use rsa::padding::PaddingScheme;
+use rsa::pkcs8::FromPrivateKey;
+use rsa::pkcs8::ToPrivateKey;
use rsa::BigUint;
-use rsa::PrivateKeyEncoding;
use rsa::PublicKey;
-use rsa::RSAPrivateKey;
-use rsa::RSAPublicKey;
+use rsa::RsaPrivateKey;
+use rsa::RsaPublicKey;
use sha1::Sha1;
use sha2::Digest;
use sha2::Sha256;
@@ -141,9 +142,9 @@ pub async fn op_crypto_generate_key(
let mut rng = OsRng;
- let private_key: RSAPrivateKey = tokio::task::spawn_blocking(
- move || -> Result<RSAPrivateKey, rsa::errors::Error> {
- RSAPrivateKey::new_with_exp(
+ let private_key: RsaPrivateKey = tokio::task::spawn_blocking(
+ move || -> Result<RsaPrivateKey, rsa::errors::Error> {
+ RsaPrivateKey::new_with_exp(
&mut rng,
modulus_length as usize,
&exponent,
@@ -154,7 +155,7 @@ pub async fn op_crypto_generate_key(
.unwrap()
.map_err(|e| custom_error("DOMExceptionOperationError", e.to_string()))?;
- private_key.to_pkcs8()?
+ private_key.to_pkcs8_der()?.as_ref().to_vec()
}
Algorithm::Ecdsa => {
let curve: &EcdsaSigningAlgorithm =
@@ -248,7 +249,7 @@ pub async fn op_crypto_sign_key(
let signature = match algorithm {
Algorithm::RsassaPkcs1v15 => {
- let private_key = RSAPrivateKey::from_pkcs8(&*args.key.data)?;
+ let private_key = RsaPrivateKey::from_pkcs8_der(&*args.key.data)?;
let (padding, hashed) = match args
.hash
.ok_or_else(|| type_error("Missing argument hash".to_string()))?
@@ -298,7 +299,7 @@ pub async fn op_crypto_sign_key(
private_key.sign(padding, &hashed)?
}
Algorithm::RsaPss => {
- let private_key = RSAPrivateKey::from_pkcs8(&*args.key.data)?;
+ let private_key = RsaPrivateKey::from_pkcs8_der(&*args.key.data)?;
let salt_len = args
.salt_length
@@ -402,8 +403,8 @@ pub async fn op_crypto_verify_key(
let verification = match algorithm {
Algorithm::RsassaPkcs1v15 => {
- let public_key: RSAPublicKey =
- RSAPrivateKey::from_pkcs8(&*args.key.data)?.to_public_key();
+ let public_key: RsaPublicKey =
+ RsaPrivateKey::from_pkcs8_der(&*args.key.data)?.to_public_key();
let (padding, hashed) = match args
.hash
.ok_or_else(|| type_error("Missing argument hash".to_string()))?
@@ -459,8 +460,8 @@ pub async fn op_crypto_verify_key(
.salt_length
.ok_or_else(|| type_error("Missing argument saltLength".to_string()))?
as usize;
- let public_key: RSAPublicKey =
- RSAPrivateKey::from_pkcs8(&*args.key.data)?.to_public_key();
+ let public_key: RsaPublicKey =
+ RsaPrivateKey::from_pkcs8_der(&*args.key.data)?.to_public_key();
let rng = OsRng;
let (padding, hashed) = match args