Repository navigation
Releases: humandebri/ICNativeClient
Release list
ICNativeClient 0.8.0
子delegation
- 既存の
ICAuthSessionから、呼び出し側が所有するDER公開鍵へ制約付き子delegationを発行可能。 - セッション秘密鍵は公開せず、期限・targets・permissions・循環・深度を検証。
Update request lifecycle
submitRaw/completeRawとCandid版を追加し、poll開始前に32-byteのIC ingress request IDを保持可能。- v4の証明済み即時結果、pending、非replicated rejection、v2 fallbackを処理。
requestStatusでreceived、processing、replied、rejected、doneを1回ずつ証明付きで確認可能。
署名済みrequest
- requestごとのingress expiryとnonceを追加。
- query/update envelopeをローカル署名、保存、再送でき、送信前にrequest ID、metadata、delegation、署名を検証。
互換性と検証
- 既存のRaw、Candid、typed query/call APIは通常呼び出しとメソッド参照の両方で互換。
- 保存セッション、生成bindings、既定wire形式は変更なし。同梱
ic-candid-swift-bindgenは0.1.3。 - macOS、Swift 6 strict concurrency、iOS Simulator、bindgen/artifact CIが成功。
変更一覧: 0.7.8...0.8.0
ICNativeClient 0.7.8
改善
- Candidエンコード時の重複した検証を除去し、検証済みの値を再利用。
- recordの型変換でフィールド探索を線形化。
- Swiftバインディング生成器の予約語判定に伴う繰り返しの集合生成を除去し、arm64・x86_64の同梱バイナリを再ビルド。
保守性・検証
- 重複テスト、実装依存のassertion、未使用の内部処理を整理。
- 委任数・対象数・Canister鍵のOID制約を、他条件が正常な入力で検証。
- 共有デコード予算を小さな入力で検証し、ポーリングテストの実待機を除去。
- macOS・iOS・生成器のCIが成功。既存fixtureの生成結果は変更前と一致。
互換性
公開API、入力の受理条件、セッション保存形式、wire形式、既定上限、生成されるSwiftコードは維持しています。同梱 ic-candid-swift-bindgen は0.1.3のままです。
変更一覧: 0.7.7...0.7.8
ICNativeClient 0.7.7
Added
- Add
ICAuthSession.delegating(ed25519PrivateKey:configuration:options:)to create expiring sessions from existing Ed25519 keys without an Internet Identity browser flow. - Each call creates a fresh session key and signed delegation. The root private key is not retained in the session or its Keychain record.
- Reuse existing signature, lifetime, and target validation, including the 30-day maximum lifetime.
Compatibility
- Adds a public authentication API without changing existing session storage or wire formats.
- Applications remain responsible for obtaining and protecting their root key, and must supply it again after expiration.
- Bundled
ic-candid-swift-bindgenremains version 0.1.3.
Full changelog: 0.7.6...0.7.7
ICNativeClient 0.7.6
Fixed
- Bound Candid decoding work across shared-type resolution, normalization, and validation to prevent excessive expansion from small replies. Cached types also retain their nesting depth for limit checks.
- Decode Candid from
Dataslices without assuming a zero-based index. - Accept padded Candid LEB128 encodings while retaining integer overflow, termination, and length checks. Encoded output remains unchanged.
- Use sorted hash-tree label boundaries to recognize certified absence despite pruned sibling branches, allowing polling to continue and certified rejects without
error_codeto be returned.
Compatibility
- Public APIs are unchanged. Candid inputs exceeding the fixed internal budget of 1,000,000 work units now throw
ICClientError.invalidCandid, even if their encoded size is small.
Bundled ic-candid-swift-bindgen remains version 0.1.3.
Full changelog: 0.7.5...0.7.6
ICNativeClient 0.7.5
Added
- Query APIs and generated query wrappers accept an optional
delegationTargetCanisterId, independently of the signedcanisterIdand routingeffectiveCanisterId.
Fixed
- Target-scoped identities can authorize management-canister queries against the managed canister while preserving
aaaaa-aain signed content. - Certified subnet-key discovery uses an anonymous read-state request instead of unnecessarily reusing the query identity.
- Typed reply decoding accepts Candid tuple evolution, record and container subtyping, and
nat <: int, while rejecting non-Candid fixed-width numeric widening. - Expected Candid reply declarations are normalized before projection, preventing handwritten variant field order from affecting compatibility.
Compatibility
- Source-compatible patch release; the new query argument is optional and wire formats are unchanged.
- Bundled
ic-candid-swift-bindgenis version 0.1.3 with synchronized macOS arm64 and x86_64 artifacts.
ICNativeClient 0.7.4
Fixed
- Verified queries to canisters on the root subnet, including the ICP Ledger, now derive the root subnet ID from the independently trusted root key instead of requiring a unique subnet entry in the certified state tree.
Compatibility
- Patch release with no public API, session, principal, or wire-format changes.
- Bundled
ic-candid-swift-bindgenremains version 0.1.2.
ICNativeClient 0.7.3
Fixed
- Generated Swift bindings now decode Candid-compatible reply subtypes. Reply records may add fields, while compatible optional, vector, numeric, and recursive values are projected to the Swift model type.
- Generated variants remain strict: added or unknown cases and changed payload types are rejected.
Compatibility
- Patch release with no public API, session, principal, or wire-format changes.
- Bundled
ic-candid-swift-bindgenis version 0.1.2.
ICNativeClient 0.7.2
Backward-compatible CBOR interoperability fix release.
Highlights:
- Accept valid indefinite-length CBOR byte strings, text strings, arrays, and maps
- Retain strict UTF-8, nesting-depth, collection-count, malformed-chunk, and trailing-data validation
- Reject semantically duplicate map keys even when their wire encodings differ
- Add regression coverage for valid and malformed indefinite-length values
- Verify unit tests, Swift 6 strict concurrency, bindgen, and iOS Simulator CI jobs
No public API, stored-session, principal-derivation, or request wire-format changes.
See CHANGELOG.md and README.md for details.
ICNativeClient 0.7.1
Backward-compatible management query routing and Xcode binding integration release.
Highlights:
- Add optional effective canister IDs to raw, Candid, and typed query APIs
- Preserve aaaaa-aa in signed management query content while routing and verifying against the target canister subnet
- Release ic-candid-swift-bindgen 0.1.1 with effective routing IDs on generated query wrappers
- Add direct XcodeBuildToolPlugin support for application targets
- Make SwiftPM plugin fixtures independent of the checkout directory name
- Verify arm64 and x86_64 generator artifacts, Swift 6 strict concurrency, and iOS Simulator builds
Existing calls retain their behavior when effectiveCanisterId is omitted. Stored sessions, principal derivation, update APIs, and wire formats are unchanged.
See CHANGELOG.md and README.md for usage details.
ICNativeClient 0.7.0
Backward-compatible Candid binding generation and Internet Identity compatibility release.
Highlights:
- Add
ic-candid-swift-bindgen0.1.0, a deterministic Rust CLI for typed Swift models and canister wrappers - Add
ICNativeClientBindgenPluginfor Derived Sources generation in SwiftPM and Xcode - Bundle and verify macOS arm64 and x86_64 generator artifacts
- Validate optional, vector, recursive, numeric-field, and identifier-collision cases
- Support P-256 intermediate delegation signatures used by Internet Identity
- Preserve Ed25519 and canister-signature verification paths
Existing ICNativeClient public APIs, stored session formats, principal derivation, and wire formats remain unchanged.
See CHANGELOG.md and README.md for usage and compatibility details.