createAuthMessage static method

String createAuthMessage(
  1. String authId,
  2. String helloNonce,
  3. HashMap authExtra,
  4. Extra challengeExtra,
)

Implementation

static String createAuthMessage(
  String authId,
  String helloNonce,
  HashMap authExtra,
  Extra challengeExtra,
) {
  final clientFirstBare = 'n=${Saslprep.saslprep(authId)},r=$helloNonce';
  final serverFirst =
      'r=${challengeExtra.nonce!},s=${challengeExtra.salt!},i=${challengeExtra.iterations}';
  final cBindName = authExtra['channel_binding'];
  final cBindData = authExtra['cbind_data'];
  final cBindFlag = cBindName == null ? 'n' : 'p=$cBindName';
  final cBindInput = <int>[
    ...utf8.encode('$cBindFlag,,'),
    if (cBindData != null) ...base64.decode(cBindData as String),
  ];
  final clientFinalNoProof =
      'c=${base64.encode(cBindInput)},r=${authExtra['nonce']}';
  return '$clientFirstBare,$serverFirst,$clientFinalNoProof';
}