storeCredentialToKeychain method

Future<bool> storeCredentialToKeychain(
  1. String atSign, {
  2. String? secret,
  3. String? privateKey,
  4. String? publicKey,
})

Function to save atsign and pkam keys passed to keychain

Implementation

Future<bool> storeCredentialToKeychain(String atSign,
    {String? secret, String? privateKey, String? publicKey}) async {
  try {
    final internalAtClientData =
        await readAtClientData(useSharedStorage: false);
    final useSharedStorage =
        internalAtClientData?.config?.useSharedStorage ?? false;
    final atClientData =
        await readAtClientData(useSharedStorage: useSharedStorage);
    final atsigns = atClientData?.keys ?? [];
    if (secret != null) {
      secret = secret.trim().toLowerCase().replaceAll(' ', '');
    }
    final index = atsigns.indexWhere((element) => element.atSign == atSign);
    if (index >= 0) {
      atsigns[index] = atsigns[index].copyWith(
        secret: secret,
        pkamPrivateKey: privateKey,
        pkamPublicKey: publicKey,
      );
    } else {
      atsigns.add(AtsignKey(atSign: atSign).copyWith(
        secret: secret,
        pkamPrivateKey: privateKey,
        pkamPublicKey: publicKey,
      ));
    }
    if (atClientData != null) {
      await _saveAtClientData(
          data: atClientData, useSharedStorage: useSharedStorage);
      return true;
    } else {
      return false;
    }
  } on Exception catch (exception) {
    _logger.severe(
        'exception in storeCredentialToKeychain :${exception.toString()}');
    return false;
  }
}