Skip to content

Commit

Permalink
remove signatureAlgorithm and pubKey from PassportData
Browse files Browse the repository at this point in the history
  • Loading branch information
0xturboblitz committed Sep 14, 2024
1 parent 82cd100 commit 4bc2afc
Show file tree
Hide file tree
Showing 12 changed files with 13 additions and 239 deletions.
2 changes: 1 addition & 1 deletion app/src/screens/MainScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ const MainScreen: React.FC = () => {
// console.log('CSCA Proof received:', cscaProof);
// if ((cscaProof !== null) && (localProof !== null)) {
// const sendTransaction = async () => {
// const sigAlgFormatted = formatSigAlgNameForCircuit(passportData.signatureAlgorithm, passportData.pubKey.exponent);
// const sigAlgFormatted = formatSigAlgNameForCircuit(passportData.signatureAlgorithm, passportData.pubKey.exponent); // this is old formatting
// const sigAlgIndex = SignatureAlgorithmIndex[sigAlgFormatted as keyof typeof SignatureAlgorithmIndex]
// console.log("local proof already generated, sending transaction");
// const provider = new ethers.JsonRpcProvider(RPC_URL);
Expand Down
2 changes: 1 addition & 1 deletion app/src/screens/ProveScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const ProveScreen: React.FC<ProveScreenProps> = ({ setSheetRegisterIsOpen }) =>

const [socket, setSocket] = useState<Socket | null>(null);
const [isConnecting, setIsConnecting] = useState(false);
const { signatureAlgorithm, hashFunction } = getSignatureAlgorithm(passportData.dsc as string);
const { signatureAlgorithm, hashFunction } = getSignatureAlgorithm(passportData.dsc);
const circuitName = getCircuitName(selectedApp.circuit, signatureAlgorithm, hashFunction);

const waitForSocketConnection = (socket: Socket): Promise<void> => {
Expand Down
3 changes: 2 additions & 1 deletion app/src/stores/userStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import * as Keychain from 'react-native-keychain';
import * as amplitude from '@amplitude/analytics-react-native';
import { loadPassportData, loadSecret, loadSecretOrCreateIt, storePassportData } from '../utils/keychain';
import { generateDscSecret } from '../../../common/src/utils/csca';
import { genMockPassportData } from '../../../common/src/utils/genMockPassportData';

interface UserState {
passportNumber: string
Expand Down Expand Up @@ -43,7 +44,7 @@ const useUserStore = create<UserState>((set, get) => ({
dateOfExpiry: DEFAULT_DOE ?? "",
dscSecret: null,
registered: false,
passportData: mockPassportData_sha256_rsa_65537,
passportData: genMockPassportData("rsa_sha256", "FRA", "19900101", "20300101"),
secret: "",
cscaProof: null,
localProof: null,
Expand Down
42 changes: 4 additions & 38 deletions app/src/utils/nfcScanner.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { NativeModules, Platform } from 'react-native';
// @ts-ignore
import PassportReader from 'react-native-passport-reader';
import { toStandardName } from '../../../common/src/utils/formatNames';
import { checkInputs } from '../utils/utils';
import { PassportData } from '../../../common/src/utils/types';
import forge from 'node-forge';
Expand Down Expand Up @@ -121,7 +120,6 @@ const handleResponseIOS = async (

const eContentBase64 = parsed.eContentBase64; // this is what we call concatenatedDataHashes in android world
const signedAttributes = parsed.signedAttributes; // this is what we call eContent in android world
const signatureAlgorithm = parsed.signatureAlgorithm;
const mrz = parsed.passportMRZ;
const signatureBase64 = parsed.signatureBase64;
console.log('dataGroupsPresent', parsed.dataGroupsPresent)
Expand All @@ -131,19 +129,12 @@ const handleResponseIOS = async (
console.log('isChipAuthenticationSupported', parsed.isChipAuthenticationSupported)
console.log('residenceAddress', parsed.residenceAddress)
console.log('passportPhoto', parsed.passportPhoto.substring(0, 100) + '...')
console.log('signatureAlgorithm', signatureAlgorithm)
console.log('encapsulatedContentDigestAlgorithm', parsed.encapsulatedContentDigestAlgorithm)
console.log('parsed.documentSigningCertificate', parsed.documentSigningCertificate)
const pem = JSON.parse(parsed.documentSigningCertificate).PEM.replace(/\n/g, '');
const certificate = forge.pki.certificateFromPem(pem);
console.log('pem', pem)

try {
const publicKey = certificate.publicKey;
//console.log('publicKey', publicKey);

const modulus = (publicKey as any).n.toString(10);

const eContentArray = Array.from(Buffer.from(signedAttributes, 'base64'));
const signedEContentArray = eContentArray.map(byte => byte > 127 ? byte - 256 : byte);

Expand All @@ -153,24 +144,18 @@ const handleResponseIOS = async (
const encryptedDigestArray = Array.from(Buffer.from(signatureBase64, 'base64')).map(byte => byte > 127 ? byte - 256 : byte);

//amplitude.track('Sig alg before conversion: ' + signatureAlgorithm);
console.log('signatureAlgorithm before conversion', signatureAlgorithm);
const passportData = {
mrz,
signatureAlgorithm: toStandardName(signatureAlgorithm),
dsc: pem,
pubKey: {
modulus: modulus,
exponent: (publicKey as any).e.toString(10),
},
dataGroupHashes: concatenatedDataHashesArraySigned,
eContent: signedEContentArray,
encryptedDigest: encryptedDigestArray,
photoBase64: "data:image/jpeg;base64," + parsed.passportPhoto,
mockUser: false
};
useUserStore.getState().registerPassportData(passportData)
const sigAlgName = getSignatureAlgorithm(pem);
const circuitName = getCircuitName("prove", sigAlgName.signatureAlgorithm, sigAlgName.hashFunction);
const { signatureAlgorithm, hashFunction } = getSignatureAlgorithm(pem);
const circuitName = getCircuitName("prove", signatureAlgorithm, hashFunction);
downloadZkey(circuitName as any);
useNavigationStore.getState().setSelectedTab("next");
} catch (e: any) {
Expand All @@ -191,10 +176,6 @@ const handleResponseAndroid = async (
) => {
const {
mrz,
signatureAlgorithm,
modulus,
curveName,
publicKeyQ,
eContent,
encryptedDigest,
photo,
Expand All @@ -210,22 +191,9 @@ const handleResponseAndroid = async (
//amplitude.track('Sig alg before conversion: ' + signatureAlgorithm);

const pem = "-----BEGIN CERTIFICATE-----" + documentSigningCertificate + "-----END CERTIFICATE-----"

const cert = forge.pki.certificateFromPem(pem);
console.log('cert', cert);
const publicKey = cert.publicKey;
console.log('publicKey', publicKey);

const passportData: PassportData = {
mrz: mrz.replace(/\n/g, ''),
signatureAlgorithm: toStandardName(signatureAlgorithm),
dsc: pem,
pubKey: {
modulus: modulus,
exponent: (publicKey as any).e.toString(10),
curveName: curveName,
publicKeyQ: publicKeyQ,
},
dataGroupHashes: JSON.parse(encapContent),
eContent: JSON.parse(eContent),
encryptedDigest: JSON.parse(encryptedDigest),
Expand All @@ -240,8 +208,6 @@ const handleResponseAndroid = async (
}, null, 2));

console.log('mrz', passportData.mrz);
console.log('signatureAlgorithm', passportData.signatureAlgorithm);
console.log('pubKey', passportData.pubKey);
console.log('dataGroupHashes', passportData.dataGroupHashes);
console.log('eContent', passportData.eContent);
console.log('encryptedDigest', passportData.encryptedDigest);
Expand All @@ -255,8 +221,8 @@ const handleResponseAndroid = async (
console.log("documentSigningCertificate", documentSigningCertificate)
useUserStore.getState().registerPassportData(passportData)

const sigAlgName = getSignatureAlgorithm(pem);
const circuitName = getCircuitName("prove", sigAlgName.signatureAlgorithm, sigAlgName.hashFunction);
const { signatureAlgorithm, hashFunction } = getSignatureAlgorithm(pem);
const circuitName = getCircuitName("prove", signatureAlgorithm, hashFunction);
downloadZkey(circuitName as any);
useNavigationStore.getState().setSelectedTab("next");
};
2 changes: 1 addition & 1 deletion app/src/utils/qrCode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ const handleQRCodeScan = (result: string, toast: any, setSelectedApp: any, setSe
console.log(result);
const parsedJson = JSON.parse(result);
const app: AppType = reconstructAppType(parsedJson);
const dsc = useUserStore.getState().passportData?.dsc;
const dsc = useUserStore.getState().passportData.dsc;
const sigAlgName = getSignatureAlgorithm(dsc!);
const circuitName = getCircuitName(app.circuit, sigAlgName.signatureAlgorithm, sigAlgName.hashFunction);
downloadZkey(circuitName as any);
Expand Down
3 changes: 0 additions & 3 deletions circuits/tests/ofac/ofac.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ describe('OFAC - Passport number match', function () {
expect.fail('Expected an error but none was thrown.');
} catch (error) {
expect(error.message).to.include('Assert Failed');
expect(error.message).to.include('line: 43');
expect(error.message).to.not.include('SMTVerify');
}
});
Expand Down Expand Up @@ -225,7 +224,6 @@ describe('OFAC - Name and DOB match', function () {
expect.fail('Expected an error but none was thrown.');
} catch (error) {
expect(error.message).to.include('Assert Failed');
expect(error.message).to.include('line: 54');
expect(error.message).to.not.include('SMTVerify');
}
});
Expand Down Expand Up @@ -313,7 +311,6 @@ describe('OFAC - Name match', function () {
expect.fail('Expected an error but none was thrown.');
} catch (error) {
expect(error.message).to.include('Assert Failed');
expect(error.message).to.include('line: 46');
expect(error.message).to.not.include('SMTVerify');
}
});
Expand Down
2 changes: 1 addition & 1 deletion circuits/tests/register.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ sigAlgs.forEach(({ sigAlg, hashFunction }) => {
const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
const dscSecret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();

const { modulus, x, y } = getSignatureAlgorithm(passportData.dsc as string);
const { modulus, x, y } = getSignatureAlgorithm(passportData.dsc);

const inputs = generateCircuitInputsRegister(
secret,
Expand Down
81 changes: 0 additions & 81 deletions common/scripts/passportData/sha256_sha1mrz_rsa_65537.ts

This file was deleted.

84 changes: 0 additions & 84 deletions common/src/utils/formatNames.ts

This file was deleted.

3 changes: 2 additions & 1 deletion common/src/utils/generateInputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ export function generateCircuitInputsRegister(
passportData: PassportData,
n_dsc: number,
k_dsc: number,
mocks: PassportData[] = mockPassportDatas
// mocks: PassportData[] = mockPassportDatas
mocks?: PassportData[]
) {
const { mrz, dsc, dataGroupHashes, eContent, encryptedDigest } =
passportData;
Expand Down
4 changes: 1 addition & 3 deletions common/src/utils/types.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
export type PassportData = {
mrz: string;
signatureAlgorithm?: string;
dsc?: string;
pubKey?: { modulus?: string, exponent?: string, curveName?: string, publicKeyQ?: string };
dsc: string;
dataGroupHashes: number[];
eContent: number[];
encryptedDigest: number[];
Expand Down
Loading

0 comments on commit 4bc2afc

Please sign in to comment.