@fruitsjs/crypto
Version:
Cryptographic functions for building Fruits Eco-Blockchain apps.
30 lines (25 loc) • 1.16 kB
text/typescript
import {Converter} from './converter';
import {decryptData} from './decryptData';
import {EncryptedMessage} from './typings/encryptedMessage';
/**
* Decrypts an encrypted Message
* @param encryptedMessage The encrypted message
* @param senderPublicKeyHex The senders public key in hex format
* @param recipientPrivateKeyHex The recipients private (agreement) key in hex format
* @return The original message
* @module crypto
*/
export function decryptMessage(
encryptedMessage: EncryptedMessage,
senderPublicKeyHex: string,
recipientPrivateKeyHex: string): string {
if (!encryptedMessage.isText) {
throw new Error('Encrypted message is marked as non-text. Use decryptData instead');
}
const encryptedData = {
data: new Uint8Array(Converter.convertHexStringToByteArray(encryptedMessage.data)),
nonce: new Uint8Array(Converter.convertHexStringToByteArray(encryptedMessage.nonce))
};
const decryptedBytes = decryptData(encryptedData, senderPublicKeyHex, recipientPrivateKeyHex);
return Converter.convertByteArrayToString(decryptedBytes, 0, decryptedBytes.length);
}