Sasl Scram for Dart

Implementation of the Salted Challenge Response Authentication Mechanism in Dart.

Usage

A simple usage example:

import 'dart:typed_data';

import 'package:crypto/crypto.dart';
import 'package:sasl_scram/sasl_scram.dart';

void main() {
  final bytesReceivedFromServer = Uint8List(0); // No data needed when starting authentication

  final authenticator = ScramAuthenticator(
    'SCRAM-SHA-256', // Optionally choose hash method from a list provided by the server
    sha256,
    UsernamePasswordCredential(username: 'dart', password: 'dart'),
  );

  final bytesToSentToServer = authenticator.handleMessage(
    SaslMessageType.AuthenticationSASL, // Get type type from the server message
    bytesReceivedFromServer, // Append the remaining bytes
  );
  print(bytesToSentToServer); // Wrap these bytes with your message which goes back to the server
}

Features and bugs

Please file feature requests and bugs at the issue tracker.

Libraries

sasl_scram
Implementation of the Salted Challenge Response Authentication Mechanism in Dart.