authenticate method

Future<bool> authenticate(
  1. String? atsign,
  2. AtClientPreference atClientPreference, {
  3. OnboardingStatus? status,
  4. String? jsonData,
  5. String? decryptKey,
})

Returns true on successfully authenticating atsign with cramSecret/privateKey. if pkam is successful, encryption keys will be set for the user.

Implementation

Future<bool> authenticate(
    String? atsign, AtClientPreference atClientPreference,
    {OnboardingStatus? status, String? jsonData, String? decryptKey}) async {
  if (atClientPreference.cramSecret == null) {
    atsign = _formatAtSign(atsign);
    if (atsign == null) {
      return false;
    }
    await _decodeAndStoreToKeychain(atsign, jsonData!, decryptKey!);
    atClientPreference.privateKey = await getPkamPrivateKey(atsign);
  }
  var result = await _init(atsign!, atClientPreference);
  if (!result) {
    return result;
  }
  if (_status != OnboardingStatus.ACTIVATE &&
      status != OnboardingStatus.ACTIVATE) {
    await _sync(atClientPreference, atsign);
  }
  result = await _atClientAuthenticator!.performInitialAuth(
    atsign,
    cramSecret: atClientPreference.cramSecret,
    pkamPrivateKey: atClientPreference.privateKey,
  );
  if (result) {
    var privateKey = atClientPreference.privateKey ??=
        await _keyChainManager.getPkamPrivateKey(atsign);
    _atClientAuthenticator!.atLookUp.privateKey = privateKey;
    atClient!.getRemoteSecondary()!.atLookUp.privateKey = privateKey;
    await _sync(atClientPreference, atsign);
    await persistKeys(atsign);
  }
  return result;
}