What's happening?
I'm trying to decrypt a string encrypted with RSA-PKCS1, and i'm running into this same nondescript error.
[Error: Failed Cipher Operation - privateDecrypt]
I've narrowed it down to two possibilities:
Incorrect keypair
data formatted incorrectly
My current process being halted is:
- generate RSA keypair via OpenSSL library on rust server ✅
- encrypt data with public key and base58 encode bytes ✅
- decode data on client ✅
- decrypt data on client with cached private key from server ❌
is there any reason to assume the server is generating an improper keypair? I have verified the key itself is correct.
Reproducible Code
// handler.rs
for member in members {
let mut user = users::get_user(&member)?;
let pemkey = match base58_public_key_to_pem(&user.id) {
Ok(pemkey) => {
println!("{}", pemkey);
pemkey
},
Err(e) => {
println!("Key conversion error: {:?}", e);
return Err(warp::reject::custom(InternalError::Unknown));
}
};
let key = match encrypt_symetric_key(&pemkey, &key) {
Ok(key) => key,
Err(e) => {
println!("Encryption error: {:?}", e);
return Err(warp::reject::custom(InternalError::Unknown));
}
};
let _ = chats::add_member(
&ctx,
user.clone(),
key
)?;
user.chats.push(
bs58::encode(encrypt_data(
&base58_public_key_to_pem(&user.id).expect("Failed to convert key"),
ctx.id.as_bytes()
).expect("Failed to encrypt chat id")).into_string()
);
let _ = users::update_user(user)?;
}
// rsa.ts
export function decryptMessageWithPrivateKey(encryptedMessage: Buffer, privateKeyPem: string): string {
const decryptedMessage = QuickCrypto.privateDecrypt(
{
key: privateKeyPem,
padding: QuickCrypto.constants.RSA_PKCS1_PADDING,
},
encryptedMessage
);
return decryptedMessage.toString('utf8');
}
// webserver.ts
this.retrieveData({ctx: decryptMessageWithPrivateKey(Buffer.from(base58.decode(chat)), cache.user.private_key)}).then((r: ChatResponse) => {
this.cache.chats = [...this.cache.chats, {
id: chat,
...r,
messages: [],
key: deriveChatSymKeyFromEncryptedKeys(r.symetric_keys, cache.user.private_key)
}]
})
Relevant log output
ERROR [Error: Failed Cipher Operation - privateDecrypt]
Device
iPhone 16 Pro iOS 18
QuickCrypto Version
0.7.5
Can you reproduce this issue in the QuickCrypto Example app?
1.0.0-beta3 does not implement privateDecrypt
Additional information
What's happening?
I'm trying to decrypt a string encrypted with RSA-PKCS1, and i'm running into this same nondescript error.
I've narrowed it down to two possibilities:
Incorrect keypair
data formatted incorrectly
My current process being halted is:
is there any reason to assume the server is generating an improper keypair? I have verified the key itself is correct.
Reproducible Code
Relevant log output
Device
iPhone 16 Pro iOS 18
QuickCrypto Version
0.7.5
Can you reproduce this issue in the QuickCrypto Example app?
1.0.0-beta3 does not implement privateDecrypt
Additional information