Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
f163367
SDK Go version (#920)
Vishalkulkarni45 Aug 20, 2025
bf718d5
Moving proving Utils to common (#935)
aaronmgdr Aug 22, 2025
cc28f07
Move proving inputs to the common package (#937)
aaronmgdr Aug 22, 2025
af3adbc
Fix mock passport flow (#942)
transphorm Aug 23, 2025
a918b45
fix: extractMRZ (#938)
seshanthS Aug 24, 2025
d8bf5f9
Move Proving attest and cose (#950)
aaronmgdr Aug 25, 2025
610f195
SELF-253 feat: add user email feedback (#889)
seshanthS Aug 25, 2025
431f556
chore: centralize license header checks (#952)
transphorm Aug 25, 2025
cf75bfa
update unsupported passport screen (#953)
remicolin Aug 25, 2025
4367780
Migrate Analytics (#951)
aaronmgdr Aug 26, 2025
6c3cd97
Read document catalog from selfClient (#936)
shazarre Aug 26, 2025
590f188
[SELF-676] feat: upgrade React Native from 0.75.4 to 0.76.9 (#943)
transphorm Aug 27, 2025
ebf5d51
fix mobile ci (#964)
transphorm Aug 27, 2025
dba8ee1
feat: improve mixpanel flush strategy (#960)
transphorm Aug 28, 2025
fc47291
refactor: remove namespace imports (#969)
transphorm Aug 28, 2025
7536875
Mixpanel tweaks (#971)
transphorm Aug 28, 2025
09ad70b
Add DSC parsing check (#836)
transphorm Aug 28, 2025
39976c3
chore(app): upgrade dependencies (#968)
transphorm Aug 28, 2025
d9f80f8
Auth Adapter + (#958)
aaronmgdr Aug 28, 2025
0e3e5de
Fix nfc configuration scanning issue (#978)
transphorm Aug 28, 2025
3b53408
Chore fix ios nfc scanning and compiling (#979)
transphorm Aug 28, 2025
39610c3
large runner (#980)
transphorm Aug 28, 2025
f98effe
chore: update to macos latest large runner (#981)
transphorm Aug 29, 2025
b8f3505
Move loadSelectedDocument to SDK (#967)
shazarre Aug 29, 2025
18697f0
docs: update mobile SDK migration progress (#982)
transphorm Aug 29, 2025
ac745bb
moves validateDocument functions into the common package. (#977)
aaronmgdr Aug 29, 2025
dc9804f
chore: update yarn.lock
seshanthS Aug 29, 2025
12aff53
chore(app): resolve lint warnings (#990)
transphorm Aug 30, 2025
c895396
[SELF-703] feat: Migrate mock generator to mobile sdk (#992)
transphorm Aug 30, 2025
e3b5e2e
[SELF-698] scaffold mobile sdk demo app (#993)
transphorm Aug 31, 2025
520c05d
SELF-702: Refactor navigation structure and dev utilities (#994)
transphorm Aug 31, 2025
ce58283
feat: clarify proof verification analytics (#996)
transphorm Sep 1, 2025
ec732da
feat: increase sha256 byte size and add new rsa circuits (#986)
Nesopie Sep 2, 2025
5a61425
chore: implement google play suggestions (#997)
transphorm Sep 4, 2025
b72d909
chore: address yarn lock issues (#1004)
transphorm Sep 5, 2025
145cc89
skip postinstall for ci (#1005)
transphorm Sep 5, 2025
ec93ad5
[SELF-654] feat: add native modules (#919)
seshanthS Sep 7, 2025
b6d526e
chore: update dev with staging 09/06/25 (#1007)
transphorm Sep 7, 2025
ff678b3
chore: fix yarn format (#1009)
transphorm Sep 8, 2025
78b2341
add new home screen (#1019)
remicolin Sep 8, 2025
44bc719
chore: update the cpp build script (#1021)
Nesopie Sep 9, 2025
94651a8
chore: install node (#1022)
Nesopie Sep 9, 2025
48cadcf
chore: use node v22 (#1023)
Nesopie Sep 9, 2025
2200c85
chore: install yarn (#1024)
Nesopie Sep 9, 2025
a7d9f05
chore: yarn cache (#1025)
Nesopie Sep 9, 2025
b62df10
chore: sanitise node version (#1026)
Nesopie Sep 9, 2025
a1c6998
remove lazy loading (#1018)
transphorm Sep 9, 2025
75dee90
chore(ci): improve mobile e2e caching (#1010)
transphorm Sep 9, 2025
3aabfc9
moves ofac and protocol store (#1012)
aaronmgdr Sep 9, 2025
3b93831
chore: remove register id from register circuits (#1028)
Nesopie Sep 9, 2025
5de4aa8
Feat/build cpp (#1029)
Nesopie Sep 9, 2025
99c5612
Remove navigationRef from provingMachine (#1011)
shazarre Sep 9, 2025
c1042f5
SDK: minimize amount of data sent through PROVING_PASSPORT_NOT_SUPPOR…
shazarre Sep 9, 2025
990bee0
Fix mock passport generation (#1031)
transphorm Sep 9, 2025
b50a289
Feat/aadhaar (#949)
Nesopie Sep 9, 2025
5702f55
fix: CLA not supported (#1027)
seshanthS Sep 9, 2025
5a65afa
chore: bump app version v2.6.5 (#1034)
transphorm Sep 9, 2025
f343cbb
chore: fix nfc passport reader private repo access (#1042)
transphorm Sep 10, 2025
e9ae259
build(android): support 16KB page size (#1043)
transphorm Sep 11, 2025
45ba5bc
chore: bump v2.6.5 for release (#1036)
transphorm Sep 11, 2025
87424d9
Feat/build aadhaar (#1044)
Nesopie Sep 11, 2025
b26aca0
fix aadhaar register output after building the cpp circuit (#1045)
Nesopie Sep 11, 2025
88848ef
fix: metro js crypto module build issues (#1047)
transphorm Sep 11, 2025
054cfaf
feat: add new verifiers (#1049)
Nesopie Sep 11, 2025
2ef955a
fix: ofac check to aadhaar (#1050)
Nesopie Sep 11, 2025
0518217
fix: hub-v2 (#1051)
Nesopie Sep 11, 2025
4db3734
Add DisclosureVerified event for comprehensive verification tracking …
kevinsslin Sep 11, 2025
f416211
move clearPassportData, markCurrentDocumentAsRegistered, reStorePassp…
shazarre Sep 11, 2025
1f362b3
Move self app store to mobile sdk (#1040)
aaronmgdr Sep 11, 2025
c2ec367
chore(mobile-sdk-alpha): remove unused tslib dependency (#1053)
aaronmgdr Sep 11, 2025
00a0967
remove unused imports (#1055)
aaronmgdr Sep 11, 2025
36ffe36
fix: sha256 signed attr tests (#1058)
Nesopie Sep 12, 2025
5b02868
fix mock screen launch (#1059)
transphorm Sep 12, 2025
85df676
Hotfix: Belgium ID cards (#1061)
seshanthS Sep 12, 2025
94d8fca
fix: OFAC trees not found (#1060)
transphorm Sep 12, 2025
99165c9
[SELF-723] feat: add structured NFC and Proof logging (#1048)
transphorm Sep 13, 2025
51a12a1
skip on dev (#1063)
transphorm Sep 13, 2025
3d0a5b4
don't get fancy just disable (#1064)
transphorm Sep 13, 2025
be2b52a
saw it building so gonna try (#1065)
transphorm Sep 13, 2025
e464bde
Merge branch 'dev' into staging
transphorm Sep 13, 2025
4cf5b5f
Dev (#1074)
remicolin Sep 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ reviews:
auto_review:
enabled: true
drafts: false
base_branches: ["main", "dev"]
base_branches: ["main", "dev", "staging"]
tools:
github-checks:
timeout_ms: 300000
Expand Down
161 changes: 0 additions & 161 deletions .cursor/rules/technical-specification.mdc

This file was deleted.

5 changes: 3 additions & 2 deletions .cursorignore
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,6 @@ circuits/tests/**/test_cases.ts

# iOS
*.xcworkspace/
*.xcodeproj/
*.pbxproj
app/ios/App Thinning Size Report.txt

# Android
Expand Down Expand Up @@ -278,6 +276,9 @@ circuits/ptau/
!**/*.sol
!**/*.circom

# Exception for specific private module setup script
!app/scripts/setup-private-modules.cjs

# But exclude generated TypeScript declaration files
**/*.d.ts
!**/types/*.d.ts
Expand Down
20 changes: 0 additions & 20 deletions .cursorrules
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
## Core Workflows

1. Document Verification Flow
- NFC chip data extraction and validation
- Zero-knowledge proof generation for privacy
- Multi-stage attestation verification
- Cross-chain verification support
Expand Down Expand Up @@ -128,25 +127,6 @@ This is a React Native identity verification app with NFC passport reading, zero
- Test utilities in `tests/__setup__/databaseMocks.ts`
- Mock database instance for testing

## NFC Implementation

### Cross-Platform Architecture
- iOS: Custom PassportReader Swift module
- Android: Custom RNPassportReaderModule Kotlin implementation
- Unified JavaScript interface with platform detection

### Authentication Methods
- MRZ Key: Derived from passport number, DOB, and expiry date
- CAN (Card Access Number): 6-digit number for PACE authentication
- PACE: Password Authenticated Connection Establishment
- BAC fallback when PACE fails

### Error Handling
- Multiple BAC attempts with delays
- Graceful degradation from PACE to BAC
- Real-time status updates and haptic feedback
- Comprehensive error boundaries

## Code Organization

### File Structure
Expand Down
46 changes: 43 additions & 3 deletions .gitguardian.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,44 @@
version: 2
exclusion_globs:
# GitGuardian configuration for ggshield
# This file configures which files and secrets to ignore during scanning

# Ignore specific file patterns
paths-ignore:
# Mock certificates for testing (these are intentionally committed test data)
- "**/mock_certificates/**/*.key"
- "**/mock_certificates/**/*.crt"
- "**/mock_certificates/**/*.pem"
- "**/constants/mockCertificates.ts"
- "common/src/mock_certificates/**"
- "common/src/constants/mockCertificates.ts"
- "common/src/mock_certificates/aadhaar/mockAadhaarCert.ts"
- "common/src/utils/passports/genMockIdDoc.ts"

# Test data files
- "**/test/**/*.key"
- "**/test/**/*.crt"
- "**/test/**/*.pem"
- "**/tests/**/*.key"
- "**/tests/**/*.crt"
- "**/tests/**/*.pem"

# Mock data files
- "**/mock/**/*.key"
- "**/mock/**/*.crt"
- "**/mock/**/*.pem"

# Demo app test data
- "**/demo-app/**/mock/**"
- "**/demo-app/**/test-data/**"
- "**/test-data/**"
- "**/mock-data/**"

# Generated test files
- "**/generated/**/*.key"
- "**/generated/**/*.crt"
- "**/generated/**/*.pem"

# Ignore specific secret types for mock files
secrets-ignore:
- "Generic Private Key" # For mock certificate keys
- "Generic Certificate" # For mock certificates
- "RSA Private Key" # For mock RSA keys
- "EC Private Key" # For mock EC keys
30 changes: 30 additions & 0 deletions .github/actions/cache-built-deps/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: cache-built-deps
description: Cache built JS artifacts (common + mobile-sdk-alpha)
inputs:
cache-version:
description: Cache version string for cache key
required: true
outputs:
cache-hit:
description: Whether cache was hit during restore
value: ${{ steps.restore.outputs.cache-hit }}
runs:
using: composite
steps:
- id: restore
name: Restore Built Dependencies
uses: actions/cache/restore@v4
with:
path: |
common/dist
packages/mobile-sdk-alpha/dist
key: built-deps-${{ inputs.cache-version }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
fail-on-cache-miss: false
- name: Save Built Dependencies
if: steps.restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
common/dist
packages/mobile-sdk-alpha/dist
key: built-deps-${{ inputs.cache-version }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
50 changes: 50 additions & 0 deletions .github/actions/clone-android-passport-reader/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Clone android-passport-reader
description: "Clones the android-passport-reader repository if it does not exist"

inputs:
working_directory:
description: "Working directory path (where android/ subdirectory is located)"
required: false
default: "."
selfxyz_internal_pat:
description: "SELFXYZ internal repository PAT for private repository access"
required: false

runs:
using: "composite"
steps:
- name: Clone android-passport-reader
shell: bash
run: |
set -euo pipefail
# Check if PAT is available for private module cloning
if [ -z "${{ inputs.selfxyz_internal_pat }}" ]; then
echo "🔒 Skipping private module cloning (no PAT provided)"
echo "ℹ️ This is expected for forked PRs - build will continue without private modules"
exit 0
fi

cd "${{ inputs.working_directory }}"

if [ ! -d "android/android-passport-reader" ]; then
echo "📦 Cloning android-passport-reader for build..."
cd android

# Clone using PAT (embed temporarily, then scrub)
if git clone --depth 1 --quiet "https://${{ inputs.selfxyz_internal_pat }}@github.com/selfxyz/android-passport-reader.git"; then
echo "✅ android-passport-reader cloned successfully"
# Immediately scrub the credential from remote URL for security
git -C android-passport-reader remote set-url origin https://github.com/selfxyz/android-passport-reader.git || true
else
echo "❌ Failed to clone android-passport-reader"
echo "Please ensure a valid SELFXYZ internal PAT is provided to this action"
exit 1
fi
Comment on lines +34 to +42
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Critical security concern: PAT exposure in git clone URL.

The PAT is embedded directly in the git clone URL, which could potentially expose it in logs or process lists. While you do scrub the credential afterward, this creates a window of vulnerability.

Consider using git credential helper or environment variables:

-          # Clone using PAT (embed temporarily, then scrub)
-          if git clone --depth 1 --quiet "https://${{ inputs.selfxyz_internal_pat }}@github.com/selfxyz/android-passport-reader.git"; then
+          # Configure git credential helper temporarily
+          git config --global credential.helper store
+          echo "https://${{ inputs.selfxyz_internal_pat }}@github.com" > ~/.git-credentials
+          
+          if git clone --depth 1 --quiet https://github.com/selfxyz/android-passport-reader.git; then
             echo "✅ android-passport-reader cloned successfully"
-            # Immediately scrub the credential from remote URL for security
-            git -C android-passport-reader remote set-url origin https://github.com/selfxyz/android-passport-reader.git || true
+            # Clean up credentials
+            rm -f ~/.git-credentials
+            git config --global --unset credential.helper
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if git clone --depth 1 --quiet "https://${{ inputs.selfxyz_internal_pat }}@github.com/selfxyz/android-passport-reader.git"; then
echo "✅ android-passport-reader cloned successfully"
# Immediately scrub the credential from remote URL for security
git -C android-passport-reader remote set-url origin https://github.com/selfxyz/android-passport-reader.git || true
else
echo "❌ Failed to clone android-passport-reader"
echo "Please ensure a valid SELFXYZ internal PAT is provided to this action"
exit 1
fi
git config --global credential.helper store
echo "https://${{ inputs.selfxyz_internal_pat }}@github.com" > ~/.git-credentials
if git clone --depth 1 --quiet https://github.com/selfxyz/android-passport-reader.git; then
echo "✅ android-passport-reader cloned successfully"
# Clean up credentials
rm -f ~/.git-credentials
git config --global --unset credential.helper
else
echo "❌ Failed to clone android-passport-reader"
echo "Please ensure a valid SELFXYZ internal PAT is provided to this action"
exit 1
fi
🤖 Prompt for AI Agents
.github/actions/clone-android-passport-reader/action.yml lines 34-42: avoid
embedding the PAT directly in the clone URL; instead remove the token from the
URL and supply credentials via a non-URL mechanism (e.g., configure git to use
an in-memory credential helper or supply an auth header). Replace the current
git clone call with one that does not include the token and either (a) use git
-c http.extraheader="AUTHORIZATION: bearer $TOKEN" clone
https://github.com/selfxyz/android-passport-reader.git, or (b) use GIT_ASKPASS
or a temporary credential helper to provide the PAT to git (approve the
credential then immediately clear it), and ensure you scrub or unset the
environment variable after use so the token never appears in process args or
logs.

elif [ "$CI" = "true" ]; then
echo "⚠️ android-passport-reader exists in CI - this is unexpected"
echo "📁 Directory contents:"
ls -la android/android-passport-reader/ || true
else
echo "📁 android-passport-reader already exists - preserving existing directory"
echo "ℹ️ Local development environment detected - your changes are safe"
fi
12 changes: 6 additions & 6 deletions .github/actions/mobile-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ runs:
yarn set version 4.6.0

echo "📦 Installing JavaScript dependencies with strict lock file..."
if ! yarn install --immutable; then
if ! yarn install --immutable --inline-builds; then
echo ""
echo "❌ ERROR: yarn.lock is out of date!"
echo ""
Expand All @@ -78,12 +78,12 @@ runs:
fi

# Run mobile-specific installation
if [[ "${{ runner.os }}" == "macOS" ]]; then
yarn install-app:mobile-deploy:ios
else
yarn install-app:mobile-deploy
fi
yarn install-app:mobile-deploy

- name: Install Ruby dependencies
shell: bash
run: |
cd ${{ inputs.app_path }}
# Install Ruby gems with bundler (respecting cache)
echo "📦 Installing Ruby gems with strict lock file..."
if ! bundle install --jobs 4 --retry 3; then
Expand Down
Loading
Loading