diff --git a/app/android/app/src/main/java/com/proofofpassportapp/ui/CameraMLKitFragment.kt b/app/android/app/src/main/java/com/proofofpassportapp/ui/CameraMLKitFragment.kt index 150706530..bf83fb57a 100644 --- a/app/android/app/src/main/java/com/proofofpassportapp/ui/CameraMLKitFragment.kt +++ b/app/android/app/src/main/java/com/proofofpassportapp/ui/CameraMLKitFragment.kt @@ -256,11 +256,15 @@ class CameraMLKitFragment(cameraMLKitCallback: CameraMLKitCallback) : CameraFrag if (!isAdded) { return } - OcrUtils.processOcr( - results = results, - timeRequired = timeRequired, - callback = mrzListener - ) + try { + OcrUtils.processOcr( + results = results, + timeRequired = timeRequired, + callback = mrzListener + ) + } catch (e: Exception) { + mrzListener.onFailure(e, timeRequired) + } } override fun onCanceled(timeRequired: Long) { diff --git a/app/src/screens/documents/selection/LogoConfirmationScreen.tsx b/app/src/screens/documents/selection/LogoConfirmationScreen.tsx index 55813cf3d..10c7a4ee2 100644 --- a/app/src/screens/documents/selection/LogoConfirmationScreen.tsx +++ b/app/src/screens/documents/selection/LogoConfirmationScreen.tsx @@ -3,7 +3,7 @@ // NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE. import React, { useCallback } from 'react'; -import { StyleSheet, View } from 'react-native'; +import { YStack } from 'tamagui'; import type { RouteProp } from '@react-navigation/native'; import { useNavigation, useRoute } from '@react-navigation/native'; import type { NativeStackNavigationProp } from '@react-navigation/native-stack'; @@ -16,6 +16,7 @@ import { } from '@selfxyz/mobile-sdk-alpha/components'; import { black, + slate100, slate400, white, } from '@selfxyz/mobile-sdk-alpha/constants/colors'; @@ -78,8 +79,8 @@ const LogoConfirmationScreen: React.FC = () => { // User completed verification - navigate to KycSuccessScreen navigation.navigate('KycSuccess', { userId: accessToken.userId }); - } catch (error) { - console.error('Error launching Sumsub:', error); + } catch { + console.error('Error launching Sumsub verification'); showModal({ titleText: 'Error', bodyText: 'Unable to start verification. Please try again.', @@ -92,26 +93,49 @@ const LogoConfirmationScreen: React.FC = () => { }, [documentType, countryCode, navigation, showModal]); return ( - + - - - + + + Does your document have this symbol? - + - + - + This symbol indicates your document has a biometric chip, which is required for registration. - + - + Yes {kycEnabled && ( @@ -124,33 +148,3 @@ const LogoConfirmationScreen: React.FC = () => { }; export default LogoConfirmationScreen; - -const styles = StyleSheet.create({ - contentContainer: { - alignItems: 'center', - gap: 24, - maxWidth: 340, - }, - titleText: { - fontSize: 20, - fontFamily: advercase, - textAlign: 'center', - color: black, - }, - logoContainer: { - backgroundColor: white, - borderRadius: 16, - padding: 24, - shadowColor: black, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.1, - shadowRadius: 8, - elevation: 4, - }, - descriptionText: { - fontSize: 16, - fontFamily: dinot, - textAlign: 'center', - color: slate400, - }, -}); diff --git a/app/version.json b/app/version.json index 42daacd00..e62830802 100644 --- a/app/version.json +++ b/app/version.json @@ -1,7 +1,7 @@ { "ios": { - "build": 211, - "lastDeployed": "2026-02-04T22:15:04.337Z" + "build": 212, + "lastDeployed": "2026-02-06T23:20:10.343Z" }, "android": { "build": 140, diff --git a/contracts/contracts/libraries/CustomVerifier.sol b/contracts/contracts/libraries/CustomVerifier.sol index 9e6d3cd2c..d1f11597e 100644 --- a/contracts/contracts/libraries/CustomVerifier.sol +++ b/contracts/contracts/libraries/CustomVerifier.sol @@ -346,7 +346,7 @@ library CustomVerifier { userIdentifier: kycOutput.userIdentifier, nullifier: kycOutput.nullifier, forbiddenCountriesListPacked: kycOutput.forbiddenCountriesListPacked, - issuingState: "UNAVAILABLE", + issuingState: CircuitAttributeHandlerV2.getIssuingState(AttestationId.KYC, kycOutput.revealedDataPacked), name: CircuitAttributeHandlerV2.getName(AttestationId.KYC, kycOutput.revealedDataPacked), idNumber: CircuitAttributeHandlerV2.getDocumentNumber(AttestationId.KYC, kycOutput.revealedDataPacked), nationality: CircuitAttributeHandlerV2.getNationality(AttestationId.KYC, kycOutput.revealedDataPacked), diff --git a/contracts/contracts/verifiers/gcp/Verifier_gcp_jwt.sol b/contracts/contracts/verifiers/gcp/Verifier_gcp_jwt.sol index 629ddd7a7..3eaa8a27f 100644 --- a/contracts/contracts/verifiers/gcp/Verifier_gcp_jwt.sol +++ b/contracts/contracts/verifiers/gcp/Verifier_gcp_jwt.sol @@ -37,10 +37,10 @@ contract Verifier_gcp_jwt { uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; - uint256 constant deltax1 = 1804222383802986733937376810902861143401033555807870231731929239915419049861; - uint256 constant deltax2 = 15902885537441599351050098769394227668772388058868388096316964244217496511682; - uint256 constant deltay1 = 4195707504005103778106485021796359604414786496137920116128130440872062477216; - uint256 constant deltay2 = 20513207510859042996645896574478474889840017920990203652675014165180462273668; + uint256 constant deltax1 = 1251881756337791411928133847605135151052521532650145608856023618834663237249; + uint256 constant deltax2 = 5281789764009987450775605587672163080892994094738055552649386387568551504938; + uint256 constant deltay1 = 10977469751764298292601658816468903002676551535082393684254221834632855537611; + uint256 constant deltay2 = 16316330863572428734364637140327331781488799597244767274686281923936865378112; uint256 constant IC0x = 6972951741762339913362267428319005943611938060812676091174501911982947323821; uint256 constant IC0y = 4968121098705797351946375443564156998686441710551907423285338106315203657372; diff --git a/sdk/core/src/utils/id.ts b/sdk/core/src/utils/id.ts index 2956c7dae..25a67e8cf 100644 --- a/sdk/core/src/utils/id.ts +++ b/sdk/core/src/utils/id.ts @@ -25,16 +25,12 @@ export const formatRevealedDataPacked = ( ); let issuingState = ''; - if (attestationId === 4) { - issuingState = 'UNAVAILABLE'; - } else { - issuingState = revealedDataPackedString - .subarray( - revealedDataIndices[attestationId].issuingStateStart, - revealedDataIndices[attestationId].issuingStateEnd + 1 - ) - .toString('utf-8'); - } + issuingState = revealedDataPackedString + .subarray( + revealedDataIndices[attestationId].issuingStateStart, + revealedDataIndices[attestationId].issuingStateEnd + 1 + ) + .toString('utf-8'); const name = revealedDataPackedString .subarray(