generateKey static method
Create SingingKeyData which includes a zip file that contains both a public and private key. The public key is in the form of c code and pem file in SingingKeyData.
To export a zip file with all the needed keys, call generateKey.
Implementation
static SigningKeyData generateKey({NRFLogger? logger}){
late String pbkc;
late String pbkpem;
AsymmetricKeyPair pair = CryptoUtils.generateEcKeyPair();
Archive archive = Archive();
logger?.verbose('Creating private key.');
String prk = CryptoUtils.encodeEcPrivateKeyToPem(pair.privateKey as ECPrivateKey);
archive.addFile(ArchiveFile('private.pem', prk.length, prk));
//if(publicKeyType == SigningKeyType.code){
logger?.verbose('Creating public code key.');
ECPublicKey ecpbk = pair.publicKey as ECPublicKey;
pbkc = _generateCodeKey(ecpbk);
archive.addFile(ArchiveFile('public.c', pbkc.length, pbkc));
//}
//else{
logger?.verbose('Creating public pem key.');
pbkpem = CryptoUtils.encodeEcPublicKeyToPem(pair.publicKey as ECPublicKey);
archive.addFile(ArchiveFile('public.pem', pbkpem.length, pbkpem));
//}
logger?.verbose('Archiving keys.');
ZipEncoder encoder = ZipEncoder();
OutputStream outputStream = OutputStream(
byteOrder: LITTLE_ENDIAN,
);
List<int>? bytes = encoder.encode(
archive,
level: Deflate.BEST_COMPRESSION,
output: outputStream
);
return SigningKeyData(
zipFile: Uint8List.fromList(bytes!),
privateKey: prk,
publicKeyCode: pbkc,
publicKeyPem: pbkpem
);
}