use rsaExtractPublicKey for getting public key

This commit is contained in:
Kyle Spearrin 2018-07-02 23:57:22 -04:00
parent 2bc7ae0da2
commit 269b59210c
2 changed files with 4 additions and 3 deletions

View File

@ -146,7 +146,7 @@ export class CryptoService implements CryptoServiceAbstraction {
return null;
}
this.publicKey = null; // TODO:
this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);
return this.publicKey;
}

View File

@ -133,14 +133,15 @@ export class NodeCryptoFunctionService implements CryptoFunctionService {
return Promise.resolve(this.toArrayBuffer(decipher));
}
async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise<ArrayBuffer> {
rsaExtractPublicKey(privateKey: ArrayBuffer): Promise<ArrayBuffer> {
const privateKeyByteString = Utils.fromBufferToByteString(privateKey);
const privateKeyAsn1 = forge.asn1.fromDer(privateKeyByteString);
const forgePrivateKey = (forge as any).pki.privateKeyFromAsn1(privateKeyAsn1);
const forgePublicKey = (forge.pki as any).setRsaPublicKey(forgePrivateKey.n, forgePrivateKey.e);
const publicKeyAsn1 = (forge.pki as any).publicKeyToAsn1(forgePublicKey);
const publicKeyByteString = forge.asn1.toDer(publicKeyAsn1).data;
return Utils.fromByteStringToArray(publicKeyByteString).buffer;
const publicKeyArray = Utils.fromByteStringToArray(publicKeyByteString);
return Promise.resolve(publicKeyArray.buffer);
}
randomBytes(length: number): Promise<ArrayBuffer> {