passnoteLowLevel function
Future<Passnote>
passnoteLowLevel({
- required PassnoteConfig config,
- required KeyStore keyStore,
- required Transport transport,
- required Future<
List< deriveKey(),int> > - required String roomTag(),
- required Cipher cipher(),
- required List<
String> mnemonicGenerator(- int words
- required bool validateMnemonic(),
- required FutureOr<
CrdtTable> engine(), - Identity? identity,
- Pake? pake,
- Future<
Identity> recoveryIdentity()?, - List<
int> wireVersions = supportedWireVersions, - List<
String> wireCapabilities = const [reconCapability],
Constructs and wires a Passnote instance with every dependency explicit.
Part of the advanced package:passnote/engine.dart surface, not the frozen
app-facing library: pass adapters from the other packages or supply custom
implementations that satisfy the port interfaces. Prefer Passnote.builder
unless you need this level of control.
Implementation
Future<Passnote> passnoteLowLevel({
required PassnoteConfig config,
required KeyStore keyStore,
required Transport transport,
required Future<List<int>> Function(String passphrase, String salt) deriveKey,
required String Function(List<int> key) roomTag,
required Cipher Function(List<int> key) cipher,
required List<String> Function(int words) mnemonicGenerator,
required bool Function(String) validateMnemonic,
required FutureOr<CrdtTable> Function(
String databaseId, String collection, List<int> key)
engine,
Identity? identity,
Pake? pake,
Future<Identity> Function(String phrase, String salt)? recoveryIdentity,
List<int> wireVersions = supportedWireVersions,
List<String> wireCapabilities = const [reconCapability],
}) async {
final nodeId = generateNodeId();
final instance = Passnote._(
config: config,
keyStore: keyStore,
transport: transport,
nodeId: nodeId,
deriveKey: deriveKey,
roomTag: roomTag,
cipherFactory: cipher,
mnemonicGenerator: mnemonicGenerator,
validateMnemonic: validateMnemonic,
engineFactory: engine,
pake: pake,
identity: identity,
recoveryIdentity: recoveryIdentity,
wireVersions: wireVersions,
wireCapabilities: wireCapabilities,
);
// Wire listeners BEFORE start so PeerConnected events emitted during
// registration are not missed.
instance._wireTransport();
await transport.start(self: nodeId, appId: config.appId);
return instance;
}