From 2327743178cadc30e1abfc574932ac87baeb9d5d Mon Sep 17 00:00:00 2001 From: Zdravko Iliev <zdravko.iliev@vereign.com> Date: Tue, 15 Feb 2022 15:24:50 +0200 Subject: [PATCH] fix --- dist/services/QrCodeDataService.d.ts | 6 +++- dist/services/QrCodeDataService.js | 28 +++++++++++++++ dist/types.d.ts | 13 +++++++ src/services/QrCodeDataService.ts | 54 +++++++++++++++++++++++++++- src/types.ts | 15 ++++++++ vereign/protobuf/qrcode_data.proto | 20 +++++++++++ 6 files changed, 134 insertions(+), 2 deletions(-) diff --git a/dist/services/QrCodeDataService.d.ts b/dist/services/QrCodeDataService.d.ts index 5ea7dcc..32ddcbe 100644 --- a/dist/services/QrCodeDataService.d.ts +++ b/dist/services/QrCodeDataService.d.ts @@ -1,5 +1,9 @@ -import { KeyDataPair, MessageData, DocumentData } from "../types"; +import { KeyDataPair, MessageData, DocumentData, SealHeadData, SealIndexObject } from "../types"; declare const _default: { + encodeSealHead: (sealHeadData: SealHeadData) => string; + decodeSealHead: (binary: string | ArrayBuffer | Uint8Array) => SealHeadData; + encodeSealIndexObject: (indexObjectData: SealIndexObject) => string; + decodeSealIndexObject: (binary: string | ArrayBuffer | Uint8Array) => SealIndexObject; encodeDocumentData: (documentData: DocumentData) => string; decodeDocumentData: (binary: string | ArrayBuffer | Uint8Array) => DocumentData; encodeEmailData: (emailData: MessageData) => string; diff --git a/dist/services/QrCodeDataService.js b/dist/services/QrCodeDataService.js index b019c4e..ce102d4 100644 --- a/dist/services/QrCodeDataService.js +++ b/dist/services/QrCodeDataService.js @@ -16,6 +16,8 @@ const DocumentDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.Docu const EmailDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.EmailData_V1; const KeyDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.KeyData_V1; const WrapperDataMessage = qrcode_data_pb_1.vereign.protobuf.qrcode_data.WrapperData; +const SealIndexObjectMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.SealIndexObject_V1; +const SealHeadMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.SealDocumentHeadData_V1; const EMAIL_DATA_V1 = "EmailData_V1"; const DOCUMENT_DATA_V1 = "DocumentData_V1"; const encodeEmailData = (emailData) => { @@ -111,7 +113,33 @@ const encodeDocumentData = (documentData) => { const wrappedDataBuffer = WrapperDataMessage.encode(wrappedDataMessage).finish(); return (0, common_1.arrayBufferToBase64)(wrappedDataBuffer); }; +const encodeSealHead = (sealHeadData) => { + const sealHeadDataMessage = SealHeadMessageV1.fromObject(sealHeadData); + const buffer = SealHeadMessageV1.encode(sealHeadDataMessage).finish(); + return (0, common_1.arrayBufferToBase64)(buffer); +}; +const decodeSealHead = (binary) => { + const sealHeadDataMessage = SealHeadMessageV1.decode((0, common_1.ensureUint8Array)(binary)); + return SealHeadMessageV1.toObject(sealHeadDataMessage, { + bytes: String, + }); +}; +const encodeSealIndexObject = (indexObjectData) => { + const sealIndexDataMessage = SealIndexObjectMessageV1.fromObject(indexObjectData); + const buffer = SealIndexObjectMessageV1.encode(sealIndexDataMessage).finish(); + return (0, common_1.arrayBufferToBase64)(buffer); +}; +const decodeSealIndexObject = (binary) => { + const sealIndexDataMessage = SealIndexObjectMessageV1.decode((0, common_1.ensureUint8Array)(binary)); + return SealIndexObjectMessageV1.toObject(sealIndexDataMessage, { + bytes: String, + }); +}; exports.default = { + encodeSealHead, + decodeSealHead, + encodeSealIndexObject, + decodeSealIndexObject, encodeDocumentData, decodeDocumentData, encodeEmailData, diff --git a/dist/types.d.ts b/dist/types.d.ts index 5c87d61..3d93da6 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -147,3 +147,16 @@ export interface DocumentStatusObject { timestamp: number; sealHash: string; } +export interface SealHeadData { + key: string; + data: string; + ipfsIndexCid: string; +} +export interface SealIndexObject { + sealKey: string; + sealTailCid: string; + chain: string; + block: string; + transactionId: string; + hashBatchId: string; +} diff --git a/src/services/QrCodeDataService.ts b/src/services/QrCodeDataService.ts index 38f08f6..0b44115 100644 --- a/src/services/QrCodeDataService.ts +++ b/src/services/QrCodeDataService.ts @@ -1,4 +1,10 @@ -import { KeyDataPair, MessageData, DocumentData } from "../types"; +import { + KeyDataPair, + MessageData, + DocumentData, + SealHeadData, + SealIndexObject, +} from "../types"; import { vereign } from "../generated/qrcode_data_pb"; import { @@ -13,6 +19,9 @@ const DocumentDataMessageV1 = vereign.protobuf.qrcode_data.DocumentData_V1; const EmailDataMessageV1 = vereign.protobuf.qrcode_data.EmailData_V1; const KeyDataMessageV1 = vereign.protobuf.qrcode_data.KeyData_V1; const WrapperDataMessage = vereign.protobuf.qrcode_data.WrapperData; +const SealIndexObjectMessageV1 = + vereign.protobuf.qrcode_data.SealIndexObject_V1; +const SealHeadMessageV1 = vereign.protobuf.qrcode_data.SealDocumentHeadData_V1; const EMAIL_DATA_V1 = "EmailData_V1"; const DOCUMENT_DATA_V1 = "DocumentData_V1"; @@ -179,7 +188,50 @@ const encodeDocumentData = (documentData: DocumentData): string => { return arrayBufferToBase64(wrappedDataBuffer); }; +const encodeSealHead = (sealHeadData: SealHeadData): string => { + const sealHeadDataMessage = SealHeadMessageV1.fromObject(sealHeadData); + const buffer = SealHeadMessageV1.encode(sealHeadDataMessage).finish(); + + return arrayBufferToBase64(buffer); +}; + +const decodeSealHead = ( + binary: string | Uint8Array | ArrayBuffer +): SealHeadData => { + const sealHeadDataMessage = SealHeadMessageV1.decode( + ensureUint8Array(binary) + ); + + return SealHeadMessageV1.toObject(sealHeadDataMessage, { + bytes: String, + }) as SealHeadData; +}; + +const encodeSealIndexObject = (indexObjectData: SealIndexObject): string => { + const sealIndexDataMessage = + SealIndexObjectMessageV1.fromObject(indexObjectData); + const buffer = SealIndexObjectMessageV1.encode(sealIndexDataMessage).finish(); + + return arrayBufferToBase64(buffer); +}; + +const decodeSealIndexObject = ( + binary: string | Uint8Array | ArrayBuffer +): SealIndexObject => { + const sealIndexDataMessage = SealIndexObjectMessageV1.decode( + ensureUint8Array(binary) + ); + + return SealIndexObjectMessageV1.toObject(sealIndexDataMessage, { + bytes: String, + }) as SealIndexObject; +}; + export default { + encodeSealHead, + decodeSealHead, + encodeSealIndexObject, + decodeSealIndexObject, encodeDocumentData, decodeDocumentData, encodeEmailData, diff --git a/src/types.ts b/src/types.ts index 37557bc..6b0fdc1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -172,3 +172,18 @@ export interface DocumentStatusObject { timestamp: number; sealHash: string; } + +export interface SealHeadData { + key: string; + data: string; + ipfsIndexCid: string; +} + +export interface SealIndexObject { + sealKey: string; + sealTailCid: string; + chain: string; + block: string; + transactionId: string; + hashBatchId: string; +} diff --git a/vereign/protobuf/qrcode_data.proto b/vereign/protobuf/qrcode_data.proto index 7f14d6a..b3b2969 100644 --- a/vereign/protobuf/qrcode_data.proto +++ b/vereign/protobuf/qrcode_data.proto @@ -73,3 +73,23 @@ message DocumentData_V1 { int32 documentPages = 5; IpfsData_V1 ipfs = 6; } + +/** + * Reference + * https://community.vereign.com/t/seal-blockchain-status-storage-for-documents-and-beyond/371/6 + * Step 14 + */ + message SealDocumentHeadData_V1 { + bytes key = 1; + bytes data = 2; + string ipfsIndexCid = 3; +} + +message SealIndexObject_V1 { + bytes sealKey = 1; + string sealTailCid = 2; + string chain = 3; + string block = 4; + string transactionId = 5; + string hashBatchId = 6; +} -- GitLab