mirror of
https://github.com/selfxyz/self.git
synced 2026-02-19 02:24:25 -05:00
* Sumsub: Update keychain and types * sumsub: ProvingMachine changes - WIP * fix: remove duplicate identifier * update proving machine * Refactor && Continue onchain registration if user left the app * fix register flow * Add hooks to KycSuccessScreen * Integrate KycVerifiedScreen (#1686) * Integrate KycVerifiedScreen & Fix race conditions * yarn lint * lint * lint * add mock kyc * fix disclose flow * yarn lint * Feat/add kyc home screen card design (#1708) * feat: add new designs to the kycIdCard * refactor: Update KycIdCard design to match IdCard styling * feat: update document cards + dev document * feat: update empty id card for new design * feat: update pending document card design * feat: update expired doc + unregistered doc cards from new design * fix: unregisted id card button links to continue registration screen * fix: logo design on document cards * feat: add 6 different backgrounds for ids deterministically shows 1 of 6 backgrounds for each document | fix: fixed document designs not displaying correctly. * chore: trigger CI rebuild * feat: Integrate PendingIdCard to Homescreen * fix KycIdCard.tsx --------- Co-authored-by: seshanthS <seshanth@protonmail.com> * lint * fix tests * fix: cleanup only on unmount * coderabbit comments * fix: cleanup unused code * fix: edge case for German Passports with D<< nationality code * fix tests * review comments * review comments * lint * Hide duplicated cards in Homescreen * remove console.log * fix patch * remove unused vars * agent updates * agent feedback * abstract colors and formatting * agent feedback * Regenerate Sumsub patch-package patch * fix: handle malformed kyc payload in card background selector * re-add for clean up --------- Co-authored-by: Evi Nova <66773372+Tranquil-Flow@users.noreply.github.com> Co-authored-by: Evi Nova <tranquil_flow@protonmail.com> Co-authored-by: Justin Hernandez <justin.hernandez@self.xyz>
95 lines
3.0 KiB
TypeScript
95 lines
3.0 KiB
TypeScript
// SPDX-FileCopyrightText: 2025 Social Connect Labs, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
// NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE.
|
|
|
|
import {
|
|
KYC_ADDRESS_INDEX,
|
|
KYC_ADDRESS_LENGTH,
|
|
KYC_COUNTRY_INDEX,
|
|
KYC_COUNTRY_LENGTH,
|
|
KYC_DOB_INDEX,
|
|
KYC_DOB_LENGTH,
|
|
KYC_EXPIRY_DATE_INDEX,
|
|
KYC_EXPIRY_DATE_LENGTH,
|
|
KYC_FULL_NAME_INDEX,
|
|
KYC_FULL_NAME_LENGTH,
|
|
KYC_GENDER_INDEX,
|
|
KYC_GENDER_LENGTH,
|
|
KYC_ID_NUMBER_INDEX,
|
|
KYC_ID_NUMBER_LENGTH,
|
|
KYC_ID_TYPE_INDEX,
|
|
KYC_ID_TYPE_LENGTH,
|
|
KYC_ISSUANCE_DATE_INDEX,
|
|
KYC_ISSUANCE_DATE_LENGTH,
|
|
KYC_PHONE_NUMBER_INDEX,
|
|
KYC_PHONE_NUMBER_LENGTH,
|
|
KYC_PHOTO_HASH_INDEX,
|
|
KYC_PHOTO_HASH_LENGTH,
|
|
} from './constants.js';
|
|
import { KycData } from './types.js';
|
|
|
|
import { Point } from '@zk-kit/baby-jubjub';
|
|
|
|
//accepts a base64 applicant info and returns a kyc data object
|
|
export function deserializeApplicantInfo(
|
|
applicantInfoBase64: string
|
|
): Omit<
|
|
KycData,
|
|
'user_identifier' | 'current_date' | 'majority_age_ASCII' | 'selector_older_than'
|
|
> {
|
|
const applicantInfo = Buffer.from(applicantInfoBase64, 'base64').toString('utf-8');
|
|
const country = applicantInfo
|
|
.slice(KYC_COUNTRY_INDEX, KYC_COUNTRY_INDEX + KYC_COUNTRY_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const idType = applicantInfo
|
|
.slice(KYC_ID_TYPE_INDEX, KYC_ID_TYPE_INDEX + KYC_ID_TYPE_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const idNumber = applicantInfo
|
|
.slice(KYC_ID_NUMBER_INDEX, KYC_ID_NUMBER_INDEX + KYC_ID_NUMBER_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const issuanceDate = applicantInfo
|
|
.slice(KYC_ISSUANCE_DATE_INDEX, KYC_ISSUANCE_DATE_INDEX + KYC_ISSUANCE_DATE_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const expiryDate = applicantInfo
|
|
.slice(KYC_EXPIRY_DATE_INDEX, KYC_EXPIRY_DATE_INDEX + KYC_EXPIRY_DATE_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const fullName = applicantInfo
|
|
.slice(KYC_FULL_NAME_INDEX, KYC_FULL_NAME_INDEX + KYC_FULL_NAME_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const dob = applicantInfo
|
|
.slice(KYC_DOB_INDEX, KYC_DOB_INDEX + KYC_DOB_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const photoHash = applicantInfo
|
|
.slice(KYC_PHOTO_HASH_INDEX, KYC_PHOTO_HASH_INDEX + KYC_PHOTO_HASH_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const phoneNumber = applicantInfo
|
|
.slice(KYC_PHONE_NUMBER_INDEX, KYC_PHONE_NUMBER_INDEX + KYC_PHONE_NUMBER_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const gender = applicantInfo
|
|
.slice(KYC_GENDER_INDEX, KYC_GENDER_INDEX + KYC_GENDER_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
const address = applicantInfo
|
|
.slice(KYC_ADDRESS_INDEX, KYC_ADDRESS_INDEX + KYC_ADDRESS_LENGTH)
|
|
.replace(/\x00/g, '');
|
|
|
|
return {
|
|
country,
|
|
idType,
|
|
idNumber,
|
|
issuanceDate,
|
|
expiryDate,
|
|
fullName,
|
|
dob,
|
|
photoHash,
|
|
phoneNumber,
|
|
gender,
|
|
address,
|
|
};
|
|
}
|
|
|
|
//accepts a base64 signature and returns a signature object
|
|
export function deserializeSignature(signature: string): { R: Point<bigint>; s: bigint } {
|
|
const [Rx, Ry, s] = Buffer.from(signature, 'base64').toString('utf-8').split(',').map(BigInt);
|
|
return { R: [Rx, Ry] as Point<bigint>, s };
|
|
}
|