The register's tests make the device's side from made-up bytes, and the app's from fakes; nothing held what the device's real cryptography (libsodium, on isolates) makes to what the register takes. Now register_interop_test.dart does: a new account's setup passes isPasswordSetup, the device's SRP answer checks with the register's srpVerify and its M2 with the device, bound to the instance and the purpose (another instance's or a change's identity refused), the keys open as made, a new password passes isNewPassword, and the phrase's proof for it checks against the phrase's own key, never the account's, with the device's framing of the message the register's. halkyon_base_server exports the checks it uses; halkyon_app takes it as a dev dependency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
89 lines
3 KiB
Dart
89 lines
3 KiB
Dart
/// halkyon_base for a host's own code: its configuration
|
|
/// (`HalkyonBase.configure`), how people authenticate, the account's
|
|
/// deletion and the pruning, email sign-in's helpers, the instance's
|
|
/// basics, people's public profiles and their pages, the instance's register
|
|
/// (ADR 0016), signing in with a password and TOTP and getting back into an
|
|
/// account (ADR 0017), and the module's models.
|
|
library;
|
|
|
|
export 'src/auth/account.dart';
|
|
export 'src/auth/auth_config.dart';
|
|
export 'src/auth/code_mail.dart';
|
|
export 'src/auth/email.dart';
|
|
export 'src/auth/github.dart';
|
|
export 'src/auth/github_sign_in_endpoint.dart' show gitHubAccountToSignIn;
|
|
export 'src/auth/identified.dart';
|
|
export 'src/auth/scopes.dart';
|
|
export 'src/common/network.dart';
|
|
export 'src/common/short_code.dart';
|
|
export 'src/generated/protocol.dart' hide Protocol;
|
|
export 'src/halkyon_base.dart';
|
|
export 'src/instance/data_location.dart';
|
|
export 'src/instance/source_code.dart';
|
|
export 'src/password/account_resets.dart'
|
|
show forgetLapsedResets, resetDelay, resetLapsesAfter;
|
|
export 'src/password/authenticators.dart'
|
|
show
|
|
forgetUnconfirmedAuthenticators,
|
|
maxAuthenticators,
|
|
unconfirmedAuthenticatorLifetime;
|
|
export 'src/password/key_proof.dart'
|
|
show
|
|
KeyProofPurpose,
|
|
PasswordProofPurpose,
|
|
authenticatorDigest,
|
|
canonicalInstanceUrl,
|
|
isAccountSignature,
|
|
keyProofMessage,
|
|
newPasswordDigest,
|
|
newPhraseDigest,
|
|
passwordIdentity,
|
|
publicInstanceUrlOf;
|
|
export 'src/password/password_config.dart';
|
|
export 'src/password/passwords.dart'
|
|
show
|
|
gitHubSignInFreshFor,
|
|
isNewPassword,
|
|
isPasswordSetup,
|
|
newPasswordCosts,
|
|
passwordGroup,
|
|
passwordMethod,
|
|
signInChallengeLifetime,
|
|
signsInWithPassword,
|
|
wrappedKeysLength;
|
|
export 'src/profile/link_verification.dart';
|
|
export 'src/profile/profile_page.dart' show addProfilePageRoute, profilePage;
|
|
export 'src/profile/profile_rules.dart'
|
|
show
|
|
accountDomain,
|
|
avatarPath,
|
|
avatarStorage,
|
|
isHandle,
|
|
maxAvatarBytes,
|
|
operatorAccountDomain,
|
|
profilePageUrl,
|
|
reservedHandles;
|
|
export 'src/profile/profiles.dart';
|
|
export 'src/register/account_register.dart';
|
|
export 'src/register/accounts_mode.dart';
|
|
export 'src/register/deletion_notices.dart'
|
|
show MemberNotifier, deliverDeletionNotices;
|
|
export 'src/register/instance_routes.dart';
|
|
export 'src/register/member_pruning.dart';
|
|
export 'src/register/people.dart' show issueSession;
|
|
export 'src/register/sessions_ended.dart'
|
|
show AccountSessionsEnded, deliverSessionNotices;
|
|
export 'src/srp/srp_group.dart';
|
|
export 'src/srp/srp_math.dart' show numberOf, padded;
|
|
export 'src/srp/srp_server.dart'
|
|
show
|
|
SrpAccepted,
|
|
SrpChallenge,
|
|
SrpRefusal,
|
|
SrpRefused,
|
|
SrpVerification,
|
|
srpChallenge,
|
|
srpVerify;
|
|
export 'src/totp/base32.dart';
|
|
export 'src/totp/recovery_codes.dart';
|
|
export 'src/totp/totp.dart';
|