1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

refactor signatures (#1395)

* refactor signatures
This commit is contained in:
Alex Coseru 2022-04-14 16:52:12 +03:00 committed by GitHub
parent 4dba394fbc
commit e964b2a4a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 80 deletions

View File

@ -58,8 +58,6 @@ jobs:
working-directory: ${{ github.workspace }}/barge
run: |
bash -x start_ocean.sh --no-aquarius --no-elasticsearch --no-provider --no-dashboard 2>&1 > start_ocean.log &
env:
CONTRACTS_VERSION: v1.0.0-alpha.28
- run: npm ci
- name: Wait for contracts deployment
working-directory: ${{ github.workspace }}/barge
@ -117,8 +115,6 @@ jobs:
working-directory: ${{ github.workspace }}/barge
run: |
bash -x start_ocean.sh --with-provider2 --no-dashboard --with-c2d 2>&1 > start_ocean.log &
env:
CONTRACTS_VERSION: v1.0.0-alpha.28
- run: npm ci
- run: npm run build:metadata

View File

@ -10,7 +10,6 @@ import {
ProviderInitialize
} from '../@types/'
import { noZeroX } from '../utils/ConversionTypeHelper'
import { signText, signWithHash } from '../utils/SignatureUtils'
import fetch from 'cross-fetch'
import { DownloadResponse } from '../@types/DownloadResponse'
export interface HttpCallback {
@ -107,22 +106,17 @@ export class Provider {
}
}
public async createSignature(
web3: Web3,
accountId: string,
agreementId: string
): Promise<string> {
const signature = await signText(web3, noZeroX(agreementId), accountId)
return signature
}
public async createHashSignature(
public async signProviderRequest(
web3: Web3,
accountId: string,
message: string
): Promise<string> {
const signature = await signWithHash(web3, message, accountId)
return signature
const consumerMessage = web3.utils.soliditySha3({
t: 'bytes',
v: web3.utils.utf8ToHex(message)
})
const consumerSignature = await web3.eth.sign(consumerMessage, accountId)
return consumerSignature
}
/** Encrypt data using the Provider's own symmetric key
@ -361,8 +355,7 @@ export class Provider {
: null
if (!downloadUrl) return null
const nonce = Date.now()
const signature = await this.createSignature(web3, accountId, did + nonce)
const signature = await this.signProviderRequest(web3, accountId, did + nonce)
let consumeUrl = downloadUrl
consumeUrl += `?fileIndex=${fileIndex}`
consumeUrl += `&documentId=${did}`
@ -411,12 +404,11 @@ export class Provider {
let signatureMessage = consumerAddress
signatureMessage += dataset.documentId
signatureMessage += nonce
const signature = await this.createHashSignature(
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const payload = Object()
payload.consumerAddress = consumerAddress
payload.signature = signature
@ -490,12 +482,11 @@ export class Provider {
signatureMessage += jobId || ''
signatureMessage += (did && `${noZeroX(did)}`) || ''
signatureMessage += nonce
const signature = await this.createHashSignature(
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const payload = Object()
payload.signature = signature
payload.documentId = noZeroX(did)
@ -620,7 +611,7 @@ export class Provider {
signatureMessage += jobId
signatureMessage += index.toString()
signatureMessage += nonce
const signature = await this.createHashSignature(web3, accountId, signatureMessage)
const signature = await this.signProviderRequest(web3, accountId, signatureMessage)
let consumeUrl = computeResultUrl
consumeUrl += `?consumerAddress=${accountId}`
@ -680,12 +671,11 @@ export class Provider {
signatureMessage += jobId || ''
signatureMessage += (did && `${noZeroX(did)}`) || ''
signatureMessage += nonce
const signature = await this.createHashSignature(
const signature = await this.signProviderRequest(
web3,
consumerAddress,
signatureMessage
)
const payload = Object()
payload.documentId = noZeroX(did)
payload.consumerAddress = consumerAddress

View File

@ -32,7 +32,8 @@ export const configHelperNetworks: Config[] = [
...configHelperNetworksBase,
chainId: 8996,
network: 'development',
metadataCacheUri: 'http://127.0.0.1:5000'
metadataCacheUri: 'http://127.0.0.1:5000',
providerUri: 'http://172.15.0.4:8030'
},
{
...configHelperNetworksBase,

View File

@ -1,32 +1,6 @@
import Web3 from 'web3'
import { LoggerInstance } from './Logger'
export async function signText(
web3: Web3,
text: string,
publicKey: string,
password?: string
): Promise<string> {
const isMetaMask =
web3 && web3.currentProvider && (web3.currentProvider as any).isMetaMask
try {
return await web3.eth.personal.sign(text, publicKey, password)
} catch (e) {
if (isMetaMask) {
throw e
}
LoggerInstance.warn('Error on personal sign.')
LoggerInstance.warn(e)
try {
return await web3.eth.sign(text, publicKey)
} catch (e2) {
LoggerInstance.error('Error on sign.')
LoggerInstance.error(e2)
throw new Error('Error executing personal sign')
}
}
}
export async function signHash(web3: Web3, message: string, address: string) {
let signedMessage = await web3.eth.sign(message, address)
signedMessage = signedMessage.substr(2) // remove 0x
@ -38,30 +12,3 @@ export async function signHash(web3: Web3, message: string, address: string) {
if (v === '0x01') v = '0x1c'
return { v, r, s }
}
export async function signWithHash(
web3: Web3,
text: string,
publicKey: string,
password?: string
): Promise<string> {
const hash = web3.utils.utf8ToHex(text)
const isMetaMask =
web3 && web3.currentProvider && (web3.currentProvider as any).isMetaMask
try {
return await web3.eth.personal.sign(hash, publicKey, password)
} catch (e) {
if (isMetaMask) {
throw e
}
LoggerInstance.warn('Error on personal sign.')
LoggerInstance.warn(e)
try {
return await web3.eth.sign(hash, publicKey)
} catch (e2) {
LoggerInstance.error('Error on sign.')
LoggerInstance.error(e2)
throw new Error('Error executing personal sign')
}
}
}