storeCredentialToKeychain method
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;
}
}