From 633dab3952fbcb4ffe5d21dbb7a11903a6b1d01d Mon Sep 17 00:00:00 2001 From: Hugo Nguyen Date: Fri, 16 Apr 2021 19:28:04 -0700 Subject: move descriptor to the second line in the descriptor record --- bip-hugonguyen-bsms.mediawiki | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bip-hugonguyen-bsms.mediawiki b/bip-hugonguyen-bsms.mediawiki index 0ce18c5..9e7ec7c 100644 --- a/bip-hugonguyen-bsms.mediawiki +++ b/bip-hugonguyen-bsms.mediawiki @@ -87,7 +87,7 @@ The Signer is any software or hardware that controls the private keys and can si * The Coordinator verifies that the key records have compatible specification versions. * The Coordinator verifies that the included SIG is valid given the KEY. * If all key records look good, the Coordinator fills in all necessary information to generate a descriptor record. -* The first line in the descriptor record must be the specification version (BSMS 1.0 as of this writing). The second line must be a comma-separated list of accepted derivation paths that the Signers can use to generate addresses from the included XPUBs. The paths must start with / and use non-hardened derivation. For example, /0/* and /1/* are some common paths. If there are no restrictions, it must say No path restrictions. The third line must be the descriptor string plus a CHECKSUM, all in one line. The CHECKSUM has [https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums BECH32 encoding]. The fourth line must be the wallet's first address. If there are path restrictions, use the first address from the first path restriction. +* The first line in the descriptor record must be the specification version (BSMS 1.0 as of this writing). The second line must be the descriptor string plus a CHECKSUM, all in one line. The CHECKSUM has [https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#checksums BECH32 encoding]. The third line must be a comma-separated list of accepted derivation paths that the Signers can use to generate addresses from the included XPUBs. The paths must start with / and use non-hardened derivation. For example, /0/* and /1/* are some common paths. If there are no restrictions, it must say No path restrictions. The fourth line must be the wallet's first address. If there are path restrictions, use the first address from the first path restriction. * The Coordinator calculates the MAC for the record. The first 16 bytes of the MAC serves as the IV for the encryption.. * The Coordinator encrypts the descriptor record with the ENCRYPTION_KEY and IV. * The Coordinator encodes the MAC and the ciphertext into hexadecimal format, then concatenates the results: (MAC || ciphertext). @@ -99,10 +99,10 @@ The Signer is any software or hardware that controls the private keys and can si * The Signer extracts the MAC from the data, sets IV to the first 16 bytes of the MAC, then decrypts the ciphertext using the ENCRYPTION_KEY (derived from the open session) and IV. * The Signer verifies that the included MAC is valid given the plaintext. * The Signer verifies that it can support the included specification version. -* The Signer verifies that it is compatible with the derivation path restrictions. * The Signer verifies the descriptor’s CHECKSUM. * The Signer verifies that it can support the descriptor. * The Signer checks that its KEY is included in the descriptor, using path and fingerprint information provided. The check must perform an exact match on the KEYs and not using shortcuts such as matching fingerprints, which is trivial to spoof. +* The Signer verifies that it is compatible with the derivation path restrictions. * The Signer verifies that the wallet's first address is valid given the descriptor and the path restrictions. * For confirmation, the Signer must display to the user the wallet's first address and policy parameters, including, but not limited to: the derivation path restrictions, M, N, and the position(s) of the Signer's own XPUB in the policy script. The total number of Signers, N, is important to prevent a KEY insertion attack. The position is important for scripts where key order matters. When applicable, all positions of the XPUB must be displayed. The full descriptor must also be available for review upon user request. * Parties must check with each other that all Signers have the same confirmation (except for the key positions). @@ -214,8 +214,8 @@ H38+lp9iaesBeCN05BDTH/SnmarlH6+X+Kmw1pgCk+c1Pc1evYIdBag9Nc0nsKhvPtfEbRt9r/qsUVZ5 * Coordinator ** my_multisig_wallet.bsms:
BSMS 1.0
-/0/*,/1/*
 wsh(sortedmulti(2,[539f3d89/48'/0'/0'/2']xpub6ETerig7tq89mtaD8Gau2xRWxouRMBy6XHqciA8GZzC2dJv3w6FxfgoegH4b2qYF4oG6VBrhpLrauPs5E1q58GLCnhKp6g9QsV9ZA7J5JNa/*,[f8b12aa6/48'/0'/0'/2']xpub6EWPNhGSX86SN4J2DrBUaQ826o6V4egHqAJZUDJqnsthv9CcjBZV79u68M3YZkuTJnJBXfCrHuJy97fkVurntwgt3V7Ms5hXpJV2vS8fQZM/*))#fntxdj7p
+/0/*,/1/*
 bc1qqqen0mj98v3mpr5esh4g22llu0wj4c6y2wj3q7l5tcqlr5au4nesyfh7rr
===Mode: STANDARD Encryption=== -- cgit v1.2.3