- index.html - frontend with hardcoded certKey
- main.js - required for index.html functions;
- 431.js - caller to different engine functions;
- 798.js - main engine;
- No db or online calls to external API endpoints;
- This means you can validate your QR Code with local copy of the page. (as index.html added to this repo)
- RSASSA-PKCS1-v1_5
- SHA-256
- Base45
- If you copy your QR code and export as text you will get something like
- The string is encoded with base45;
- Before we decode from the base45 first let's look at the junction tree:
- First '$' - works as seperator as a start counter for payload;
- First 3 ints defines where is the payload end;
- The remaining string is the signature
#full_hash_example = '138$MPFW.CWE49F4IY8.HA.MA3Q5%VDWE49F4IY8.HA7C96C9IE4RF45EF2G7OA7X962G4UUE2G7F%63R61A64:65:6EL63Q5+ED:OE2G7E%6KA74R6FL65:6EL63Q5UUEWF7W1DZ2P*4D5T9LPE/7HGNTNN0+NTD9LXBP3SX8F55KJB1O8UP2T:RKSIJ8TJP$3$ 80/J55SPMMT9PXN32BDJ*O8WIP:2W63VG0 RJBARU:2-E61TTYJQ7I3K+43LFAI32JHU217FASFPI65S5BYFBV%A J0/MLZ+MCEHHM3+6BUZMCT34BT 86+S5YM21NM4-6*MCL:M0WR7:H:SR6P27QII%4+YMJKT7Y5GS6CR3$/8M*T//7G1T1HMX7S2K7 0842PGH41Q7J2IIBU5753PB/NUIKHQFF-+36S1$1WONJS8DF9B*I3Y0B*9W7*UJI0LG5C:JHESFVKZ%8$+P*ARLWFXHPM%UZ.F4M2FEDMDV9+LHMP$LFHQ8L7G8QB6+SPLK9HO'
#header = '138'
#seperator = '$'
#payload = 'MPFW.CWE49F4IY8.HA.MA3Q5%VDWE49F4IY8.HA7C96C9IE4RF45EF2G7OA7X962G4UUE2G7F%63R61A64:65:6EL63Q5+ED:OE2G7E%6KA74R6FL65:6EL63Q5UUEWF7W1DZ2'
#signature = 'P*4D5T9LPE/7HGNTNN0+NTD9LXBP3SX8F55KJB1O8UP2T:RKSIJ8TJP$3$ 80/J55SPMMT9PXN32BDJ*O8WIP:2W63VG0 RJBARU:2-E61TTYJQ7I3K+43LFAI32JHU217FASFPI65S5BYFBV%A J0/MLZ+MCEHHM3+6BUZMCT34BT 86+S5YM21NM4-6*MCL:M0WR7:H:SR6P27QII%4+YMJKT7Y5GS6CR3$/8M*T//7G1T1HMX7S2K7 0842PGH41Q7J2IIBU5753PB/NUIKHQFF-+36S1$1WONJS8DF9B*I3Y0B*9W7*UJI0LG5C:JHESFVKZ%8$+P*ARLWFXHPM%UZ.F4M2FEDMDV9+LHMP$LFHQ8L7G8QB6+SPLK9HO
node ./debug_hash.js
Full Hash:
134$MPFW.CWE49F4IY8.HA.MA3Q5%VDWE49F4IY8.HA7C96C9IE4RF45EF2G7OA7X962G4UUE2G7F%63R61A64:65:6EL63Q5+ED:OE2G7E%6KA74R6FL65:6EL63Q5UUEWF7W1DZ2P*4D5T9LPE/7HGNTNN0+NTD9LXBP3SX8F55KJB1O8UP2T:RKSIJ8TJP$3$ 80/J55SPMMT9PXN32BDJ*O8WIP:2W63VG0 RJBARU:2-E61TTYJQ7I3K+43LFAI32JHU217FASFPI65S5BYFBV%A J0/MLZ+MCEHHM3+6BUZMCT34BT 86+S5YM21NM4-6*MCL:M0WR7:H:SR6P27QII%4+YMJKT7Y5GS6CR3$/8M*T//7G1T1HMX7S2K7 0842PGH41Q7J2IIBU5753PB/NUIKHQFF-+36S1$1WONJS8DF9B*I3Y0B*9W7*UJI0LG5C:JHESFVKZ%8$+P*ARLWFXHPM%UZ.F4M2FEDMDV9+LHMP$LFHQ8L7G8QB6+SPLK9HO
Control num:
134
Payload:
MPFW.CWE49F4IY8.HA.MA3Q5%VDWE49F4IY8.HA7C96C9IE4RF45EF2G7OA7X962G4UUE2G7F%63R61A64:65:6EL63Q5+ED:OE2G7E%6KA74R6FL65:6EL63Q5UUEWF7W1DZ2
Signature:
P*4D5T9LPE/7HGNTNN0+NTD9LXBP3SX8F55KJB1O8UP2T:RKSIJ8TJP$3$ 80/J55SPMMT9PXN32BDJ*O8WIP:2W63VG0 RJBARU:2-E61TTYJQ7I3K+43LFAI32JHU217FASFPI65S5BYFBV%A J0/MLZ+MCEHHM3+6BUZMCT34BT 86+S5YM21NM4-6*MCL:M0WR7:H:SR6P27QII%4+YMJKT7Y5GS6CR3$/8M*T//7G1T1HMX7S2K7 0842PGH41Q7J2IIBU5753PB/NUIKHQFF-+36S1$1WONJS8DF9B*I3Y0B*9W7*UJI0LG5C:JHESFVKZ%8$+P*ARLWFXHPM%UZ.F4M2FEDMDV9+LHMP$LFHQ8L7G8QB6+SPLK9HO
{ payload:
{ fn: 'PETRAS',
ln: 'PETRAITIS',
by: 1991,
vt: 1634819767735,
iss: 1629549367735,
t: 'g' },
payloadInBase45:
'MPFW.CWE49F4IY8.HA.MA3Q5%VDWE49F4IY8.HA7C96C9IE4RF45EF2G7OA7X962G4UUE2G7F%63R61A64:65:6EL63Q5+ED:OE2G7E%6KA74R6FL65:6EL63Q5UUEWF7W1DZ2',
signature:
<Buffer 26 98 e6 53 c9 7b 3e fc b8 d0 ba 17 bc f7 49 97 5c e5 de 1c 78 30 9f 1a 09 eb ee ce e5 d8 a3 1f 99 91 9b 6c 1e 55 45 c1 9d da de 62 b1 fd c7 73 1b e7 ... > }