Skip to content

Commit c6db61b

Browse files
authored
Use secret from keychain (selfxyz#108)
1 parent 7e70b6f commit c6db61b

29 files changed

+146
-570
lines changed

app/src/Navigation.tsx

-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import DisclaimerScreen from './screens/DisclaimerScreen';
2020
import HomeScreen from './screens/HomeScreen';
2121
import LaunchScreen from './screens/LaunchScreen';
2222
import MockDataScreen from './screens/MockDataScreen';
23-
import NextScreen from './screens/NextScreen';
2423
import ConfirmBelongingScreen from './screens/Onboarding/ConfirmBelongingScreen';
2524
import LoadingScreen from './screens/Onboarding/LoadingScreen';
2625
import PassportCameraScreen from './screens/Onboarding/PassportCameraScreen';
@@ -117,13 +116,6 @@ const AppNavigation = createNativeStackNavigator({
117116
title: 'Mock Passport',
118117
},
119118
},
120-
// TODO: rename ? maybe summary
121-
NextScreen: {
122-
screen: NextScreen,
123-
options: {
124-
title: 'TODO: NextScreen',
125-
},
126-
},
127119
/**
128120
* HOME SECTION
129121
*/

app/src/screens/AccountFlow/RecoverWithPhraseScreen.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Text, TextArea, View, XStack, YStack } from 'tamagui';
99
import { SecondaryButton } from '../../components/buttons/SecondaryButton';
1010
import Description from '../../components/typography/Description';
1111
import Paste from '../../images/icons/paste.svg';
12+
import { useAuth } from '../../stores/authProvider';
1213
import {
1314
black,
1415
slate300,
@@ -17,14 +18,14 @@ import {
1718
slate700,
1819
white,
1920
} from '../../utils/colors';
20-
import { restoreSecret } from '../../utils/keychain';
2121

2222
interface RecoverWithPhraseScreenProps {}
2323

2424
const RecoverWithPhraseScreen: React.FC<
2525
RecoverWithPhraseScreenProps
2626
> = ({}) => {
2727
const navigation = useNavigation();
28+
const { restoreAccountFromMnemonic } = useAuth();
2829
const [mnemonic, setMnemonic] = useState<string>();
2930

3031
const onPaste = useCallback(async () => {
@@ -38,7 +39,7 @@ const RecoverWithPhraseScreen: React.FC<
3839
if (!mnemonic || !ethers.Mnemonic.isValidMnemonic(mnemonic)) {
3940
return;
4041
}
41-
await restoreSecret(mnemonic);
42+
await restoreAccountFromMnemonic(mnemonic);
4243
navigation.navigate('Home');
4344
}, [mnemonic]);
4445

app/src/screens/MockDataScreen.tsx

+6-7
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ import {
2020

2121
import { countryCodes } from '../../../common/src/constants/constants';
2222
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
23-
import { initPassportDataParsing } from '../../../common/src/utils/passports/passport';
2423
import CustomButton from '../components/CustomButton';
25-
import useUserStore from '../stores/userStore';
24+
import { usePassport } from '../stores/passportDataProvider';
2625
import {
2726
bgWhite,
2827
borderColor,
@@ -48,6 +47,7 @@ const MockDataScreen: React.FC<MockDataScreenProps> = ({}) => {
4847
date.toISOString().slice(8, 10)
4948
).toString();
5049
};
50+
const { setData } = usePassport();
5151

5252
const [selectedCountry, setSelectedCountry] = useState('USA');
5353
const [selectedAlgorithm, setSelectedAlgorithm] = useState('rsa sha256');
@@ -91,7 +91,7 @@ const MockDataScreen: React.FC<MockDataScreenProps> = ({}) => {
9191
castDate(-age),
9292
castDate(expiryYears),
9393
randomPassportNumber,
94-
'HENAO MONTOYA', // this name is the OFAC list
94+
'HENAO MONTOYA', // this name is on the OFAC list
9595
'ARCANGEL DE JESUS',
9696
);
9797
} else {
@@ -107,15 +107,14 @@ const MockDataScreen: React.FC<MockDataScreenProps> = ({}) => {
107107
randomPassportNumber,
108108
);
109109
}
110-
const passportDataInit = initPassportDataParsing(mockPassportData);
111-
useUserStore.getState().registerPassportData(passportDataInit);
112-
useUserStore.getState().setRegistered(true);
110+
111+
setData(mockPassportData);
113112
resolve(null);
114113
}, 0),
115114
);
116115

117116
await new Promise(resolve => setTimeout(resolve, 1000));
118-
navigation.navigate('NextScreen');
117+
navigation.navigate('ConfirmBelongingScreen');
119118
}, [selectedAlgorithm, selectedCountry, age, expiryYears, isInOfacList]);
120119

121120
return (

app/src/screens/NextScreen.tsx

-159
This file was deleted.

app/src/screens/Onboarding/LoadingScreen.tsx

+13-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import LottieView from 'lottie-react-native';
55

66
// Import passport data generation and payload functions from common
77
import { genMockPassportData } from '../../../../common/src/utils/passports/genMockPassportData';
8-
import { initPassportDataParsing } from '../../../../common/src/utils/passports/passport';
98
// Import animations
109
import failAnimation from '../../assets/animations/loading/fail.json';
1110
import miscAnimation from '../../assets/animations/loading/misc.json';
1211
import successAnimation from '../../assets/animations/loading/success.json';
1312
import useHapticNavigation from '../../hooks/useHapticNavigation';
13+
// import { usePassport } from '../../stores/passportDataProvider';
1414
import { ProofStatusEnum, useProofInfo } from '../../stores/proofProvider';
1515
import { registerPassport } from '../../utils/proving/payload';
1616

@@ -29,6 +29,7 @@ const LoadingScreen: React.FC = () => {
2929
};
3030
const [animationSource, setAnimationSource] = useState<any>(miscAnimation);
3131
const { status, setStatus } = useProofInfo();
32+
// const { getPassportDataAndSecret } = usePassport();
3233

3334
// Ensure we only set the initial status once on mount (if needed)
3435
useEffect(() => {
@@ -66,8 +67,17 @@ const LoadingScreen: React.FC = () => {
6667
'000101',
6768
'300101',
6869
);
69-
const passportDataInit = initPassportDataParsing(passportData);
70-
await registerPassport(passportDataInit);
70+
await registerPassport(passportData, '0');
71+
72+
// const passportDataAndSecret = await getPassportDataAndSecret();
73+
// if (!passportDataAndSecret) {
74+
// return;
75+
// }
76+
77+
// const { passportData, secret } = passportDataAndSecret.data;
78+
79+
// // This will trigger sendPayload(), which updates global status via your tee.ts code.
80+
// registerPassport(passportData, secret);
7181
} catch (error) {
7282
console.error('Error processing payload:', error);
7383
setStatus(ProofStatusEnum.ERROR);

app/src/screens/ProveFlow/ProveScreen.tsx

+9-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { Image, Text, View, YStack } from 'tamagui';
77

88
import { ArgumentsDisclose } from '../../../../common/src/utils/appType';
99
import { genMockPassportData } from '../../../../common/src/utils/passports/genMockPassportData';
10-
import { initPassportDataParsing } from '../../../../common/src/utils/passports/passport';
1110
import miscAnimation from '../../assets/animations/loading/misc.json';
1211
import Disclosures from '../../components/Disclosures';
1312
import { HeldPrimaryButton } from '../../components/buttons/PrimaryButtonLongHold';
@@ -22,7 +21,7 @@ import { sendVcAndDisclosePayload } from '../../utils/proving/payload';
2221

2322
const ProveScreen: React.FC = () => {
2423
const { navigate } = useNavigation();
25-
const { getData } = usePassport();
24+
const { getPassportDataAndSecret } = usePassport();
2625
const { selectedApp, setStatus } = useProofInfo();
2726

2827
// Add effect to log when selectedApp changes
@@ -60,8 +59,13 @@ const ProveScreen: React.FC = () => {
6059
buttonTap();
6160
navigate('ProofRequestStatusScreen');
6261
try {
63-
const passportData = await getData();
64-
await sendVcAndDisclosePayload('0', passportData!.data, selectedApp);
62+
const passportDataAndSecret = await getPassportDataAndSecret();
63+
if (!passportDataAndSecret) {
64+
return;
65+
}
66+
67+
const { passportData, secret } = passportDataAndSecret.data;
68+
await sendVcAndDisclosePayload(secret, passportData, selectedApp);
6569
} catch (e) {
6670
console.log('Error sending VC and disclose payload', e);
6771
setStatus(ProofStatusEnum.ERROR);
@@ -78,8 +82,7 @@ const ProveScreen: React.FC = () => {
7882
'000101',
7983
'300101',
8084
);
81-
const passportDataInit = initPassportDataParsing(passportData);
82-
await sendVcAndDisclosePayload('0', passportDataInit, selectedApp);
85+
await sendVcAndDisclosePayload('0', passportData, selectedApp);
8386
}
8487

8588
return (

app/src/screens/Settings/DevSettingsScreen.tsx

+1-7
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ const items: (keyof RootStackParamList)[] = [
2323
'AccountVerifiedSuccess',
2424
'ConfirmBelongingScreen',
2525
'CreateMock',
26-
'NextScreen',
2726
'Home',
2827
'Disclaimer',
2928
'QRCodeViewFinder',
@@ -92,16 +91,11 @@ const ScreenSelector = ({}) => {
9291
};
9392

9493
const DevSettingsScreen: React.FC<DevSettingsScreenProps> = ({}) => {
95-
const {
96-
clearPassportDataFromStorage,
97-
clearPassportMetadataFromStorage,
98-
setRegistered,
99-
} = useUserStore();
94+
const { clearPassportDataFromStorage, setRegistered } = useUserStore();
10095

10196
const nav = useNavigation();
10297

10398
function handleRestart() {
104-
clearPassportMetadataFromStorage();
10599
clearPassportDataFromStorage();
106100
setRegistered(false);
107101
nav.navigate('Launch');

app/src/stores/authProvider.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ async function restoreFromPrivateKey(privateKey: string) {
6969
return loadSecret();
7070
}
7171

72-
async function loadSecretOrCreateIt() {
72+
export async function loadSecretOrCreateIt() {
7373
const secret = await loadSecret();
7474
if (secret) {
7575
return secret;

0 commit comments

Comments
 (0)