From 3cfbcdf8d387f69308dd82b3a89e5b480292bb03 Mon Sep 17 00:00:00 2001 From: John Melati Date: Wed, 13 Nov 2024 18:01:17 +0100 Subject: [PATCH 01/10] feat: upgrade oidf client package --- .../__tests__/shared/CryptoDefaultCallback.ts | 20 ---- .../shared/TrustChainMockResponses.ts | 4 - .../__tests__/shared/oidfClientAgentLogic.ts | 66 ++++------- packages/oidf-client/package.json | 13 +- packages/oidf-client/src/agent/OIDFClient.ts | 112 ++++++++---------- packages/oidf-client/src/types/IOIDFClient.ts | 19 ++- packages/tsconfig.json | 2 +- pnpm-lock.yaml | 73 +++--------- 8 files changed, 110 insertions(+), 199 deletions(-) delete mode 100644 packages/oidf-client/__tests__/shared/CryptoDefaultCallback.ts diff --git a/packages/oidf-client/__tests__/shared/CryptoDefaultCallback.ts b/packages/oidf-client/__tests__/shared/CryptoDefaultCallback.ts deleted file mode 100644 index ea31e92e5..000000000 --- a/packages/oidf-client/__tests__/shared/CryptoDefaultCallback.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {importJWK, JWK, jwtVerify, JWTVerifyOptions} from "jose"; -import {com} from "@sphereon/openid-federation-client"; -import ICryptoCallbackServiceJS = com.sphereon.oid.fed.client.crypto.ICryptoCallbackServiceJS; - -export const defaultCryptoJSImpl: ICryptoCallbackServiceJS = { - verify: async (jwt: string, key: any): Promise => { - const jwk:JWK = { ...key } - const publicKey = await importJWK(jwk) - - const now = new Date() - const past = now.setDate(now.getDate() - 60) - - const options: JWTVerifyOptions = { - currentDate: new Date(past) - } - - const result = await jwtVerify(jwt, publicKey, options) - return result !== undefined - } -} diff --git a/packages/oidf-client/__tests__/shared/TrustChainMockResponses.ts b/packages/oidf-client/__tests__/shared/TrustChainMockResponses.ts index b33abad61..99aa87e97 100644 --- a/packages/oidf-client/__tests__/shared/TrustChainMockResponses.ts +++ b/packages/oidf-client/__tests__/shared/TrustChainMockResponses.ts @@ -15,10 +15,6 @@ export const mockResponses = [ "https://spid.wbss.it/Spid/oidc/sa/fetch?sub=https://spid.wbss.it/Spid/oidc/rp/ipasv_lt", "eyJraWQiOiJNWGFvTUtvcWIyME1QME1WYkRUZGxIYmlFME9JakNyYmhHTnkxWVlzeXJNIiwidHlwIjoiZW50aXR5LXN0YXRlbWVudCtqd3QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoid3ZISHBtckZraTI3R1ZkYXYtNW41S0hZT08tZ21sT3MxOWxBUG1xeDZGU2VSUTVSeWsxbVUxTFVPNFF4UmJYVUlUNEhFczRUc2EzRG94SlRCSEE5clR1VXJTZUpieFEwcGVBbUI4akZFbmowYjJOdzVwSDBaRFVmMVdoUWw1dlJQblRUcmpWUXotUlE1VzNtMHRjVTh4OEd6MXlNczF6RHZ2YTNmZzVjajQyV1lnMEtYN2d1ODNrQ2puQmpEX2NlT2YzWHJhN1Q2V193LXNJY1h4TGJFWXYzVDFSdFp2cE9IZHp1WTJjMEx1NTlPNFE5d01udk5VT0hjTVJFT3ROM3RpcEc0dU1jOHAxajVUQ0lXMUVTeXNxWUYycF9kYmJlSVFwVXhrRzJZMHNPWnJWWWtTTHAwdjB4RnJKd1N3NVl2Z0VhZ2ZIaERXTXNmcGpPNHFuUXBRIiwia2lkIjoiRTk1Y05MVFN0SVB2c21NZGE2bkdIcHY1SlQ4NUN0elpsUGxpano2OWNSayJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJqd2tzIjp7InZhbHVlIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoiZzY5N1pNVk1ZRk0yLUJSM3lGdVZJRlFGRVl1dGhoMHFpX3lpQ2UtV0FDbko4bDN2ai15eng5WGY0LXhUdzc0X2hULWk5MEFZY09fWVpnVHp2Zm1SZ0tmTjBQTDh3bGJBRy1XWGVlRWg5OVg1aUhaX1pXZnN0TV9FakVyT1RiZFkxYnhmVVhINGNGYTByQV9FOUVLbGFiUnFVYXJFcVlHS3ZWaUY5TnVvbW5yd2YxSE1wUElHY2RSaVhhakprVmpPMmFYRnF4MzZXS1ZqZXVlNTVSenNtX1lKTTdlMVVTczBpQUlkV20wM2pBM0liR09DZUxndzhObXl4VmUxRl85aW1ldFlUSlhCQ1ZxQnFzQ08tTUJaUHUwaXpWZUVJT0M5bGc1UzVrLUtBdDZDX3hCTFM1aV9XdWptb3Vxc0FQc2dQbk43akgwZlFvUzc5SGdSRHU3ZlZ3Iiwia2lkIjoiU0dIT1BTSVRTMXd6MUdmMTlYajFEbDg2UHZqSGZxSUd5cmZOcVR2UWU0cyJ9LHsia3R5IjoiUlNBIiwiZSI6IkFRQUIiLCJhbGciOiJSU0EtT0FFUC0yNTYiLCJ1c2UiOiJlbmMiLCJuIjoibEZidVdrdGNPUzlnV0dXbzI1RFE1TmZ3Z0NRZzBEMnFRSzJ1elE4OElrWHdtWEtJak1SVDV4bGV4X3FyNHJBWXpjMmlmeGFpZy1CZUVhVkhBR05mSWFMdGt1aUx4R1o5LW14QTQ0eS1TRl85SzM4OFQ5VHo0b3RPM2RNeklEcUVhZ09NcEsyYzhCUXJuWXpubnJjeHpkNkVSZmFWMTVTVDJPbHpVZjdCLVFRaEJ4eEFtX1FlTTdvZFEwRHRyUUotdVdxTDl5UWt0Y2tzRGd3cUVvMkpFVU9uNVVxbEhiTklvLTAzYXRiellXWkFqalkwVnpnMXNnUzlYcGgwTnJQTFhxdDMwbmJMWlZuR1Y0azA5Nl9TMVNNWGoxam1hRDBQanZ0R29teXVLN0FDVExKdV8xaWowZGRRaHZhZUNlV1l0SXZQQzAydUQ4NzFIMHpuT3VkeWZRIiwia2lkIjoidUVhVEFqZnU5TVgzVUZGeHhlSno1WTV1d25PUUQxOVZ5dnJaZF92VUg5WSJ9XX19fX0sImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImF1dGhvcml0eV9oaW50cyI6WyJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiXSwiZXhwIjoxNzI4MzQ2NjQzLCJpYXQiOjE3MjgzNDQ4NDMsImNvbnN0cmFpbnRzIjoie30iLCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKTldHRnZUVXR2Y1dJeU1FMVFNRTFXWWtSVVpHeElZbWxGTUU5SmFrTnlZbWhIVG5reFdWbHplWEpOSWl3aWRIbHdJam9pZEhKMWMzUXRiV0Z5YXl0cWQzUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp6ZFdJaU9pSm9kSFJ3Y3pvdkwzTndhV1F1ZDJKemN5NXBkQzlUY0dsa0wyOXBaR012Y25BdmFYQmhjM1pmYkhRaUxDSnlaV1lpT2lJaUxDSnNiMmR2WDNWeWFTSTZJbWgwZEhCek9pOHZkM2QzTG05d2FXeGhkR2x1WVM1cGRDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmMzQnBaQzUzWW5OekxtbDBMMU53YVdRdmIybGtZeTl6WVNJc0ltOXlaMkZ1YVhwaGRHbHZibDkwZVhCbElqb2ljSFZpYkdsaklpd2lhV1FpT2lKb2RIUndjem92TDI5cFpHTXVjbVZuYVhOMGNua3VjMlZ5ZG1sNmFXTnBaUzVwYm5SbGNtNXZMbWR2ZGk1cGRDOXZjR1Z1YVdSZmNtVnNlV2x1WjE5d1lYSjBlUzl3ZFdKc2FXTWlMQ0p2Y21kaGJtbDZZWFJwYjI1ZmJtRnRaU0k2SWs5eVpHbHVaU0JrWld4c1pTQlFjbTltWlhOemFXOXVhU0JKYm1abGNtMXBaWEpwYzNScFkyaGxJR1JwSUV4aGRHbHVZU0lzSW1WNGNDSTZNVGMxT0Rrd09EWXhOeXdpYVdGMElqb3hOekkzTkRVNU1ERTNMQ0pwWkY5amIyUmxJanA3SW1sd1lWOWpiMlJsSWpvaWFYQmhjM1pmYkhRaWZTd2laVzFoYVd3aU9pSnNZWFJwYm1GQVkyVnlkQzV2Y21ScGJtVXRiM0JwTG1sMEluMC5QQS1IQ3haRTctNWc2emJFVW5SdTdIR1dTNHoweU1qbFBvWkJFTFJHODMzVTduNjVuZ3RZbV8zM3J5cjFhMGwzdjdMQ2wxSjQxNTU3b0xCaHhMM013Z1lrLWxxWTRwTVNENWI1ckV5NWpDR2IzaDNMNW9sZXVkbjRYV3lkWmZFY1loa1R5SGxEX2hXbWZNdjA5Qi10OC0ydGFnYjhMQ1k1Z2NSQS0xQ0hWTnBqVlBYSi13MXlYbzN3cS14VU1maURxaWlPTFp5dldiNzRJTENSTGo0MFhtLS1VZVFGNjNHeC02RThrOVhtMTJZbEZ0WHRQaHB5Q0NaRDJSdGdQVDZxM1pwR04xR0dpMmRLRDI0SEx4Y0twd0RodGdPcnJKdFJKOU50QW9VY1dzMGVJMWZERWJ1dDRYaGJBMWF5TU1QMFVWcmp6V1VuVF9uTzhncERxeDNVQ3ciLCJpc3MiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJpZCI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0L29wZW5pZF9yZWx5aW5nX3BhcnR5L3B1YmxpYyJ9XX0.sT1eD12sTPk3moKnnuQGaOKprY4lL9lFUYauG5FbXQIyxFtZEOOLs1nBZwJOJVObaC2hhnWOTEVyyKlmsoi_7naWQsQxzQu1z6aEJVcblDu6KUt9QAr0qq4LMps7Ql6h1_1WI1XxsleX8qjtvnzZqG-gvRY1iH1opOmMR0oVzP-WfY16DCMIriiJeqB47AA3OcTs4VJ8choJBK1BlciYRyatmdrASwMMtePE8cQdnAvDeN0r5RLDqlFGjy0Mmyh8FDs_VWpQ11oVIrkNg_RMOR8BGsYGYeelqDmyc6hs6RLfNXQj2nU48obw7n9EVOcOvX7GyABAY9_taPMIHdfwgg" ], - [ - "https://spid.wbss.it/Spid/oidc/sa/fetch", - "eyJraWQiOiJNWGFvTUtvcWIyME1QME1WYkRUZGxIYmlFME9JakNyYmhHTnkxWVlzeXJNIiwidHlwIjoiZW50aXR5LXN0YXRlbWVudCtqd3QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoid3ZISHBtckZraTI3R1ZkYXYtNW41S0hZT08tZ21sT3MxOWxBUG1xeDZGU2VSUTVSeWsxbVUxTFVPNFF4UmJYVUlUNEhFczRUc2EzRG94SlRCSEE5clR1VXJTZUpieFEwcGVBbUI4akZFbmowYjJOdzVwSDBaRFVmMVdoUWw1dlJQblRUcmpWUXotUlE1VzNtMHRjVTh4OEd6MXlNczF6RHZ2YTNmZzVjajQyV1lnMEtYN2d1ODNrQ2puQmpEX2NlT2YzWHJhN1Q2V193LXNJY1h4TGJFWXYzVDFSdFp2cE9IZHp1WTJjMEx1NTlPNFE5d01udk5VT0hjTVJFT3ROM3RpcEc0dU1jOHAxajVUQ0lXMUVTeXNxWUYycF9kYmJlSVFwVXhrRzJZMHNPWnJWWWtTTHAwdjB4RnJKd1N3NVl2Z0VhZ2ZIaERXTXNmcGpPNHFuUXBRIiwia2lkIjoiRTk1Y05MVFN0SVB2c21NZGE2bkdIcHY1SlQ4NUN0elpsUGxpano2OWNSayJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJqd2tzIjp7InZhbHVlIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoiZzY5N1pNVk1ZRk0yLUJSM3lGdVZJRlFGRVl1dGhoMHFpX3lpQ2UtV0FDbko4bDN2ai15eng5WGY0LXhUdzc0X2hULWk5MEFZY09fWVpnVHp2Zm1SZ0tmTjBQTDh3bGJBRy1XWGVlRWg5OVg1aUhaX1pXZnN0TV9FakVyT1RiZFkxYnhmVVhINGNGYTByQV9FOUVLbGFiUnFVYXJFcVlHS3ZWaUY5TnVvbW5yd2YxSE1wUElHY2RSaVhhakprVmpPMmFYRnF4MzZXS1ZqZXVlNTVSenNtX1lKTTdlMVVTczBpQUlkV20wM2pBM0liR09DZUxndzhObXl4VmUxRl85aW1ldFlUSlhCQ1ZxQnFzQ08tTUJaUHUwaXpWZUVJT0M5bGc1UzVrLUtBdDZDX3hCTFM1aV9XdWptb3Vxc0FQc2dQbk43akgwZlFvUzc5SGdSRHU3ZlZ3Iiwia2lkIjoiU0dIT1BTSVRTMXd6MUdmMTlYajFEbDg2UHZqSGZxSUd5cmZOcVR2UWU0cyJ9LHsia3R5IjoiUlNBIiwiZSI6IkFRQUIiLCJhbGciOiJSU0EtT0FFUC0yNTYiLCJ1c2UiOiJlbmMiLCJuIjoibEZidVdrdGNPUzlnV0dXbzI1RFE1TmZ3Z0NRZzBEMnFRSzJ1elE4OElrWHdtWEtJak1SVDV4bGV4X3FyNHJBWXpjMmlmeGFpZy1CZUVhVkhBR05mSWFMdGt1aUx4R1o5LW14QTQ0eS1TRl85SzM4OFQ5VHo0b3RPM2RNeklEcUVhZ09NcEsyYzhCUXJuWXpubnJjeHpkNkVSZmFWMTVTVDJPbHpVZjdCLVFRaEJ4eEFtX1FlTTdvZFEwRHRyUUotdVdxTDl5UWt0Y2tzRGd3cUVvMkpFVU9uNVVxbEhiTklvLTAzYXRiellXWkFqalkwVnpnMXNnUzlYcGgwTnJQTFhxdDMwbmJMWlZuR1Y0azA5Nl9TMVNNWGoxam1hRDBQanZ0R29teXVLN0FDVExKdV8xaWowZGRRaHZhZUNlV1l0SXZQQzAydUQ4NzFIMHpuT3VkeWZRIiwia2lkIjoidUVhVEFqZnU5TVgzVUZGeHhlSno1WTV1d25PUUQxOVZ5dnJaZF92VUg5WSJ9XX19fX0sImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImF1dGhvcml0eV9oaW50cyI6WyJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiXSwiZXhwIjoxNzI4MzQ2NjQzLCJpYXQiOjE3MjgzNDQ4NDMsImNvbnN0cmFpbnRzIjoie30iLCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKTldHRnZUVXR2Y1dJeU1FMVFNRTFXWWtSVVpHeElZbWxGTUU5SmFrTnlZbWhIVG5reFdWbHplWEpOSWl3aWRIbHdJam9pZEhKMWMzUXRiV0Z5YXl0cWQzUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp6ZFdJaU9pSm9kSFJ3Y3pvdkwzTndhV1F1ZDJKemN5NXBkQzlUY0dsa0wyOXBaR012Y25BdmFYQmhjM1pmYkhRaUxDSnlaV1lpT2lJaUxDSnNiMmR2WDNWeWFTSTZJbWgwZEhCek9pOHZkM2QzTG05d2FXeGhkR2x1WVM1cGRDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmMzQnBaQzUzWW5OekxtbDBMMU53YVdRdmIybGtZeTl6WVNJc0ltOXlaMkZ1YVhwaGRHbHZibDkwZVhCbElqb2ljSFZpYkdsaklpd2lhV1FpT2lKb2RIUndjem92TDI5cFpHTXVjbVZuYVhOMGNua3VjMlZ5ZG1sNmFXTnBaUzVwYm5SbGNtNXZMbWR2ZGk1cGRDOXZjR1Z1YVdSZmNtVnNlV2x1WjE5d1lYSjBlUzl3ZFdKc2FXTWlMQ0p2Y21kaGJtbDZZWFJwYjI1ZmJtRnRaU0k2SWs5eVpHbHVaU0JrWld4c1pTQlFjbTltWlhOemFXOXVhU0JKYm1abGNtMXBaWEpwYzNScFkyaGxJR1JwSUV4aGRHbHVZU0lzSW1WNGNDSTZNVGMxT0Rrd09EWXhOeXdpYVdGMElqb3hOekkzTkRVNU1ERTNMQ0pwWkY5amIyUmxJanA3SW1sd1lWOWpiMlJsSWpvaWFYQmhjM1pmYkhRaWZTd2laVzFoYVd3aU9pSnNZWFJwYm1GQVkyVnlkQzV2Y21ScGJtVXRiM0JwTG1sMEluMC5QQS1IQ3haRTctNWc2emJFVW5SdTdIR1dTNHoweU1qbFBvWkJFTFJHODMzVTduNjVuZ3RZbV8zM3J5cjFhMGwzdjdMQ2wxSjQxNTU3b0xCaHhMM013Z1lrLWxxWTRwTVNENWI1ckV5NWpDR2IzaDNMNW9sZXVkbjRYV3lkWmZFY1loa1R5SGxEX2hXbWZNdjA5Qi10OC0ydGFnYjhMQ1k1Z2NSQS0xQ0hWTnBqVlBYSi13MXlYbzN3cS14VU1maURxaWlPTFp5dldiNzRJTENSTGo0MFhtLS1VZVFGNjNHeC02RThrOVhtMTJZbEZ0WHRQaHB5Q0NaRDJSdGdQVDZxM1pwR04xR0dpMmRLRDI0SEx4Y0twd0RodGdPcnJKdFJKOU50QW9VY1dzMGVJMWZERWJ1dDRYaGJBMWF5TU1QMFVWcmp6V1VuVF9uTzhncERxeDNVQ3ciLCJpc3MiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJpZCI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0L29wZW5pZF9yZWx5aW5nX3BhcnR5L3B1YmxpYyJ9XX0.sT1eD12sTPk3moKnnuQGaOKprY4lL9lFUYauG5FbXQIyxFtZEOOLs1nBZwJOJVObaC2hhnWOTEVyyKlmsoi_7naWQsQxzQu1z6aEJVcblDu6KUt9QAr0qq4LMps7Ql6h1_1WI1XxsleX8qjtvnzZqG-gvRY1iH1opOmMR0oVzP-WfY16DCMIriiJeqB47AA3OcTs4VJ8choJBK1BlciYRyatmdrASwMMtePE8cQdnAvDeN0r5RLDqlFGjy0Mmyh8FDs_VWpQ11oVIrkNg_RMOR8BGsYGYeelqDmyc6hs6RLfNXQj2nU48obw7n9EVOcOvX7GyABAY9_taPMIHdfwgg" - ], [ "https://oidc.registry.servizicie.interno.gov.it/fetch?sub=https://spid.wbss.it/Spid/oidc/sa", "eyJraWQiOiJkZWZhdWx0UlNBU2lnbiIsInR5cCI6ImVudGl0eS1zdGF0ZW1lbnQrand0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoic2lnIiwia2lkIjoiTVhhb01Lb3FiMjBNUDBNVmJEVGRsSGJpRTBPSWpDcmJoR055MVlZc3lyTSIsImFsZyI6IlJTMjU2IiwibiI6IjBCVFA0QUNnLUtUNmVOZEFocjEtcGE3Nmx1alhWM1dpWGwwdzROX215ajRxMHpnYVpPRDFjNUk3MjQtZzBfTkhpMjJxQmoxSXUtTUdKUVZrbGZELWVzSzFGWjJybmRSaWFiNVRkTXA0YzF5eS10a2lRTTdhZkp3elc3MERpb1YxaVNtZk9RNEhIMDlBLWRhbElaX0lBOFBxZXE4VHliZHBnUXN0TkFwM0ZOMGNNb0hILVdhZ0ZRR2lWMkEySDNzVWh2UVYyT19FQ0VaWENvTExHNkVzVVJzaEtweU93WDkwN05NSzdROVI5VU9CeldhQkpxUGstY21tbTlpWlRnVDg2QV9CY1MwdVpZeTdFT1lCM0VrYkNNQ2lHbDBGY29BbUYtT3hvc2RUYnRZb2FWa1c3UHlnQ1ZtZG16dGMwX0NWc1dhbUxvVlBTc2NxRmgtRVhITXh0dyJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJjbGllbnRfcmVnaXN0cmF0aW9uX3R5cGVzIjp7InN1YnNldF9vZiI6WyJhdXRvbWF0aWMiXSwiZXNzZW50aWFsIjp0cnVlfSwiZ3JhbnRfdHlwZXMiOnsic3VwZXJzZXRfb2YiOlsiYXV0aG9yaXphdGlvbl9jb2RlIl0sInN1YnNldF9vZiI6WyJhdXRob3JpemF0aW9uX2NvZGUiLCJyZWZyZXNoX3Rva2VuIl19LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSU0EtT0FFUCIsIlJTQS1PQUVQLTI1NiIsIkVDREgtRVMiLCJFQ0RILUVTK0ExMjhLVyIsIkVDREgtRVMrQTI1NktXIl0sImVzc2VudGlhbCI6ZmFsc2V9LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfZW5jIjp7Im9uZV9vZiI6WyJBMTI4Q0JDLUhTMjU2IiwiQTI1NkNCQy1IUzUxMiJdLCJlc3NlbnRpYWwiOmZhbHNlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2VuYyI6eyJvbmVfb2YiOlsiQTEyOENCQy1IUzI1NiIsIkEyNTZDQkMtSFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2FsZyI6eyJvbmVfb2YiOlsiUlNBLU9BRVAiLCJSU0EtT0FFUC0yNTYiLCJFQ0RILUVTIiwiRUNESC1FUytBMTI4S1ciLCJFQ0RILUVTK0EyNTZLVyJdLCJlc3NlbnRpYWwiOnRydWV9LCJyZWRpcmVjdF91cmlzIjp7ImVzc2VudGlhbCI6dHJ1ZX0sInVzZXJpbmZvX3NpZ25lZF9yZXNwb25zZV9hbGciOnsib25lX29mIjpbIlJTMjU2IiwiUlM1MTIiLCJFUzI1NiIsIkVTNTEyIiwiUFMyNTYiLCJQUzUxMiJdLCJlc3NlbnRpYWwiOnRydWV9LCJ0b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZCI6eyJvbmVfb2YiOlsicHJpdmF0ZV9rZXlfand0Il0sImVzc2VudGlhbCI6dHJ1ZX0sImNsaWVudF9pZCI6eyJlc3NlbnRpYWwiOnRydWV9LCJpZF90b2tlbl9zaWduZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSUzI1NiIsIlJTNTEyIiwiRVMyNTYiLCJFUzUxMiIsIlBTMjU2IiwiUFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwicmVzcG9uc2VfdHlwZXMiOnsidmFsdWUiOlsiY29kZSJdfX19LCJpc3MiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsImV4cCI6MTcyODM0NjcwNSwiaWF0IjoxNzI4MzQ0OTA1LCJjb25zdHJhaW50cyI6eyJhbGxvd2VkX2xlYWZfZW50aXR5X3R5cGVzIjpbIm9wZW5pZF9yZWx5aW5nX3BhcnR5Il19LCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKa1pXWmhkV3gwVWxOQlUybG5iaUlzSW5SNWNDSTZJblJ5ZFhOMExXMWhjbXNyYW5kMElpd2lZV3huSWpvaVVsTXlOVFlpZlEuZXlKemRXSWlPaUpvZEhSd2N6b3ZMM053YVdRdWQySnpjeTVwZEM5VGNHbGtMMjlwWkdNdmMyRWlMQ0p6WVY5d2NtOW1hV3hsSWpvaVcxd2lablZzYkZ3aVhTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmIybGtZeTV5WldkcGMzUnllUzV6WlhKMmFYcHBZMmxsTG1sdWRHVnlibTh1WjI5MkxtbDBJaXdpYjNKbllXNXBlbUYwYVc5dVgzUjVjR1VpT2lKd2NtbDJZWFJsSWl3aWFXUWlPaUpvZEhSd2N6b3ZMMjlwWkdNdWNtVm5hWE4wY25rdWMyVnlkbWw2YVdOcFpTNXBiblJsY201dkxtZHZkaTVwZEM5cGJuUmxjbTFsWkdsaGRHVXZjSEpwZG1GMFpTSXNJbVY0Y0NJNk1UYzFPRE0yTnpJd01Td2lhV0YwSWpveE56STJPRE14TWpBeGZRLkNRX3ZfQnZVbWxoUXZHb1Q2NjA1aEpIcjZic29FYTMtYlJpcjZfUDFNcy1FeGM4UVJlX0d1VzlmYzFEb1RGSTFrenBoZjlBUExYbF93MVlzU3ZIVGV6NndtY1hNcXEwT0NfVTZPVUVLZDlleUR4c1V6SmJUSGZ5UEtUTkxWQmJiSW5pZzRRdjA3YUE0Qnk5ZlNtTDRfWnV1ZnRLUFhkUmZVUmJNZUxkcEhsWi1HU1JjUkxRd2MzS190bjhfUzR0Y0hONGFDWWxIWWU5cWxyMjJZNHZmdHpsZWY2ZmFKelhTX1gwRzQtZmgxc3BteE1VR1k1UGR2QlhsS0pJZGtMdTZXTU9NVGF1clBLT1VTakFJZ3pMbUxzWTF0NDhPYlcxZHlULUNfS19CelZYTkdTblpsck5XWFJmSWxsb3BmTUZtRzJwb2FpdjgyZkVCV3FseFZSSnVKdyIsImlzcyI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaWQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9pbnRlcm1lZGlhdGUvcHJpdmF0ZSJ9XX0.JSID34FwkJ3nc83WHZL60z8tsVCE5SE6NR9yGwroEqIyI5TBmE2DDSbO87LGkiNkDIJ4ANo-fwBRLkXkdKVtf2QfKKzX7fsTihETekIBP9XA1RfFRDMYUKyHI5b-4cQIQxWHTnnjdm-9byT8FK8Pw8eC3QNc38KbJvR1CcdCVFVBQ1GFumTe1DOhkARbFg3rT_w8RjH_PhuRmUDUQyTBQwDHdFydb_TZpgzvSmHUjjvB2qJT109DGV4s-aFwj5bUn9YRazWlNDo78PFS0lJk16bLGEP5YRrXL_lGSxSEUta-BQEoJ2CR9QsBCW8L1HJoRywx61nWSC1wsCAxJlR4eg" diff --git a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts index debeb62d9..9530fd147 100644 --- a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts +++ b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts @@ -1,46 +1,31 @@ import 'cross-fetch/polyfill' +import { ResourceResolver } from "@sphereon/ssi-sdk.resource-resolver"; import { createAgent, TAgent } from '@veramo/core' +import { + ICryptoService +} from "@sphereon/openid-federation-client"; import { IOIDFClient, OIDFClient } from '../../src' + import { mockResponses } from './TrustChainMockResponses' import { IJwtService, JwtService } from '@sphereon/ssi-sdk-ext.jwt-service' -import nock = require('nock') -import { defaultCryptoJSImpl } from './CryptoDefaultCallback' type ConfiguredAgent = TAgent -function nockSetup() { - const url = new URL(mockResponses[0][0]) - const url5 = new URL(mockResponses[5][0]) - nock(url.origin) //https://oidc.registry.servizicie.interno.gov.it - .persist() - .get(url.pathname) //.well-known/openid-federation - .reply(200, mockResponses[0][1], { 'Content-Type': 'application/entity-statement+jwt' }) - .get(url5.pathname) - .query({ - sub: 'https://spid.wbss.it/Spid/oidc/sa', - iss: 'https://oidc.registry.servizicie.interno.gov.it', - }) - .reply(200, mockResponses[5][1], { 'Content-Type': 'application/entity-statement+jwt' }) +const fetchService = { + async fetchStatement(endpoint: string) { + const match = mockResponses.find(item => item[0] === endpoint); + if (match) { + return match[1]; + } else { + throw new Error("Not found: " + endpoint); + } + } +}; - const url1 = new URL(mockResponses[1][0]) - const url2 = new URL(mockResponses[2][0]) - const url3 = new URL(mockResponses[3][0]) - const url4 = new URL(mockResponses[4][0]) - nock(url1.origin) //https://spid.wbss.it - .persist() - .get(url1.pathname) //Spid/oidc/sa/.well-known/openid-federation - .reply(200, mockResponses[1][1], { 'Content-Type': 'application/entity-statement+jwt' }) - .get(url2.pathname) //Spid/oidc/rp/ipasv_lt/.well-known/openid-federation - .reply(200, mockResponses[2][1], { 'Content-Type': 'application/entity-statement+jwt' }) - .get(url3.pathname) - .query({ - sub: 'https://spid.wbss.it/Spid/oidc/rp/ipasv_lt', - iss: 'https://spid.wbss.it/Spid/oidc/sa', - }) //Spid/oidc/sa/fetch?sub=https://spid.wbss.it/Spid/oidc/rp/ipasv_lt&iss=https://spid.wbss.it/Spid/oidc/sa - .reply(200, mockResponses[3][1], { 'Content-Type': 'application/entity-statement+jwt' }) - .get(url4.pathname) //Spid/oidc/sa/fetch - .query({}) // Match empty query string for url4 - .reply(200, mockResponses[4][1], { 'Content-Type': 'application/entity-statement+jwt' }) +const cryptoService: ICryptoService = { + verify: async (jwt: string, key: any): Promise => { + return true + } } export default (testContext: { getAgent: () => ConfiguredAgent; setup: () => Promise; tearDown: () => Promise }): void => { @@ -49,14 +34,15 @@ export default (testContext: { getAgent: () => ConfiguredAgent; setup: () => Pro beforeAll(async (): Promise => { await testContext.setup() - //agent = testContext.getAgent() - // FIXME Remove createAgent and uncomment the line above when the issue with the jwt-service is fixed + agent = createAgent({ plugins: [ new JwtService(), new OIDFClient({ - cryptoServiceCallback: defaultCryptoJSImpl, + fetchServiceCallback: fetchService, + cryptoServiceCallback: cryptoService }), + new ResourceResolver(), ], }) }) @@ -64,13 +50,12 @@ export default (testContext: { getAgent: () => ConfiguredAgent; setup: () => Pro afterAll(testContext.tearDown) it('should build a trust chain 1', async () => { - nockSetup() const trustChain = await agent.resolveTrustChain({ entityIdentifier: 'https://spid.wbss.it/Spid/oidc/rp/ipasv_lt', trustAnchors: ['https://oidc.registry.servizicie.interno.gov.it'], }) - expect(trustChain).not.toBeNull() + expect(trustChain).toBeTruthy() expect(trustChain).toHaveLength(4) expect(trustChain).toEqual( @@ -84,13 +69,12 @@ export default (testContext: { getAgent: () => ConfiguredAgent; setup: () => Pro }) it('should build trust chain 2', async () => { - nockSetup() const trustChain = await agent.resolveTrustChain({ entityIdentifier: 'https://spid.wbss.it/Spid/oidc/sa', trustAnchors: ['https://oidc.registry.servizicie.interno.gov.it'], }) - expect(trustChain).not.toBeNull() + expect(trustChain).toBeTruthy() expect(trustChain).toHaveLength(3) expect(trustChain).toEqual( diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index 1486c56e2..55649030f 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -1,5 +1,6 @@ { "name": "@sphereon/ssi-sdk.oidf-client", + "type": "module", "version": "0.30.1", "source": "src/index.ts", "main": "dist/index.js", @@ -16,18 +17,16 @@ }, "dependencies": { "@sphereon/ssi-types": "workspace:*", - "@sphereon/openid-federation-open-api": "0.1.0-unstable.8663d94", - "@sphereon/openid-federation-client": "0.1.0-unstable.8663d94", - "@sphereon/openid-federation-common": "0.1.0-unstable.8663d94", + "@sphereon/openid-federation-open-api": "0.1.0-unstable.b945ca8", + "@sphereon/openid-federation-client": "0.1.0-unstable.b945ca8", + "@sphereon/openid-federation-common": "0.1.0-unstable.b945ca8", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { + "@sphereon/ssi-sdk.resource-resolver": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@veramo/remote-client": "4.2.0", - "@veramo/remote-server": "4.2.0", - "jose": "5.9.4", - "nock": "^13.5.5", - "cross-fetch": "^3.1.8" + "@veramo/remote-server": "4.2.0" }, "files": [ "dist/**/*", diff --git a/packages/oidf-client/src/agent/OIDFClient.ts b/packages/oidf-client/src/agent/OIDFClient.ts index f6ae01350..3059f26f1 100644 --- a/packages/oidf-client/src/agent/OIDFClient.ts +++ b/packages/oidf-client/src/agent/OIDFClient.ts @@ -1,81 +1,71 @@ -import { IAgentPlugin } from '@veramo/core' -import { CreateJwsCompactArgs, IJwsValidationResult, JwtCompactResult, VerifyJwsArgs } from '@sphereon/ssi-sdk-ext.jwt-service' -import { IOIDFClient, OIDFClientArgs, RequiredContext, ResolveTrustChainArgs, ResolveTrustChainCallbackResult } from '../types/IOIDFClient' -import { com } from '@sphereon/openid-federation-client' -import { schema } from '../index' -import { JWK } from '@sphereon/ssi-types' -import FederationClient = com.sphereon.oid.fed.client.FederationClient -import DefaultFetchJSImpl = com.sphereon.oid.fed.client.fetch.DefaultFetchJSImpl -import DefaultTrustChainJSImpl = com.sphereon.oid.fed.client.trustchain.DefaultTrustChainJSImpl -import DefaultCallbacks = com.sphereon.oid.fed.client.service.DefaultCallbacks +import {FederationClient, ICryptoService, IFetchService} from '@sphereon/openid-federation-client' +import {JWK} from "@sphereon/ssi-types"; +import {IAgentPlugin} from '@veramo/core' +import {Request} from "cross-fetch"; +import {schema} from '../index' +import { + IOIDFClient, + OIDFClientArgs, + RequiredContext, + ResolveTrustChainArgs, + ResolveTrustChainCallbackResult +} from '../types/IOIDFClient' -export const oidfClientMethods: Array = ['resolveTrustChain', 'signJwt', 'verifyJwt'] +export const oidfClientMethods: Array = ['resolveTrustChain'] export class OIDFClient implements IAgentPlugin { - private oidfClient?: FederationClient + private readonly fetchServiceCallback?: IFetchService + private readonly cryptoServiceCallback?: ICryptoService + readonly methods: IOIDFClient = { + resolveTrustChain: this.resolveTrustChain.bind(this), + } readonly schema = schema.IOIDFClient - constructor(args?: OIDFClientArgs) { - const { cryptoServiceCallback } = { ...args } + constructor(args: OIDFClientArgs) { + const {fetchServiceCallback, cryptoServiceCallback} = {...args} - if (cryptoServiceCallback !== undefined && cryptoServiceCallback !== null) { - DefaultCallbacks.setCryptoServiceDefault(cryptoServiceCallback) - DefaultCallbacks.setFetchServiceDefault(new DefaultFetchJSImpl()) - // Depends on the crypto and fetch services, thus it must be the last one to be set - DefaultCallbacks.setTrustChainServiceDefault(new DefaultTrustChainJSImpl()) - this.oidfClient = new FederationClient() - } + this.fetchServiceCallback = fetchServiceCallback + this.cryptoServiceCallback = cryptoServiceCallback } - readonly methods: IOIDFClient = { - resolveTrustChain: this.resolveTrustChain.bind(this), - signJwt: this.signJwt.bind(this), - verifyJwt: this.verifyJwt.bind(this), + private defaultCryptoJSImpl(context: RequiredContext): ICryptoService { + return { + verify: async (jwt: string, key: JWK): Promise => { + const verification = await context.agent.jwtVerifyJwsSignature({jws: jwt, jwk: key}) + return verification.error === undefined + } + } } - private async resolveTrustChain(args: ResolveTrustChainArgs, context: RequiredContext): Promise { - const { entityIdentifier, trustAnchors } = args - this.checkAndSetDefaultCryptoService(context) - return await this.oidfClient?.resolveTrustChain(entityIdentifier, trustAnchors) - } + private defaultFetchJSImpl(context: RequiredContext): IFetchService { + return { + async fetchStatement(endpoint: string): Promise { + const requestInfo = new Request(endpoint, { + method: 'GET' + }) - private checkAndSetDefaultCryptoService(context: RequiredContext) { - if ( - context.agent.jwtVerifyJwsSignature !== undefined && - context.agent.jwtVerifyJwsSignature !== null && - (this.oidfClient === undefined || this.oidfClient === null) - ) { - try { - DefaultCallbacks.setCryptoServiceDefault({ - verify: async (jwt: string, key: any): Promise => { - const jwk: JWK = { ...key } - try { - return !( - await context.agent.jwtVerifyJwsSignature({ - jws: jwt, - jwk, - }) - ).error - } catch (e) { - console.error(`Error verifying the JWT: ${e.message}`) - return Promise.reject(e) - } - }, + const response = await context.agent.resourceResolve({ + input: requestInfo, + resourceType: 'application/entity-statement+jwt', }) - DefaultCallbacks.setFetchServiceDefault(new DefaultFetchJSImpl()) - DefaultCallbacks.setTrustChainServiceDefault(new DefaultTrustChainJSImpl()) - this.oidfClient = new FederationClient() - } catch (error) { - throw Error(`Could not initialize the federation client: ${error.message}`) + + return await response.text() } } } - private async signJwt(args: CreateJwsCompactArgs, context: RequiredContext): Promise { - return await context.agent.jwtCreateJwsCompactSignature(args) + private getOIDFClient(context: RequiredContext): FederationClient { + return new FederationClient( + this.fetchServiceCallback || this.defaultFetchJSImpl(context), + this.cryptoServiceCallback || this.defaultCryptoJSImpl(context) + ) } - private async verifyJwt(args: VerifyJwsArgs, context: RequiredContext): Promise { - return await context.agent.jwtVerifyJwsSignature(args) + private async resolveTrustChain(args: ResolveTrustChainArgs, context: RequiredContext): Promise { + const { entityIdentifier, trustAnchors } = args + + const oidfClient = this.getOIDFClient(context) + + return await oidfClient.resolveTrustChain(entityIdentifier, trustAnchors, 10) } } diff --git a/packages/oidf-client/src/types/IOIDFClient.ts b/packages/oidf-client/src/types/IOIDFClient.ts index 521d59f26..a178553e5 100644 --- a/packages/oidf-client/src/types/IOIDFClient.ts +++ b/packages/oidf-client/src/types/IOIDFClient.ts @@ -1,18 +1,15 @@ +import {IResourceResolver} from "@sphereon/ssi-sdk.resource-resolver"; import {IAgentContext, IPluginMethodMap} from '@veramo/core'; -import { com } from '@sphereon/openid-federation-client'; -import ICryptoCallbackServiceJS = com.sphereon.oid.fed.client.crypto.ICryptoCallbackServiceJS; import { - CreateJwsCompactArgs, - IJwsValidationResult, IJwtService, - JwtCompactResult, - VerifyJwsArgs } from '@sphereon/ssi-sdk-ext.jwt-service'; +import { ICryptoService, IFetchService } from '@sphereon/openid-federation-client' + +export type IRequiredPlugins = IJwtService +export type IRequiredContext = IAgentContext export interface IOIDFClient extends IPluginMethodMap { resolveTrustChain(args: ResolveTrustChainArgs, context: RequiredContext): Promise - signJwt(args: CreateJwsCompactArgs, context: RequiredContext ): Promise - verifyJwt(args: VerifyJwsArgs, context: RequiredContext): Promise } export type ResolveTrustChainArgs = { @@ -21,13 +18,15 @@ export type ResolveTrustChainArgs = { } export type OIDFClientArgs = { + fetchServiceCallback?: FetchServiceCallbackArgs cryptoServiceCallback?: CryptoServiceCallbackArgs } -export type CryptoServiceCallbackArgs = ICryptoCallbackServiceJS +export type CryptoServiceCallbackArgs = ICryptoService +export type FetchServiceCallbackArgs = IFetchService type Nullable = T | null | undefined export type ResolveTrustChainCallbackResult = Nullable> -export type RequiredContext = IAgentContext +export type RequiredContext = IAgentContext diff --git a/packages/tsconfig.json b/packages/tsconfig.json index a553bcad6..0791b1ec5 100644 --- a/packages/tsconfig.json +++ b/packages/tsconfig.json @@ -48,6 +48,6 @@ { "path": "ebsi-support" }, { "path": "public-key-hosting" }, { "path": "resource-resolver" }, - { "path": "oidf-client" } + { "path": "oidf-client" } ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 433206beb..f76854596 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1525,14 +1525,14 @@ importers: packages/oidf-client: dependencies: '@sphereon/openid-federation-client': - specifier: 0.1.0-unstable.8663d94 - version: 0.1.0-unstable.8663d94(encoding@0.1.13) + specifier: 0.1.0-unstable.b945ca8 + version: 0.1.0-unstable.b945ca8(encoding@0.1.13) '@sphereon/openid-federation-common': - specifier: 0.1.0-unstable.8663d94 - version: 0.1.0-unstable.8663d94(encoding@0.1.13) + specifier: 0.1.0-unstable.b945ca8 + version: 0.1.0-unstable.b945ca8(encoding@0.1.13) '@sphereon/openid-federation-open-api': - specifier: 0.1.0-unstable.8663d94 - version: 0.1.0-unstable.8663d94(encoding@0.1.13) + specifier: 0.1.0-unstable.b945ca8 + version: 0.1.0-unstable.b945ca8(encoding@0.1.13) '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) @@ -1543,52 +1543,15 @@ importers: '@sphereon/ssi-sdk.agent-config': specifier: workspace:* version: link:../agent-config + '@sphereon/ssi-sdk.resource-resolver': + specifier: workspace:* + version: link:../resource-resolver '@veramo/remote-client': specifier: 4.2.0 version: 4.2.0(encoding@0.1.13) '@veramo/remote-server': specifier: 4.2.0 version: 4.2.0(encoding@0.1.13)(express@4.21.1) - cross-fetch: - specifier: ^3.1.8 - version: 3.1.8(encoding@0.1.13) - jose: - specifier: 5.9.4 - version: 5.9.4 - nock: - specifier: ^13.5.5 - version: 13.5.5 - - packages/oidf-metatdata-server: - dependencies: - '@sphereon/ssi-express-support': - specifier: workspace:* - version: link:../ssi-express-support - '@sphereon/ssi-sdk.oid4vci-issuer-store': - specifier: workspace:* - version: link:../oid4vci-issuer-store - debug: - specifier: ^4.3.5 - version: 4.3.6 - express: - specifier: ^4.19.2 - version: 4.21.1 - semver: - specifier: ^7.6.3 - version: 7.6.3 - devDependencies: - '@sphereon/ssi-sdk.agent-config': - specifier: workspace:* - version: link:../agent-config - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/express-serve-static-core': - specifier: ^4.19.5 - version: 4.19.5 - '@types/semver': - specifier: ^7.5.8 - version: 7.5.8 packages/pd-manager: dependencies: @@ -6053,14 +6016,14 @@ packages: awesome-qr: optional: true - '@sphereon/openid-federation-client@0.1.0-unstable.8663d94': - resolution: {integrity: sha512-XA6tvTBmPo44SSjF9oIDjkyjFSKNDlbJerGTAzNIKDRaSFWMutfg+zL6yeJlk26YwlDikoAa2BWqKlNbETXaZQ==} + '@sphereon/openid-federation-client@0.1.0-unstable.b945ca8': + resolution: {integrity: sha512-0CyGyOEqU8Zj1dT+cSMLhbEN4ZRf/kzzEZk9+WznEdVjCjyjbB/xyEpHdK+dYHvXY3I60YHUHvH7HQ0nUFQN1Q==} - '@sphereon/openid-federation-common@0.1.0-unstable.8663d94': - resolution: {integrity: sha512-LfyuA/4kJ1+dltp7/HvGInmgj3cCjkICQivuZ3wG8NHLN2kgygVGElhfccGRTk6Q80TQI6dzFNiMPsk1Qo5y6w==} + '@sphereon/openid-federation-common@0.1.0-unstable.b945ca8': + resolution: {integrity: sha512-73POR6qS85xkO+Pw1GyWW3lRM49kbz4Hk651TDFVtYHk0eM6Vfb9ciVQ/8yRrZZpAUaQ0QmIa9GzQpaoBwqDoA==} - '@sphereon/openid-federation-open-api@0.1.0-unstable.8663d94': - resolution: {integrity: sha512-6CMhgUkrqW7o6mmQ7Kiwo5NW7boi5j9bezQhm3Fm6j+I4xWvc+9Mimn6fnbhENlgeGhtQ1mABdoy2R9b8FZzFQ==} + '@sphereon/openid-federation-open-api@0.1.0-unstable.b945ca8': + resolution: {integrity: sha512-Dj/OmW+8ECunMQL2mdqiIpqzETjRq60eENNPVcVr7OLVLjcvJcXty7AQ3KIc0ijQlEWiRKCZrHLkl314JRo2eg==} '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} @@ -17484,7 +17447,7 @@ snapshots: - encoding - supports-color - '@sphereon/openid-federation-client@0.1.0-unstable.8663d94(encoding@0.1.13)': + '@sphereon/openid-federation-client@0.1.0-unstable.b945ca8(encoding@0.1.13)': dependencies: '@js-joda/core': 3.2.0 abort-controller: 3.0.0 @@ -17497,7 +17460,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-common@0.1.0-unstable.8663d94(encoding@0.1.13)': + '@sphereon/openid-federation-common@0.1.0-unstable.b945ca8(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 @@ -17509,7 +17472,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-open-api@0.1.0-unstable.8663d94(encoding@0.1.13)': + '@sphereon/openid-federation-open-api@0.1.0-unstable.b945ca8(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 From 954967a220b3993d189774912ece01a53b740d07 Mon Sep 17 00:00:00 2001 From: John Melati Date: Wed, 13 Nov 2024 18:07:58 +0100 Subject: [PATCH 02/10] fix: remove unused interfaces --- packages/oidf-client/src/agent/OIDFClient.ts | 15 +++++++-------- packages/oidf-client/src/types/IOIDFClient.ts | 17 ++++++----------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/packages/oidf-client/src/agent/OIDFClient.ts b/packages/oidf-client/src/agent/OIDFClient.ts index 3059f26f1..8cb757fb2 100644 --- a/packages/oidf-client/src/agent/OIDFClient.ts +++ b/packages/oidf-client/src/agent/OIDFClient.ts @@ -2,13 +2,12 @@ import {FederationClient, ICryptoService, IFetchService} from '@sphereon/openid- import {JWK} from "@sphereon/ssi-types"; import {IAgentPlugin} from '@veramo/core' import {Request} from "cross-fetch"; -import {schema} from '../index' +import {ResolveTrustChainCallbackResult, schema} from '../index' import { IOIDFClient, OIDFClientArgs, - RequiredContext, - ResolveTrustChainArgs, - ResolveTrustChainCallbackResult + IRequiredContext, + ResolveTrustChainArgs } from '../types/IOIDFClient' export const oidfClientMethods: Array = ['resolveTrustChain'] @@ -28,7 +27,7 @@ export class OIDFClient implements IAgentPlugin { this.cryptoServiceCallback = cryptoServiceCallback } - private defaultCryptoJSImpl(context: RequiredContext): ICryptoService { + private defaultCryptoJSImpl(context: IRequiredContext): ICryptoService { return { verify: async (jwt: string, key: JWK): Promise => { const verification = await context.agent.jwtVerifyJwsSignature({jws: jwt, jwk: key}) @@ -37,7 +36,7 @@ export class OIDFClient implements IAgentPlugin { } } - private defaultFetchJSImpl(context: RequiredContext): IFetchService { + private defaultFetchJSImpl(context: IRequiredContext): IFetchService { return { async fetchStatement(endpoint: string): Promise { const requestInfo = new Request(endpoint, { @@ -54,14 +53,14 @@ export class OIDFClient implements IAgentPlugin { } } - private getOIDFClient(context: RequiredContext): FederationClient { + private getOIDFClient(context: IRequiredContext): FederationClient { return new FederationClient( this.fetchServiceCallback || this.defaultFetchJSImpl(context), this.cryptoServiceCallback || this.defaultCryptoJSImpl(context) ) } - private async resolveTrustChain(args: ResolveTrustChainArgs, context: RequiredContext): Promise { + private async resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise { const { entityIdentifier, trustAnchors } = args const oidfClient = this.getOIDFClient(context) diff --git a/packages/oidf-client/src/types/IOIDFClient.ts b/packages/oidf-client/src/types/IOIDFClient.ts index a178553e5..7eca93b8b 100644 --- a/packages/oidf-client/src/types/IOIDFClient.ts +++ b/packages/oidf-client/src/types/IOIDFClient.ts @@ -5,11 +5,13 @@ import { } from '@sphereon/ssi-sdk-ext.jwt-service'; import { ICryptoService, IFetchService } from '@sphereon/openid-federation-client' -export type IRequiredPlugins = IJwtService +export type IRequiredPlugins = IJwtService & IResourceResolver export type IRequiredContext = IAgentContext +type Nullable = T | null | undefined + export interface IOIDFClient extends IPluginMethodMap { - resolveTrustChain(args: ResolveTrustChainArgs, context: RequiredContext): Promise + resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise } export type ResolveTrustChainArgs = { @@ -18,15 +20,8 @@ export type ResolveTrustChainArgs = { } export type OIDFClientArgs = { - fetchServiceCallback?: FetchServiceCallbackArgs - cryptoServiceCallback?: CryptoServiceCallbackArgs + fetchServiceCallback?: IFetchService + cryptoServiceCallback?: ICryptoService } -export type CryptoServiceCallbackArgs = ICryptoService -export type FetchServiceCallbackArgs = IFetchService - -type Nullable = T | null | undefined - export type ResolveTrustChainCallbackResult = Nullable> - -export type RequiredContext = IAgentContext From ffd8ec6e0a84661a326ca7ceed55cbffb95a6e6a Mon Sep 17 00:00:00 2001 From: John Melati Date: Wed, 13 Nov 2024 18:22:56 +0100 Subject: [PATCH 03/10] upgrade oidf package version --- packages/oidf-client/package.json | 6 +++--- pnpm-lock.yaml | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index 55649030f..6934bde22 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -17,9 +17,9 @@ }, "dependencies": { "@sphereon/ssi-types": "workspace:*", - "@sphereon/openid-federation-open-api": "0.1.0-unstable.b945ca8", - "@sphereon/openid-federation-client": "0.1.0-unstable.b945ca8", - "@sphereon/openid-federation-common": "0.1.0-unstable.b945ca8", + "@sphereon/openid-federation-open-api": "0.1.0-unstable.c303a90", + "@sphereon/openid-federation-client": "0.1.0-unstable.c303a90", + "@sphereon/openid-federation-common": "0.1.0-unstable.c303a90", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f76854596..38f4d46e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1525,14 +1525,14 @@ importers: packages/oidf-client: dependencies: '@sphereon/openid-federation-client': - specifier: 0.1.0-unstable.b945ca8 - version: 0.1.0-unstable.b945ca8(encoding@0.1.13) + specifier: 0.1.0-unstable.c303a90 + version: 0.1.0-unstable.c303a90(encoding@0.1.13) '@sphereon/openid-federation-common': - specifier: 0.1.0-unstable.b945ca8 - version: 0.1.0-unstable.b945ca8(encoding@0.1.13) + specifier: 0.1.0-unstable.c303a90 + version: 0.1.0-unstable.c303a90(encoding@0.1.13) '@sphereon/openid-federation-open-api': - specifier: 0.1.0-unstable.b945ca8 - version: 0.1.0-unstable.b945ca8(encoding@0.1.13) + specifier: 0.1.0-unstable.c303a90 + version: 0.1.0-unstable.c303a90(encoding@0.1.13) '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) @@ -6016,14 +6016,14 @@ packages: awesome-qr: optional: true - '@sphereon/openid-federation-client@0.1.0-unstable.b945ca8': - resolution: {integrity: sha512-0CyGyOEqU8Zj1dT+cSMLhbEN4ZRf/kzzEZk9+WznEdVjCjyjbB/xyEpHdK+dYHvXY3I60YHUHvH7HQ0nUFQN1Q==} + '@sphereon/openid-federation-client@0.1.0-unstable.c303a90': + resolution: {integrity: sha512-HlZ6K7d06+I1FMeUXI/chyWTiO5cP2b0BMeoo+VHXalnfGC2JAumveYuf96lv+JusNqItCxCLDD/4UDpMS4tww==} - '@sphereon/openid-federation-common@0.1.0-unstable.b945ca8': - resolution: {integrity: sha512-73POR6qS85xkO+Pw1GyWW3lRM49kbz4Hk651TDFVtYHk0eM6Vfb9ciVQ/8yRrZZpAUaQ0QmIa9GzQpaoBwqDoA==} + '@sphereon/openid-federation-common@0.1.0-unstable.c303a90': + resolution: {integrity: sha512-1TJOtNsD2sKRwCDeT9NvOZDSUPdy0lTrVVhNIiVyxbpgzBHbKUMF8hEQs+uygHi1BgYN6jSeU2L1eUBpS8gDcw==} - '@sphereon/openid-federation-open-api@0.1.0-unstable.b945ca8': - resolution: {integrity: sha512-Dj/OmW+8ECunMQL2mdqiIpqzETjRq60eENNPVcVr7OLVLjcvJcXty7AQ3KIc0ijQlEWiRKCZrHLkl314JRo2eg==} + '@sphereon/openid-federation-open-api@0.1.0-unstable.c303a90': + resolution: {integrity: sha512-2Gqz2a5kO94e8DTrLTIRw2kk5RysB6A6dthdZWa8rud1KcqNunZByWcuBBLMjkSnRl+oFNRrMKaqyKrZpfonOg==} '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} @@ -17447,7 +17447,7 @@ snapshots: - encoding - supports-color - '@sphereon/openid-federation-client@0.1.0-unstable.b945ca8(encoding@0.1.13)': + '@sphereon/openid-federation-client@0.1.0-unstable.c303a90(encoding@0.1.13)': dependencies: '@js-joda/core': 3.2.0 abort-controller: 3.0.0 @@ -17460,7 +17460,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-common@0.1.0-unstable.b945ca8(encoding@0.1.13)': + '@sphereon/openid-federation-common@0.1.0-unstable.c303a90(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 @@ -17472,7 +17472,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-open-api@0.1.0-unstable.b945ca8(encoding@0.1.13)': + '@sphereon/openid-federation-open-api@0.1.0-unstable.c303a90(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 From fc619625fbcc5ba7bceda1aef555953b244b5a92 Mon Sep 17 00:00:00 2001 From: John Melati Date: Thu, 14 Nov 2024 19:39:20 +0100 Subject: [PATCH 04/10] throw error on oidf client if fetch response code is not 200 --- .../oidf-client/__tests__/shared/oidfClientAgentLogic.ts | 1 - packages/oidf-client/package.json | 2 +- packages/oidf-client/src/agent/OIDFClient.ts | 9 +++++++-- pnpm-lock.yaml | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts index 9530fd147..72a3a4b3b 100644 --- a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts +++ b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts @@ -1,4 +1,3 @@ -import 'cross-fetch/polyfill' import { ResourceResolver } from "@sphereon/ssi-sdk.resource-resolver"; import { createAgent, TAgent } from '@veramo/core' import { diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index 6934bde22..5327f582a 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -17,13 +17,13 @@ }, "dependencies": { "@sphereon/ssi-types": "workspace:*", + "@sphereon/ssi-sdk.resource-resolver": "workspace:*", "@sphereon/openid-federation-open-api": "0.1.0-unstable.c303a90", "@sphereon/openid-federation-client": "0.1.0-unstable.c303a90", "@sphereon/openid-federation-common": "0.1.0-unstable.c303a90", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { - "@sphereon/ssi-sdk.resource-resolver": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@veramo/remote-client": "4.2.0", "@veramo/remote-server": "4.2.0" diff --git a/packages/oidf-client/src/agent/OIDFClient.ts b/packages/oidf-client/src/agent/OIDFClient.ts index 8cb757fb2..9f4c19ee2 100644 --- a/packages/oidf-client/src/agent/OIDFClient.ts +++ b/packages/oidf-client/src/agent/OIDFClient.ts @@ -2,12 +2,13 @@ import {FederationClient, ICryptoService, IFetchService} from '@sphereon/openid- import {JWK} from "@sphereon/ssi-types"; import {IAgentPlugin} from '@veramo/core' import {Request} from "cross-fetch"; -import {ResolveTrustChainCallbackResult, schema} from '../index' +import {schema} from '../' import { IOIDFClient, OIDFClientArgs, IRequiredContext, - ResolveTrustChainArgs + ResolveTrustChainArgs, + ResolveTrustChainCallbackResult } from '../types/IOIDFClient' export const oidfClientMethods: Array = ['resolveTrustChain'] @@ -48,6 +49,10 @@ export class OIDFClient implements IAgentPlugin { resourceType: 'application/entity-statement+jwt', }) + if (response.status != 200) { + throw new Error(`Failed to fetch statement from ${endpoint}`) + } + return await response.text() } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38f4d46e9..d712f73a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1536,6 +1536,9 @@ importers: '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) + '@sphereon/ssi-sdk.resource-resolver': + specifier: workspace:* + version: link:../resource-resolver '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1543,9 +1546,6 @@ importers: '@sphereon/ssi-sdk.agent-config': specifier: workspace:* version: link:../agent-config - '@sphereon/ssi-sdk.resource-resolver': - specifier: workspace:* - version: link:../resource-resolver '@veramo/remote-client': specifier: 4.2.0 version: 4.2.0(encoding@0.1.13) From 1497ccdafeb615634c6b50202ab01c9cded35fc4 Mon Sep 17 00:00:00 2001 From: John Melati Date: Thu, 14 Nov 2024 19:48:08 +0100 Subject: [PATCH 05/10] upgrade openid-federation package version --- packages/oidf-client/package.json | 6 +++--- pnpm-lock.yaml | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index 5327f582a..27c7e4e21 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -18,9 +18,9 @@ "dependencies": { "@sphereon/ssi-types": "workspace:*", "@sphereon/ssi-sdk.resource-resolver": "workspace:*", - "@sphereon/openid-federation-open-api": "0.1.0-unstable.c303a90", - "@sphereon/openid-federation-client": "0.1.0-unstable.c303a90", - "@sphereon/openid-federation-common": "0.1.0-unstable.c303a90", + "@sphereon/openid-federation-open-api": "0.1.1-unstable.49c7542", + "@sphereon/openid-federation-client": "0.1.1-unstable.49c7542", + "@sphereon/openid-federation-common": "0.1.1-unstable.49c7542", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d712f73a3..83490e98c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1525,14 +1525,14 @@ importers: packages/oidf-client: dependencies: '@sphereon/openid-federation-client': - specifier: 0.1.0-unstable.c303a90 - version: 0.1.0-unstable.c303a90(encoding@0.1.13) + specifier: 0.1.1-unstable.49c7542 + version: 0.1.1-unstable.49c7542(encoding@0.1.13) '@sphereon/openid-federation-common': - specifier: 0.1.0-unstable.c303a90 - version: 0.1.0-unstable.c303a90(encoding@0.1.13) + specifier: 0.1.1-unstable.49c7542 + version: 0.1.1-unstable.49c7542(encoding@0.1.13) '@sphereon/openid-federation-open-api': - specifier: 0.1.0-unstable.c303a90 - version: 0.1.0-unstable.c303a90(encoding@0.1.13) + specifier: 0.1.1-unstable.49c7542 + version: 0.1.1-unstable.49c7542(encoding@0.1.13) '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) @@ -6016,14 +6016,14 @@ packages: awesome-qr: optional: true - '@sphereon/openid-federation-client@0.1.0-unstable.c303a90': - resolution: {integrity: sha512-HlZ6K7d06+I1FMeUXI/chyWTiO5cP2b0BMeoo+VHXalnfGC2JAumveYuf96lv+JusNqItCxCLDD/4UDpMS4tww==} + '@sphereon/openid-federation-client@0.1.1-unstable.49c7542': + resolution: {integrity: sha512-xHtQSbuWv57P5jhVCDxTgdKSqhewcDskT3njz2bQnOAOt0Jl2eKgwBtl40RY/1TxVW/DA+vtiFxg+AjtC6Bg1w==} - '@sphereon/openid-federation-common@0.1.0-unstable.c303a90': - resolution: {integrity: sha512-1TJOtNsD2sKRwCDeT9NvOZDSUPdy0lTrVVhNIiVyxbpgzBHbKUMF8hEQs+uygHi1BgYN6jSeU2L1eUBpS8gDcw==} + '@sphereon/openid-federation-common@0.1.1-unstable.49c7542': + resolution: {integrity: sha512-ZTP8r0Y/pb56gmp9/WSCxPghCEgM14BELlP/gl+HPYPDQhXT8nwH+h1TljPdTDHeYMax9jHrs78mk0k4fjmq3A==} - '@sphereon/openid-federation-open-api@0.1.0-unstable.c303a90': - resolution: {integrity: sha512-2Gqz2a5kO94e8DTrLTIRw2kk5RysB6A6dthdZWa8rud1KcqNunZByWcuBBLMjkSnRl+oFNRrMKaqyKrZpfonOg==} + '@sphereon/openid-federation-open-api@0.1.1-unstable.49c7542': + resolution: {integrity: sha512-yUlHiEk8fx1M6y70veIeWqAP7eGkXlXZ8UfzKMHYglSsG9zywAI9aKyykk6/W9ljzx9+uRNUXHCp5O5dKDaBFA==} '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} @@ -17447,7 +17447,7 @@ snapshots: - encoding - supports-color - '@sphereon/openid-federation-client@0.1.0-unstable.c303a90(encoding@0.1.13)': + '@sphereon/openid-federation-client@0.1.1-unstable.49c7542(encoding@0.1.13)': dependencies: '@js-joda/core': 3.2.0 abort-controller: 3.0.0 @@ -17460,7 +17460,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-common@0.1.0-unstable.c303a90(encoding@0.1.13)': + '@sphereon/openid-federation-common@0.1.1-unstable.49c7542(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 @@ -17472,7 +17472,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-open-api@0.1.0-unstable.c303a90(encoding@0.1.13)': + '@sphereon/openid-federation-open-api@0.1.1-unstable.49c7542(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 From 2343bfa0fb99944a23d1e336fb453b533803da4b Mon Sep 17 00:00:00 2001 From: John Melati Date: Thu, 14 Nov 2024 21:07:59 +0100 Subject: [PATCH 06/10] fix jwt verify check --- packages/oidf-client/src/agent/OIDFClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oidf-client/src/agent/OIDFClient.ts b/packages/oidf-client/src/agent/OIDFClient.ts index 9f4c19ee2..45088003c 100644 --- a/packages/oidf-client/src/agent/OIDFClient.ts +++ b/packages/oidf-client/src/agent/OIDFClient.ts @@ -32,7 +32,7 @@ export class OIDFClient implements IAgentPlugin { return { verify: async (jwt: string, key: JWK): Promise => { const verification = await context.agent.jwtVerifyJwsSignature({jws: jwt, jwk: key}) - return verification.error === undefined + return !verification.error } } } From 4636def12181d47ae8a82ae236ca91d975cf72e1 Mon Sep 17 00:00:00 2001 From: John Melati Date: Fri, 15 Nov 2024 00:32:04 +0100 Subject: [PATCH 07/10] integrate TrustChainResolveResponse --- .../oid4vci-holder/src/agent/OID4VCIHolder.ts | 2 +- .../__tests__/shared/oidfClientAgentLogic.ts | 29 ++++-------------- packages/oidf-client/package.json | 6 ++-- packages/oidf-client/src/agent/OIDFClient.ts | 9 +++--- packages/oidf-client/src/types/IOIDFClient.ts | 8 ++--- pnpm-lock.yaml | 30 +++++++++---------- 6 files changed, 31 insertions(+), 53 deletions(-) diff --git a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts index 084915b4e..157703a6a 100644 --- a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts @@ -1051,7 +1051,7 @@ export class OID4VCIHolder implements IAgentPlugin { trustAnchors: [trustAnchor] }) - if (Array.isArray(resolveResult) && resolveResult.length > 0) { + if (!resolveResult.error) { trustedAnchors.push(trustAnchor) } } diff --git a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts index 72a3a4b3b..c1e5304fa 100644 --- a/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts +++ b/packages/oidf-client/__tests__/shared/oidfClientAgentLogic.ts @@ -49,40 +49,23 @@ export default (testContext: { getAgent: () => ConfiguredAgent; setup: () => Pro afterAll(testContext.tearDown) it('should build a trust chain 1', async () => { - const trustChain = await agent.resolveTrustChain({ + const trustChainResolveResponse = await agent.resolveTrustChain({ entityIdentifier: 'https://spid.wbss.it/Spid/oidc/rp/ipasv_lt', trustAnchors: ['https://oidc.registry.servizicie.interno.gov.it'], }) - expect(trustChain).toBeTruthy() - expect(trustChain).toHaveLength(4) - - expect(trustChain).toEqual( - expect.arrayContaining([ - 'eyJraWQiOiJFOTVjTkxUU3RJUHZzbU1kYTZuR0hwdjVKVDg1Q3R6WmxQbGlqejY5Y1JrIiwidHlwIjoiZW50aXR5LXN0YXRlbWVudCtqd3QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQiLCJtZXRhZGF0YSI6eyJmZWRlcmF0aW9uX2VudGl0eSI6eyJob21lcGFnZV91cmkiOiJodHRwczovL3d3dy5vcGlsYXRpbmEuaXQiLCJsb2dvX3VyaSI6Imh0dHBzOi8vd3d3Lm9waWxhdGluYS5pdCIsIm9yZ2FuaXphdGlvbl9uYW1lIjoiT3JkaW5lIGRlbGxlIFByb2Zlc3Npb25pIEluZmVybWllcmlzdGljaGUgZGkgTGF0aW5hIiwiY29udGFjdHMiOlsibGF0aW5hQGNlcnQub3JkaW5lLW9waS5pdCJdLCJmZWRlcmF0aW9uX3Jlc29sdmVfZW5kcG9pbnQiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQvcmVzb2x2ZSIsInBvbGljeV91cmkiOiJodHRwczovL3d3dy5vcGlsYXRpbmEuaXQvbHQvYW1taW5pc3RyYXppb25lLXRyYXNwYXJlbnRlLzExOS1hbHRyaS1jb250ZW51dGkvNzQ5LXByaXZhY3ktcG9saWN5LXNpdG8ifSwib3BlbmlkX3JlbHlpbmdfcGFydHkiOnsiY2xpZW50X3JlZ2lzdHJhdGlvbl90eXBlcyI6WyJhdXRvbWF0aWMiXSwiandrcyI6eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsInVzZSI6InNpZyIsImtpZCI6IlNHSE9QU0lUUzF3ejFHZjE5WGoxRGw4NlB2akhmcUlHeXJmTnFUdlFlNHMiLCJhbGciOiJSUzI1NiIsIm4iOiJnNjk3Wk1WTVlGTTItQlIzeUZ1VklGUUZFWXV0aGgwcWlfeWlDZS1XQUNuSjhsM3ZqLXl6eDlYZjQteFR3NzRfaFQtaTkwQVljT19ZWmdUenZmbVJnS2ZOMFBMOHdsYkFHLVdYZWVFaDk5WDVpSFpfWldmc3RNX0VqRXJPVGJkWTFieGZVWEg0Y0ZhMHJBX0U5RUtsYWJScVVhckVxWUdLdlZpRjlOdW9tbnJ3ZjFITXBQSUdjZFJpWGFqSmtWak8yYVhGcXgzNldLVmpldWU1NVJ6c21fWUpNN2UxVVNzMGlBSWRXbTAzakEzSWJHT0NlTGd3OE5teXhWZTFGXzlpbWV0WVRKWEJDVnFCcXNDTy1NQlpQdTBpelZlRUlPQzlsZzVTNWstS0F0NkNfeEJMUzVpX1d1am1vdXFzQVBzZ1BuTjdqSDBmUW9TNzlIZ1JEdTdmVncifSx7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoiZW5jIiwia2lkIjoidUVhVEFqZnU5TVgzVUZGeHhlSno1WTV1d25PUUQxOVZ5dnJaZF92VUg5WSIsImFsZyI6IlJTQS1PQUVQLTI1NiIsIm4iOiJsRmJ1V2t0Y09TOWdXR1dvMjVEUTVOZndnQ1FnMEQycVFLMnV6UTg4SWtYd21YS0lqTVJUNXhsZXhfcXI0ckFZemMyaWZ4YWlnLUJlRWFWSEFHTmZJYUx0a3VpTHhHWjktbXhBNDR5LVNGXzlLMzg4VDlUejRvdE8zZE16SURxRWFnT01wSzJjOEJRcm5Zem5ucmN4emQ2RVJmYVYxNVNUMk9selVmN0ItUVFoQnh4QW1fUWVNN29kUTBEdHJRSi11V3FMOXlRa3Rja3NEZ3dxRW8ySkVVT241VXFsSGJOSW8tMDNhdGJ6WVdaQWpqWTBWemcxc2dTOVhwaDBOclBMWHF0MzBuYkxaVm5HVjRrMDk2X1MxU01YajFqbWFEMFBqdnRHb215dUs3QUNUTEp1XzFpajBkZFFodmFlQ2VXWXRJdlBDMDJ1RDg3MUgwem5PdWR5ZlEifV19LCJncmFudF90eXBlcyI6WyJyZWZyZXNoX3Rva2VuIiwiYXV0aG9yaXphdGlvbl9jb2RlIl0sImFwcGxpY2F0aW9uX3R5cGUiOiJ3ZWIiLCJ1c2VyaW5mb19lbmNyeXB0ZWRfcmVzcG9uc2VfZW5jIjoiQTEyOENCQy1IUzI1NiIsIm9yZ2FuaXphdGlvbl9uYW1lIjoiT3JkaW5lIGRlbGxlIFByb2Zlc3Npb25pIEluZmVybWllcmlzdGljaGUgZGkgTGF0aW5hIiwicmVkaXJlY3RfdXJpcyI6WyJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQvY2FsbGJhY2siXSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2FsZyI6IlJTQS1PQUVQLTI1NiIsImNsaWVudF9pZCI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9ycC9pcGFzdl9sdCIsInVzZXJpbmZvX3NpZ25lZF9yZXNwb25zZV9hbGciOiJSUzI1NiIsInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kIjoicHJpdmF0ZV9rZXlfand0IiwiY2xpZW50X25hbWUiOiJPcmRpbmUgZGVsbGUgUHJvZmVzc2lvbmkgSW5mZXJtaWVyaXN0aWNoZSBkaSBMYXRpbmEiLCJjb250YWN0cyI6WyJsYXRpbmFAY2VydC5vcmRpbmUtb3BpLml0Il0sInJlc3BvbnNlX3R5cGVzIjpbImNvZGUiXSwiaWRfdG9rZW5fc2lnbmVkX3Jlc3BvbnNlX2FsZyI6IlJTMjU2In19LCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoid3ZISHBtckZraTI3R1ZkYXYtNW41S0hZT08tZ21sT3MxOWxBUG1xeDZGU2VSUTVSeWsxbVUxTFVPNFF4UmJYVUlUNEhFczRUc2EzRG94SlRCSEE5clR1VXJTZUpieFEwcGVBbUI4akZFbmowYjJOdzVwSDBaRFVmMVdoUWw1dlJQblRUcmpWUXotUlE1VzNtMHRjVTh4OEd6MXlNczF6RHZ2YTNmZzVjajQyV1lnMEtYN2d1ODNrQ2puQmpEX2NlT2YzWHJhN1Q2V193LXNJY1h4TGJFWXYzVDFSdFp2cE9IZHp1WTJjMEx1NTlPNFE5d01udk5VT0hjTVJFT3ROM3RpcEc0dU1jOHAxajVUQ0lXMUVTeXNxWUYycF9kYmJlSVFwVXhrRzJZMHNPWnJWWWtTTHAwdjB4RnJKd1N3NVl2Z0VhZ2ZIaERXTXNmcGpPNHFuUXBRIiwia2lkIjoiRTk1Y05MVFN0SVB2c21NZGE2bkdIcHY1SlQ4NUN0elpsUGxpano2OWNSayJ9XX0sImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9ycC9pcGFzdl9sdCIsImF1dGhvcml0eV9oaW50cyI6WyJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiXSwiZXhwIjoxNzI4MzQ2NjE2LCJpYXQiOjE3MjgzNDQ4MTYsInRydXN0X21hcmtzIjpbeyJ0cnVzdF9tYXJrIjoiZXlKcmFXUWlPaUpOV0dGdlRVdHZjV0l5TUUxUU1FMVdZa1JVWkd4SVltbEZNRTlKYWtOeVltaEhUbmt4V1ZsemVYSk5JaXdpZEhsd0lqb2lkSEoxYzNRdGJXRnlheXRxZDNRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SnpkV0lpT2lKb2RIUndjem92TDNOd2FXUXVkMkp6Y3k1cGRDOVRjR2xrTDI5cFpHTXZjbkF2YVhCaGMzWmZiSFFpTENKeVpXWWlPaUlpTENKc2IyZHZYM1Z5YVNJNkltaDBkSEJ6T2k4dmQzZDNMbTl3YVd4aGRHbHVZUzVwZENJc0ltbHpjeUk2SW1oMGRIQnpPaTh2YzNCcFpDNTNZbk56TG1sMEwxTndhV1F2YjJsa1l5OXpZU0lzSW05eVoyRnVhWHBoZEdsdmJsOTBlWEJsSWpvaWNIVmliR2xqSWl3aWFXUWlPaUpvZEhSd2N6b3ZMMjlwWkdNdWNtVm5hWE4wY25rdWMyVnlkbWw2YVdOcFpTNXBiblJsY201dkxtZHZkaTVwZEM5dmNHVnVhV1JmY21Wc2VXbHVaMTl3WVhKMGVTOXdkV0pzYVdNaUxDSnZjbWRoYm1sNllYUnBiMjVmYm1GdFpTSTZJazl5WkdsdVpTQmtaV3hzWlNCUWNtOW1aWE56YVc5dWFTQkpibVpsY20xcFpYSnBjM1JwWTJobElHUnBJRXhoZEdsdVlTSXNJbVY0Y0NJNk1UYzFPRGt3T0RZeE55d2lhV0YwSWpveE56STNORFU1TURFM0xDSnBaRjlqYjJSbElqcDdJbWx3WVY5amIyUmxJam9pYVhCaGMzWmZiSFFpZlN3aVpXMWhhV3dpT2lKc1lYUnBibUZBWTJWeWRDNXZjbVJwYm1VdGIzQnBMbWwwSW4wLlBBLUhDeFpFNy01ZzZ6YkVVblJ1N0hHV1M0ejB5TWpsUG9aQkVMUkc4MzNVN242NW5ndFltXzMzcnlyMWEwbDN2N0xDbDFKNDE1NTdvTEJoeEwzTXdnWWstbHFZNHBNU0Q1YjVyRXk1akNHYjNoM0w1b2xldWRuNFhXeWRaZkVjWWhrVHlIbERfaFdtZk12MDlCLXQ4LTJ0YWdiOExDWTVnY1JBLTFDSFZOcGpWUFhKLXcxeVhvM3dxLXhVTWZpRHFpaU9MWnl2V2I3NElMQ1JMajQwWG0tLVVlUUY2M0d4LTZFOGs5WG0xMllsRnRYdFBocHlDQ1pEMlJ0Z1BUNnEzWnBHTjFHR2kyZEtEMjRITHhjS3B3RGh0Z09yckp0Uko5TnRBb1VjV3MwZUkxZkRFYnV0NFhoYkExYXlNTVAwVVZyanpXVW5UX25POGdwRHF4M1VDdyIsImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImlkIjoiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb3BlbmlkX3JlbHlpbmdfcGFydHkvcHVibGljIn1dfQ.iMKQ3-TqYqPSP5YSqNh-U9TjfirHOUYv0KokoP9KmChsUz8LtEaU8Ajxo2nsbkSeNSxnRQ8uCXBWrnpIpa5uC9Od5sAABNBpY14t3St0tOvta5OTVGVm6SFhCj4uYMipyhACTM2y9Mxr0f0GpNhY5_2jqNL0SPdP4-7PcLp_1Aa_ngg0YYeoRUn1d2DOjCGUuOnosM86anWPCFU9ahqcarcQACzuIo898-zVVPEOx1C0VoH0Qqmd3wq4gtJ6baWo7QhZpKeUs4kVuDJ-D-Tn_FdwJ351oboES2v-qyBRxpzs5aUbqn-r96W1Wp8KEvCfBA3dYbaNKd2FqkSPrSbZkA', - 'eyJraWQiOiJNWGFvTUtvcWIyME1QME1WYkRUZGxIYmlFME9JakNyYmhHTnkxWVlzeXJNIiwidHlwIjoiZW50aXR5LXN0YXRlbWVudCtqd3QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvcnAvaXBhc3ZfbHQiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoid3ZISHBtckZraTI3R1ZkYXYtNW41S0hZT08tZ21sT3MxOWxBUG1xeDZGU2VSUTVSeWsxbVUxTFVPNFF4UmJYVUlUNEhFczRUc2EzRG94SlRCSEE5clR1VXJTZUpieFEwcGVBbUI4akZFbmowYjJOdzVwSDBaRFVmMVdoUWw1dlJQblRUcmpWUXotUlE1VzNtMHRjVTh4OEd6MXlNczF6RHZ2YTNmZzVjajQyV1lnMEtYN2d1ODNrQ2puQmpEX2NlT2YzWHJhN1Q2V193LXNJY1h4TGJFWXYzVDFSdFp2cE9IZHp1WTJjMEx1NTlPNFE5d01udk5VT0hjTVJFT3ROM3RpcEc0dU1jOHAxajVUQ0lXMUVTeXNxWUYycF9kYmJlSVFwVXhrRzJZMHNPWnJWWWtTTHAwdjB4RnJKd1N3NVl2Z0VhZ2ZIaERXTXNmcGpPNHFuUXBRIiwia2lkIjoiRTk1Y05MVFN0SVB2c21NZGE2bkdIcHY1SlQ4NUN0elpsUGxpano2OWNSayJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJqd2tzIjp7InZhbHVlIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoiZzY5N1pNVk1ZRk0yLUJSM3lGdVZJRlFGRVl1dGhoMHFpX3lpQ2UtV0FDbko4bDN2ai15eng5WGY0LXhUdzc0X2hULWk5MEFZY09fWVpnVHp2Zm1SZ0tmTjBQTDh3bGJBRy1XWGVlRWg5OVg1aUhaX1pXZnN0TV9FakVyT1RiZFkxYnhmVVhINGNGYTByQV9FOUVLbGFiUnFVYXJFcVlHS3ZWaUY5TnVvbW5yd2YxSE1wUElHY2RSaVhhakprVmpPMmFYRnF4MzZXS1ZqZXVlNTVSenNtX1lKTTdlMVVTczBpQUlkV20wM2pBM0liR09DZUxndzhObXl4VmUxRl85aW1ldFlUSlhCQ1ZxQnFzQ08tTUJaUHUwaXpWZUVJT0M5bGc1UzVrLUtBdDZDX3hCTFM1aV9XdWptb3Vxc0FQc2dQbk43akgwZlFvUzc5SGdSRHU3ZlZ3Iiwia2lkIjoiU0dIT1BTSVRTMXd6MUdmMTlYajFEbDg2UHZqSGZxSUd5cmZOcVR2UWU0cyJ9LHsia3R5IjoiUlNBIiwiZSI6IkFRQUIiLCJhbGciOiJSU0EtT0FFUC0yNTYiLCJ1c2UiOiJlbmMiLCJuIjoibEZidVdrdGNPUzlnV0dXbzI1RFE1TmZ3Z0NRZzBEMnFRSzJ1elE4OElrWHdtWEtJak1SVDV4bGV4X3FyNHJBWXpjMmlmeGFpZy1CZUVhVkhBR05mSWFMdGt1aUx4R1o5LW14QTQ0eS1TRl85SzM4OFQ5VHo0b3RPM2RNeklEcUVhZ09NcEsyYzhCUXJuWXpubnJjeHpkNkVSZmFWMTVTVDJPbHpVZjdCLVFRaEJ4eEFtX1FlTTdvZFEwRHRyUUotdVdxTDl5UWt0Y2tzRGd3cUVvMkpFVU9uNVVxbEhiTklvLTAzYXRiellXWkFqalkwVnpnMXNnUzlYcGgwTnJQTFhxdDMwbmJMWlZuR1Y0azA5Nl9TMVNNWGoxam1hRDBQanZ0R29teXVLN0FDVExKdV8xaWowZGRRaHZhZUNlV1l0SXZQQzAydUQ4NzFIMHpuT3VkeWZRIiwia2lkIjoidUVhVEFqZnU5TVgzVUZGeHhlSno1WTV1d25PUUQxOVZ5dnJaZF92VUg5WSJ9XX19fX0sImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImF1dGhvcml0eV9oaW50cyI6WyJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiXSwiZXhwIjoxNzI4MzQ2NjQzLCJpYXQiOjE3MjgzNDQ4NDMsImNvbnN0cmFpbnRzIjoie30iLCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKTldHRnZUVXR2Y1dJeU1FMVFNRTFXWWtSVVpHeElZbWxGTUU5SmFrTnlZbWhIVG5reFdWbHplWEpOSWl3aWRIbHdJam9pZEhKMWMzUXRiV0Z5YXl0cWQzUWlMQ0poYkdjaU9pSlNVekkxTmlKOS5leUp6ZFdJaU9pSm9kSFJ3Y3pvdkwzTndhV1F1ZDJKemN5NXBkQzlUY0dsa0wyOXBaR012Y25BdmFYQmhjM1pmYkhRaUxDSnlaV1lpT2lJaUxDSnNiMmR2WDNWeWFTSTZJbWgwZEhCek9pOHZkM2QzTG05d2FXeGhkR2x1WVM1cGRDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmMzQnBaQzUzWW5OekxtbDBMMU53YVdRdmIybGtZeTl6WVNJc0ltOXlaMkZ1YVhwaGRHbHZibDkwZVhCbElqb2ljSFZpYkdsaklpd2lhV1FpT2lKb2RIUndjem92TDI5cFpHTXVjbVZuYVhOMGNua3VjMlZ5ZG1sNmFXTnBaUzVwYm5SbGNtNXZMbWR2ZGk1cGRDOXZjR1Z1YVdSZmNtVnNlV2x1WjE5d1lYSjBlUzl3ZFdKc2FXTWlMQ0p2Y21kaGJtbDZZWFJwYjI1ZmJtRnRaU0k2SWs5eVpHbHVaU0JrWld4c1pTQlFjbTltWlhOemFXOXVhU0JKYm1abGNtMXBaWEpwYzNScFkyaGxJR1JwSUV4aGRHbHVZU0lzSW1WNGNDSTZNVGMxT0Rrd09EWXhOeXdpYVdGMElqb3hOekkzTkRVNU1ERTNMQ0pwWkY5amIyUmxJanA3SW1sd1lWOWpiMlJsSWpvaWFYQmhjM1pmYkhRaWZTd2laVzFoYVd3aU9pSnNZWFJwYm1GQVkyVnlkQzV2Y21ScGJtVXRiM0JwTG1sMEluMC5QQS1IQ3haRTctNWc2emJFVW5SdTdIR1dTNHoweU1qbFBvWkJFTFJHODMzVTduNjVuZ3RZbV8zM3J5cjFhMGwzdjdMQ2wxSjQxNTU3b0xCaHhMM013Z1lrLWxxWTRwTVNENWI1ckV5NWpDR2IzaDNMNW9sZXVkbjRYV3lkWmZFY1loa1R5SGxEX2hXbWZNdjA5Qi10OC0ydGFnYjhMQ1k1Z2NSQS0xQ0hWTnBqVlBYSi13MXlYbzN3cS14VU1maURxaWlPTFp5dldiNzRJTENSTGo0MFhtLS1VZVFGNjNHeC02RThrOVhtMTJZbEZ0WHRQaHB5Q0NaRDJSdGdQVDZxM1pwR04xR0dpMmRLRDI0SEx4Y0twd0RodGdPcnJKdFJKOU50QW9VY1dzMGVJMWZERWJ1dDRYaGJBMWF5TU1QMFVWcmp6V1VuVF9uTzhncERxeDNVQ3ciLCJpc3MiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJpZCI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0L29wZW5pZF9yZWx5aW5nX3BhcnR5L3B1YmxpYyJ9XX0.sT1eD12sTPk3moKnnuQGaOKprY4lL9lFUYauG5FbXQIyxFtZEOOLs1nBZwJOJVObaC2hhnWOTEVyyKlmsoi_7naWQsQxzQu1z6aEJVcblDu6KUt9QAr0qq4LMps7Ql6h1_1WI1XxsleX8qjtvnzZqG-gvRY1iH1opOmMR0oVzP-WfY16DCMIriiJeqB47AA3OcTs4VJ8choJBK1BlciYRyatmdrASwMMtePE8cQdnAvDeN0r5RLDqlFGjy0Mmyh8FDs_VWpQ11oVIrkNg_RMOR8BGsYGYeelqDmyc6hs6RLfNXQj2nU48obw7n9EVOcOvX7GyABAY9_taPMIHdfwgg', - 'eyJraWQiOiJkZWZhdWx0UlNBU2lnbiIsInR5cCI6ImVudGl0eS1zdGF0ZW1lbnQrand0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoic2lnIiwia2lkIjoiTVhhb01Lb3FiMjBNUDBNVmJEVGRsSGJpRTBPSWpDcmJoR055MVlZc3lyTSIsImFsZyI6IlJTMjU2IiwibiI6IjBCVFA0QUNnLUtUNmVOZEFocjEtcGE3Nmx1alhWM1dpWGwwdzROX215ajRxMHpnYVpPRDFjNUk3MjQtZzBfTkhpMjJxQmoxSXUtTUdKUVZrbGZELWVzSzFGWjJybmRSaWFiNVRkTXA0YzF5eS10a2lRTTdhZkp3elc3MERpb1YxaVNtZk9RNEhIMDlBLWRhbElaX0lBOFBxZXE4VHliZHBnUXN0TkFwM0ZOMGNNb0hILVdhZ0ZRR2lWMkEySDNzVWh2UVYyT19FQ0VaWENvTExHNkVzVVJzaEtweU93WDkwN05NSzdROVI5VU9CeldhQkpxUGstY21tbTlpWlRnVDg2QV9CY1MwdVpZeTdFT1lCM0VrYkNNQ2lHbDBGY29BbUYtT3hvc2RUYnRZb2FWa1c3UHlnQ1ZtZG16dGMwX0NWc1dhbUxvVlBTc2NxRmgtRVhITXh0dyJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJjbGllbnRfcmVnaXN0cmF0aW9uX3R5cGVzIjp7InN1YnNldF9vZiI6WyJhdXRvbWF0aWMiXSwiZXNzZW50aWFsIjp0cnVlfSwiZ3JhbnRfdHlwZXMiOnsic3VwZXJzZXRfb2YiOlsiYXV0aG9yaXphdGlvbl9jb2RlIl0sInN1YnNldF9vZiI6WyJhdXRob3JpemF0aW9uX2NvZGUiLCJyZWZyZXNoX3Rva2VuIl19LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSU0EtT0FFUCIsIlJTQS1PQUVQLTI1NiIsIkVDREgtRVMiLCJFQ0RILUVTK0ExMjhLVyIsIkVDREgtRVMrQTI1NktXIl0sImVzc2VudGlhbCI6ZmFsc2V9LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfZW5jIjp7Im9uZV9vZiI6WyJBMTI4Q0JDLUhTMjU2IiwiQTI1NkNCQy1IUzUxMiJdLCJlc3NlbnRpYWwiOmZhbHNlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2VuYyI6eyJvbmVfb2YiOlsiQTEyOENCQy1IUzI1NiIsIkEyNTZDQkMtSFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2FsZyI6eyJvbmVfb2YiOlsiUlNBLU9BRVAiLCJSU0EtT0FFUC0yNTYiLCJFQ0RILUVTIiwiRUNESC1FUytBMTI4S1ciLCJFQ0RILUVTK0EyNTZLVyJdLCJlc3NlbnRpYWwiOnRydWV9LCJyZWRpcmVjdF91cmlzIjp7ImVzc2VudGlhbCI6dHJ1ZX0sInVzZXJpbmZvX3NpZ25lZF9yZXNwb25zZV9hbGciOnsib25lX29mIjpbIlJTMjU2IiwiUlM1MTIiLCJFUzI1NiIsIkVTNTEyIiwiUFMyNTYiLCJQUzUxMiJdLCJlc3NlbnRpYWwiOnRydWV9LCJ0b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZCI6eyJvbmVfb2YiOlsicHJpdmF0ZV9rZXlfand0Il0sImVzc2VudGlhbCI6dHJ1ZX0sImNsaWVudF9pZCI6eyJlc3NlbnRpYWwiOnRydWV9LCJpZF90b2tlbl9zaWduZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSUzI1NiIsIlJTNTEyIiwiRVMyNTYiLCJFUzUxMiIsIlBTMjU2IiwiUFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwicmVzcG9uc2VfdHlwZXMiOnsidmFsdWUiOlsiY29kZSJdfX19LCJpc3MiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsImV4cCI6MTcyODM0NjcwNSwiaWF0IjoxNzI4MzQ0OTA1LCJjb25zdHJhaW50cyI6eyJhbGxvd2VkX2xlYWZfZW50aXR5X3R5cGVzIjpbIm9wZW5pZF9yZWx5aW5nX3BhcnR5Il19LCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKa1pXWmhkV3gwVWxOQlUybG5iaUlzSW5SNWNDSTZJblJ5ZFhOMExXMWhjbXNyYW5kMElpd2lZV3huSWpvaVVsTXlOVFlpZlEuZXlKemRXSWlPaUpvZEhSd2N6b3ZMM053YVdRdWQySnpjeTVwZEM5VGNHbGtMMjlwWkdNdmMyRWlMQ0p6WVY5d2NtOW1hV3hsSWpvaVcxd2lablZzYkZ3aVhTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmIybGtZeTV5WldkcGMzUnllUzV6WlhKMmFYcHBZMmxsTG1sdWRHVnlibTh1WjI5MkxtbDBJaXdpYjNKbllXNXBlbUYwYVc5dVgzUjVjR1VpT2lKd2NtbDJZWFJsSWl3aWFXUWlPaUpvZEhSd2N6b3ZMMjlwWkdNdWNtVm5hWE4wY25rdWMyVnlkbWw2YVdOcFpTNXBiblJsY201dkxtZHZkaTVwZEM5cGJuUmxjbTFsWkdsaGRHVXZjSEpwZG1GMFpTSXNJbVY0Y0NJNk1UYzFPRE0yTnpJd01Td2lhV0YwSWpveE56STJPRE14TWpBeGZRLkNRX3ZfQnZVbWxoUXZHb1Q2NjA1aEpIcjZic29FYTMtYlJpcjZfUDFNcy1FeGM4UVJlX0d1VzlmYzFEb1RGSTFrenBoZjlBUExYbF93MVlzU3ZIVGV6NndtY1hNcXEwT0NfVTZPVUVLZDlleUR4c1V6SmJUSGZ5UEtUTkxWQmJiSW5pZzRRdjA3YUE0Qnk5ZlNtTDRfWnV1ZnRLUFhkUmZVUmJNZUxkcEhsWi1HU1JjUkxRd2MzS190bjhfUzR0Y0hONGFDWWxIWWU5cWxyMjJZNHZmdHpsZWY2ZmFKelhTX1gwRzQtZmgxc3BteE1VR1k1UGR2QlhsS0pJZGtMdTZXTU9NVGF1clBLT1VTakFJZ3pMbUxzWTF0NDhPYlcxZHlULUNfS19CelZYTkdTblpsck5XWFJmSWxsb3BmTUZtRzJwb2FpdjgyZkVCV3FseFZSSnVKdyIsImlzcyI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaWQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9pbnRlcm1lZGlhdGUvcHJpdmF0ZSJ9XX0.JSID34FwkJ3nc83WHZL60z8tsVCE5SE6NR9yGwroEqIyI5TBmE2DDSbO87LGkiNkDIJ4ANo-fwBRLkXkdKVtf2QfKKzX7fsTihETekIBP9XA1RfFRDMYUKyHI5b-4cQIQxWHTnnjdm-9byT8FK8Pw8eC3QNc38KbJvR1CcdCVFVBQ1GFumTe1DOhkARbFg3rT_w8RjH_PhuRmUDUQyTBQwDHdFydb_TZpgzvSmHUjjvB2qJT109DGV4s-aFwj5bUn9YRazWlNDo78PFS0lJk16bLGEP5YRrXL_lGSxSEUta-BQEoJ2CR9QsBCW8L1HJoRywx61nWSC1wsCAxJlR4eg', - 'eyJraWQiOiJkZWZhdWx0UlNBU2lnbiIsInR5cCI6ImVudGl0eS1zdGF0ZW1lbnQrand0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsIm1ldGFkYXRhIjp7ImZlZGVyYXRpb25fZW50aXR5Ijp7ImZlZGVyYXRpb25fZmV0Y2hfZW5kcG9pbnQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9mZXRjaCIsImZlZGVyYXRpb25fcmVzb2x2ZV9lbmRwb2ludCI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0L3Jlc29sdmUiLCJmZWRlcmF0aW9uX3RydXN0X21hcmtfc3RhdHVzX2VuZHBvaW50IjoiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvdHJ1c3RfbWFya19zdGF0dXMiLCJmZWRlcmF0aW9uX2xpc3RfZW5kcG9pbnQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9saXN0In19LCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoic2lnIiwia2lkIjoiZGVmYXVsdFJTQVNpZ24iLCJuIjoicVJUSkhRZ2IyZjhjbG45ZEpiLVdnaWs0cUVMNUdHX19zUHpsQVU0aTY5UzZ5SHhlTWczMllnTGZVenBOQnhfOGtYMm5kellYTV9SS21vM2poalF4dXhDSzFJSFNRY01rZzFoR2lpLXhSdzh4NDV0OFNHbFdjU0hpN182UmFBWTFTeUZjRUVsTkFxSGk1b2VCYUIzRkd2ZnJWLUVQLWNOa1V2R0VWYnlzX0NieHlHRFE5UU0wTkVyc2lsVmxNQVJERXJFTlpjclkwck5LdDUyV29aZ3kzcHNWY2Q4VTVEMExxZkM3N2JQakczNVBhVmh3WUFubFAwZXowSGY2dHV5V0pIZUE1MmRDZGUtbmEzV2ptUGFya2NscEZyLUtqWGVJQzhCd2ZqRXBBWGJLY3A4Tm11UUZqOWZEOUtuUjZ2Q2RPOTFSeUJJYkRsdUw1TEg4czBxRENRIn0seyJrdHkiOiJFQyIsInVzZSI6InNpZyIsImNydiI6IlAtMjU2Iiwia2lkIjoiZGVmYXVsdEVDU2lnbiIsIngiOiJ4TWtXSWExRVp5amdtazNKUUx0SERBOXAwVHBQOXdNU2JKSzBvQWl0Z2NrIiwieSI6IkNWTEZzdE93S3d0UXJ1dF92b0hqWU82SnoxSzBOWFJ1OE9MQ1RtS29zTGcifSx7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoiZW5jIiwia2lkIjoiZGVmYXVsdFJTQUVuYyIsIm4iOiJ3ZXcyMnhjcGZBU2tRUXA3U09vX0dzNmNLajJYeTd4VlpLX3RnWnh6QXlReExTeG01c1U0WkdzNm1kSUFIZEV2UTkxU25FSFR0anBlQVM5d0N2TlhWbVZ4TklqRkFQSnpDWXBzZkZ4R3pXMVBSM1NDQmVLUFl6VWpTeUJTZWw1LW1Td1U4MHlZQXFPbFoxUVJaTlFJNUVTVXZOUG9lUEZqR0NvZnhuRlJzbXF5X21Bd1p5bmQyTnJyc1QyQXlwMEw2UFF3ei1Fa09oakVCcHpzeXEwcE11am5aRWZ2UHk5UC1YdjJTVUZMZUpQcm1jRHllNjRaMlk5V1BoMmpwa25oT3hESzhSTUwtMllUdmI0dVNPalowWFpPVzltVm9nTkpSSm0yemVQVGVlTFBxR2x1TGNEenBsYnkwbkxiTGpkWDdLM29MYnFoRGFld2o3VnJhS2Vtc1EifV19LCJ0cnVzdF9tYXJrX2lzc3VlcnMiOnsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb2F1dGhfcmVzb3VyY2UvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcHJvdmlkZXIvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vYXV0aF9yZXNvdXJjZS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiLCJodHRwczovL2NvaGVzaW9uMi5yZWdpb25lLm1hcmNoZS5pdC9vaWRjL3NhLyIsImh0dHBzOi8vYXV0aC50b3NjYW5hLml0L2F1dGgvcmVhbG1zL2VudGkvZmVkZXJhdGlvbi1lbnRpdHkvcl90b3NjYW5fc2FfZW50aSIsImh0dHBzOi8vYXV0ZW50aWNhemlvbmUuY2xvdWQucHJvdmluY2lhLnRuLml0L2FnZ3JlZ2F0b3JlIiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3ByaXZhdGUiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb3BlbmlkX3Byb3ZpZGVyL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wcml2YXRlIjpbImh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXX0sImlzcyI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiZXhwIjoxNzI4NDI4MDI1LCJpYXQiOjE3MjgzNDE2MjUsImNvbnN0cmFpbnRzIjp7Im1heF9wYXRoX2xlbmd0aCI6MX0sInRydXN0X21hcmtzX2lzc3VlcnMiOnsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb2F1dGhfcmVzb3VyY2UvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcHJvdmlkZXIvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vYXV0aF9yZXNvdXJjZS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiLCJodHRwczovL2NvaGVzaW9uMi5yZWdpb25lLm1hcmNoZS5pdC9vaWRjL3NhLyIsImh0dHBzOi8vYXV0aC50b3NjYW5hLml0L2F1dGgvcmVhbG1zL2VudGkvZmVkZXJhdGlvbi1lbnRpdHkvcl90b3NjYW5fc2FfZW50aSIsImh0dHBzOi8vYXV0ZW50aWNhemlvbmUuY2xvdWQucHJvdmluY2lhLnRuLml0L2FnZ3JlZ2F0b3JlIiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3ByaXZhdGUiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb3BlbmlkX3Byb3ZpZGVyL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wcml2YXRlIjpbImh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXX19.QVndoAzYG4-r-f1mq2szTurjN4IWG5GN6aUBeIm6k5EXOdjEa2oOmP8iANBjCFWF6eNPNN2t342pBpb6-46o9kJv9MxyWASIaBkOv_X8RJGEgv2ghDLLnfOLv4R6J9XH9IIsQPzjlezgWJYk61ukfYN7kWA_aIT5Hf42zEU14V5kLbl50r8wjgJVRwmSBsDLKsWbOnbzfkiKv4druFhfhDZjiyBeCjYajh9MFYdAR1awYihNM-JVib89Z7XgOqxq4qGogPt_XU-YMuf917lw4kpphPRoUe1QIoj1KXfgbpJUdgiLMlXQoBl57Ej3b1mVWgEkC6oKjNyNvZR57Kx8AQ', - ]), - ) + expect(trustChainResolveResponse.error).toBeFalsy() + expect(trustChainResolveResponse.trustChain?.asJsReadonlyArrayView()).toHaveLength(4) }) it('should build trust chain 2', async () => { - const trustChain = await agent.resolveTrustChain({ + const trustChainResolveResponse = await agent.resolveTrustChain({ entityIdentifier: 'https://spid.wbss.it/Spid/oidc/sa', trustAnchors: ['https://oidc.registry.servizicie.interno.gov.it'], }) - expect(trustChain).toBeTruthy() - expect(trustChain).toHaveLength(3) - - expect(trustChain).toEqual( - expect.arrayContaining([ - 'eyJraWQiOiJNWGFvTUtvcWIyME1QME1WYkRUZGxIYmlFME9JakNyYmhHTnkxWVlzeXJNIiwidHlwIjoiZW50aXR5LXN0YXRlbWVudCtqd3QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJtZXRhZGF0YSI6eyJmZWRlcmF0aW9uX2VudGl0eSI6eyJob21lcGFnZV91cmkiOiJodHRwczovL3d3dy53YnNzLml0IiwibG9nb191cmkiOiJodHRwczovL3d3dy53YnNzLml0L2xvZ28iLCJvcmdhbml6YXRpb25fbmFtZSI6IlcuQi5TLlMuIFdlYiBCYXNlZCBTb2Z0d2FyZSBTb2x1dGlvbiBkaSBCYXR0aXN0aSBBbGVzc2FuZHJvIiwiZmVkZXJhdGlvbl9mZXRjaF9lbmRwb2ludCI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYS9mZXRjaCIsImNvbnRhY3RzIjpbIndic3NAcGVjLml0Il0sImZlZGVyYXRpb25fdHJ1c3RfbWFya19zdGF0dXNfZW5kcG9pbnQiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EvdHJ1c3RfbWFya19zdGF0dXMiLCJmZWRlcmF0aW9uX3Jlc29sdmVfZW5kcG9pbnQiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EvcmVzb2x2ZSIsInBvbGljeV91cmkiOiJodHRwczovL3d3dy53YnNzLml0L3BvbGljeSIsImZlZGVyYXRpb25fbGlzdF9lbmRwb2ludCI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYS9saXN0In19LCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwiYWxnIjoiUlMyNTYiLCJ1c2UiOiJzaWciLCJuIjoiMEJUUDRBQ2ctS1Q2ZU5kQWhyMS1wYTc2bHVqWFYzV2lYbDB3NE5fbXlqNHEwemdhWk9EMWM1STcyNC1nMF9OSGkyMnFCajFJdS1NR0pRVmtsZkQtZXNLMUZaMnJuZFJpYWI1VGRNcDRjMXl5LXRraVFNN2FmSnd6VzcwRGlvVjFpU21mT1E0SEgwOUEtZGFsSVpfSUE4UHFlcThUeWJkcGdRc3ROQXAzRk4wY01vSEgtV2FnRlFHaVYyQTJIM3NVaHZRVjJPX0VDRVpYQ29MTEc2RXNVUnNoS3B5T3dYOTA3Tk1LN1E5UjlVT0J6V2FCSnFQay1jbW1tOWlaVGdUODZBX0JjUzB1Wll5N0VPWUIzRWtiQ01DaUdsMEZjb0FtRi1PeG9zZFRidFlvYVZrVzdQeWdDVm1kbXp0YzBfQ1ZzV2FtTG9WUFNzY3FGaC1FWEhNeHR3Iiwia2lkIjoiTVhhb01Lb3FiMjBNUDBNVmJEVGRsSGJpRTBPSWpDcmJoR055MVlZc3lyTSJ9XX0sImlzcyI6Imh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImF1dGhvcml0eV9oaW50cyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJleHAiOjE3MjgzNDU4MTksImlhdCI6MTcyODM0NDAxOSwidHJ1c3RfbWFya3MiOlt7InRydXN0X21hcmsiOiJleUpyYVdRaU9pSmtaV1poZFd4MFVsTkJVMmxuYmlJc0luUjVjQ0k2SW5SeWRYTjBMVzFoY21zcmFuZDBJaXdpWVd4bklqb2lVbE15TlRZaWZRLmV5SnpkV0lpT2lKb2RIUndjem92TDNOd2FXUXVkMkp6Y3k1cGRDOVRjR2xrTDI5cFpHTXZjMkVpTENKellWOXdjbTltYVd4bElqb2lXMXdpWm5Wc2JGd2lYU0lzSW1semN5STZJbWgwZEhCek9pOHZiMmxrWXk1eVpXZHBjM1J5ZVM1elpYSjJhWHBwWTJsbExtbHVkR1Z5Ym04dVoyOTJMbWwwSWl3aWIzSm5ZVzVwZW1GMGFXOXVYM1I1Y0dVaU9pSndjbWwyWVhSbElpd2lhV1FpT2lKb2RIUndjem92TDI5cFpHTXVjbVZuYVhOMGNua3VjMlZ5ZG1sNmFXTnBaUzVwYm5SbGNtNXZMbWR2ZGk1cGRDOXBiblJsY20xbFpHbGhkR1V2Y0hKcGRtRjBaU0lzSW1WNGNDSTZNVGMxT0RNMk56SXdNU3dpYVdGMElqb3hOekkyT0RNeE1qQXhmUS5DUV92X0J2VW1saFF2R29UNjYwNWhKSHI2YnNvRWEzLWJSaXI2X1AxTXMtRXhjOFFSZV9HdVc5ZmMxRG9URkkxa3pwaGY5QVBMWGxfdzFZc1N2SFRlejZ3bWNYTXFxME9DX1U2T1VFS2Q5ZXlEeHNVekpiVEhmeVBLVE5MVkJiYkluaWc0UXYwN2FBNEJ5OWZTbUw0X1p1dWZ0S1BYZFJmVVJiTWVMZHBIbFotR1NSY1JMUXdjM0tfdG44X1M0dGNITjRhQ1lsSFllOXFscjIyWTR2ZnR6bGVmNmZhSnpYU19YMEc0LWZoMXNwbXhNVUdZNVBkdkJYbEtKSWRrTHU2V01PTVRhdXJQS09VU2pBSWd6TG1Mc1kxdDQ4T2JXMWR5VC1DX0tfQnpWWE5HU25abHJOV1hSZklsbG9wZk1GbUcycG9haXY4MmZFQldxbHhWUkp1SnciLCJpc3MiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsImlkIjoiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3ByaXZhdGUifV19.WntR_8uHdSsf7DV0Q8NQLTpO44qGWGNp7OoM4d4YfF1bjKXBTVTuWXD_4kAxIL7RAPlqFRDX7ULs47Q9eDISvmXx_pyY2izydKEsUnCKNZBCi0OvYZcFikFPT-LWw2jXjWD60x3WVoM0Bvjsh1k9xs6YVN5auIdmmmAfiRjEmfNRdH_aWhXXJieNQ67pfmn7lqGz2ZOS_B7weQbfZEYWBUMAq0WDpDmatWJhrBb4alGpvvRmntEI7Y_JWlnHdtmh7JMJFwWA6V76zxG-pKI6aivS4FA9QGIcJvUqjVOPXCQW-DUirRGPHBO2Hz_lBUpWqAdW25WOn11P36nDOTqNkA', - 'eyJraWQiOiJkZWZhdWx0UlNBU2lnbiIsInR5cCI6ImVudGl0eS1zdGF0ZW1lbnQrand0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwczovL3NwaWQud2Jzcy5pdC9TcGlkL29pZGMvc2EiLCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoic2lnIiwia2lkIjoiTVhhb01Lb3FiMjBNUDBNVmJEVGRsSGJpRTBPSWpDcmJoR055MVlZc3lyTSIsImFsZyI6IlJTMjU2IiwibiI6IjBCVFA0QUNnLUtUNmVOZEFocjEtcGE3Nmx1alhWM1dpWGwwdzROX215ajRxMHpnYVpPRDFjNUk3MjQtZzBfTkhpMjJxQmoxSXUtTUdKUVZrbGZELWVzSzFGWjJybmRSaWFiNVRkTXA0YzF5eS10a2lRTTdhZkp3elc3MERpb1YxaVNtZk9RNEhIMDlBLWRhbElaX0lBOFBxZXE4VHliZHBnUXN0TkFwM0ZOMGNNb0hILVdhZ0ZRR2lWMkEySDNzVWh2UVYyT19FQ0VaWENvTExHNkVzVVJzaEtweU93WDkwN05NSzdROVI5VU9CeldhQkpxUGstY21tbTlpWlRnVDg2QV9CY1MwdVpZeTdFT1lCM0VrYkNNQ2lHbDBGY29BbUYtT3hvc2RUYnRZb2FWa1c3UHlnQ1ZtZG16dGMwX0NWc1dhbUxvVlBTc2NxRmgtRVhITXh0dyJ9XX0sIm1ldGFkYXRhX3BvbGljeSI6eyJvcGVuaWRfcmVseWluZ19wYXJ0eSI6eyJjbGllbnRfcmVnaXN0cmF0aW9uX3R5cGVzIjp7InN1YnNldF9vZiI6WyJhdXRvbWF0aWMiXSwiZXNzZW50aWFsIjp0cnVlfSwiZ3JhbnRfdHlwZXMiOnsic3VwZXJzZXRfb2YiOlsiYXV0aG9yaXphdGlvbl9jb2RlIl0sInN1YnNldF9vZiI6WyJhdXRob3JpemF0aW9uX2NvZGUiLCJyZWZyZXNoX3Rva2VuIl19LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSU0EtT0FFUCIsIlJTQS1PQUVQLTI1NiIsIkVDREgtRVMiLCJFQ0RILUVTK0ExMjhLVyIsIkVDREgtRVMrQTI1NktXIl0sImVzc2VudGlhbCI6ZmFsc2V9LCJpZF90b2tlbl9lbmNyeXB0ZWRfcmVzcG9uc2VfZW5jIjp7Im9uZV9vZiI6WyJBMTI4Q0JDLUhTMjU2IiwiQTI1NkNCQy1IUzUxMiJdLCJlc3NlbnRpYWwiOmZhbHNlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2VuYyI6eyJvbmVfb2YiOlsiQTEyOENCQy1IUzI1NiIsIkEyNTZDQkMtSFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwidXNlcmluZm9fZW5jcnlwdGVkX3Jlc3BvbnNlX2FsZyI6eyJvbmVfb2YiOlsiUlNBLU9BRVAiLCJSU0EtT0FFUC0yNTYiLCJFQ0RILUVTIiwiRUNESC1FUytBMTI4S1ciLCJFQ0RILUVTK0EyNTZLVyJdLCJlc3NlbnRpYWwiOnRydWV9LCJyZWRpcmVjdF91cmlzIjp7ImVzc2VudGlhbCI6dHJ1ZX0sInVzZXJpbmZvX3NpZ25lZF9yZXNwb25zZV9hbGciOnsib25lX29mIjpbIlJTMjU2IiwiUlM1MTIiLCJFUzI1NiIsIkVTNTEyIiwiUFMyNTYiLCJQUzUxMiJdLCJlc3NlbnRpYWwiOnRydWV9LCJ0b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZCI6eyJvbmVfb2YiOlsicHJpdmF0ZV9rZXlfand0Il0sImVzc2VudGlhbCI6dHJ1ZX0sImNsaWVudF9pZCI6eyJlc3NlbnRpYWwiOnRydWV9LCJpZF90b2tlbl9zaWduZWRfcmVzcG9uc2VfYWxnIjp7Im9uZV9vZiI6WyJSUzI1NiIsIlJTNTEyIiwiRVMyNTYiLCJFUzUxMiIsIlBTMjU2IiwiUFM1MTIiXSwiZXNzZW50aWFsIjp0cnVlfSwicmVzcG9uc2VfdHlwZXMiOnsidmFsdWUiOlsiY29kZSJdfX19LCJpc3MiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsImV4cCI6MTcyODM0NjcwNSwiaWF0IjoxNzI4MzQ0OTA1LCJjb25zdHJhaW50cyI6eyJhbGxvd2VkX2xlYWZfZW50aXR5X3R5cGVzIjpbIm9wZW5pZF9yZWx5aW5nX3BhcnR5Il19LCJ0cnVzdF9tYXJrcyI6W3sidHJ1c3RfbWFyayI6ImV5SnJhV1FpT2lKa1pXWmhkV3gwVWxOQlUybG5iaUlzSW5SNWNDSTZJblJ5ZFhOMExXMWhjbXNyYW5kMElpd2lZV3huSWpvaVVsTXlOVFlpZlEuZXlKemRXSWlPaUpvZEhSd2N6b3ZMM053YVdRdWQySnpjeTVwZEM5VGNHbGtMMjlwWkdNdmMyRWlMQ0p6WVY5d2NtOW1hV3hsSWpvaVcxd2lablZzYkZ3aVhTSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dmIybGtZeTV5WldkcGMzUnllUzV6WlhKMmFYcHBZMmxsTG1sdWRHVnlibTh1WjI5MkxtbDBJaXdpYjNKbllXNXBlbUYwYVc5dVgzUjVjR1VpT2lKd2NtbDJZWFJsSWl3aWFXUWlPaUpvZEhSd2N6b3ZMMjlwWkdNdWNtVm5hWE4wY25rdWMyVnlkbWw2YVdOcFpTNXBiblJsY201dkxtZHZkaTVwZEM5cGJuUmxjbTFsWkdsaGRHVXZjSEpwZG1GMFpTSXNJbVY0Y0NJNk1UYzFPRE0yTnpJd01Td2lhV0YwSWpveE56STJPRE14TWpBeGZRLkNRX3ZfQnZVbWxoUXZHb1Q2NjA1aEpIcjZic29FYTMtYlJpcjZfUDFNcy1FeGM4UVJlX0d1VzlmYzFEb1RGSTFrenBoZjlBUExYbF93MVlzU3ZIVGV6NndtY1hNcXEwT0NfVTZPVUVLZDlleUR4c1V6SmJUSGZ5UEtUTkxWQmJiSW5pZzRRdjA3YUE0Qnk5ZlNtTDRfWnV1ZnRLUFhkUmZVUmJNZUxkcEhsWi1HU1JjUkxRd2MzS190bjhfUzR0Y0hONGFDWWxIWWU5cWxyMjJZNHZmdHpsZWY2ZmFKelhTX1gwRzQtZmgxc3BteE1VR1k1UGR2QlhsS0pJZGtMdTZXTU9NVGF1clBLT1VTakFJZ3pMbUxzWTF0NDhPYlcxZHlULUNfS19CelZYTkdTblpsck5XWFJmSWxsb3BmTUZtRzJwb2FpdjgyZkVCV3FseFZSSnVKdyIsImlzcyI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaWQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9pbnRlcm1lZGlhdGUvcHJpdmF0ZSJ9XX0.JSID34FwkJ3nc83WHZL60z8tsVCE5SE6NR9yGwroEqIyI5TBmE2DDSbO87LGkiNkDIJ4ANo-fwBRLkXkdKVtf2QfKKzX7fsTihETekIBP9XA1RfFRDMYUKyHI5b-4cQIQxWHTnnjdm-9byT8FK8Pw8eC3QNc38KbJvR1CcdCVFVBQ1GFumTe1DOhkARbFg3rT_w8RjH_PhuRmUDUQyTBQwDHdFydb_TZpgzvSmHUjjvB2qJT109DGV4s-aFwj5bUn9YRazWlNDo78PFS0lJk16bLGEP5YRrXL_lGSxSEUta-BQEoJ2CR9QsBCW8L1HJoRywx61nWSC1wsCAxJlR4eg', - 'eyJraWQiOiJkZWZhdWx0UlNBU2lnbiIsInR5cCI6ImVudGl0eS1zdGF0ZW1lbnQrand0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCIsIm1ldGFkYXRhIjp7ImZlZGVyYXRpb25fZW50aXR5Ijp7ImZlZGVyYXRpb25fZmV0Y2hfZW5kcG9pbnQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9mZXRjaCIsImZlZGVyYXRpb25fcmVzb2x2ZV9lbmRwb2ludCI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0L3Jlc29sdmUiLCJmZWRlcmF0aW9uX3RydXN0X21hcmtfc3RhdHVzX2VuZHBvaW50IjoiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvdHJ1c3RfbWFya19zdGF0dXMiLCJmZWRlcmF0aW9uX2xpc3RfZW5kcG9pbnQiOiJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9saXN0In19LCJqd2tzIjp7ImtleXMiOlt7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoic2lnIiwia2lkIjoiZGVmYXVsdFJTQVNpZ24iLCJuIjoicVJUSkhRZ2IyZjhjbG45ZEpiLVdnaWs0cUVMNUdHX19zUHpsQVU0aTY5UzZ5SHhlTWczMllnTGZVenBOQnhfOGtYMm5kellYTV9SS21vM2poalF4dXhDSzFJSFNRY01rZzFoR2lpLXhSdzh4NDV0OFNHbFdjU0hpN182UmFBWTFTeUZjRUVsTkFxSGk1b2VCYUIzRkd2ZnJWLUVQLWNOa1V2R0VWYnlzX0NieHlHRFE5UU0wTkVyc2lsVmxNQVJERXJFTlpjclkwck5LdDUyV29aZ3kzcHNWY2Q4VTVEMExxZkM3N2JQakczNVBhVmh3WUFubFAwZXowSGY2dHV5V0pIZUE1MmRDZGUtbmEzV2ptUGFya2NscEZyLUtqWGVJQzhCd2ZqRXBBWGJLY3A4Tm11UUZqOWZEOUtuUjZ2Q2RPOTFSeUJJYkRsdUw1TEg4czBxRENRIn0seyJrdHkiOiJFQyIsInVzZSI6InNpZyIsImNydiI6IlAtMjU2Iiwia2lkIjoiZGVmYXVsdEVDU2lnbiIsIngiOiJ4TWtXSWExRVp5amdtazNKUUx0SERBOXAwVHBQOXdNU2JKSzBvQWl0Z2NrIiwieSI6IkNWTEZzdE93S3d0UXJ1dF92b0hqWU82SnoxSzBOWFJ1OE9MQ1RtS29zTGcifSx7Imt0eSI6IlJTQSIsImUiOiJBUUFCIiwidXNlIjoiZW5jIiwia2lkIjoiZGVmYXVsdFJTQUVuYyIsIm4iOiJ3ZXcyMnhjcGZBU2tRUXA3U09vX0dzNmNLajJYeTd4VlpLX3RnWnh6QXlReExTeG01c1U0WkdzNm1kSUFIZEV2UTkxU25FSFR0anBlQVM5d0N2TlhWbVZ4TklqRkFQSnpDWXBzZkZ4R3pXMVBSM1NDQmVLUFl6VWpTeUJTZWw1LW1Td1U4MHlZQXFPbFoxUVJaTlFJNUVTVXZOUG9lUEZqR0NvZnhuRlJzbXF5X21Bd1p5bmQyTnJyc1QyQXlwMEw2UFF3ei1Fa09oakVCcHpzeXEwcE11am5aRWZ2UHk5UC1YdjJTVUZMZUpQcm1jRHllNjRaMlk5V1BoMmpwa25oT3hESzhSTUwtMllUdmI0dVNPalowWFpPVzltVm9nTkpSSm0yemVQVGVlTFBxR2x1TGNEenBsYnkwbkxiTGpkWDdLM29MYnFoRGFld2o3VnJhS2Vtc1EifV19LCJ0cnVzdF9tYXJrX2lzc3VlcnMiOnsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb2F1dGhfcmVzb3VyY2UvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcHJvdmlkZXIvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vYXV0aF9yZXNvdXJjZS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiLCJodHRwczovL2NvaGVzaW9uMi5yZWdpb25lLm1hcmNoZS5pdC9vaWRjL3NhLyIsImh0dHBzOi8vYXV0aC50b3NjYW5hLml0L2F1dGgvcmVhbG1zL2VudGkvZmVkZXJhdGlvbi1lbnRpdHkvcl90b3NjYW5fc2FfZW50aSIsImh0dHBzOi8vYXV0ZW50aWNhemlvbmUuY2xvdWQucHJvdmluY2lhLnRuLml0L2FnZ3JlZ2F0b3JlIiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3ByaXZhdGUiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb3BlbmlkX3Byb3ZpZGVyL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wcml2YXRlIjpbImh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXX0sImlzcyI6Imh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiZXhwIjoxNzI4NDI4MDI1LCJpYXQiOjE3MjgzNDE2MjUsImNvbnN0cmFpbnRzIjp7Im1heF9wYXRoX2xlbmd0aCI6MX0sInRydXN0X21hcmtzX2lzc3VlcnMiOnsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb2F1dGhfcmVzb3VyY2UvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcHJvdmlkZXIvcHJpdmF0ZSI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vYXV0aF9yZXNvdXJjZS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wdWJsaWMiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiLCJodHRwczovL2NvaGVzaW9uMi5yZWdpb25lLm1hcmNoZS5pdC9vaWRjL3NhLyIsImh0dHBzOi8vYXV0aC50b3NjYW5hLml0L2F1dGgvcmVhbG1zL2VudGkvZmVkZXJhdGlvbi1lbnRpdHkvcl90b3NjYW5fc2FfZW50aSIsImh0dHBzOi8vYXV0ZW50aWNhemlvbmUuY2xvdWQucHJvdmluY2lhLnRuLml0L2FnZ3JlZ2F0b3JlIiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvaW50ZXJtZWRpYXRlL3ByaXZhdGUiOlsiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQiXSwiaHR0cHM6Ly9vaWRjLnJlZ2lzdHJ5LnNlcnZpemljaWUuaW50ZXJuby5nb3YuaXQvb3BlbmlkX3Byb3ZpZGVyL3B1YmxpYyI6WyJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdCJdLCJodHRwczovL29pZGMucmVnaXN0cnkuc2Vydml6aWNpZS5pbnRlcm5vLmdvdi5pdC9vcGVuaWRfcmVseWluZ19wYXJ0eS9wcml2YXRlIjpbImh0dHBzOi8vb2lkYy5yZWdpc3RyeS5zZXJ2aXppY2llLmludGVybm8uZ292Lml0IiwiaHR0cHM6Ly9vaWRjc2Eud2VibG9vbS5pdCIsImh0dHBzOi8vc3BpZC53YnNzLml0L1NwaWQvb2lkYy9zYSIsImh0dHBzOi8vc2VjdXJlLmVyZW1pbmQuaXQvaWRlbnRpdGEtZGlnaXRhbGUtb2lkYy9vaWRjLWZlZCIsImh0dHBzOi8vY2llLW9pZGMuY29tdW5lLW9ubGluZS5pdC9BdXRoU2VydmljZU9JREMvb2lkYy9zYSIsImh0dHBzOi8vcGhwLWNpZS5hbmR4b3IuaXQiLCJodHRwczovL2xvZ2luLmFzZndlYi5pdC8iLCJodHRwczovL29pZGMuc3R1ZGlvYW1pY2EuY29tIiwiaHR0cHM6Ly9pZHAuZW50cmFuZXh0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9jd29sc3NvLm51dm9sYXBhbGl0YWxzb2Z0Lml0L3NlcnZpY2VzL29pZGMvc2Evc3NvIiwiaHR0cHM6Ly9mZWRlcmEubGVwaWRhLml0L2d3L09pZGNTYUZ1bGwvIiwiaHR0cHM6Ly93d3cuZXVyb2NvbnRhYi5pdC9hcGkiXX19.QVndoAzYG4-r-f1mq2szTurjN4IWG5GN6aUBeIm6k5EXOdjEa2oOmP8iANBjCFWF6eNPNN2t342pBpb6-46o9kJv9MxyWASIaBkOv_X8RJGEgv2ghDLLnfOLv4R6J9XH9IIsQPzjlezgWJYk61ukfYN7kWA_aIT5Hf42zEU14V5kLbl50r8wjgJVRwmSBsDLKsWbOnbzfkiKv4druFhfhDZjiyBeCjYajh9MFYdAR1awYihNM-JVib89Z7XgOqxq4qGogPt_XU-YMuf917lw4kpphPRoUe1QIoj1KXfgbpJUdgiLMlXQoBl57Ej3b1mVWgEkC6oKjNyNvZR57Kx8AQ', - ]), - ) + expect(trustChainResolveResponse.error).toBeFalsy() + expect(trustChainResolveResponse.trustChain?.asJsReadonlyArrayView()).toHaveLength(3) }) }) } diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index 27c7e4e21..c7c8eafce 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -18,9 +18,9 @@ "dependencies": { "@sphereon/ssi-types": "workspace:*", "@sphereon/ssi-sdk.resource-resolver": "workspace:*", - "@sphereon/openid-federation-open-api": "0.1.1-unstable.49c7542", - "@sphereon/openid-federation-client": "0.1.1-unstable.49c7542", - "@sphereon/openid-federation-common": "0.1.1-unstable.49c7542", + "@sphereon/openid-federation-open-api": "0.1.1-unstable.74fc359", + "@sphereon/openid-federation-client": "0.1.1-unstable.74fc359", + "@sphereon/openid-federation-common": "0.1.1-unstable.74fc359", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { diff --git a/packages/oidf-client/src/agent/OIDFClient.ts b/packages/oidf-client/src/agent/OIDFClient.ts index 45088003c..b3343fbb3 100644 --- a/packages/oidf-client/src/agent/OIDFClient.ts +++ b/packages/oidf-client/src/agent/OIDFClient.ts @@ -1,4 +1,4 @@ -import {FederationClient, ICryptoService, IFetchService} from '@sphereon/openid-federation-client' +import {FederationClient, ICryptoService, IFetchService, TrustChainResolveResponse} from '@sphereon/openid-federation-client' import {JWK} from "@sphereon/ssi-types"; import {IAgentPlugin} from '@veramo/core' import {Request} from "cross-fetch"; @@ -7,8 +7,7 @@ import { IOIDFClient, OIDFClientArgs, IRequiredContext, - ResolveTrustChainArgs, - ResolveTrustChainCallbackResult + ResolveTrustChainArgs } from '../types/IOIDFClient' export const oidfClientMethods: Array = ['resolveTrustChain'] @@ -21,7 +20,7 @@ export class OIDFClient implements IAgentPlugin { } readonly schema = schema.IOIDFClient - constructor(args: OIDFClientArgs) { + constructor(args?: OIDFClientArgs) { const {fetchServiceCallback, cryptoServiceCallback} = {...args} this.fetchServiceCallback = fetchServiceCallback @@ -65,7 +64,7 @@ export class OIDFClient implements IAgentPlugin { ) } - private async resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise { + private async resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise { const { entityIdentifier, trustAnchors } = args const oidfClient = this.getOIDFClient(context) diff --git a/packages/oidf-client/src/types/IOIDFClient.ts b/packages/oidf-client/src/types/IOIDFClient.ts index 7eca93b8b..626793fe3 100644 --- a/packages/oidf-client/src/types/IOIDFClient.ts +++ b/packages/oidf-client/src/types/IOIDFClient.ts @@ -3,15 +3,13 @@ import {IAgentContext, IPluginMethodMap} from '@veramo/core'; import { IJwtService, } from '@sphereon/ssi-sdk-ext.jwt-service'; -import { ICryptoService, IFetchService } from '@sphereon/openid-federation-client' +import {ICryptoService, IFetchService, TrustChainResolveResponse} from '@sphereon/openid-federation-client' export type IRequiredPlugins = IJwtService & IResourceResolver export type IRequiredContext = IAgentContext -type Nullable = T | null | undefined - export interface IOIDFClient extends IPluginMethodMap { - resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise + resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise } export type ResolveTrustChainArgs = { @@ -23,5 +21,3 @@ export type OIDFClientArgs = { fetchServiceCallback?: IFetchService cryptoServiceCallback?: ICryptoService } - -export type ResolveTrustChainCallbackResult = Nullable> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83490e98c..949743935 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1525,14 +1525,14 @@ importers: packages/oidf-client: dependencies: '@sphereon/openid-federation-client': - specifier: 0.1.1-unstable.49c7542 - version: 0.1.1-unstable.49c7542(encoding@0.1.13) + specifier: 0.1.1-unstable.74fc359 + version: 0.1.1-unstable.74fc359(encoding@0.1.13) '@sphereon/openid-federation-common': - specifier: 0.1.1-unstable.49c7542 - version: 0.1.1-unstable.49c7542(encoding@0.1.13) + specifier: 0.1.1-unstable.74fc359 + version: 0.1.1-unstable.74fc359(encoding@0.1.13) '@sphereon/openid-federation-open-api': - specifier: 0.1.1-unstable.49c7542 - version: 0.1.1-unstable.49c7542(encoding@0.1.13) + specifier: 0.1.1-unstable.74fc359 + version: 0.1.1-unstable.74fc359(encoding@0.1.13) '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) @@ -6016,14 +6016,14 @@ packages: awesome-qr: optional: true - '@sphereon/openid-federation-client@0.1.1-unstable.49c7542': - resolution: {integrity: sha512-xHtQSbuWv57P5jhVCDxTgdKSqhewcDskT3njz2bQnOAOt0Jl2eKgwBtl40RY/1TxVW/DA+vtiFxg+AjtC6Bg1w==} + '@sphereon/openid-federation-client@0.1.1-unstable.74fc359': + resolution: {integrity: sha512-yfYSkwzHH5pXLxhMgjMMnbUGi1clRXzNNEsmMjL7w+w6eXKHd3IFw9DvvZYp6slL3F+RaP+R6ppGUpGzt08XFw==} - '@sphereon/openid-federation-common@0.1.1-unstable.49c7542': - resolution: {integrity: sha512-ZTP8r0Y/pb56gmp9/WSCxPghCEgM14BELlP/gl+HPYPDQhXT8nwH+h1TljPdTDHeYMax9jHrs78mk0k4fjmq3A==} + '@sphereon/openid-federation-common@0.1.1-unstable.74fc359': + resolution: {integrity: sha512-NpHjie+w1GQCs55csaDj+Rm1MvTHVm2C1AwbxbPICecIZyylPLeEwIhn2WWr6G0gLxvvsSCzYRRWLXm/F1mBcQ==} - '@sphereon/openid-federation-open-api@0.1.1-unstable.49c7542': - resolution: {integrity: sha512-yUlHiEk8fx1M6y70veIeWqAP7eGkXlXZ8UfzKMHYglSsG9zywAI9aKyykk6/W9ljzx9+uRNUXHCp5O5dKDaBFA==} + '@sphereon/openid-federation-open-api@0.1.1-unstable.74fc359': + resolution: {integrity: sha512-nQllUOmiEqCUIJNBOs2uBvzoIwLyJTHqrIQ1U/859VoUzDD4DJsGHlUmJNkycmseakHpxFiVVft/rRmdR2vp/Q==} '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} @@ -17447,7 +17447,7 @@ snapshots: - encoding - supports-color - '@sphereon/openid-federation-client@0.1.1-unstable.49c7542(encoding@0.1.13)': + '@sphereon/openid-federation-client@0.1.1-unstable.74fc359(encoding@0.1.13)': dependencies: '@js-joda/core': 3.2.0 abort-controller: 3.0.0 @@ -17460,7 +17460,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-common@0.1.1-unstable.49c7542(encoding@0.1.13)': + '@sphereon/openid-federation-common@0.1.1-unstable.74fc359(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 @@ -17472,7 +17472,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-open-api@0.1.1-unstable.49c7542(encoding@0.1.13)': + '@sphereon/openid-federation-open-api@0.1.1-unstable.74fc359(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 From 8f8b2cef6f152a75be4d99533c79936a0218a093 Mon Sep 17 00:00:00 2001 From: John Melati Date: Fri, 15 Nov 2024 01:25:08 +0100 Subject: [PATCH 08/10] upgrade oidf client version --- packages/oidf-client/package.json | 6 +++--- pnpm-lock.yaml | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index c7c8eafce..d6dbbca29 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -18,9 +18,9 @@ "dependencies": { "@sphereon/ssi-types": "workspace:*", "@sphereon/ssi-sdk.resource-resolver": "workspace:*", - "@sphereon/openid-federation-open-api": "0.1.1-unstable.74fc359", - "@sphereon/openid-federation-client": "0.1.1-unstable.74fc359", - "@sphereon/openid-federation-common": "0.1.1-unstable.74fc359", + "@sphereon/openid-federation-open-api": "0.1.1-unstable.0647eb6", + "@sphereon/openid-federation-client": "0.1.1-unstable.0647eb6", + "@sphereon/openid-federation-common": "0.1.1-unstable.0647eb6", "@sphereon/ssi-sdk-ext.jwt-service": "0.25.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 949743935..2ca14800d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1525,14 +1525,14 @@ importers: packages/oidf-client: dependencies: '@sphereon/openid-federation-client': - specifier: 0.1.1-unstable.74fc359 - version: 0.1.1-unstable.74fc359(encoding@0.1.13) + specifier: 0.1.1-unstable.0647eb6 + version: 0.1.1-unstable.0647eb6(encoding@0.1.13) '@sphereon/openid-federation-common': - specifier: 0.1.1-unstable.74fc359 - version: 0.1.1-unstable.74fc359(encoding@0.1.13) + specifier: 0.1.1-unstable.0647eb6 + version: 0.1.1-unstable.0647eb6(encoding@0.1.13) '@sphereon/openid-federation-open-api': - specifier: 0.1.1-unstable.74fc359 - version: 0.1.1-unstable.74fc359(encoding@0.1.13) + specifier: 0.1.1-unstable.0647eb6 + version: 0.1.1-unstable.0647eb6(encoding@0.1.13) '@sphereon/ssi-sdk-ext.jwt-service': specifier: 0.25.0 version: 0.25.0(encoding@0.1.13)(pg@8.12.0)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.6.3)) @@ -6016,14 +6016,14 @@ packages: awesome-qr: optional: true - '@sphereon/openid-federation-client@0.1.1-unstable.74fc359': - resolution: {integrity: sha512-yfYSkwzHH5pXLxhMgjMMnbUGi1clRXzNNEsmMjL7w+w6eXKHd3IFw9DvvZYp6slL3F+RaP+R6ppGUpGzt08XFw==} + '@sphereon/openid-federation-client@0.1.1-unstable.0647eb6': + resolution: {integrity: sha512-CdGb9Ha55h8achnuwuQYk7LUtR8jITdcS0Jred3ZUzkt1+Gv4sF2HyTq4Tv6uzHQEL5X7TiLg6Gx/sQvYFslDQ==} - '@sphereon/openid-federation-common@0.1.1-unstable.74fc359': - resolution: {integrity: sha512-NpHjie+w1GQCs55csaDj+Rm1MvTHVm2C1AwbxbPICecIZyylPLeEwIhn2WWr6G0gLxvvsSCzYRRWLXm/F1mBcQ==} + '@sphereon/openid-federation-common@0.1.1-unstable.0647eb6': + resolution: {integrity: sha512-63/k6jjcamIZXNBSJy0Xdpb0RRmTZUdEgTNpNVaUMlUHMhH929on8Pdw7sJhJMgjP+woVUwP9jEfngFGOZDVKQ==} - '@sphereon/openid-federation-open-api@0.1.1-unstable.74fc359': - resolution: {integrity: sha512-nQllUOmiEqCUIJNBOs2uBvzoIwLyJTHqrIQ1U/859VoUzDD4DJsGHlUmJNkycmseakHpxFiVVft/rRmdR2vp/Q==} + '@sphereon/openid-federation-open-api@0.1.1-unstable.0647eb6': + resolution: {integrity: sha512-Ozt1pIWigATtcQzfXdUTdL5iHqOUB0I86lf4X+KDl+ucnuV5daAY/T0kkDBWitoPGxxeu0fx2IF9qBpBs2ULmQ==} '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} @@ -17447,7 +17447,7 @@ snapshots: - encoding - supports-color - '@sphereon/openid-federation-client@0.1.1-unstable.74fc359(encoding@0.1.13)': + '@sphereon/openid-federation-client@0.1.1-unstable.0647eb6(encoding@0.1.13)': dependencies: '@js-joda/core': 3.2.0 abort-controller: 3.0.0 @@ -17460,7 +17460,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-common@0.1.1-unstable.74fc359(encoding@0.1.13)': + '@sphereon/openid-federation-common@0.1.1-unstable.0647eb6(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 @@ -17472,7 +17472,7 @@ snapshots: - encoding - utf-8-validate - '@sphereon/openid-federation-open-api@0.1.1-unstable.74fc359(encoding@0.1.13)': + '@sphereon/openid-federation-open-api@0.1.1-unstable.0647eb6(encoding@0.1.13)': dependencies: abort-controller: 3.0.0 format-util: 1.0.5 From 5c6ad90175791db566bcc13ac45e54092693448f Mon Sep 17 00:00:00 2001 From: sanderPostma Date: Fri, 22 Nov 2024 12:28:43 +0100 Subject: [PATCH 09/10] chore: removed modules from package.json --- packages/oidf-client/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/oidf-client/package.json b/packages/oidf-client/package.json index d6dbbca29..7b1499b5a 100644 --- a/packages/oidf-client/package.json +++ b/packages/oidf-client/package.json @@ -1,6 +1,5 @@ { "name": "@sphereon/ssi-sdk.oidf-client", - "type": "module", "version": "0.30.1", "source": "src/index.ts", "main": "dist/index.js", From 4460dec61dfdfde44a69d8ad28e7249f6ca3286d Mon Sep 17 00:00:00 2001 From: sanderPostma Date: Fri, 22 Nov 2024 12:34:15 +0100 Subject: [PATCH 10/10] chore: fixed lockfile --- pnpm-lock.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ca14800d..d0279cef2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1166,6 +1166,9 @@ importers: specifier: ^4.38.3 version: 4.38.3 devDependencies: + '@sphereon/oid4vc-common': + specifier: 0.16.1-next.187 + version: 0.16.1-next.187 '@sphereon/ssi-sdk-ext.did-resolver-jwk': specifier: 0.25.0 version: 0.25.0