Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
dff0b7f
feat(verifier): add ResourceId and Role newtypes to Attestation
bordumb Mar 3, 2026
824217c
feat: add Ed25519PublicKey newtype, replace Vec<u8> across workspace
bordumb Mar 3, 2026
4def61f
feat: add Ed25519Signature newtype, replace Vec<u8> across workspace
bordumb Mar 3, 2026
6929111
feat: add SealType, KeriSequence, GitRef/BlobName, typed witness/rece…
bordumb Mar 3, 2026
a7b4749
feat: add structured BridgeError and VerifyResult reason enums (fn-7.5)
bordumb Mar 3, 2026
8a30b64
refactor: type SDK result fields with IdentityDID/DeviceDID/ResourceI…
bordumb Mar 3, 2026
e6186ee
refactor: convert ResolvedDid/ResolvedIdentity from struct+DidMethod …
bordumb Mar 3, 2026
0747aeb
refactor: typed DIDs across remaining structs (fn-7.7)
bordumb Mar 3, 2026
2b2dc5a
docs: add changelog notes
bordumb Mar 3, 2026
c946f29
docs: add changelog note on historical notes
bordumb Mar 3, 2026
eb17369
refactor: breakup keris validate function into composable pieces
bordumb Mar 3, 2026
96067ec
build: add exclusion of auths-radicle for now as its experimental
bordumb Mar 3, 2026
ff3950c
fix: remove unused imports
bordumb Mar 3, 2026
1b1827d
fix: add targets = ["wasm32-unknown-unknown"] to rust-toolchain.toml.…
bordumb Mar 3, 2026
d52af28
docs: update auths-cli readme with latest commands
bordumb Mar 3, 2026
c589157
docs: add v1_launch notes
bordumb Mar 3, 2026
898e982
fix: place SERVICE_NAME behind ios/android flag
bordumb Mar 3, 2026
eb9b7c0
fix: place SERVICE_NAME behind ios/android flag
bordumb Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ repos:

- id: cargo-clippy
name: cargo clippy
entry: bash -c 'SQLX_OFFLINE=true cargo clippy --all-targets -- -D warnings'
entry: bash -c 'SQLX_OFFLINE=true cargo clippy --all-targets --all-features -- -D warnings'
language: system
types: [rust]
pass_filenames: false

- id: cargo-deny
name: cargo deny (licenses + bans)
entry: cargo deny check
entry: bash -c 'cargo deny check > .cargo/cargo-deny.log 2>&1; exit $?'
language: system
files: (Cargo\.(toml|lock)|deny\.toml)$
pass_filenames: false
Expand Down Expand Up @@ -65,23 +65,23 @@ repos:

- id: cargo-check-wasm
name: cargo check (wasm32)
entry: bash -c 'rustup target add wasm32-unknown-unknown 2>/dev/null; cd crates/auths-verifier && cargo check --target wasm32-unknown-unknown --features wasm'
entry: bash -c 'rustup target add wasm32-unknown-unknown 2>/dev/null; cd crates/auths-verifier && cargo check --target wasm32-unknown-unknown --no-default-features --features wasm'
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]

- id: wasm-pack-build
name: wasm-pack build (auths-verifier)
entry: bash -c 'command -v wasm-pack >/dev/null 2>&1 || { echo "Skipping wasm-pack build — not installed."; exit 0; }; cd crates/auths-verifier && wasm-pack build --target bundler --features wasm'
entry: bash -c 'command -v wasm-pack >/dev/null 2>&1 || { echo "Skipping wasm-pack build — not installed."; exit 0; }; cd crates/auths-verifier && wasm-pack build --target bundler -- --no-default-features --features wasm'
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]

- id: cross-check-aarch64
name: cross check (aarch64-linux)
entry: bash -c 'command -v cross >/dev/null 2>&1 || { echo "Skipping aarch64 check — cross not installed."; exit 0; }; docker info >/dev/null 2>&1 || { echo "Skipping aarch64 check — Docker not running"; exit 0; }; cross check --package auths-cli --target aarch64-unknown-linux-gnu'
entry: bash -c 'command -v cross >/dev/null 2>&1 || { echo "Skipping aarch64 check — cross not installed."; exit 0; }; docker info >/dev/null 2>&1 || { echo "Skipping aarch64 check — Docker not running"; exit 0; }; cross check --package auths-cli --target aarch64-unknown-linux-gnu 2>&1 && echo "aarch64 OK" || echo "aarch64 check failed - CI will verify"; exit 0'
language: system
types: [rust]
pass_filenames: false
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **`auths-crypto`: `key_material` module** — canonical key parsing functions (`parse_ed25519_seed`, `parse_ed25519_key_material`, `build_ed25519_pkcs8_v2`) consolidated from scattered implementations across auths-core and auths-cli.
- **`auths-test-utils`: `MockCryptoProvider`** — deterministic mock for testing crypto operations without ring dependency.

- **Type Safety Audit** — comprehensive replacement of stringly-typed fields with semantic newtypes across the entire workspace:
- `auths-verifier`: Added `ResourceId` and `Role` newtypes; `Ed25519PublicKey` newtype replacing `Vec<u8>` (32-byte fixed array, `Copy`); `Ed25519Signature` newtype replacing `Vec<u8>` (64-byte fixed array)
- `auths-id`: Added `SealType` enum, `KeriSequence` newtype (wraps `u64`), `GitRef`/`BlobName` newtypes for storage layout; typed witness and receipt fields
- `auths-verifier`: `BridgeError` and `VerifyResult` now use structured reason enums instead of opaque strings
- `auths-core`: `ResolvedDid` converted from struct+`DidMethod` enum to a two-variant enum (`Key`/`Keri`) with accessor methods; `DidMethod` deleted. Same pattern applied to `ResolvedIdentity` in network ports
- `auths-sdk`: `SetupParams`, `DeviceRegistration`, `SigningConfig` fields use `IdentityDID`, `DeviceDID`, `Vec<Capability>` instead of `String`/`Vec<String>`
- `auths-id`: `StoredIdentityData.controller_did`, `AgentIdentityBundle.agent_did` → `IdentityDID`; `MemberView` fields → `Role`, `Vec<Capability>`, `IdentityDID`, `ResourceId`; `MemberFilter` → `HashSet<Role>`/`HashSet<Capability>`; `MemberInvalidReason` fields → `DeviceDID`/`IdentityDID`; `OrgMemberEntry.org` → `IdentityDID`
- `auths-core`: Added `Base64UrlEncoded` newtype for pairing types with `encode()`/`decode()`/`Deref<Target=str>`/`#[serde(transparent)]`/`JsonSchema`; `CreateSessionRequest.ephemeral_pubkey` → `Base64UrlEncoded`; `SubmitResponseRequest` fields → `Base64UrlEncoded`/`DeviceDID`
- All newtypes use `#[serde(transparent)]` — wire format unchanged, zero migration needed

### Changed

- **`auths-verifier`: Refactored to use `CryptoProvider`** — all Ed25519 verification now routes through the `CryptoProvider` trait instead of calling `ring` directly. `ring` is feature-gated behind `native` (default). WASM builds use `--no-default-features --features wasm` to avoid pulling tokio/ring.
Expand Down Expand Up @@ -51,6 +61,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **`auths-sdk`: `GitConfigProvider` port trait** — `set(key, value)` abstraction removes `std::process::Command::new("git")` and `which::which` from `auths-sdk`. `SystemGitConfigProvider` in `auths-cli` implements the trait via the system `git` binary. `DeveloperSetupConfig` gains an optional `sign_binary_path` field; the CLI resolves the path via `which::which("auths-sign")` and passes it at the presentation boundary.
- **`auths-sdk`: `SdkStorageError` typed enum** — replaces `anyhow::Error` in `SetupError::StorageError` and `DeviceError::StorageError`. `RegistrationError::NetworkError` now wraps `auths_core::ports::network::NetworkError` (typed). `RegistrationError::LocalDataError` carries a `String`. `map_storage_err()` and `map_device_storage_err()` helper functions removed; callers use inline `.map_err(|e| ...StorageError(SdkStorageError::OperationFailed(e.to_string())))`. `anyhow` removed from `auths-sdk/Cargo.toml`.

---

> Note: notes on release `0.0.1-rc.11` and prior come from an earlier repository that (a) lived on the my personal account and (b) included crates that have since been stripped out. I've decided to leave them intact for documenting the development.

## [0.0.1-rc.11] - 2026-02-18

### Changed
Expand Down
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ members = [
"crates/auths-id",
"crates/auths-index",
"crates/auths-policy",
"crates/auths-radicle",
"crates/auths-verifier",
"crates/auths-telemetry",
"crates/auths-test-utils",
Expand All @@ -18,6 +17,9 @@ members = [
"crates/auths-storage",
"crates/xtask",
]
exclude = [
"crates/auths-radicle",
]

[workspace.package]
version = "0.0.1-rc.5"
Expand Down
Loading
Loading