create method

Implementation

Future<SenderKeyDistributionMessageWrapper> create(
    SenderKeyName senderKeyName) async {
  try {
    final senderKeyRecord =
        await _senderKeyStore.loadSenderKey(senderKeyName);
    if (senderKeyRecord.isEmpty) {
      senderKeyRecord.setSenderKeyState(generateSenderKeyId(), 0,
          generateSenderKey(), generateSenderSigningKey());
      await _senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
    }
    final state = senderKeyRecord.getSenderKeyState();
    return SenderKeyDistributionMessageWrapper(
        state.keyId,
        state.senderChainKey.iteration,
        state.senderChainKey.seed,
        state.signingKeyPublic);
  } on InvalidKeyIdException catch (e) {
    throw AssertionError(e);
  } on InvalidKeyException catch (e) {
    throw AssertionError(e);
  }
}