decrypt function
Stream<List<int> >
decrypt(
- Stream<
List< content,int> > - List<
AgeKeyPair> keyPairs, { - PassphraseProvider passphraseProvider = const PassphraseProvider(),
Implementation
Stream<List<int>> decrypt(Stream<List<int>> content, List<AgeKeyPair> keyPairs,
{PassphraseProvider passphraseProvider =
const PassphraseProvider()}) async* {
final split = AgeStream(content);
final header = await AgeHeader.parseContent(split,
passphraseProvider: passphraseProvider);
Uint8List? symmetricFileKey;
_logger.fine(
'We have ${keyPairs.length} keypairs and ${header.stanzas.length} stanzas');
for (var keyPair in keyPairs) {
for (var stanza in header.stanzas) {
try {
symmetricFileKey = await stanza.decryptedFileKey(keyPair);
} catch (e) {
_logger.info('Keypair was not valid for this stanza');
//Ignore
}
}
}
if (symmetricFileKey == null) {
throw Exception('Recipient not found');
}
await header.checkMac(symmetricFileKey);
yield* _decryptPayload(split.payload.stream,
symmetricFileKey: symmetricFileKey);
}