From aeb1d6a6a57d09a7a7954bdeeeae0ec585cdab9a Mon Sep 17 00:00:00 2001 From: Trent Larson Date: Fri, 5 Jan 2024 12:44:28 -0700 Subject: [PATCH] add next-public-key-hash to manual input --- project.task.yaml | 2 -- src/db/tables/contacts.ts | 2 +- src/views/ContactsView.vue | 32 ++++++++++++++++++++++++-------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/project.task.yaml b/project.task.yaml index 492ad008..51a9a7cf 100644 --- a/project.task.yaml +++ b/project.task.yaml @@ -8,13 +8,11 @@ tasks: - look for "if is a new user" -- blank name - copy button for seed -- explanation for contact icons - .5 If notifications are not enabled, add message to front page with link/button to enable - record donations vs gives - make server endpoint for full English description of limits - make identicons for contacts into more-memorable faces (and maybe change project identicons, too) -- .5 add next key hash to text input field - 01 server - show all claim details when issued by the issuer - bug - got error adding on Firefox user #0 as contact for themselves diff --git a/src/db/tables/contacts.ts b/src/db/tables/contacts.ts index 2f59a417..14ad6809 100644 --- a/src/db/tables/contacts.ts +++ b/src/db/tables/contacts.ts @@ -1,7 +1,7 @@ export interface Contact { did: string; name?: string; - nextPublicKeyHashBase64?: string; // base64-encoded SHA256 hash of next public key + nextPubKeyHashB64?: string; // base64-encoded SHA256 hash of next public key publicKeyBase64?: string; seesMe?: boolean; registered?: boolean; diff --git a/src/views/ContactsView.vue b/src/views/ContactsView.vue index d3fed6a0..3f0530ab 100644 --- a/src/views/ContactsView.vue +++ b/src/views/ContactsView.vue @@ -28,7 +28,7 @@ @@ -109,9 +109,9 @@
Public Key (base 64): {{ contact.publicKeyBase64 }}
-
+
Next Public Key Hash (base 64): - {{ contact.nextPublicKeyHashBase64 }} + {{ contact.nextPubKeyHashB64 }}
@@ -497,7 +497,7 @@ export default class ContactsView extends Vue { } let did = this.contactInput; - let name, publicKeyBase64; + let name, publicKeyInput, nextPublicKeyHashInput; const commaPos1 = this.contactInput.indexOf(","); if (commaPos1 > -1) { did = this.contactInput.substring(0, commaPos1).trim(); @@ -505,15 +505,31 @@ export default class ContactsView extends Vue { const commaPos2 = this.contactInput.indexOf(",", commaPos1 + 1); if (commaPos2 > -1) { name = this.contactInput.substring(commaPos1 + 1, commaPos2).trim(); - publicKeyBase64 = this.contactInput.substring(commaPos2 + 1).trim(); + publicKeyInput = this.contactInput.substring(commaPos2 + 1).trim(); + const commaPos3 = this.contactInput.indexOf(",", commaPos2 + 1); + if (commaPos3 > -1) { + publicKeyInput = this.contactInput.substring(commaPos2 + 1, commaPos3).trim(); // eslint-disable-line prettier/prettier + nextPublicKeyHashInput = this.contactInput.substring(commaPos3 + 1).trim(); // eslint-disable-line prettier/prettier + } } } // help with potential mistakes while this sharing requires copy-and-paste + let publicKeyBase64 = publicKeyInput; if (publicKeyBase64 && /^[0-9A-Fa-f]{66}$/i.test(publicKeyBase64)) { // it must be all hex (compressed public key), so convert publicKeyBase64 = Buffer.from(publicKeyBase64, "hex").toString("base64"); } - const newContact = { did, name, publicKeyBase64 }; + let nextPubKeyHashB64 = nextPublicKeyHashInput; + if (nextPubKeyHashB64 && /^[0-9A-Fa-f]{66}$/i.test(nextPubKeyHashB64)) { + // it must be all hex (compressed public key), so convert + nextPubKeyHashB64 = Buffer.from(nextPubKeyHashB64, "hex").toString("base64"); // eslint-disable-line prettier/prettier + } + const newContact = { + did, + name, + publicKeyBase64, + nextPubKeyHashB64: nextPubKeyHashB64, + }; await this.addContact(newContact); } @@ -534,7 +550,7 @@ export default class ContactsView extends Vue { return this.addContact({ did: payload.iss, name: payload.own.name, - nextPublicKeyHashBase64: payload.own.nextPublicEncKeyHash, + nextPubKeyHashB64: payload.own.nextPublicEncKeyHash, publicKeyBase64: payload.own.publicEncKey, } as Contact); } @@ -592,7 +608,7 @@ export default class ContactsView extends Vue { title: "Contact Added", text: addedMessage, }, - 5000, + -1, // keeping it up so that the "visibility" message is seen ); }) .catch((err) => {