storePkamKeysToKeychain method

Future<bool> storePkamKeysToKeychain(
  1. String atsign, {
  2. String? privateKey,
  3. String? publicKey,
})

Function to save pkam keys for the atsign passed to keychain

Implementation

Future<bool> storePkamKeysToKeychain(String atsign,
    {String? privateKey, String? publicKey}) async {
  final internalAtClientData =
      await readAtClientData(useSharedStorage: false);
  final useSharedStorage =
      internalAtClientData?.config?.useSharedStorage ?? false;
  final atClientData =
      await readAtClientData(useSharedStorage: useSharedStorage);
  try {
    final atsigns = atClientData?.keys ?? [];
    final index = atsigns.indexWhere((element) => element.atSign == atsign);
    if (index >= 0) {
      atsigns[index] = atsigns[index].copyWith(
        pkamPrivateKey: privateKey,
        pkamPublicKey: publicKey,
      );
    } else {
      atsigns.add(AtsignKey(atSign: atsign).copyWith(
        pkamPrivateKey: privateKey,
        pkamPublicKey: publicKey,
      ));
    }
    atClientData?.keys = atsigns;
    if (atClientData != null) {
      await _saveAtClientData(
          data: atClientData, useSharedStorage: useSharedStorage);
      return true;
    } else {
      return false;
    }
  } catch (e, s) {
    print(e);
    print(s);
    return false;
  }
}