authenticateAccount function

Future<AuthenticateReturnDataType?> authenticateAccount(
  1. dynamic ident,
  2. String password, [
  3. String encoding = 'base64'
])

Implementation

Future<AuthenticateReturnDataType?> authenticateAccount(
    dynamic ident, String password,
    [String encoding = 'base64']) async {
  if (ident == null || (ident is Map && !ident.containsKey('auth'))) {
    return null;
  }

  dynamic decrypted;

  try {
    final proof = await work(
        password, ident['auth']['s'], DefaultWorkFn.from(encode: encoding));
    decrypted = await decrypt(
        ident['auth']['ek'],
        PairReturnType.from(epriv: proof, epub: "", priv: "", pub: ""),
        DefaultAESDecryptKey.from(encode: encoding));
  } catch (e) {
    final proof = await work(
        password, ident['auth']['s'], DefaultWorkFn.from(encode: encoding));
    decrypted = await decrypt(
        ident['auth']['ek'],
        PairReturnType.from(epriv: proof, epub: "", priv: "", pub: ""),
        DefaultAESDecryptKey.from(encode: encoding));
  }

  if (decrypted == null) {
    return null;
  }

  return AuthenticateReturnDataType.from(
      alias: ident['alias'],
      epriv: decrypted['epriv'],
      epub: ident['epub'],
      priv: decrypted['priv'],
      pub: ident['pub']);
}