From 2578dc149efa9e7a68e6b1f53650304d5d37a897 Mon Sep 17 00:00:00 2001 From: vantuz-subhuman Date: Wed, 23 Jan 2019 23:20:42 +0300 Subject: [PATCH 1/3] Replaced mock signature by actual witness creation (and updated rust dependency revision) --- js/tests/redemption.js | 8 +++++--- rust | 2 +- wallet-wasm/src/lib.rs | 22 +++------------------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/js/tests/redemption.js b/js/tests/redemption.js index c5fc816..545c468 100644 --- a/js/tests/redemption.js +++ b/js/tests/redemption.js @@ -8,6 +8,8 @@ const TEST_VECTORS = [ { redemptionKey: Buffer.from('qXQWDxI3JrlFRtC4SeQjeGzLbVXWBomYPbNO1Vfm1T4=', 'base64'), expectedAddress: 'Ae2tdPwUPEZ1xZTLczMGYL5PhADi1nbFmESqS9vUuLkyUe1isQ77TRUE9NS', + expectedPublicKey: 'faf8ed5be127c8ea22e3a0f1b9335f910aaa672e96c41d7cbdcaed897a450667', + expectedSignature: '80ed81b9f3683684fdb7c286eb7cfa63580a239ed6bf67f71643d290de2206855171003c7f33cad04e9fa28ee5d5c18c4e5f0d788ae2a63fa492ba7b59995c03', txId: new Uint8Array([0xaa,0xd7,0x8a,0x13,0xb5,0x0a,0x01,0x4a,0x24,0x63,0x3c,0x7d,0x44,0xfd,0x8f,0x8d,0x18,0xf6,0x7b,0xbb,0x3f,0xa9,0xcb,0xce,0xdf,0x83,0x4a,0xc8,0x99,0x75,0x9d,0xcd]), txOutIndex: 1, coinValue: 12345678 @@ -15,7 +17,7 @@ const TEST_VECTORS = [ ]; let mkTest = (i) => { - const { redemptionKey, expectedAddress, txId, txOutIndex, coinValue } = TEST_VECTORS[i]; + const { redemptionKey, expectedAddress, expectedPublicKey, expectedSignature, txId, txOutIndex, coinValue } = TEST_VECTORS[i]; const cfg = CardanoCrypto.Config.defaultConfig(); describe('Test ' + i, function() { @@ -68,9 +70,9 @@ let mkTest = (i) => { // TODO: expecting fake witness data - fix after implementing signing in Rust expect(witnessPub.toString('hex')) - .equal('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'); + .equal(expectedPublicKey); expect(witnessSign.toString('hex')) - .equal('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'); + .equal(expectedSignature); }); }); }; diff --git a/rust b/rust index e869c9d..467727c 160000 --- a/rust +++ b/rust @@ -1 +1 @@ -Subproject commit e869c9d7d231114526f68196e53ffea6c131160d +Subproject commit 467727c5fee7921704475f74ca9f96a1df28cbaa diff --git a/wallet-wasm/src/lib.rs b/wallet-wasm/src/lib.rs index 1abd4e1..7ca69b7 100644 --- a/wallet-wasm/src/lib.rs +++ b/wallet-wasm/src/lib.rs @@ -483,7 +483,7 @@ pub extern "C" fn wallet_tx_sign( let mut deserialiser = cbor_event::de::Deserializer::from(tx_bytes.as_slice()); let tx: tx::Tx = deserialiser.deserialize_complete().unwrap(); - let txinwitness = tx::TxInWitness::new(cfg.protocol_magic, &xprv, &tx.id()); + let txinwitness = tx::TxInWitness::new_extended_pk(cfg.protocol_magic, &xprv, &tx.id()); let signature = match txinwitness { tx::TxInWitness::PkWitness(_, sig) => sig, @@ -1307,10 +1307,8 @@ pub extern "C" fn xwallet_redeem( redeem::PrivateKey::from_slice(&data.redemption_key) ); print!("Key: {}", redemption_key); - let witness = jrpc_try!( - output_ptr, - create_redemption_witness(data.protocol_magic, &redemption_key, &tx.id()) - ); + let witness = tx::TxInWitness::new_redeem_pk( + data.protocol_magic, &redemption_key, &tx.id()); let mut finalized = txbuild::TxFinalized::new(tx); jrpc_try!( output_ptr, @@ -1325,17 +1323,3 @@ pub extern "C" fn xwallet_redeem( cbor_encoded_tx: cbor }) } - -fn create_redemption_witness( - protocol_magic: cardano::config::ProtocolMagic, - key: &redeem::PrivateKey, - txid: &tx::TxId, -) -> redeem::Result { - // TODO: actual implementation - let s32 = (0..64).map(|_| "f").collect::(); - let s64 = (0..128).map(|_| "f").collect::(); - let pk = redeem::PublicKey::from_hex(&s32); - let sg = redeem::Signature::from_hex(&s64); - return pk.and_then(|k| sg.map(|s| (k, s))) - .map(|(k,s)| tx::TxInWitness::RedeemWitness(k, s)); -} \ No newline at end of file From 7c490fd2392fee0a7da35bb4d2a4892d2dbc6862 Mon Sep 17 00:00:00 2001 From: vantuz-subhuman Date: Wed, 23 Jan 2019 23:31:38 +0300 Subject: [PATCH 2/3] Removed fixed TODO comment --- js/tests/redemption.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/js/tests/redemption.js b/js/tests/redemption.js index 545c468..e25ea53 100644 --- a/js/tests/redemption.js +++ b/js/tests/redemption.js @@ -67,8 +67,6 @@ let mkTest = (i) => { const [[witnessType, witnessTagged]] = resultWitnesses; expect(witnessType).equal(2); const [witnessPub, witnessSign] = cbor.decode(witnessTagged.value); - - // TODO: expecting fake witness data - fix after implementing signing in Rust expect(witnessPub.toString('hex')) .equal(expectedPublicKey); expect(witnessSign.toString('hex')) From dabf15519574a5573cbb1fddfb763ee1786bfc5c Mon Sep 17 00:00:00 2001 From: vantuz-subhuman Date: Fri, 25 Jan 2019 01:35:39 +0300 Subject: [PATCH 3/3] Updated rust dependency to include derivation addressing fix --- rust | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust b/rust index 467727c..9bef10d 160000 --- a/rust +++ b/rust @@ -1 +1 @@ -Subproject commit 467727c5fee7921704475f74ca9f96a1df28cbaa +Subproject commit 9bef10d1bbd1321d98aa6b30ba030631806ad153