Signer SDK

XDV Signer SDK is a set of snippets based on existing open source XDV APIs that allows you to create PKCS#11 Smart Card integrations with IPFS/IPLD using DID protocols.

  • XDV Universal Wallet

  • XDV Java Signer

  • Smart Contracts (soon)

Create DID and authenticate

    const didManager = new DIDManager();
    const pin = this.pin;
    const didRSA = await didManager.create3ID_PKCS11(pin);
    await didRSA.did.authenticate();

Initialize IPLDManager

    const ipfsManager = new IPLDManager(didRSA.did);
    await ipfsManager.start('https://my-ipfs-node');
    this.ipfs = ipfsManager;

Add Signed Object

      const cid = await ipfsManager.addSignedObject(u8array, {
      // file name
        name: file.name,
        // mime 
        contentType: file.type,
        // file last modified
        lastModified: new Date(file.lastModified),
        // optional, PEM certificate
        certificate: didRSA.certificate,
      } as any);

View object in explorer

    const href = `https://explore.ipld.io/#/explore/${cid}`;
    window.open(
      href,
      "_blank",
      "top=500,left=100,frame=false,nodeIntegration=no,menubar=yes"
    );

Verify chain

async verifyChain(cid: string) {
    if (cid.length <= 0) return;
    const res = await (this.ipfs as IPLDManager).get(cid);
    
    const obj = await this.ipfs?.getObject(cid);
    const decoded = fromDagJWS(res.value).split(".");
    const data = `${decoded[0]}.${decoded[1]}`;
    const sig = `${decoded[2]}`;
    const report = await X509Utils.verifyChain(data, sig, obj.value.documentPubCert, [
      CAGOB,
      CAPC2,
      CARAIZ,
    ]);

    this.report = report;
  }

CAGOB

export const CAGOB = `-----BEGIN CERTIFICATE-----
MIIF2TCCA8GgAwIBAgIQIGgmV5/giPlRjApnaDXWtzANBgkqhkiG9w0BAQsFADBV
MQswCQYDVQQGEwJQQTEaMBgGA1UECgwRRklSTUEgRUxFQ1RST05JQ0ExKjAoBgNV
BAMMIUFVVE9SSURBRCBDRVJUSUZJQ0FET1JBIERFIFBBTkFNQTAeFw0xMzA1MDky
MDQzMTlaFw0zMzA1MDkyMDQzMTlaMEwxCzAJBgNVBAYTAlBBMRowGAYDVQQKDBFG
SVJNQSBFTEVDVFJPTklDQTEhMB8GA1UEAwwYQ0EgREUgR09CSUVSTk8gREUgUEFO
QU1BMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8GEXETGsSY9Hf+7s
gV5EZVGRtKuegJ2v1x4e1LjZEsRrhjctXlLdRf/3aV9hNzNrcrFpelD87x3r5JlL
YcrD9Q1wpI+HbJ5qKyCgZkuF5BRkum8omZC1FAac9a1jb+gbVzgM7j2EHpMztMgD
1wTnhL3oC13jlywaLI5Y7ngghx05z5ssc5WAsdeuoqUs4YqQ+wVQcCrvvz7WO8Sa
shLloZ+zatx1CPv55X1NUG2RmdhIwgAlMraVpIz/UBiaBnIJE2B+QOOva95mLyaR
p5HBKhE5jTrCYLULEOiVFUDtfRID72j7fr8wzUqKRfydxKsJa0n1jKdGql1fF3Up
DBXO3wIDAQABo4IBrDCCAagwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFCSx3Y2LZfY4v+Q+6uKvaG2u+WVLMB8GA1UdIwQYMBaAFK9c
6fMzdWdrc+B70eLYvkC0Ef22MIHGBgNVHSAEgb4wgbswgbgGBFUdIAAwga8wNgYI
KwYBBQUHAgEWKmh0dHA6Ly93d3cucGtpLmdvYi5wYS9ub3JtYXRpdmEvaW5kZXgu
aHRtbDB1BggrBgEFBQcCAjBpGmdDZXJ0aWZpY2FkbyBzdWpldG8gYSBsYSBEZWNs
YXJhY2lvbiBkZSBQcmFjdGljYXMgZGUgQ2VydGlmaWNhY2lvbiBkZSBGaXJtYSBF
bGVjdHJvbmljYSBkZSBQYW5hbWEgKDIwMTIpMEQGCCsGAQUFBwEBBDgwNjA0Bggr
BgEFBQcwAoYoaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NhY2VydHMvY2FyYWl6LmNy
dDA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vd3d3LnBraS5nb2IucGEvY3Jscy9j
YXJhaXouY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQBkV/dDSdsYfgSue3hxxXI1CDJf
UE3wnd2HgukXLQxKtFKYDwcRtpJ78fs1wY/VYf0ptoJZyiYKiYhl1ek0EEKROraw
vr/QFqj1lYXzwfCaLdwJgTbUuEqDekDL3QBHgD/TFhALuWziWNb5ZMlYBjoPrZEE
5Jh2EvrUgLJZEdzkzdjF+EhxMu/flu2cWtYrHf8/7oBshr5/p3FEbtGVqoT7zqU7
rj08+XcwOLJzdrO5tvVH6WzoWo6RzbQvdxhuK46m+a3jaX0lXrnFgfCwRRNM11ah
+klbkwDEZKEIdxUaknlrvtcx5hSaBBjKJFssTn3TxWfilWuzjA5LCOOvMdkVMCjz
E4TJdoFGmvXsxT1czbEX3inEm5GZbyA8Q22T1mZ2FQB2H0R/0JVboYmVJJ79s0pb
bNsXquSZ9EvhkNa20TCjsstlP/OEnYljDNou2w+1jYRQTDWtdIHUfvQyHN2+VOZD
Hg60JbwSON7vBRKV++1xrUg9iILumMO/id0Jik2JJp6J/cVuY8XV8L61KHqTsMCE
x5Y5UG5wQnS3o3fNX/gzvTyNfz+gAAqpaNO2fvZviJPzH3rXtCsQiJi5iKbpl+Mg
s2pjZLLlvRBwv8GCABCX2JUJFjBPpV6NLexkEvLjbiP67YH6l21WdDvV3gyJgsfZ
umbgMq6RIe836aKz9Q==
-----END CERTIFICATE-----`

CAPC2

export const CAPC2 = `-----BEGIN CERTIFICATE-----
MIIF0jCCA7qgAwIBAgIQcYTFW+lAqDNRjAqe/ykVlzANBgkqhkiG9w0BAQsFADBV
MQswCQYDVQQGEwJQQTEaMBgGA1UECgwRRklSTUEgRUxFQ1RST05JQ0ExKjAoBgNV
BAMMIUFVVE9SSURBRCBDRVJUSUZJQ0FET1JBIERFIFBBTkFNQTAeFw0xMzA1MDky
MDQ0MTRaFw0zMzA1MDkyMDQ0MTRaMEUxCzAJBgNVBAYTAlBBMRowGAYDVQQKDBFG
SVJNQSBFTEVDVFJPTklDQTEaMBgGA1UEAwwRQ0EgUEFOQU1BIENMQVNFIDIwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW8jrnb4FHB5UWCEx7MrmsWoMv
x56XLEs/vKKdgoWlN5TM3ugfBiJEdpO+uW/6LbVfCxWM6HoGUONRnG20zrd4V+3s
Vwl0IxIrZKd80jNsz1MNjX2iamTx7um0+Srgb3LFdusmTyx9iWPGwSbk3XBh+rPb
DNqASGjfPbgEtgXkf5MQMF9jaAsRhQlFn9NTzSSakQus+3zLOqaP9XY3gUWtwBHb
cH1LuEVzy9GXv+pV+meUuJWWvhTJOUFEfsFxriqMOFjz5URV3RNSog67LXVAj9VG
u3sDzsO/a9UeC8D3uR4dEg4yXxNIS/AN3rU+SPg3xoU36Fxp5bMKQPqa8qSRAgMB
AAGjggGsMIIBqDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
HQ4EFgQU6P5s9giVKrrcZLmgWW7t0LzwyXIwHwYDVR0jBBgwFoAUr1zp8zN1Z2tz
4HvR4ti+QLQR/bYwgcYGA1UdIASBvjCBuzCBuAYEVR0gADCBrzA2BggrBgEFBQcC
ARYqaHR0cDovL3d3dy5wa2kuZ29iLnBhL25vcm1hdGl2YS9pbmRleC5odG1sMHUG
CCsGAQUFBwICMGkaZ0NlcnRpZmljYWRvIHN1amV0byBhIGxhIERlY2xhcmFjaW9u
IGRlIFByYWN0aWNhcyBkZSBDZXJ0aWZpY2FjaW9uIGRlIEZpcm1hIEVsZWN0cm9u
aWNhIGRlIFBhbmFtYSAoMjAxMikwRAYIKwYBBQUHAQEEODA2MDQGCCsGAQUFBzAC
hihodHRwOi8vd3d3LnBraS5nb2IucGEvY2FjZXJ0cy9jYXJhaXouY3J0MDYGA1Ud
HwQvMC0wK6ApoCeGJWh0dHA6Ly93d3cucGtpLmdvYi5wYS9jcmxzL2NhcmFpei5j
cmwwDQYJKoZIhvcNAQELBQADggIBAElSkDg1qbG6aJ012fC9X84/BYZNhOqniMYd
vX5/02KACg66Yq2TNnHNT3DSTUzYYz6GOurEFZis4WnuoL0/AnB09eKyYtwyQlFG
NA9j049O/zsmY8blLWOCvq7TN0zInRk82qi9IAUOvmtWeHk1FFvLkpl9mMY1frCg
fmXVW76TINlV0J0Wu6kvlFt5W8RF3+sJ0UMjmyl1D5QITPZeMYpzYl4imZXDXQtU
9d8tA8PCSw9BU66XFF+gJ/GFaGpOUXRY0wE3DAq+bW+QfKpLrCwD4oHAKKsqDiVk
khCGaRKzmSKthFjP26V9ypRu4mGGE3/xeayb4Evp+ZUFV47kX/EUpsRlWYQ8f4fH
1E/TzWH9f1K9PmXL4odLgN8tTX61SWx1dx2WtPK6yf2mctce/ctVMqNawTci3Whn
61Gpym4IYTwATAZu+RR/bXNy1NR25iaQ7oHHbEzTa0WwbFaOy5uCsv4tJZ//9RkU
5buKei3XchZPCzJiHZRJpxYwXnjkKxV+wsB/ok/1sKJZ2pZcxFHxHRlD1SHb44YE
dDtNGcfDLRG0slqyvZHnOnic9GbNnvMKD+PHUbDAhspXcM8h8m1LpI+aWpKL/rnJ
Gcjw5pV6GCWMppQxeQInEMAFMmSIZHJx5/1Fu5CMBNEDaigIn5XSqdiBIuT1fngZ
6jBqJzkl
-----END CERTIFICATE-----`

CARAIZ

export const CARAIZ = `-----BEGIN CERTIFICATE-----
MIIGRTCCBC2gAwIBAgIQQD215skVc9RRioUVb+nn7DANBgkqhkiG9w0BAQsFADBV
MQswCQYDVQQGEwJQQTEaMBgGA1UECgwRRklSTUEgRUxFQ1RST05JQ0ExKjAoBgNV
BAMMIUFVVE9SSURBRCBDRVJUSUZJQ0FET1JBIERFIFBBTkFNQTAgFw0xMzA1MDgx
NzAyMTNaGA8yMDUzMDUwODE3MDIxM1owVTELMAkGA1UEBhMCUEExGjAYBgNVBAoM
EUZJUk1BIEVMRUNUUk9OSUNBMSowKAYDVQQDDCFBVVRPUklEQUQgQ0VSVElGSUNB
RE9SQSBERSBQQU5BTUEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCr
y/nNmclkoB9ibOzIfu8jo9xbn2FTBUhNDtE4MFKwXR3IbjAnMFRKSsLlSipcs4b4
nXKIaZ8nfz/4OWALV6u3EuvKxFibWCHhyxOY8H40fi7UbUkyWHE6Bcu7Zb2uCzqX
EW/1GZuZS/5DSqd3pf0LYFZvCP51b68xB4CPaEQWU7M7wX3GzVbh15N8tbMX+13D
NliB7CDH708eWwn6uPdjCCLj8lhwXn+/UMwFEWgkjR/wjiwGlQd5hkPn66W7UvVo
ewdiFEk7NeLDeHFnBFI29EfQQXO+W9w7jEIj3kCqqQFXCMnUTxWVOTBGUymfv5Rn
FM9BMi2x3eGvV88F8r/LFHh7PwzmivYQsEUBWibZhVDcsL9S8u/Pv6DxNPstO0fT
ms9nwBjygE1avSc7QsWSXNaKp+ByFeNCFcOKBERz+xXcn9R1KxofcikFjOL8/vu/
R/ghN9MOpdMoWKXfP0G48DB944jWeLE8wTj8UHRVzEOzRJhgxMD9biWQuw9ISoiZ
wT8C6YhMKSVz1NRzWwx9FOCdMPBZoMRSl9kMpFBwT5kA5jETnrjwpuA4wiYS3skn
72L6hjQCrwgXrhBnQjmEutvMxE9yFUhbsOn5wEZr2bWpIvMT/0RU7MonLOsGdVA9
3v2wzfX9XeFJsGboaSzEhQvhKtr3+oy+2eCbnhF8lwIDAQABo4IBDTCCAQkwDwYD
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFK9c6fMzdWdr
c+B70eLYvkC0Ef22MIHGBgNVHSAEgb4wgbswgbgGBFUdIAAwga8wNgYIKwYBBQUH
AgEWKmh0dHA6Ly93d3cucGtpLmdvYi5wYS9ub3JtYXRpdmEvaW5kZXguaHRtbDB1
BggrBgEFBQcCAjBpGmdDZXJ0aWZpY2FkbyBzdWpldG8gYSBsYSBEZWNsYXJhY2lv
biBkZSBQcmFjdGljYXMgZGUgQ2VydGlmaWNhY2lvbiBkZSBGaXJtYSBFbGVjdHJv
bmljYSBkZSBQYW5hbWEgKDIwMTIpMA0GCSqGSIb3DQEBCwUAA4ICAQCpQpe51yVG
ZSIF1IG35iQCpJcFFtog9xCq+w3A/ZmfhsUMPDnxWEXE+JJ0NY/Ir/pGqsc9ny4/
HE00LhmlLKWpVjmxtsKeNHXtLQ50+xD35aV3OYxTcyRG6sKvtZIakFh4+Sy64HaK
h95orjxqO/rTzjiVMxLy25yiDvkKP2GQKsCkQrVieyDAOX3FViZz0A/oiKsY0AGE
FZ1YYQ8wx6krwEGRCgy1cbo0PTIfMX4pKhQP2zfRNneZyZj08Z9UJyo86Eri/px0
xq48jdv3Z43Q4ZCeoOHzpDDtU4y0f10QgxSZTS/TP/CBDwbOhqjrxZhq+I+Qj/ZS
ZziPY5FakMnNMdfbENVUqn+63jovLMe9Es/N7YMaFdkn+AaC0wMi+4R1VzSvDg1K
JexwnteHiBLEJFv1lMSEPPEk4uC8Qy82i+nwOgs5+jus2fD8sTPo/bqol+FVEKmQ
WSWyhqQD8RApxSO2JYGShkr0EfRTvxukVTsQFQ9tFAE04qSFzZtySzeLyUWSxcRq
MupgmQJtr3gbWIxGa1656Qi5h3vkXvCno7h3N3/SEOgTowMtQVdnDh31b9eP+bQQ
t4efSnD6SBtX9sconJ/EKGpSMBO8oCGKXJolnTtV4y7ot3Z1SJE7gswJ8EuXvj2x
taHMhq8DlT+11n6QE4bhyxh4jDKdfooXpw==
-----END CERTIFICATE-----`

Last updated