From 8d5defb9e328eac38a8a9df71059ed783283b694 Mon Sep 17 00:00:00 2001 From: Nam Hoang Date: Wed, 6 Sep 2023 21:51:10 +0700 Subject: [PATCH] fix: get apple signer pem file from config Signed-off-by: Nam Hoang --- packages/cli/default/default-dev.yml | 40 +++++++++++-------- packages/cli/default/default.yml | 1 + .../controllers/apple-wallet-controller.ts | 24 +++++++---- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/packages/cli/default/default-dev.yml b/packages/cli/default/default-dev.yml index de9fa154..4099996a 100644 --- a/packages/cli/default/default-dev.yml +++ b/packages/cli/default/default-dev.yml @@ -149,6 +149,14 @@ server: $args: - keyMapping: Ed25519: JsonWebKey2020 # Ed25519VerificationKey2020 | JsonWebKey2020 + + # Wallet API + - - /wallet + - $require: '@vckit/wallet?t=function#WalletRouter' + $args: + - encryptedEndpoint: http://localhost:3332/encrypted-storage/encrypted-data + qrCodeVerifyEndpoint: http://localhost:3000/credential-verifier + signerPemFile: ./vc.dev.pem # VC API - - $require: '@vckit/vc-api?t=function#VCRouter' @@ -320,22 +328,22 @@ didManager: - $ref: /dbConnection defaultProvider: did:ethr:goerli providers: - did:ethr: - $require: '@veramo/did-provider-ethr#EthrDIDProvider' - $args: - - defaultKms: local - network: mainnet - rpcUrl: https://mainnet.infura.io/v3/3586660d179141e3801c3895de1c2eba - gas: 1000001 - ttl: 31104001 - did:ethr:goerli: - $require: '@veramo/did-provider-ethr#EthrDIDProvider' - $args: - - defaultKms: local - network: goerli - rpcUrl: https://goerli.infura.io/v3/3586660d179141e3801c3895de1c2eba - gas: 1000001 - ttl: 31104001 + # did:ethr: + # $require: '@veramo/did-provider-ethr#EthrDIDProvider' + # $args: + # - defaultKms: local + # network: mainnet + # rpcUrl: https://mainnet.infura.io/v3/3586660d179141e3801c3895de1c2eba + # gas: 1000001 + # ttl: 31104001 + # did:ethr:goerli: + # $require: '@veramo/did-provider-ethr#EthrDIDProvider' + # $args: + # - defaultKms: local + # network: goerli + # rpcUrl: https://goerli.infura.io/v3/3586660d179141e3801c3895de1c2eba + # gas: 1000001 + # ttl: 31104001 did:web: $require: '@veramo/did-provider-web#WebDIDProvider' $args: diff --git a/packages/cli/default/default.yml b/packages/cli/default/default.yml index 9a6e59ac..2a42bf05 100644 --- a/packages/cli/default/default.yml +++ b/packages/cli/default/default.yml @@ -156,6 +156,7 @@ server: $args: - encryptedEndpoint: http://localhost:3332/encrypted-storage/encrypted-data qrCodeVerifyEndpoint: http://localhost:3000/credential-verifier + signerPemFile: ./vc.dev.pem # VC API - - $require: '@vckit/vc-api?t=function#VCRouter' diff --git a/packages/wallet/src/controllers/apple-wallet-controller.ts b/packages/wallet/src/controllers/apple-wallet-controller.ts index 7adc49b7..eac47ac1 100644 --- a/packages/wallet/src/controllers/apple-wallet-controller.ts +++ b/packages/wallet/src/controllers/apple-wallet-controller.ts @@ -36,7 +36,7 @@ export const getApplePass = async ( if (!encryptedCredentialData) { throw Error('Encrypted data not found'); } - const { encryptedEndpoint, qrCodeVerifyEndpoint } = args; + const { encryptedEndpoint, qrCodeVerifyEndpoint, signerPemFile } = args; const id = encryptedCredentialData.encryptedDataId; const uri = `${encryptedEndpoint}/${id}`; @@ -45,7 +45,11 @@ export const getApplePass = async ( const encodedUrlPayload = encodeURIComponent(JSON.stringify({ payload })); const vcQrcodeUrl = `${qrCodeVerifyEndpoint}?q=${encodedUrlPayload}`; - const pass = await generateApplePass(credential, vcQrcodeUrl); + const pass = await generateApplePass( + credential, + vcQrcodeUrl, + signerPemFile + ); res .status(200) .setHeader( @@ -59,14 +63,20 @@ export const getApplePass = async ( } }; -async function generateApplePass(vc: any, vcQrcodeUrl: string) { +async function generateApplePass( + vc: any, + vcQrcodeUrl: string, + signerPemFile: string +) { const template = await Template.load( './packages/wallet/src/apple-wallet/StudentVisaGrant.pass' ); - await template.loadCertificate( - './packages/wallet/src/apple-wallet/pass.au.com.gosource.vc.dev.pem', - 'password' - ); + + if (!signerPemFile) { + throw Error('Apple wallet certificate not available'); + } + + await template.loadCertificate(signerPemFile, 'password'); const pass = template.createPass({ serialNumber: '12354', barcodes: [