sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

commit b6ce7f66f838ecb89e3a1d40c376d1017b858512
parent 7934096d1848692a0485e2c08ceb9dc567f004f0
Author: triesap <tyson@radroots.org>
Date:   Mon, 27 Jul 2026 18:35:32 +0000

architecture: retire resolved identity API exceptions

- Mirror removal of the obsolete Nostr identity leakage allowances.
- Resolve the SDK lockfile against the public-only identity package.
- Preserve the ordered Step 043 source-consumer migration boundary.
- Keep the SDK and library release API contracts byte-identical.

Diffstat:
MCargo.lock | 101++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mcontracts/releases/api_boundaries.toml | 41-----------------------------------------
2 files changed, 98 insertions(+), 44 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -153,6 +153,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -357,6 +363,12 @@ dependencies = [ ] [[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] name = "const-random" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -470,6 +482,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] name = "crypto-common" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -487,6 +511,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -596,6 +630,23 @@ dependencies = [ ] [[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "ff", + "generic-array", + "group", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] name = "encoding_rs" version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -650,6 +701,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] name = "filetime" version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -814,6 +875,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -869,6 +931,17 @@ dependencies = [ ] [[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1317,6 +1390,16 @@ dependencies = [ ] [[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "elliptic-curve", +] + +[[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1927,13 +2010,12 @@ dependencies = [ name = "radroots-identity" version = "0.1.0" dependencies = [ - "nostr", + "k256", "radroots_protected_store", "radroots_runtime_paths", "radroots_secret_vault", - "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.18", "tracing", ] @@ -2685,6 +2767,19 @@ dependencies = [ ] [[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "subtle", + "zeroize", +] + +[[package]] name = "secp256k1" version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/contracts/releases/api_boundaries.toml b/contracts/releases/api_boundaries.toml @@ -98,47 +98,6 @@ allowed_public_paths = [] name = "radroots" allowed_public_paths = [] [[exception]] -id = "RCRV1-API-001" -package = "radroots-identity" -source = "src/error.rs" -forbidden_path = "nostr" -items = ["error::IdentityError"] -observed_paths = ["nostr::key::Error"] -adr = "docs/decisions/0001-public-api-leakage-migration-baseline.md" -removal_step = 42 -rationale = "The legacy identity error still exposes a Nostr key error until the identity package conformance refactor." - -[[exception]] -id = "RCRV1-API-002" -package = "radroots-identity" -source = "src/identity.rs" -forbidden_path = "nostr" -items = [ - "identity::RadrootsIdentity::from", - "identity::RadrootsIdentity::into_keys", - "identity::RadrootsIdentity::keys", - "identity::RadrootsIdentity::new", - "identity::RadrootsIdentity::public_key", - "identity::RadrootsIdentity::secret_key_bytes", - "identity::RadrootsIdentity::secret_key_bytes_zeroizing", - "identity::RadrootsIdentity::with_profile", - "identity::RadrootsIdentityFile", - "identity::RadrootsIdentityId::from", - "identity::RadrootsIdentityId::from_public_key", - "identity::RadrootsIdentityProfile", - "identity::RadrootsIdentityPublic::new", -] -observed_paths = [ - "nostr::Event", - "nostr::Keys", - "nostr::PublicKey", - "nostr::SecretKey::LEN", -] -adr = "docs/decisions/0001-public-api-leakage-migration-baseline.md" -removal_step = 42 -rationale = "Legacy identity values retain exact Nostr and secret-key signatures only until the public-only identity refactor and conformance gate." - -[[exception]] id = "RCRV1-API-003" package = "radroots-nostr" source = "src/client.rs"