mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
SEL-544: Generate Mock DSC on mock-passport flow (#772)
* feat: Generate mock DSC on mock-passport flow * Remove console log * yarn format * revert to mock dsc generation
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import {
|
||||
countryCodes,
|
||||
generateMockDSC,
|
||||
genMockIdDoc,
|
||||
getSKIPEM,
|
||||
IdDocInput,
|
||||
@@ -228,7 +229,19 @@ const MockDataScreen: React.FC<MockDataScreenProps> = ({}) => {
|
||||
}
|
||||
}
|
||||
idDocInput.birthDate = dobForGeneration;
|
||||
const rawMockData = genMockIdDoc(idDocInput);
|
||||
let mockDSC, rawMockData;
|
||||
try {
|
||||
mockDSC = await generateMockDSC(
|
||||
idDocInput.signatureType || 'rsa_sha256_65537_2048',
|
||||
);
|
||||
rawMockData = genMockIdDoc(idDocInput, mockDSC);
|
||||
} catch (error) {
|
||||
console.warn(
|
||||
'Falling back to default mock DSC. Error during mock DSC generation:',
|
||||
error,
|
||||
);
|
||||
rawMockData = genMockIdDoc(idDocInput);
|
||||
}
|
||||
const skiPem = await getSKIPEM('staging');
|
||||
const parsedMockData = initPassportDataParsing(rawMockData, skiPem);
|
||||
await storePassportData(parsedMockData);
|
||||
|
||||
@@ -18,6 +18,7 @@ import { parseDscCertificateData } from './src/utils/passports/passport_parsing/
|
||||
import { getLeafCscaTree, getLeafDscTree } from './src/utils/trees.js';
|
||||
import {
|
||||
genMockIdDoc,
|
||||
generateMockDSC,
|
||||
genMockIdDocAndInitDataParsing,
|
||||
IdDocInput,
|
||||
} from './src/utils/passports/genMockIdDoc.js';
|
||||
@@ -62,6 +63,7 @@ export {
|
||||
PublicKeyDetailsECDSA,
|
||||
PublicKeyDetailsRSA,
|
||||
genMockIdDoc,
|
||||
generateMockDSC,
|
||||
genMockIdDocAndInitDataParsing,
|
||||
buildSMT,
|
||||
calculateUserIdentifierHash,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// generate a mock id document
|
||||
|
||||
import { DocumentType, PassportData, SignatureAlgorithm } from '../types.js';
|
||||
import { hashAlgosTypes } from '../../constants/constants.js';
|
||||
import { API_URL_STAGING, hashAlgosTypes } from '../../constants/constants.js';
|
||||
import { countries } from '../../constants/countries.js';
|
||||
import { genDG1 } from './dg1.js';
|
||||
import { getHashLen, hash } from '../hash.js';
|
||||
@@ -44,12 +44,42 @@ const defaultIdDocInput: IdDocInput = {
|
||||
sex: 'M',
|
||||
};
|
||||
|
||||
export function genMockIdDoc(userInput: Partial<IdDocInput> = {}): PassportData {
|
||||
export async function generateMockDSC(
|
||||
signatureType: string
|
||||
): Promise<{ privateKeyPem: string; dsc: string }> {
|
||||
const response = await fetch(`${API_URL_STAGING}/api/v2/generate-dsc`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ signatureType }),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to generate DSC: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
if (!data || !data.data) {
|
||||
throw new Error('Missing data in server response');
|
||||
}
|
||||
if (typeof data.data.privateKeyPem !== 'string' || typeof data.data.dsc !== 'string') {
|
||||
throw new Error('Invalid DSC response format from server');
|
||||
}
|
||||
return { privateKeyPem: data.data.privateKeyPem, dsc: data.data.dsc };
|
||||
}
|
||||
|
||||
export function genMockIdDoc(
|
||||
userInput: Partial<IdDocInput> = {},
|
||||
mockDSC?: { dsc: string; privateKeyPem: string }
|
||||
): PassportData {
|
||||
const mergedInput: IdDocInput = {
|
||||
...defaultIdDocInput,
|
||||
...userInput,
|
||||
};
|
||||
const { privateKeyPem, dsc } = getMockDSC(mergedInput.signatureType);
|
||||
let privateKeyPem: string, dsc: string;
|
||||
if (mockDSC) {
|
||||
dsc = mockDSC.dsc;
|
||||
privateKeyPem = mockDSC.privateKeyPem;
|
||||
} else {
|
||||
({ privateKeyPem, dsc } = getMockDSC(mergedInput.signatureType));
|
||||
}
|
||||
|
||||
const dg1 = genDG1(mergedInput);
|
||||
const dg1_hash = hash(mergedInput.dgHashAlgo, formatMrz(dg1));
|
||||
|
||||
Reference in New Issue
Block a user