Skip to content

Commit

Permalink
async 😣
Browse files Browse the repository at this point in the history
  • Loading branch information
albertolerda committed Jun 23, 2022
1 parent 3c1e90e commit ab92440
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
],
"dependencies": {
"asn1.js": "5.4.1",
"json-stable-stringify": "^1.0.1",
"tweetnacl": "^1.0.3",
"zenroom": "^2.2.3-bc442c74"
},
Expand All @@ -29,6 +30,7 @@
"@babel/plugin-transform-runtime": "^7.17.0",
"@babel/preset-env": "^7.16.11",
"@babel/runtime-corejs3": "^7.17.2",
"@types/json-stable-stringify": "^1.0.34",
"babel-loader": "^8.2.2",
"buffer": "^6.0.3",
"chai": "^4.3.3",
Expand Down
39 changes: 39 additions & 0 deletions src/types/zenroom-sha256.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import ValidationError from '../errors/validation-error'
import bufferToUint8Array from '../util/buffer-to-uint-array'
import { ZenroomFingerprintContents as Asn1ZenroomFingerprintContents } from '../schemas/fingerprint'
import { zencode_exec } from 'zenroom'
import {default as stringify} from 'json-stable-stringify';

/**
* Zenroom: Zenroom condition.
Expand Down Expand Up @@ -113,6 +114,44 @@ class ZenroomSha256 extends BaseSha256 {
validate (message) {
throw new Error('Not implemented yet')
}


async sign(messageStr, condition_script, keyring) {
let message = JSON.parse(messageStr.toString('utf-8'))
const data = this.data || {}
try {
data.asset = message.asset.data
} catch(e) {}
const result = await zencode_exec(condition_script,
{ keys: JSON.stringify({keyring}),
data: JSON.stringify(data) })

message['metadata'] = message['metadata'] || {}

Object.assign(message['metadata'], {data: JSON.parse(result.result),
logs: result.logs})
return Buffer.from(JSON.stringify(message))

}

async validate(messageStr) {
const message = JSON.parse(messageStr.toString('utf-8'))
let data = this.data || {}
try {
data.asset = message.asset.data
} catch(e) {}
try {
data.result = message.metadata.data
} catch(e) {}

const zen = await zencode_exec(this.script,
{keys: JSON.stringify(this.keys),
data: JSON.stringify(data)})

const result = JSON.parse(zen.result)
return message.metadata.result &&
stringify(message.metadata.result) == stringify(result)
}
}

ZenroomSha256.TYPE_ID = 5
Expand Down
3 changes: 2 additions & 1 deletion types/types/zenroom-sha256.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export default class ZenroomSha256 extends BaseSha256 {

getAsn1JsonPayload(): ZenroomSha256Asn1Json;

validate(message: Buffer): boolean;
async sign(message: Buffer, condition_script: string, private_keys: Record<string, any>): Buffer;
async validate(message: Buffer): boolean;
}

0 comments on commit ab92440

Please sign in to comment.