From 6ce02ec17cf931b17152c2385d767a2d41e0a35c Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Fri, 28 May 2021 12:53:47 +0300 Subject: [PATCH] fix ddo encrypt for browsers (#822) * fix ddo encrypt for browsers Warning: needs aquarius >= 2.2.12 --- src/metadatacache/MetadataCache.ts | 4 ++-- src/metadatacache/OnChainMetaData.ts | 22 +++++++++------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/metadatacache/MetadataCache.ts b/src/metadatacache/MetadataCache.ts index c2d5df0d..20e2c654 100644 --- a/src/metadatacache/MetadataCache.ts +++ b/src/metadatacache/MetadataCache.ts @@ -146,12 +146,12 @@ export class MetadataCache { * @return {Promise} Hex encoded encrypted DDO. */ public async encryptDDO(ddo: any): Promise { - const fullUrl = `${this.url}/api/v1/aquarius/assets/ddo/encrypt` + const fullUrl = `${this.url}/api/v1/aquarius/assets/ddo/encryptashex ` const result = await this.fetch .postWithOctet(fullUrl, ddo) .then((response: Response) => { if (response.ok) { - return response.blob() + return response.text() } this.logger.error('encryptDDO failed:', response.status, response.statusText, ddo) return null diff --git a/src/metadatacache/OnChainMetaData.ts b/src/metadatacache/OnChainMetaData.ts index 4895f2e3..4bfaba36 100644 --- a/src/metadatacache/OnChainMetaData.ts +++ b/src/metadatacache/OnChainMetaData.ts @@ -75,7 +75,10 @@ export class OnChainMetadata { encrypt: boolean = false ): Promise { const rawData = await this.prepareRawData(ddo, encrypt) - return this.publishRaw(didZeroX(did), rawData.flags, rawData.data, consumerAccount) + if (!rawData) { + throw new Error(`Could not prepare raw data for publish`) + } else + return this.publishRaw(didZeroX(did), rawData.flags, rawData.data, consumerAccount) } /** @@ -92,7 +95,10 @@ export class OnChainMetadata { encrypt: boolean = false ): Promise { const rawData = await this.prepareRawData(ddo, encrypt) - return this.updateRaw(didZeroX(did), rawData.flags, rawData.data, consumerAccount) + if (!rawData) { + throw new Error(`Could not prepare raw data for udate`) + } else + return this.updateRaw(didZeroX(did), rawData.flags, rawData.data, consumerAccount) } /** @@ -109,17 +115,7 @@ export class OnChainMetadata { flags = flags | 1 data = this.getHex(data) } else { - const blob = await this.metadataCache.encryptDDO(data) - try { - const rawBuffer = (await new Response(blob).arrayBuffer()) as any - data = - '0x' + - Array.prototype.map - .call(new Uint8Array(rawBuffer), (x) => ('00' + x.toString(16)).slice(-2)) - .join('') - } catch (e) { - console.error(e) - } + data = await this.metadataCache.encryptDDO(data) if (!data) return null flags = flags | 2 }