1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-10-19 19:29:18 +00:00

bip-0138: make PLAINTEXT LENGTH mandatory and add optional payload padding

This commit is contained in:
pythcoiner
2026-06-17 22:45:43 -04:00
parent e9858e8bbe
commit 7707cf2935
2 changed files with 48 additions and 16 deletions

View File

@@ -263,7 +263,39 @@ Implementations MUST reject empty payloads.
`CIPHERTEXT` is the encrypted data resulting from encryption of `PAYLOAD` with algorithm
defined in `ENCRYPTION` where `PAYLOAD` is encoded following this format:
`CONTENT` `PLAINTEXT`
`CONTENT` `LENGTH` `PLAINTEXT` (`PADDING`)
`LENGTH`: variable-length integer representing the length of `PLAINTEXT` in bytes. It MUST
be present.
`PLAINTEXT`: the `LENGTH` bytes of payload data.
`PADDING`: OPTIONAL bytes after `PLAINTEXT`, up to the end of the decrypted `PAYLOAD`.
Parsers MUST consume exactly `LENGTH` bytes of `PLAINTEXT` and MUST ignore everything after
it. These bytes are reserved for size padding (see Padding) and/or vendor-specific data,
the same way trailing bytes after `CIPHERTEXT` are reserved and ignored.
#### Padding
Backups that are updated over time can leak information through their size even when the
contents are encrypted. A wallet that uploads a new backup after every received transaction
can reveal activity to the storage provider through changing payload sizes. This is relevant
for mutable payloads such as BIP-329 or BIP-0139.[^padding-privacy]
Padding is OPTIONAL and is an encoder concern only: decoders ignore the `PADDING` bytes and
MUST NOT validate any bucket. Because the padding sits inside `CIPHERTEXT`, the
`ENCRYPTED_PAYLOAD` `LENGTH` reveals only the padded size, not the real `PLAINTEXT` size.
Encoders that pad SHOULD zero-fill `PAYLOAD` up to the smallest bucket `S_n` that fits it,
with `S_0 = 10240` (10 KiB) and `S_n = floor(S_0 * (5 / 4)^n)`. Payloads of 10 KiB or less
are padded to 10 KiB. This keeps padding overhead under 25% above the smallest fitting bucket
while coarsening the observable size. Padding is RECOMMENDED for mutable payloads and
unnecessary for static ones such as BIP-380 descriptors and BIP-388 wallet policies.
[^padding-privacy]: **Why pad inside the ciphertext?**
Padding the encrypted payload, rather than appending bytes after the backup, hides the
real payload size from anyone who parses the backup, not just from someone who measures
the file size. The size field a parser sees is the padded `LENGTH`.
#### Integer Encodings
@@ -353,19 +385,19 @@ The version field enables possible future enhancements:
### Test Vectors
[key_types.json](./bip-encrypted-backup/test_vectors/keys_types.json) contains test
[key_types.json](./bip-0138/test_vectors/keys_types.json) contains test
vectors for key serialisations.
[content_type.json](./bip-encrypted-backup/test_vectors/content_type.json) contains test
[content_type.json](./bip-0138/test_vectors/content_type.json) contains test
vectors for contents types serialisations.
[derivation_path.json](./bip-encrypted-backup/test_vectors/derivation_path.json) contains
[derivation_path.json](./bip-0138/test_vectors/derivation_path.json) contains
test vectors for derivation paths serialisations.
[individual_secrets.json](./bip-encrypted-backup/test_vectors/individual_secrets.json)
[individual_secrets.json](./bip-0138/test_vectors/individual_secrets.json)
contains test vectors for individual secrets serialization.
[encryption_secret.json](./bip-encrypted-backup/test_vectors/encryption_secret.json)
[encryption_secret.json](./bip-0138/test_vectors/encryption_secret.json)
contains test vectors for generation of encryption secret.
[chacha20poly1305_encryption.json](./bip-encrypted-backup/test_vectors/chacha20poly1305_encryption.json)
[chacha20poly1305_encryption.json](./bip-0138/test_vectors/chacha20poly1305_encryption.json)
contains test vectors for ciphertexts generated using CHACHA20-POLY1305.
[encrypted_backup.json](./bip-encrypted-backup/test_vectors/encrypted_backup.json)
[encrypted_backup.json](./bip-0138/test_vectors/encrypted_backup.json)
contains test vectors for generation of complete encrypted backup.
## Acknowledgements

View File

@@ -10,9 +10,9 @@
"derivation_paths": [],
"plaintext": "00",
"nonce": "a1b2c3d4e5f607080910a1b2",
"expected": "424950585858010001ff34b3411f78127b71ca2e3cc60d0fd71350ee557c37d71f4d81fb913461ae0001a1b2c3d4e5f607080910a1b2151d8f44dba6f420976b9343f792b4bd58c06289d234",
"expected": "424950585858010001ff34b3411f78127b71ca2e3cc60d0fd71350ee557c37d71f4d81fb913461ae0001a1b2c3d4e5f607080910a1b2161d8f44e9a6196e61ac587ad2a3243b7c26949d848121",
"trailing": "deadbeef00ff",
"expected_base64": "QklQWFhYAQAB/zSzQR94Entxyi48xg0P1xNQ7lV8N9cfTYH7kTRhrgABobLD1OX2BwgJEKGyFR2PRNum9CCXa5ND95K0vVjAYonSNA=="
"expected_base64": "QklQWFhYAQAB/zSzQR94Entxyi48xg0P1xNQ7lV8N9cfTYH7kTRhrgABobLD1OX2BwgJEKGyFh2PROmmGW5hrFh60qMkO3wmlJ2EgSE="
},
{
"description": "Two keys, 1 derivation paths, BIP380 content",
@@ -28,8 +28,8 @@
],
"plaintext": "wsh(or_d(pk([9d69155f/48'/1'/0'/2']tpubDDxT9mkZzWwkKwpGT5fY6iiM9muYTPkTx6Eig8dpHR7TChuGGCWYAHVmpW1ciido5RiFWwjzYsF1GZHkEHg2nrYp3zNtx3QQRkznyLhQ77x/<0;1>/*),and_v(v:pkh([9d69155f/48'/1'/0'/2']tpubDDxT9mkZzWwkKwpGT5fY6iiM9muYTPkTx6Eig8dpHR7TChuGGCWYAHVmpW1ciido5RiFWwjzYsF1GZHkEHg2nrYp3zNtx3QQRkznyLhQ77x/<2;3>/*),older(52596))))#gx5f42wh",
"nonce": "0102030405060708090a0b0c",
"expected": "42495058585801010480000030800000018000000080000002024900d4ef9021cb059b8fb35c6de9b6db91949a328527ede0645be237899100bd5e3eb8a36f7bf32e02810c14666476f2b28a15cd499c30f8f98e926639a0765c010102030405060708090a0b0cfd63012f51db36ae620d6522a86e4ce7d9daff2f50826aae70c1d3707d18b8075543da1848ad904b11be465e768d8b1ea74a1b21f21f882262bd0d5f7165991720c1836f1bce2dec7ba3813fc1c0bc6404a0fd6228e239f8bddd398c32f8274f9de0f0b5662854ce900d7d5b14a16605eb2a49d031b98513b73777685693b45b17e08a60e095b66403efcc7036cd82a8d675362eab43bcdecb158e8b0dcca476173345d189c2277dc25b9851b2be92c7ef8b69a565af1ccf9726e322db2b8d5266a5df4296527c716b8ba004fb1408cbd7cc7a18575286e6f03e1793b25eea11223fd6cc7a497d8328997b1eb770fcc8125e60511eefb8232b780d80f1d71e9e937627dfb62cd6c5807b35e7d7bb9aaf18d5a46c6ea271f2be26bd1cc35bb2b70cc1930ad5f472b1bf0d7b3bed3dfe358a69beabdafd6316968c530237f21e1c89662ada34d666735f791db5eb68ee29d2d06f42421ec311d6284f5be9850d63e0cfd6cfe207",
"expected_base64": "QklQWFhYAQEEgAAAMIAAAAGAAAAAgAAAAgJJANTvkCHLBZuPs1xt6bbbkZSaMoUn7eBkW+I3iZEAvV4+uKNve/MuAoEMFGZkdvKyihXNSZww+PmOkmY5oHZcAQECAwQFBgcICQoLDP1jAS9R2zauYg1lIqhuTOfZ2v8vUIJqrnDB03B9GLgHVUPaGEitkEsRvkZedo2LHqdKGyHyH4giYr0NX3FlmRcgwYNvG84t7HujgT/BwLxkBKD9YijiOfi93TmMMvgnT53g8LVmKFTOkA19WxShZgXrKknQMbmFE7c3d2hWk7RbF+CKYOCVtmQD78xwNs2CqNZ1Ni6rQ7zeyxWOiw3MpHYXM0XRicInfcJbmFGyvpLH74tppWWvHM+XJuMi2yuNUmal30KWUnxxa4ugBPsUCMvXzHoYV1KG5vA+F5OyXuoRIj/WzHpJfYMomXset3D8yBJeYFEe77gjK3gNgPHXHp6TdifftizWxYB7NefXu5qvGNWkbG6icfK+Jr0cw1uytwzBkwrV9HKxvw17O+09/jWKab6r2v1jFpaMUwI38h4ciWYq2jTWZnNfeR2162juKdLQb0JCHsMR1ihPW+mFDWPgz9bP4gc="
"expected": "42495058585801010480000030800000018000000080000002024900d4ef9021cb059b8fb35c6de9b6db91949a328527ede0645be237899100bd5e3eb8a36f7bf32e02810c14666476f2b28a15cd499c30f8f98e926639a0765c010102030405060708090a0b0cfd66012f51dbbc8d0b527938df6516c8d6dad47d1cef6afb73cd846a7c46b01c5c43da1948ad924b63f8117660b9ba04b7370e1e9108b40f73a10d447d46dc362dc28c5f609e29d41b9aa40dc1e8e17515f1806f3f920fbfa1cc66ad36d7115f83e2efba4a1055928333255c12fd5003982f57fc1c979c2fdf036b117a8cb45760c69f0bfed4955a44edb1551facb883ea6700288338e3f7d31ec69f00c2b06d00300e96c1fc3f31eb17c04ce0e6a296a3e669f066a34bd59678eb39d22b8d5366a5dd42e4142b597dbf911eeb691df4b4db4635464e86fdfc1d52b2bf5de521596fd2f41a7058b128b1260fa62181c5052e561602fee7022f573b90efd50191bf4e2683a5128ec2862703e1a4be848335fbbd5006966d8b9239bd10b47da7dc1280b03492f60f94966c4110d12fc833a212e182c2f629029980471b20f15b59c16c349664967b7f5b650daaeb62a078c4d1234553425de19e2856a708edd21bf5f080f7d5ebc899a1",
"expected_base64": "QklQWFhYAQEEgAAAMIAAAAGAAAAAgAAAAgJJANTvkCHLBZuPs1xt6bbbkZSaMoUn7eBkW+I3iZEAvV4+uKNve/MuAoEMFGZkdvKyihXNSZww+PmOkmY5oHZcAQECAwQFBgcICQoLDP1mAS9R27yNC1J5ON9lFsjW2tR9HO9q+3PNhGp8RrAcXEPaGUitkktj+BF2YLm6BLc3Dh6RCLQPc6ENRH1G3DYtwoxfYJ4p1BuapA3B6OF1FfGAbz+SD7+hzGatNtcRX4Pi77pKEFWSgzMlXBL9UAOYL1f8HJecL98DaxF6jLRXYMafC/7UlVpE7bFVH6y4g+pnACiDOOP30x7GnwDCsG0AMA6Wwfw/MesXwEzg5qKWo+Zp8GajS9WWeOs50iuNU2al3ULkFCtZfb+RHutpHfS020Y1Rk6G/fwdUrK/XeUhWW/S9BpwWLEosSYPpiGBxQUuVhYC/ucCL1c7kO/VAZG/TiaDpRKOwoYnA+GkvoSDNfu9UAaWbYuSOb0QtH2n3BKAsDSS9g+UlmxBENEvyDOiEuGCwvYpApmARxsg8VtZwWw0lmSWe39bZQ2q62KgeMTRI0VTQl3hnihWpwjt0hv18ID31evImaE="
},
{
"description": "Three keys, multiple derivation paths, BIP329 content",
@@ -47,8 +47,8 @@
],
"plaintext": "{\"type\":\"tx\",\"ref\":\"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd\",\"label\":\"Transaction\",\"origin\":\"wpkh([d34db33f/84'/0'/0'])\"}\n{\"type\":\"addr\",\"ref\":\"bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c\",\"label\":\"Address\"}\n{\"type\":\"pubkey\",\"ref\":\"0283409659355b6d1cc3c32decd5d561abaac86c37a353b52895a5e6c196d6f448\",\"label\":\"Public Key\"}\n{\"type\":\"input\",\"ref\":\"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd:0\",\"label\":\"Input\"}\n{\"type\":\"output\",\"ref\":\"f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd:1\",\"label\":\"Output\",\"spendable\":false}\n{\"type\":\"xpub\",\"ref\":\"xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8\",\"label\":\"Extended Public Key\"}\n{\"type\":\"tx\",\"ref\":\"f546156d9044844e02b181026a1a407abfca62e7ea1159f87bbeaa77b4286c74\",\"label\":\"Account #1 Transaction\",\"origin\":\"wpkh([d34db33f/84'/0'/1'])\"}",
"nonce": "deadbeefcafebabe12345678",
"expected": "4249505858580102040000000080000001000000028000000303800000548000000080000000032424c7f03a4b1ec573f64738c2a61ac0a9480750f6a641ff8dd1e85acf5b8008331aabbcc51126eeeaf8f870c92bdae98a5688af3a1d9ce71004980b7f6af6e96e5f3aab8b6dfe2f8c09da023a29f797d8333736fb7b7c64958d0ff4109ba93a01deadbeefcafebabe12345678fd9c03f6ebb8e2e9c02c5194e453edd274ec677e0dea5f18cda3e00f7cc4e8c8d4821bda377728eb2f6d2f69eef72070a2a7bc01cc720bb989346102076d475cab2802f1e3766526d2c0bfd257a8e424045cd91356e8789458d06aa055fe2ed0c42fb338b43ae394ae3f9807e1840171965708c89e3b42e68dc4bf84c51bcc8738475e8325e07398753327c1afa6a96032cf73b9387c0f4cb6825adf383c8135b63394b1372fb2752c5297a595099d91c59f25ad6e0d136013ce64d67a53fc88861bf1f558fc2c775644fba1bba9efd23f562f6edb9a2cb476c40cc2ae3f006d3f839a9607271b6eed6f58efcf435eb0cf79c12b5f3c4160f8c3de8e9e311c7698090be2c8e2a3ef702daf88612179e21ee4ac401cab342f7a1d1c141eed8f1a7c60d6dd34324ed6bd07e03ae596d7c04350698ce4592660b841aadf5c2a372b0fc57539094bc0af80febc92aa10578c0b35efd164f4c94217d2e0de72461bdea40d881858eb4b16f1c361fa98cfe0fcbc83787c492238ea745a84265e907c8a07d98852fef62a2a360b75c8b700b24d503a0e54260a1a94e0a980d69aa76e34ba8c304f85e0e7f4cfa3cf3c0c4ac8ddad1548bf20dabd4b316ed53903701677e78d3cfd46980acfe482110be8be64a27ce1dd4d7502338d087e9b86b7ca6144fc81a2a7b806a4e397dfb8d8ad9ea54130d9b46d2cd9002e372094399078e0bce1af9f2dfb5a69a16ec88e53ec9c6f34d784596afcece4d8abd33e937d9ea4ddf170088270cc4f59f68b978368833dc7713b0351da5f690991c841f17c42e7b4d89c35a821e110c4b2a9a1f0cfebd14cfb39d938569614ee62bb488049c6b7ed636dd90cfb00170dd80f4a6e6c9a45a3bed0fa1340ecddb538bb888fdaaa1680d711d6f94297a9f7ed3401cecb25b6779b4ba5415a343a95597cb85b074d8e19def182d8581fb7b4bc716ba887af1bd51a10c699f6ddfdb5439c7eac02d9220a0417489a79bbc6da4d10325317a6630da9303c433f261e0d36f977cea8113c7e4581e5d27f6607be0f9f7058fd6730d64377b7d1e70f4858974896e3ae9fbde9fb6eb66be4d0c36544cf8cfb80166875f1672f5aa4991951248414a54457e3f3bea0a2953d27de6d0a299cc06471d9f331ace87937b96547e7bcfa7ae972fd9e08cfa69fae42fe786f1cb1d5ee0bc3bbd9277f38b290eb2033f39dc65bfc963c60d3f01d493ab7546cd72504303f68bd5e376d2b6a2dc59d4c3cfbef490d1cdcb73065f756620528bb0bd92301a26f53f0c1ae61962416c746d1b3b38fd202",
"expected_base64": "QklQWFhYAQIEAAAAAIAAAAEAAAACgAAAAwOAAABUgAAAAIAAAAADJCTH8DpLHsVz9kc4wqYawKlIB1D2pkH/jdHoWs9bgAgzGqu8xREm7ur4+HDJK9rpilaIrzodnOcQBJgLf2r26W5fOquLbf4vjAnaAjop95fYMzc2+3t8ZJWND/QQm6k6Ad6tvu/K/rq+EjRWeP2cA/bruOLpwCxRlORT7dJ07Gd+DepfGM2j4A98xOjI1IIb2jd3KOsvbS9p7vcgcKKnvAHMcgu5iTRhAgdtR1yrKALx43ZlJtLAv9JXqOQkBFzZE1boeJRY0GqgVf4u0MQvszi0OuOUrj+YB+GEAXGWVwjInjtC5o3Ev4TFG8yHOEdegyXgc5h1MyfBr6apYDLPc7k4fA9MtoJa3zg8gTW2M5SxNy+ydSxSl6WVCZ2RxZ8lrW4NE2ATzmTWelP8iIYb8fVY/Cx3VkT7obup79I/Vi9u25ostHbEDMKuPwBtP4OalgcnG27tb1jvz0NesM95wStfPEFg+MPejp4xHHaYCQviyOKj73Atr4hhIXniHuSsQByrNC96HRwUHu2PGnxg1t00Mk7WvQfgOuWW18BDUGmM5FkmYLhBqt9cKjcrD8V1OQlLwK+A/rySqhBXjAs179Fk9MlCF9Lg3nJGG96kDYgYWOtLFvHDYfqYz+D8vIN4fEkiOOp0WoQmXpB8igfZiFL+9ioqNgt1yLcAsk1QOg5UJgoalOCpgNaap240uowwT4Xg5/TPo888DErI3a0VSL8g2r1LMW7VOQNwFnfnjTz9RpgKz+SCEQvovmSifOHdTXUCM40IfpuGt8phRPyBoqe4BqTjl9+42K2epUEw2bRtLNkALjcglDmQeOC84a+fLftaaaFuyI5T7JxvNNeEWWr87OTYq9M+k32epN3xcAiCcMxPWfaLl4Nogz3HcTsDUdpfaQmRyEHxfELntNicNagh4RDEsqmh8M/r0Uz7Odk4VpYU7mK7SIBJxrftY23ZDPsAFw3YD0pubJpFo77Q+hNA7N21OLuIj9qqFoDXEdb5Qpep9+00Ac7LJbZ3m0ulQVo0OpVZfLhbB02OGd7xgthYH7e0vHFrqIevG9UaEMaZ9t39tUOcfqwC2SIKBBdImnm7xtpNEDJTF6ZjDakwPEM/Jh4NNvl3zqgRPH5FgeXSf2YHvg+fcFj9ZzDWQ3e30ecPSFiXSJbjrp+96ftutmvk0MNlRM+M+4AWaHXxZy9apJkZUSSEFKVEV+PzvqCilT0n3m0KKZzAZHHZ8zGs6Hk3uWVH57z6euly/Z4Iz6afrkL+eG8csdXuC8O72Sd/OLKQ6yAz853GW/yWPGDT8B1JOrdUbNclBDA/aL1eN20rai3FnUw8++9JDRzctzBl91ZiBSi7C9kjAaJvU/DBrmGWJBbHRtGzs4/SAg=="
"expected": "4249505858580102040000000080000001000000028000000303800000548000000080000000032424c7f03a4b1ec573f64738c2a61ac0a9480750f6a641ff8dd1e85acf5b8008331aabbcc51126eeeaf8f870c92bdae98a5688af3a1d9ce71004980b7f6af6e96e5f3aab8b6dfe2f8c09da023a29f797d8333736fb7b7c64958d0ff4109ba93a01deadbeefcafebabe12345678fd9f03f6ebb86442b72e0385bf19aa8436ec3f245da31b4892e7a40c6fc6e19888d34dda627622bd7a6a7439e2f6757bf9f4ea55982e08bed2666155583a1057ac2951f2b574642a82c7b3d65cfee12c5459d01702e92f9606d529ea13b06390cd22f367fa4cabd7943e980ae68c0d6bdd144485c0704afd8a81ecc890518598607752984ae0229f22373bcafdaebe6432cf73b94a650a6c95db05a13a6e906efc74d7ef713cf43d7c02dee1c556d9d19c8c36fd6b1d516116cd21c77f5aba889844bffe5cb030261b0df0e8f2adedd47b1d3578998f31f96c9f1783e072406432c3c5d864795d5dec7859a8c13a07efb17b933a04760632b783c59e8578552dc8404fb297a6b1e76a2ea9806b237ce21be4a0111ffa677a7d1f1c441fead94b7c30d18c37671a82ed07e163b296dcc141506bdeb559273ab446f3d30c7d617f00902036591bc2f196e6a6dce7505e814b6aa1a32bb4f55e169ec2d82b2f03adfd52f61a0afa105cb68835a884d5b2a5ead33138197d7cae7749862f0ecc2ddc078c8958a8a32d716607749dbc5be11b046e525721514894b7f6d78191a06f67b9da324e89b0e0f8cba89939041acdd4a94149e82284b8106728c32b4d3d567eeacd63b32dcc58f3fed01975b1e11aa02ef08607324f7cdb177e9bd4ee9c310db8d1fde3fc05b7e19e8fe489fb9ef0403a8fe16a77890c2f622bcf6ac62cb4e0e2a8c47ffb0d36f639c38952bf9f3936d688096df0e8ef8eaedb6e96749af0dca67256872b9b094fe5c5dac3618e7d983f564c07e55f695bc89e10ad3b5ff3b0d49431e877e25392a7adb089d1b4af4ea928827211cc5eb978e911c0198ff3bd3c298346ac1a514e8b74051256a279869dc2ee057bcdfad82cb1f7bdc19126859f39ddad58ef95858b0151ec9623950bc456910d633c2ca5487baf6a507a8d1980eee3a7773dbbb18e4e35b987ee23c55223d7e6dedadfa274cb2edd64a270693c032aab4c8af2aa7e5141436b804134f2776459716b5e043bb92880cf536a5e5391e5d83b5316fc33837114df6169bf5b04ee8e990d1a49cc02d1b5ec9fe5b3ab27f23bbb94876a529f88fa80436473a16a275aa4c41d5723851ef6455de4a2bdf7f7946b728c3c082acc9160708ef737f8bc7160b46b43bdeef979bb24fe9d0d95a4cea140bf637952fc95e70683e4974426799c86e63b66bed8c62cbfd70661d3fd1a4136ad1f2f9b685a7b3773ba1b64217e2064dac57c30e080495c1b8bb32c6ea55e750128bb0ad95119a74fdddfb803b28298ab427ae226fc5db23aeafe5b",
"expected_base64": "QklQWFhYAQIEAAAAAIAAAAEAAAACgAAAAwOAAABUgAAAAIAAAAADJCTH8DpLHsVz9kc4wqYawKlIB1D2pkH/jdHoWs9bgAgzGqu8xREm7ur4+HDJK9rpilaIrzodnOcQBJgLf2r26W5fOquLbf4vjAnaAjop95fYMzc2+3t8ZJWND/QQm6k6Ad6tvu/K/rq+EjRWeP2fA/bruGRCty4Dhb8ZqoQ27D8kXaMbSJLnpAxvxuGYiNNN2mJ2Ir16anQ54vZ1e/n06lWYLgi+0mZhVVg6EFesKVHytXRkKoLHs9Zc/uEsVFnQFwLpL5YG1SnqE7BjkM0i82f6TKvXlD6YCuaMDWvdFESFwHBK/YqB7MiQUYWYYHdSmErgIp8iNzvK/a6+ZDLPc7lKZQpsldsFoTpukG78dNfvcTz0PXwC3uHFVtnRnIw2/WsdUWEWzSHHf1q6iJhEv/5csDAmGw3w6PKt7dR7HTV4mY8x+WyfF4PgckBkMsPF2GR5XV3seFmowToH77F7kzoEdgYyt4PFnoV4VS3IQE+yl6ax52ouqYBrI3ziG+SgER/6Z3p9HxxEH+rZS3ww0Yw3ZxqC7QfhY7KW3MFBUGvetVknOrRG89MMfWF/AJAgNlkbwvGW5qbc51BegUtqoaMrtPVeFp7C2CsvA639UvYaCvoQXLaINaiE1bKl6tMxOBl9fK53SYYvDswt3AeMiViooy1xZgd0nbxb4RsEblJXIVFIlLf214GRoG9nudoyTomw4PjLqJk5BBrN1KlBSegihLgQZyjDK009Vn7qzWOzLcxY8/7QGXWx4RqgLvCGBzJPfNsXfpvU7pwxDbjR/eP8Bbfhno/kifue8EA6j+Fqd4kML2Irz2rGLLTg4qjEf/sNNvY5w4lSv585NtaICW3w6O+OrttulnSa8NymclaHK5sJT+XF2sNhjn2YP1ZMB+VfaVvInhCtO1/zsNSUMeh34lOSp62widG0r06pKIJyEcxeuXjpEcAZj/O9PCmDRqwaUU6LdAUSVqJ5hp3C7gV7zfrYLLH3vcGRJoWfOd2tWO+VhYsBUeyWI5ULxFaRDWM8LKVIe69qUHqNGYDu46d3Pbuxjk41uYfuI8VSI9fm3trfonTLLt1konBpPAMqq0yK8qp+UUFDa4BBNPJ3ZFlxa14EO7kogM9Tal5TkeXYO1MW/DODcRTfYWm/WwTujpkNGknMAtG17J/ls6sn8ju7lIdqUp+I+oBDZHOhaidapMQdVyOFHvZFXeSivff3lGtyjDwIKsyRYHCO9zf4vHFgtGtDve75ebsk/p0NlaTOoUC/Y3lS/JXnBoPkl0QmeZyG5jtmvtjGLL/XBmHT/RpBNq0fL5toWns3c7obZCF+IGTaxXww4IBJXBuLsyxupV51ASi7CtlRGadP3d+4A7KCmKtCeuIm/F2yOur+Ww=="
},
{
"description": "Single key, proprietary content (3 bytes)",
@@ -61,7 +61,7 @@
"derivation_paths": [],
"plaintext": "706c61696e74657874",
"nonce": "000102030405060708090a0b",
"expected": "424950585858010001ff34b3411f78127b71ca2e3cc60d0fd71350ee557c37d71f4d81fb913461ae0001000102030405060708090a0b2803da142accb6215cecfe50629224496c4d35cfc7ee64e906e77cc3398689748c325907c7d5dafef3",
"expected_base64": "QklQWFhYAQAB/zSzQR94Entxyi48xg0P1xNQ7lV8N9cfTYH7kTRhrgABAAECAwQFBgcICQoLKAPaFCrMtiFc7P5QYpIkSWxNNc/H7mTpBud8wzmGiXSMMlkHx9Xa/vM="
"expected": "424950585858010001ff34b3411f78127b71ca2e3cc60d0fd71350ee557c37d71f4d81fb913461ae0001000102030405060708090a0b2903da142accb6045beaab0565952b463f1f36cdc4ec6be60508154f5c503843c8d795954351d42469b1",
"expected_base64": "QklQWFhYAQAB/zSzQR94Entxyi48xg0P1xNQ7lV8N9cfTYH7kTRhrgABAAECAwQFBgcICQoLKQPaFCrMtgRb6qsFZZUrRj8fNs3E7GvmBQgVT1xQOEPI15WVQ1HUJGmx"
}
]