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:
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"