Spake2Context class

BoringSSL-compatible SPAKE2 implementation over the Ed25519 group.

Used by the ADB wireless pairing protocol (Android 11+) for password-authenticated key exchange with a 6-digit pairing code.

Usage:

final ctx = Spake2Context.forPairing(role: Spake2Role.alice);
final myMsg = ctx.generateMessage(utf8.encode(pairingCode));
// Send myMsg to peer, receive theirMsg
final sharedKey = ctx.processMessage(theirMsg);

Constructors

Spake2Context(Spake2Role _role, Uint8List _myName, Uint8List _theirName, {Spake2RandomBytesSource? randomBytesSource})
Spake2Context.forPairing({required Spake2Role role, Spake2RandomBytesSource? randomBytesSource})
Creates a SPAKE2 context pre-configured for ADB pairing.
factory

Properties

hashCode int
The hash code for this object.
no setterinherited
myMessage Uint8List
no setter
myName Uint8List
no setter
passwordHash Uint8List
no setter
passwordScalar Uint8List
no setter
privateKey Uint8List
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
sharedEncoded Uint8List
no setter
theirName Uint8List
no setter

Methods

generateMessage(Uint8List password) Uint8List
Generates the SPAKE2 message to send to the peer.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
processMessage(Uint8List theirMessage, {bool verbose = false}) Uint8List
Processes the peer's SPAKE2 message and derives the shared key.
toString() String
A string representation of this object.
inherited

Operators

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