From d0b059829f975267306332a84c997a9e6dca91a2 Mon Sep 17 00:00:00 2001 From: manolodewiner Date: Mon, 6 Nov 2017 00:06:18 +0100 Subject: [PATCH] sign therhold condition --- src/transaction/makeCreateTransaction.js | 6 +++--- src/transaction/signTransaction.js | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/transaction/makeCreateTransaction.js b/src/transaction/makeCreateTransaction.js index 42989e1..552080a 100644 --- a/src/transaction/makeCreateTransaction.js +++ b/src/transaction/makeCreateTransaction.js @@ -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]) } diff --git a/src/transaction/signTransaction.js b/src/transaction/signTransaction.js index e5511a0..00ea007 100644 --- a/src/transaction/signTransaction.js +++ b/src/transaction/signTransaction.js @@ -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 } })