Skip to content

Complete RN-03 NFC hardening and stabilize RN SDK tests#1797

Merged
transphorm merged 13 commits intodevfrom
justin/continue-kmp-work
Mar 11, 2026
Merged

Complete RN-03 NFC hardening and stabilize RN SDK tests#1797
transphorm merged 13 commits intodevfrom
justin/continue-kmp-work

Conversation

@transphorm
Copy link
Copy Markdown
Member

@transphorm transphorm commented Mar 1, 2026

Summary

  • Add NFC APDU pre-transceive validation (INS allowlist + command-shape checks) for the eMRTD path.
  • Keep compatibility by allowing ISO interindustry CLA variants (0x00..0x7F) while rejecting proprietary classes.
  • Add per-command APDU timeout guard (default 10s) with NFC_APDU_TIMEOUT and safe audit metadata.
  • Redact raw APDU input/native error details from bridge-visible error messages.
  • Remove generated assets/self-wallet artifacts from git and ignore them going forward.
  • Fix copy-assets with mkdir -p so first-run/CI doesn’t fail when target dirs are missing.
  • Fix test/CI asset ordering:
    • @selfxyz/rn-sdk test now runs copy-assets first.
    • CI now builds @selfxyz/webview-app before running @selfxyz/rn-sdk tests.
  • Expand regression coverage for APDU validation, timeout behavior, and redaction.

Summary by CodeRabbit

  • Bug Fixes

    • Stricter NFC APDU validation, clearer error codes, and safer error metadata (no raw APDU bytes)
  • New Features

    • Per-APDU timeout guard (default 10s) to prevent hung NFC commands
  • Documentation

    • Updated security/handoff guidance and NFC data-handling/privacy rules
  • Tests

    • Expanded unit and integration tests for NFC validation, timeouts, and error handling
  • Chores

    • Removed bundled self-wallet web assets and adjusted build/copy scripts and CI step

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 1, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds strict APDU validation and allowlisting, per-APDU transceive timeouts (configurable, default 10s) with timeout guards, per-command audit metadata and expanded NFC APDU error codes; extends tests and Vitest config; updates security handoff docs; removes embedded webview assets and adjusts asset copy behavior. (50 words)

Changes

Cohort / File(s) Summary
NFC Handler Production Code
packages/rn-sdk/src/handlers/NfcHandler.ts
Adds NfcHandlerOptions/apduTimeoutMs, default and max timeout constants, withTimeout helper, granular validateApduCommand (CLA/INS/AID/length rules), per-command audit counters and details, wraps transceive with per-APDU timeout, new error codes (INVALID_PARAMS, APDU_REJECTED, NFC_APDU_TIMEOUT, NFC_APDU_NOT_SUPPORTED), and standardizes native error text to "NFC scan failed".
Unit & Integration Tests
packages/rn-sdk/src/__tests__/NfcHandler.test.ts, packages/rn-sdk/tests/NfcHandler.test.ts
Adds/updates tests covering allowlist acceptance variants, rejection paths (invalid params, malformed hex, length bounds), NFC_APDU_TIMEOUT via fake timers, NFC_APDU_NOT_SUPPORTED when transceive missing, redaction/regression tests, and mock factories for NFC/router.
Docs & Security Spec
packages/rn-sdk/HANDOFF.md, specs/handoff-p1-fixes/SECURITY-HARDENING.md
Documents allowlist criteria, per-command timeout option/behavior, updated APDU error contract and telemetry redaction/audit guidance, and handoff status updates focusing scope on RN SDK.
Test Config & Scripts
packages/rn-sdk/vitest.config.ts, packages/rn-sdk/package.json
Adds Vitest config for the RN SDK; updates test script to run yarn copy-assets before build/tests and makes copy-assets mkdir-safe.
CI Workflow
.github/workflows/rn-sdk-test-app-ci.yml
Adds a CI step to build the webview app (yarn workspace @selfxyz/webview-app build) to the pipeline.
Ignore & Asset Cleanup
packages/rn-sdk/.gitignore, packages/rn-sdk/assets/self-wallet/index.html, packages/rn-sdk/assets/self-wallet/assets/index-VdzGwUkN.css
Removes embedded self-wallet HTML/CSS assets, updates .gitignore to ignore generated webview assets, and adjusts asset copy behavior to create destination directory first.

Sequence Diagram

sequenceDiagram
    participant Client as Client
    participant Handler as NfcHandler
    participant Validator as ValidateAPDU
    participant Guard as TimeoutGuard
    participant NFC as NFC_Hardware
    participant Audit as ErrorAudit

    Client->>Handler: handle('scan', { apduCommands })
    Handler->>Handler: init audit counters (total, accepted, rejected, timedOut)
    loop per command (i)
        Handler->>Validator: validateApduCommand(bytes)
        alt invalid
            Validator->>Audit: record INVALID_PARAMS (i)
            Audit->>Handler: throw INVALID_PARAMS + details
            Handler->>Client: return error (commandIndex, counts)
        else valid
            Handler->>Guard: transceive(apdu) with timeout(apduTimeoutMs)
            Guard->>NFC: transceive(apdu)
            alt timeout
                Guard->>Audit: record NFC_APDU_TIMEOUT (i)
                Audit->>Handler: throw NFC_APDU_TIMEOUT + details
                Handler->>Client: return timeout error (commandIndex, counts)
            else success
                NFC->>Guard: response
                Guard->>Handler: increment accepted
                Handler->>Client: append response
            end
        end
    end
    Handler->>Client: final responses and audit summary
Loading

Estimated Code Review Effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly Related PRs

  • kmp wrap up handoff work #1785: prior RN SDK APDU/transceive changes that introduced initial APDU handling; this PR hardens and extends that work (allowlisting, per-APDU timeouts, audit metadata).

Suggested Labels

codex

Suggested Reviewers

  • remicolin
  • shazarre
  • seshanthS

Poem

🧭 Tiny commands on a metal shore,
Scrubbed and timed, they ask no more,
Counters hum of what was tried,
Timeouts catch what slips aside,
NFC whispers safer lore.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description provides a clear summary of changes and testing approach, though the 'How to QA' section from the template is missing.
Title check ✅ Passed The title accurately summarizes the main objectives: NFC hardening (APDU validation, timeouts, redaction) and test stabilization (asset build flow, test ordering).

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch justin/continue-kmp-work

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@transphorm transphorm changed the title Justin/continue kmp work continue kmp work rd3 Mar 1, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/rn-sdk/src/handlers/NfcHandler.ts (1)

58-71: ⚠️ Potential issue | 🟠 Major

Add hard limits for APDU batch count and command size.

apduCommands and per-command hex length are currently unbounded. A malicious WebView payload can force heavy parsing/processing and significantly extend scan duration.

🛡️ Proposed bounds guard
 const DEFAULT_APDU_TIMEOUT_MS = 10_000;
+const MAX_APDU_COMMANDS = 32;
+const MAX_APDU_HEX_CHARS = 261 * 2; // short APDU max bytes (with optional Le)

 function parseApduCommand(hexCommand: string): number[] {
   const normalized = hexCommand.trim().replace(/\s+/g, '').toUpperCase();
+  if (normalized.length > MAX_APDU_HEX_CHARS) {
+    throw new BridgeHandlerError('INVALID_PARAMS', 'APDU command too long');
+  }
   if (!/^[0-9A-F]+$/.test(normalized) || normalized.length % 2 !== 0) {
     throw new BridgeHandlerError(
       'INVALID_PARAMS',
       'Invalid APDU hex command format',
     );
   }
@@
       const apduCommands = Array.isArray(params.apduCommands)
         ? params.apduCommands.filter((entry): entry is string => typeof entry === 'string')
         : [];
+      if (apduCommands.length > MAX_APDU_COMMANDS) {
+        throw new BridgeHandlerError('INVALID_PARAMS', 'Too many APDU commands');
+      }

Also applies to: 306-314

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/rn-sdk/src/handlers/NfcHandler.ts` around lines 58 - 71,
parseApduCommand currently allows arbitrarily many/large APDU hex strings which
a malicious WebView could abuse; add hard limits by validating the number of
APDU commands and each command's hex length before parsing (e.g., enforce
MAX_APDU_COMMANDS and MAX_HEX_LENGTH constants), and throw
BridgeHandlerError('INVALID_PARAMS', ...) if either limit is exceeded; apply the
same guard to the other APDU-handling site referenced (the block around lines
~306-314) so both the parseApduCommand function and the alternate handler
validate command count and per-command hex length prior to Number.parseInt
processing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/rn-sdk/HANDOFF.md`:
- Around line 109-112: Update the HANDOFF.md guidance for APDU debug logging:
change the current "local debug mode" allowance for logging apduResponses and
tagId to require an explicit, short-lived, approval-gated debug enablement
process (e.g., a named feature flag or documented approval step), mandate
scrubbed logs and automatic expiry of the debug flag, and explicitly state that
apduResponses and tagId must never be sent to analytics/crash logs or persisted
unless the approval process is followed; reference the sensitive identifiers
"tagId" and "apduResponses" in the text so readers know exactly which fields are
protected.

---

Outside diff comments:
In `@packages/rn-sdk/src/handlers/NfcHandler.ts`:
- Around line 58-71: parseApduCommand currently allows arbitrarily many/large
APDU hex strings which a malicious WebView could abuse; add hard limits by
validating the number of APDU commands and each command's hex length before
parsing (e.g., enforce MAX_APDU_COMMANDS and MAX_HEX_LENGTH constants), and
throw BridgeHandlerError('INVALID_PARAMS', ...) if either limit is exceeded;
apply the same guard to the other APDU-handling site referenced (the block
around lines ~306-314) so both the parseApduCommand function and the alternate
handler validate command count and per-command hex length prior to
Number.parseInt processing.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9406bac and 0b359b7.

⛔ Files ignored due to path filters (1)
  • packages/rn-sdk/assets/self-wallet/assets/index-CmyM-wgW.js.map is excluded by !**/*.map
📒 Files selected for processing (8)
  • packages/rn-sdk/HANDOFF.md
  • packages/rn-sdk/assets/self-wallet/assets/index-CmyM-wgW.js
  • packages/rn-sdk/assets/self-wallet/index.html
  • packages/rn-sdk/src/__tests__/NfcHandler.test.ts
  • packages/rn-sdk/src/handlers/NfcHandler.ts
  • packages/rn-sdk/tests/NfcHandler.test.ts
  • packages/rn-sdk/vitest.config.ts
  • specs/handoff-p1-fixes/SECURITY-HARDENING.md

Comment thread packages/rn-sdk/HANDOFF.md Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
packages/rn-sdk/HANDOFF.md (1)

107-118: Strong data-handling guidance; consider explicit approval workflow language.

This section substantially strengthens the debug logging safeguards compared to earlier iterations. The requirements for a named flag (not generic debug: true), automatic expiry, local-only output, and mandatory scrubbing before release provide comprehensive protection for sensitive NFC data.

The "requires re-approval on each launch" option in line 115 provides a form of approval gating. However, to align with the organization's debug-level secrets policy, consider explicitly mentioning an "approval workflow" or "documented approval process" in the criteria. This would make the approval-gating requirement unambiguous.

📋 Optional enhancement for explicit approval language
   2. The flag has automatic expiry (e.g., single session, time-limited, or requires re-approval on each launch).
+  2. The flag requires approval (e.g., documented approval process, tokenized environment flag) and has automatic expiry (e.g., single session, max 24 hours, or re-approval on each launch).

Based on learnings, debug-level secrets require tokenized environment flags with approval workflow and limited lifetime (max 24 hours).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/rn-sdk/HANDOFF.md` around lines 107 - 118, Update the NFC
Data-Handling Guidance to explicitly require a documented approval workflow and
tokenized environment flag for APDU debugging: state that the named debug flag
(e.g., NFC_APDU_DEBUG) must be issued via a documented approval process
(approval workflow), be tokenized/short-lived (max 24 hours), and require
re-approval after expiry or per launch; keep the other constraints (local-only
output, no network transmission, logs scrubbed) intact and reference the
protected fields tagId and apduResponses when describing the approval
requirement.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/rn-sdk/HANDOFF.md`:
- Around line 107-118: Update the NFC Data-Handling Guidance to explicitly
require a documented approval workflow and tokenized environment flag for APDU
debugging: state that the named debug flag (e.g., NFC_APDU_DEBUG) must be issued
via a documented approval process (approval workflow), be tokenized/short-lived
(max 24 hours), and require re-approval after expiry or per launch; keep the
other constraints (local-only output, no network transmission, logs scrubbed)
intact and reference the protected fields tagId and apduResponses when
describing the approval requirement.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b359b7 and c444c21.

⛔ Files ignored due to path filters (5)
  • packages/rn-sdk/assets/self-wallet/assets/index-BZlxLbn7.js.map is excluded by !**/*.map
  • packages/rn-sdk/assets/self-wallet/fonts/Advercase-Regular.otf is excluded by !**/*.otf
  • packages/rn-sdk/assets/self-wallet/fonts/DINOT-Bold.otf is excluded by !**/*.otf
  • packages/rn-sdk/assets/self-wallet/fonts/DINOT-Medium.otf is excluded by !**/*.otf
  • packages/rn-sdk/assets/self-wallet/fonts/IBMPlexMono-Regular.otf is excluded by !**/*.otf
📒 Files selected for processing (5)
  • packages/rn-sdk/.gitignore
  • packages/rn-sdk/HANDOFF.md
  • packages/rn-sdk/assets/self-wallet/assets/index-BZlxLbn7.js
  • packages/rn-sdk/assets/self-wallet/assets/index-VdzGwUkN.css
  • packages/rn-sdk/assets/self-wallet/index.html
💤 Files with no reviewable changes (2)
  • packages/rn-sdk/assets/self-wallet/assets/index-VdzGwUkN.css
  • packages/rn-sdk/assets/self-wallet/index.html
✅ Files skipped from review due to trivial changes (1)
  • packages/rn-sdk/.gitignore

@transphorm transphorm changed the title continue kmp work rd3 Harden APDU allowlisting Mar 1, 2026
@transphorm transphorm marked this pull request as draft March 1, 2026 18:16
@transphorm transphorm changed the title Harden APDU allowlisting Harden RN SDK NFC APDU handling and stabilize asset build/test flow Mar 3, 2026
@transphorm transphorm marked this pull request as ready for review March 3, 2026 23:27
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/rn-sdk-test-app-ci.yml (1)

38-43: ⚠️ Potential issue | 🟠 Major

Add explicit asset copy before rn-sdk tests

Line 42 runs tests without an explicit copy-assets step in this workflow. That leaves the CI path vulnerable to missing-asset/setup failures the PR is trying to eliminate.

Suggested workflow patch
       - name: Typecheck rn-sdk
         run: yarn workspace `@selfxyz/rn-sdk` typecheck
+      - name: Copy rn-sdk assets
+        run: yarn workspace `@selfxyz/rn-sdk` copy-assets
       - name: Test rn-sdk
         run: yarn workspace `@selfxyz/rn-sdk` test
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/rn-sdk-test-app-ci.yml around lines 38 - 43, CI currently
runs "Test rn-sdk" without explicitly copying assets; add an explicit asset-copy
step (e.g., a step named "Copy rn-sdk assets" that runs "yarn workspace
`@selfxyz/rn-sdk` copy-assets" or the repo's canonical asset copy script) before
the "Test rn-sdk" step (place it after "Typecheck rn-sdk") so tests run with
assets present; update the sequence of steps "Build webview-app", "Typecheck
rn-sdk", then the new "Copy rn-sdk assets", and finally "Test rn-sdk".
♻️ Duplicate comments (1)
packages/rn-sdk/HANDOFF.md (1)

113-116: ⚠️ Potential issue | 🟠 Major

Require tokenized, approval-gated debug enablement for raw APDU logging.

The current wording allows a named flag without explicitly requiring an approval-gated token and a hard max lifetime. Please tighten this section to mandate a tokenized debug flag with approval workflow and explicit expiry (e.g., ≤24h).

Proposed documentation update
--  1. A named debug flag (e.g., `NFC_APDU_DEBUG`) is enabled explicitly by a developer — not by a generic `debug: true` prop.
--  2. The flag has automatic expiry (e.g., single session, time-limited, or requires re-approval on each launch).
+  1. A tokenized, approval-gated debug flag (e.g., `NFC_APDU_DEBUG_TOKEN=<issued-token>`) is required; generic debug props are insufficient.
+  2. The token must be short-lived with a hard maximum lifetime (e.g., ≤24h) and must expire automatically.

Based on learnings: Debug-level secrets require tokenized environment flags (e.g., DEBUG_SECRETS_TOKEN=abc123) with approval workflow and limited lifetime (max 24 hours).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/rn-sdk/HANDOFF.md` around lines 113 - 116, Update the HANDOFF.md
policy text to require a tokenized, approval-gated debug enablement for raw APDU
logging: change the first bullet (currently allowing a named debug flag like
NFC_APDU_DEBUG) to require a tokenized flag (e.g., DEBUG_SECRETS_TOKEN or
NFC_APDU_DEBUG_TOKEN) that must be obtained via an explicit approval workflow,
enforce automatic expiry with a hard max lifetime (≤24 hours), and state that
tokens must be single-session/time-limited and never enabled via a generic debug
prop.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/rn-sdk/src/__tests__/NfcHandler.test.ts`:
- Around line 237-255: The test currently sets apduTimeoutMs: 1 and relies on
real timers which flakes; switch the test to use fake timers
(vi.useFakeTimers()), keep the mock transceive as a never-resolving promise,
call handler.handle('scan', ...) to start the operation, then advance timers
using vi.advanceTimersByTime(apduTimeoutMs + a small buffer) to trigger the
timeout path in NfcHandler/withTimeout logic, await the rejected promise and
assert the NFC_APDU_TIMEOUT error details, and finally restore real timers with
vi.useRealTimers(); reference NfcHandler, mockNfc.manager.transceive, and the
apduTimeoutMs option to locate the changes.

In `@packages/rn-sdk/src/handlers/NfcHandler.ts`:
- Around line 256-260: The constructor of NfcHandler assigns
options?.apduTimeoutMs directly to this.apduTimeoutMs allowing <=0, NaN or
absurdly large values; validate and clamp the value before assignment by: check
if options?.apduTimeoutMs is a finite number and > 0, otherwise fall back to
DEFAULT_APDU_TIMEOUT_MS, and constrain the value to an upper bound (introduce
MAX_APDU_TIMEOUT_MS constant) so this.apduTimeoutMs =
Math.min(Math.max(validatedValue, 1), MAX_APDU_TIMEOUT_MS) (referencing the
constructor, property apduTimeoutMs, class NfcHandler, and
DEFAULT_APDU_TIMEOUT_MS).
- Around line 58-64: The parseApduCommand function currently accepts unbounded
hexCommand input; add a maximum allowed length check before further processing
to avoid large-memory/CPU parsing attacks. Define a constant MAX_APDU_HEX_LENGTH
(e.g., 2048 characters or a project-appropriate limit) and after computing
normalized call a guard like if (normalized.length === 0 || normalized.length >
MAX_APDU_HEX_LENGTH) throw new BridgeHandlerError('INVALID_PARAMS','Invalid APDU
hex command format'); then continue the existing regex/byte-pair checks so
oversized inputs are rejected early in parseApduCommand.

---

Outside diff comments:
In @.github/workflows/rn-sdk-test-app-ci.yml:
- Around line 38-43: CI currently runs "Test rn-sdk" without explicitly copying
assets; add an explicit asset-copy step (e.g., a step named "Copy rn-sdk assets"
that runs "yarn workspace `@selfxyz/rn-sdk` copy-assets" or the repo's canonical
asset copy script) before the "Test rn-sdk" step (place it after "Typecheck
rn-sdk") so tests run with assets present; update the sequence of steps "Build
webview-app", "Typecheck rn-sdk", then the new "Copy rn-sdk assets", and finally
"Test rn-sdk".

---

Duplicate comments:
In `@packages/rn-sdk/HANDOFF.md`:
- Around line 113-116: Update the HANDOFF.md policy text to require a tokenized,
approval-gated debug enablement for raw APDU logging: change the first bullet
(currently allowing a named debug flag like NFC_APDU_DEBUG) to require a
tokenized flag (e.g., DEBUG_SECRETS_TOKEN or NFC_APDU_DEBUG_TOKEN) that must be
obtained via an explicit approval workflow, enforce automatic expiry with a hard
max lifetime (≤24 hours), and state that tokens must be
single-session/time-limited and never enabled via a generic debug prop.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4ffff0b and bfb4bd2.

📒 Files selected for processing (6)
  • .github/workflows/rn-sdk-test-app-ci.yml
  • packages/rn-sdk/HANDOFF.md
  • packages/rn-sdk/package.json
  • packages/rn-sdk/src/__tests__/NfcHandler.test.ts
  • packages/rn-sdk/src/handlers/NfcHandler.ts
  • packages/rn-sdk/tests/NfcHandler.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/rn-sdk/package.json

Comment thread packages/rn-sdk/src/__tests__/NfcHandler.test.ts
Comment thread packages/rn-sdk/src/handlers/NfcHandler.ts
Comment thread packages/rn-sdk/src/handlers/NfcHandler.ts
@transphorm transphorm marked this pull request as draft March 5, 2026 14:29
@transphorm transphorm changed the title Harden RN SDK NFC APDU handling and stabilize asset build/test flow WiP: Harden RN SDK NFC APDU handling and stabilize asset build/test flow Mar 5, 2026
@gitguardian
Copy link
Copy Markdown

gitguardian Bot commented Mar 11, 2026

⚠️ GitGuardian has uncovered 2 secrets following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secrets in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
19414827 Triggered Generic Password 46f5ef1 app/ios/PassportReaderCore.swift View secret
19414827 Triggered Generic Password 46f5ef1 packages/mobile-sdk-alpha/ios/SelfSDK/PassportReaderCore.swift View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secrets safely. Learn here the best practices.
  3. Revoke and rotate these secrets.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@transphorm transphorm marked this pull request as ready for review March 11, 2026 04:28
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@transphorm transphorm changed the title WiP: Harden RN SDK NFC APDU handling and stabilize asset build/test flow Complete RN-03 NFC hardening and stabilize RN SDK tests Mar 11, 2026
@transphorm transphorm merged commit 774fe29 into dev Mar 11, 2026
19 checks passed
@transphorm transphorm deleted the justin/continue-kmp-work branch March 11, 2026 04:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant