This is the code I am trying to run:
import eccrypto from 'eccrypto';
function removeLines(str: string): string {
return str.replace('\n', '');
}
function base64ToArrayBuffer(b64: string): Uint8Array {
const byteString = window.atob(b64);
const byteArray = new Uint8Array(byteString.length);
for (let i = 0; i < byteString.length; i++) {
byteArray[i] = byteString.charCodeAt(i);
}
return byteArray;
}
function pemToArrayBuffer(pem: string): Uint8Array {
const b64Lines = removeLines(pem);
const b64Prefix = b64Lines.replace('-----BEGIN PUBLIC KEY-----', '');
const b64Final = b64Prefix.replace('-----END PUBLIC KEY-----', '');
return base64ToArrayBuffer(b64Final);
}
describe('test', () => {
it('', async () => {
const pk = '-----BEGIN PUBLIC KEY-----\n' +
'MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEW3yGReZI3dI37WZipbNcNunkHSX3gx5n\n' +
'NFC8V5HyWtHktU17mDH+0zWDVodNazTqqQFIUIuXz/e++o1JFEYh2A==\n' +
'-----END PUBLIC KEY-----';
const publicKeyAsArrayBuffer = pemToArrayBuffer(pk);
console.log('publicKeyAsArrayBuffer', publicKeyAsArrayBuffer);
try {
await eccrypto.encrypt(publicKeyAsArrayBuffer, Buffer.from('test', 'utf8'));
} catch (e) {
console.warn(e);
}
});
});
This code snippet is written as a unit test for sake of simplicity, the execution was also in the browser.
Basically, I am trying to transform pk pem to ArrayBuffer and encrypt a message, but getting Error: Bad public key
( btw public key in the example is legit)

Could someone suggest what needs to be done in order to be able to encrypt properly?
This is the code I am trying to run:
This code snippet is written as a unit test for sake of simplicity, the execution was also in the browser.

Basically, I am trying to transform pk pem to ArrayBuffer and encrypt a message, but getting
Error: Bad public key( btw public key in the example is legit)
Could someone suggest what needs to be done in order to be able to encrypt properly?