ScramAuthentication class

WAMP-SCRAM authentication with asynchronous password-key derivation.

Inheritance

Constructors

ScramAuthentication(String secret, {Duration? challengeTimeout, Duration derivationTimeout = const Duration(seconds: 30), bool reuseClientKey = false, ScramKeyDeriver? keyDeriver, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8})
ScramAuthentication.fromClientKey(Uint8List clientKey, {required Uint8List serverKey, required ScramKeyCacheBinding binding, Duration? challengeTimeout, Duration derivationTimeout = const Duration(seconds: 30), ScramKeyDeriver? keyDeriver})

Properties

authid String?
no setter
challengeTimeout Duration
no setter
clientKey Future<Uint8List>
no setter
hashCode int
The hash code for this object.
no setterinherited
helloNonce String?
no setter
onChallenge Stream<Extra>
When the challenge starts the stream will provide the current Extra in case the client needs some additional information to challenge the server.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
secret String?
no setter
stringEncoding AuthenticationStringEncoding
final

Methods

cancelPendingChallenge() Future<void>
Cancels work associated with the current authentication attempt.
override
challenge(Extra extra) Future<Authenticate>
Called when the router sends a challenge (CHALLENGE frame).
override
createSignature(String authId, String helloNonce, Extra extra, HashMap<String, Object?> authExtra) String
Synchronous compatibility helper. Argon2id13 deliberately throws on web.
dispose() Future<void>
Releases authentication-method resources.
override
getName() String
Authentication method name used in HELLO (e.g. 'ticket').
override
hello(String? realm, Details details) Future<void>
This method is called to modify the hello details for a given realm.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited
verifyFinal({required String? authId, required String? authMethod, required Map<String, Object?>? authExtra}) Future<void>
Verifies authentication data returned by the router before session use.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

createAuthMessage(String authId, String helloNonce, HashMap authExtra, Extra challengeExtra) String
createServerSignature({required Uint8List serverKey, required String authMessage, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) String
deriveSaltedPassword({required String secret, required String salt, required String kdf, required int iterations, int? memory, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) Uint8List
deriveSaltedPasswordAsync({required String secret, required String salt, required String kdf, required int iterations, int? memory, Duration timeout = const Duration(seconds: 30), ScramKeyDeriver? keyDeriver, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) Future<Uint8List>
deriveServerSecrets({required String secret, required String salt, String kdf = kdfPbkdf2, int iterations = CraAuthentication.defaultIterations, int? memory, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) ScramServerSecrets
deriveServerSecretsAsync({required String secret, required String salt, String kdf = kdfPbkdf2, int iterations = CraAuthentication.defaultIterations, int? memory, Duration timeout = const Duration(seconds: 30), ScramKeyDeriver? keyDeriver, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) Future<ScramServerSecrets>
generateProof({required String secret, required String authId, required String clientNonce, required Map<String, Object?> authExtra, required Extra challenge, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) String
generateProofAsync({required String secret, required String authId, required String clientNonce, required Map<String, Object?> authExtra, required Extra challenge, ScramKeyDeriver? keyDeriver, Duration timeout = const Duration(seconds: 30), AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) Future<String>
verifyClientProof(List<int> clientProof, Uint8List storedKey, String authMessage, {AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) bool
verifySignature({required String secret, required String authId, required String clientNonce, required Map<String, Object?> authExtra, required Extra challenge, required String clientSignature, AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) bool
verifySignatureAsync({required String secret, required String authId, required String clientNonce, required Map<String, Object?> authExtra, required Extra challenge, required String clientSignature, ScramKeyDeriver? keyDeriver, Duration timeout = const Duration(seconds: 30), AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8}) Future<bool>

Constants

defaultKeyLength → const int
kdfArgon → const String
kdfPbkdf2 → const String