1
0
mirror of https://github.com/bigchaindb/js-bigchaindb-driver.git synced 2025-02-14 21:10:32 +01:00

sign therhold condition

This commit is contained in:
manolodewiner 2017-11-06 00:06:18 +01:00
parent 5e838447db
commit d0b059829f
2 changed files with 17 additions and 7 deletions

View File

@ -26,8 +26,8 @@ export default function makeCreateTransaction(asset, metadata, outputs, ...issue
const assetDefinition = {
'data': asset || null,
}
const inputs = issuers.map((issuer) => makeInputTemplate([issuer], null,
makeFulfillment([issuer])))
// Create transaction has 1 and just 1 input
const inputs = makeInputTemplate(issuers, null, makeFulfillment(issuers))
return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs)
return makeTransaction('CREATE', assetDefinition, metadata, outputs, [inputs])
}

View File

@ -22,18 +22,28 @@ export default function signTransaction(transaction, ...privateKeys) {
const signedTx = clone(transaction)
signedTx.inputs.forEach((input, index) => {
console.log('inpuuuuut', input)
transaction.inputs[index].fulfillment = null // OJOOO
const serializedTransaction = serializeTransactionIntoCanonicalString(transaction)
if (input.fulfillment.type === 'ed25519-sha-256') {
transaction.inputs[0].fulfillment = null
const privateKey = privateKeys[index]
const privateKey = privateKeys[index] // TODO index is not correct here. just work for some cases
const privateKeyBuffer = new Buffer(base58.decode(privateKey))
const serializedTransaction = serializeTransactionIntoCanonicalString(transaction)
const ed25519Fulfillment = new cc.Ed25519Sha256()
ed25519Fulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer)
const fulfillmentUri = ed25519Fulfillment.serializeUri()
input.fulfillment = fulfillmentUri
} else if (input.fulfillment.type === 'threshold-sha-256') {
input.fulfillment = 'fulfillmentUri'
const thresholdFulfillment = new cc.ThresholdSha256()
input.fulfillment.subconditions.forEach((subcondition, indexSubcondition) => {
const privateKey = privateKeys[index + indexSubcondition] // TODO index is not correct here. just work for some cases
const privateKeyBuffer = new Buffer(base58.decode(privateKey))
const ed25519subFulfillment = new cc.Ed25519Sha256()
ed25519subFulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer)
thresholdFulfillment.addSubfulfillmentUri(ed25519subFulfillment)
})
thresholdFulfillment.setThreshold(1) // defaults to subconditions.length
const fulfillmentUri = thresholdFulfillment.serializeUri()
input.fulfillment = fulfillmentUri
}
})