[STABLE] Convert URLSafeb64 to Crockford32.

This commit is contained in:
Netscape Navigator 2020-04-05 20:01:59 -05:00
parent 30d6690b1c
commit dd455ff1df
9 changed files with 184 additions and 59 deletions

View File

@ -44,7 +44,7 @@ Eg: `pigeon identity show` becomes `./pigeon-cli show`.
- [X] Don't double-ingest messages. It will screw up indexes.
- [X] 100% test coverage
- [X] Implement pigeon message find-all for peer feed. I will need to add index for `author => message_count`
- [ ] Switch to Crockford base32- Simplifies support for legacy systems. Easy to implement.
- [X] Switch to Crockford base32- Simplifies support for legacy systems. Easy to implement.
- [ ] Need a way of importing / exporting a feeds blobs. (see "Bundle Brainstorming" below)
- [ ] Need a way of adding a peers messages / blobs to bundles. (see "Bundle Brainstorming" below)
- [ ] refactor `Bundle.create` to use `message find-all`.
@ -88,7 +88,7 @@ Here's how we will support that:
* All messages are expected to be sorted by depth
* Messages from multiple authors may be included in a single bundle, but the messages must appear in the correct order with regards to the `depth` field.
3. Blobs are stored in a very specific hierarchy to maintain FAT compatibility:
* `bundle_x/blobs/sha256/NNNNN/NNNNNNNN/NNNNNNNN/NNNNNNNN.NNN` where `N` is a character of a blob's multihash
* `blobs/sha256/AAAAAAAA/BBBBBBBB/CCCCCCCC/DDDDDDDD/EEEEEEEE/FFFFFFFF/G.HHH`
Additional notes:

View File

@ -17,23 +17,24 @@ echo "Creating kitty cat blobs:"
cat scratchpad.jpg | ./pigeon-cli blob set
echo "Adding peers:"
./pigeon-cli peer add @_TlC2z3FT4fimecC4eytrBhOwhLUZsVBZEZriBO9cWs=.ed25519
./pigeon-cli peer add @28FyT7evjcYrrwngr8G2V1HZ0ODK0VPsFctDEZwfZJc=.ed25519
./pigeon-cli peer add @ExA5Fmld-vMDjROfN30G5pmSp_261QILFP3qe64iDn8=.ed25519
./pigeon-cli peer add @galdahnB3L2DE2cTU0Me54IpIUKVEgKmBwvZVtWJccg=.ed25519
./pigeon-cli peer add @I6cN_IE9iPmH05xXnlI_WyLqnrAoKv1plUKWfiGSSK4=.ed25519
./pigeon-cli peer add @JnCKDs5tIzY9OF--GFT94Qj5jHtK7lTxqCt1tmPcwjM=.ed25519
./pigeon-cli peer add @q-_9BTnTThvW2ZGkmy8D3j-hW9ON2PNa3nwbCQgRw-g=.ed25519
./pigeon-cli peer add @VIim19-PzaavRICicQg4c4z08SoWTa1tr2e-kfhmm0Y=.ed25519
echo "FIX THESE!!! THEY ARE STILL b64"
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer add @CHANGE_THIS_TO_BASE_32.ed25519
echo "removing peers:"
./pigeon-cli peer remove @mYWRsosFtoxvn3GURmmE0FVtOWPcYv4ovXIAqy49sH4=.ed25519
./pigeon-cli peer remove @Nf7ZU9fLwukgfRfCunDtfjXRlhitiR-DcTmlNhB8lwk=.ed25519
./pigeon-cli peer remove @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer remove @CHANGE_THIS_TO_BASE_32.ed25519
echo "blocking peers:"
./pigeon-cli peer block @q-_9BTnTThvW2ZGkmy8D3j-hW9ON2PNa3nwbCQgRw-g=.ed25519
./pigeon-cli peer block @VIim19-PzaavRICicQg4c4z08SoWTa1tr2e-kfhmm0Y=.ed25519
./pigeon-cli peer block @VMSPmcYm1qXJy27V_MH1HGA7Mr3sOMikKOwfxT26hQg=.ed25519
./pigeon-cli peer block @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer block @CHANGE_THIS_TO_BASE_32.ed25519
./pigeon-cli peer block @CHANGE_THIS_TO_BASE_32.ed25519
echo "listing all peers:"
./pigeon-cli peer all
@ -54,13 +55,13 @@ echo "...string with quotes"
./pigeon-cli draft append key3 "my_value3"
echo "...draft ID"
./pigeon-cli draft append key4 \%jvKh9yoiEJaePzoWCF1nnqpIlPgTk9FHEtqczQbvzGM=.sha256
./pigeon-cli draft append key4 \%CHANGE_THIS_TO_BASE_32.sha256
echo "...blob"
./pigeon-cli draft append key5 \&29f3933302c49c60841d7620886ce54afc68630242aee6ff683926d2465e6ca3.sha256
./pigeon-cli draft append key5 \&CHANGE_THIS_TO_BASE_32.sha256
echo "...identity"
./pigeon-cli draft append key6 \@galdahnB3L2DE2cTU0Me54IpIUKVEgKmBwvZVtWJccg=.ed25519
./pigeon-cli draft append key6 \@CHANGE_THIS_TO_BASE_32.ed25519
echo "== show draft"
./pigeon-cli draft show

View File

@ -1,27 +1,89 @@
author @jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519
kind strings
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 1db28f82-904c-4a31-a28a-b2da5f7be398
prev NONE
depth 0
example_1.1:"This is a string."
example=_.:"A second string."
foo:"bar"
signature hCPIr8xdWIIjtiJp1Sj64v0AgP_ypeDTtZrs8MRHw7w_bMJ7Hx6rSbDOgVUmdIegqD-gEk2WI2S_dUKQ8jg7CQ==.sig.ed25519
signature FZ8FJRCXX1PPN43VCD45PFWANJGYPZVA9JQ4NHBQGBFBYJG6CA31NFEXK67Z90R2DBS3NGT8M0CBYG4CMDKCBSRFW838J56T4F3K40G.sig.ed25519
author @jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519
kind d
prev %83td57rcLLFEM7-6HPXDcniwXc4QQo9nyyWn0zhXJGg=.sha256
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 375de134-161d-47c8-8ff6-e80776155d39
prev %4541G6XQ9VBG8N0VXCF4K04F0AX1JQNJD3NCPV0JYHQJV0KVJW5G.sha256
depth 1
e:&ZGKl9RdLU3Avwlr-Z6j5op9XJhCmW6_v_2J1MVUvCW8=.sha256
foo:"810c05f8-d594-493a-a540-21d5c1cb52c6"
signature FpfdovnJttEZkl-SMO83Nq8gqsfnB4NvtZ4YRdhxKQDK30l1OKpPw5GeFiOEdTJK8WPncq_m0eBHPP84hJ0BDg==.sig.ed25519
signature 5DVXT2X4T5XRQ99FB6PAJ19F3QA2V37QWCZADYQDGGH9NYG1JCTTCH5ETGJCPQZXT3A93GASGYAZ93PN836G15R7MM8KM1KK1HX501G.sig.ed25519
author @jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519
kind g
prev %vVMEqvHHjqubE36olIVStUp-vq0T1e2UsvKdv57kmLU=.sha256
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 483290a3-e79d-4d03-97d0-85439bd716f3
prev %4D9R2SR4PCQEZ542CPXPS2ZHPRSSVXEVENFF91TP82FA45Y1RE5G.sha256
depth 2
me_myself_and_i:@jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519
foo:"a88b270e-fa4b-40b7-ba35-fa498f9adfc6"
signature 4ARYLytFIcU-TAYoybL3za9cyiTX_5Jt04ueKmPjZVYA6jST6KyQXvUo57MMjfjsdAmXeV-2Nw2Jbx8HaeTqBg==.sig.ed25519
signature 27B87NF1R6ZCKWTD49XXC5DAVJD1TN7K0JJA2RFTNG1QSSEBS9YX71YPZ5A2J7WP8B0QZH259B6108CJSX4GY8X8N8B1Y2V2SSWGR08.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 4f3b925e-a8fd-4780-a357-1d67eca03459
prev %1N8Q1NZKW29CPFTTGNNVD8DZE99Q0KNF5JYN3VW9545S5DB69KKG.sha256
depth 3
foo:"bar"
signature 15Z9J3MAB1TX7BJPPKRA8NK097J89G1B6QNAD7J5GV6P1WC3EX3SXJFWE4D0GFQJFA0HR74RNEYSFSAHNHBKBMK0Z7C6NY7HWASQG38.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 8aeebbd8-3317-4de0-a770-1abe390af126
prev %JTEFPAT798AGDPKPHRMAV36GZAFNEBEMR5ZA9YHNJX0W9HFSP8EG.sha256
depth 4
foo:"123"
signature XMGXES56E3EWFXXYPCD81SPNQPZ0NDXDQ0X366R3AHEF75GJVR74RW6F6HNDRWBJ2Z1SSC45N0MTK92MDHS1BXSMC3QJTQBEPN8TW0R.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 80c5cd4d-f9b6-447f-9d0e-1065ee563d7f
prev %8X06YEJEP256CQ0M2A04ARW68ABAD4EKSJE76XDF5CDAMJ5Q5NWG.sha256
depth 5
foo:"bar"
signature HCP8ECPYW1J9QW7HZKNYEJSG5B59NKBZX4YDYQCW9PWTRECQGT8CR2VJ63WBGE5PMQFWHQJQGS9FQREMVSTNTVQEQRMP242HJFHCP10.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind dc2da357-99bb-44ab-811b-1e305b73b8f9
prev %669MW82Y549827TWM70AZV7K2JS9RP96W8AMGYARFH7YDENJ0M9G.sha256
depth 6
foo:"123"
signature KXFCZVMWQHDP9D950AMFXN6MXNYZ3KTMZ30Y29N3BEE6Y9ZSM7BE2SJKKCDMVFSST17EJKFZJ173ZDCC9ZTCM6GJASE2JB3RAW8ZY0R.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind e6416139-2e25-4b0a-95c2-d8fc2bece4cf
prev %HBXCMMYD7Y2NGSB7X05X1HQ21YYJZEN7D5RKV6KW83KN6R0RCXK0.sha256
depth 7
foo:"123"
signature BMGDDWQ4S9XVZZHMWFHJCVTAQXDHEYC2MX05DK7N0KDW2EP36AVDS76YS2ZNNR1K3VHN6EEJHW5SEF72QXB8QJT330RQNXTXFDPX81G.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind 1fbf93de-e1fb-41ce-9f23-b275b5aa8578
prev %DHTGB2NFWHQWDV3PPZVP2DV8CGXAAVA12KV0E7VQZE6T6STHGJC0.sha256
depth 8
foo:"bar"
signature E4TZJVQ3ZHY9KBB681FDZX8F516NQ5S02R2SCMKNGY15AFY972X75C27VVZ5BV31ZRTKK6YWW1R76W43FSSCBEPRFWJ5TG39TJMGP08.sig.ed25519
author @VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519
kind aca35bce-12b4-4c67-8e06-f62e5b97c7aa
prev %3AG0M4483SPP3GCERE25RWZF50Y8CYCJANC2SRNHT4X1N1S37110.sha256
depth 9
foo:"123"
signature 3NWJ65FGX914DDHWSF17BMAWKMDDMP4D0661WZK0Y928RB927N8NM2CGK9Y5P8RYGQ2FRGETSQYY5HQX2SKBT81ETRKVB3X56YBGC1G.sig.ed25519

View File

@ -20,7 +20,7 @@ RSpec.describe Pigeon::Draft do
"prev DRAFT",
"depth DRAFT",
"\na:\"bar\"",
"b:&ZGKl9RdLU3Avwlr-Z6j5op9XJhCmW6_v_2J1MVUvCW8=.sha256",
"b:&CHHABX8Q9D9Q0BY2BBZ6FA7SMAFNE9GGMSDTZVZZC9TK2N9F15QG.sha256",
"\n",
].join("\n")

View File

@ -2,33 +2,95 @@ require "spec_helper"
RSpec.describe Pigeon::Lexer do
EXPECTED_TOKENS1 = [
[:AUTHOR, "@jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519"],
[:KIND, "strings"],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "1db28f82-904c-4a31-a28a-b2da5f7be398"],
[:PREV, "NONE"],
[:DEPTH, 0],
[:HEADER_END],
[:BODY_ENTRY, "example_1.1", "\"This is a string.\""],
[:BODY_ENTRY, "example=_.", "\"A second string.\""],
[:BODY_ENTRY, "foo", "\"bar\""],
[:BODY_END],
[:SIGNATURE, "hCPIr8xdWIIjtiJp1Sj64v0AgP_ypeDTtZrs8MRHw7w_bMJ7Hx6rSbDOgVUmdIegqD-gEk2WI2S_dUKQ8jg7CQ==.sig.ed25519"],
[:SIGNATURE, "FZ8FJRCXX1PPN43VCD45PFWANJGYPZVA9JQ4NHBQGBFBYJG6CA31NFEXK67Z90R2DBS3NGT8M0CBYG4CMDKCBSRFW838J56T4F3K40G.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519"],
[:KIND, "d"],
[:PREV, "%83td57rcLLFEM7-6HPXDcniwXc4QQo9nyyWn0zhXJGg=.sha256"],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "375de134-161d-47c8-8ff6-e80776155d39"],
[:PREV, "%4541G6XQ9VBG8N0VXCF4K04F0AX1JQNJD3NCPV0JYHQJV0KVJW5G.sha256"],
[:DEPTH, 1],
[:HEADER_END],
[:BODY_ENTRY, "e", "&ZGKl9RdLU3Avwlr-Z6j5op9XJhCmW6_v_2J1MVUvCW8=.sha256"],
[:BODY_ENTRY, "foo", "\"810c05f8-d594-493a-a540-21d5c1cb52c6\""],
[:BODY_END],
[:SIGNATURE, "FpfdovnJttEZkl-SMO83Nq8gqsfnB4NvtZ4YRdhxKQDK30l1OKpPw5GeFiOEdTJK8WPncq_m0eBHPP84hJ0BDg==.sig.ed25519"],
[:SIGNATURE, "5DVXT2X4T5XRQ99FB6PAJ19F3QA2V37QWCZADYQDGGH9NYG1JCTTCH5ETGJCPQZXT3A93GASGYAZ93PN836G15R7MM8KM1KK1HX501G.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519"],
[:KIND, "g"],
[:PREV, "%vVMEqvHHjqubE36olIVStUp-vq0T1e2UsvKdv57kmLU=.sha256"],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "483290a3-e79d-4d03-97d0-85439bd716f3"],
[:PREV, "%4D9R2SR4PCQEZ542CPXPS2ZHPRSSVXEVENFF91TP82FA45Y1RE5G.sha256"],
[:DEPTH, 2],
[:HEADER_END],
[:BODY_ENTRY, "me_myself_and_i", "@jdiXWunmWiex-dHONMlj7b1HMMFNjbpAj1t9oInbugY=.ed25519"],
[:BODY_ENTRY, "foo", "\"a88b270e-fa4b-40b7-ba35-fa498f9adfc6\""],
[:BODY_END],
[:SIGNATURE, "4ARYLytFIcU-TAYoybL3za9cyiTX_5Jt04ueKmPjZVYA6jST6KyQXvUo57MMjfjsdAmXeV-2Nw2Jbx8HaeTqBg==.sig.ed25519"],
[:SIGNATURE, "27B87NF1R6ZCKWTD49XXC5DAVJD1TN7K0JJA2RFTNG1QSSEBS9YX71YPZ5A2J7WP8B0QZH259B6108CJSX4GY8X8N8B1Y2V2SSWGR08.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "4f3b925e-a8fd-4780-a357-1d67eca03459"],
[:PREV, "%1N8Q1NZKW29CPFTTGNNVD8DZE99Q0KNF5JYN3VW9545S5DB69KKG.sha256"],
[:DEPTH, 3],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"bar\""],
[:BODY_END],
[:SIGNATURE, "15Z9J3MAB1TX7BJPPKRA8NK097J89G1B6QNAD7J5GV6P1WC3EX3SXJFWE4D0GFQJFA0HR74RNEYSFSAHNHBKBMK0Z7C6NY7HWASQG38.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "8aeebbd8-3317-4de0-a770-1abe390af126"],
[:PREV, "%JTEFPAT798AGDPKPHRMAV36GZAFNEBEMR5ZA9YHNJX0W9HFSP8EG.sha256"],
[:DEPTH, 4],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"123\""],
[:BODY_END],
[:SIGNATURE, "XMGXES56E3EWFXXYPCD81SPNQPZ0NDXDQ0X366R3AHEF75GJVR74RW6F6HNDRWBJ2Z1SSC45N0MTK92MDHS1BXSMC3QJTQBEPN8TW0R.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "80c5cd4d-f9b6-447f-9d0e-1065ee563d7f"],
[:PREV, "%8X06YEJEP256CQ0M2A04ARW68ABAD4EKSJE76XDF5CDAMJ5Q5NWG.sha256"],
[:DEPTH, 5],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"bar\""],
[:BODY_END],
[:SIGNATURE, "HCP8ECPYW1J9QW7HZKNYEJSG5B59NKBZX4YDYQCW9PWTRECQGT8CR2VJ63WBGE5PMQFWHQJQGS9FQREMVSTNTVQEQRMP242HJFHCP10.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "dc2da357-99bb-44ab-811b-1e305b73b8f9"],
[:PREV, "%669MW82Y549827TWM70AZV7K2JS9RP96W8AMGYARFH7YDENJ0M9G.sha256"],
[:DEPTH, 6],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"123\""],
[:BODY_END],
[:SIGNATURE, "KXFCZVMWQHDP9D950AMFXN6MXNYZ3KTMZ30Y29N3BEE6Y9ZSM7BE2SJKKCDMVFSST17EJKFZJ173ZDCC9ZTCM6GJASE2JB3RAW8ZY0R.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "e6416139-2e25-4b0a-95c2-d8fc2bece4cf"],
[:PREV, "%HBXCMMYD7Y2NGSB7X05X1HQ21YYJZEN7D5RKV6KW83KN6R0RCXK0.sha256"],
[:DEPTH, 7],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"123\""],
[:BODY_END],
[:SIGNATURE, "BMGDDWQ4S9XVZZHMWFHJCVTAQXDHEYC2MX05DK7N0KDW2EP36AVDS76YS2ZNNR1K3VHN6EEJHW5SEF72QXB8QJT330RQNXTXFDPX81G.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "1fbf93de-e1fb-41ce-9f23-b275b5aa8578"],
[:PREV, "%DHTGB2NFWHQWDV3PPZVP2DV8CGXAAVA12KV0E7VQZE6T6STHGJC0.sha256"],
[:DEPTH, 8],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"bar\""],
[:BODY_END],
[:SIGNATURE, "E4TZJVQ3ZHY9KBB681FDZX8F516NQ5S02R2SCMKNGY15AFY972X75C27VVZ5BV31ZRTKK6YWW1R76W43FSSCBEPRFWJ5TG39TJMGP08.sig.ed25519"],
[:MESSAGE_END],
[:AUTHOR, "@VG44QCHKA38E7754RQ5DAFBMMD2CCZQRZ8BR2J4MRHHGVTHGW670.ed25519"],
[:KIND, "aca35bce-12b4-4c67-8e06-f62e5b97c7aa"],
[:PREV, "%3AG0M4483SPP3GCERE25RWZF50Y8CYCJANC2SRNHT4X1N1S37110.sha256"],
[:DEPTH, 9],
[:HEADER_END],
[:BODY_ENTRY, "foo", "\"123\""],
[:BODY_END],
[:SIGNATURE, "3NWJ65FGX914DDHWSF17BMAWKMDDMP4D0661WZK0Y928RB927N8NM2CGK9Y5P8RYGQ2FRGETSQYY5HQX2SKBT81ETRKVB3X56YBGC1G.sig.ed25519"],
[:MESSAGE_END],
]

View File

@ -7,18 +7,18 @@ RSpec.describe Pigeon::LocalIdentity do
let(:kp) { Pigeon::LocalIdentity.new(FAKE_SEED) }
HELLO_SIGNATURE = [
"erGeJdWiWzDJpKJdkLSc5uBc90j5t90aPcbCehLp6Xg",
"tF8f_2AYWXl6ou4oquvEOQVMgrTGuN-q6F9tTW-V5Bw",
"==.sig.ed25519",
"FARSW9ENM9DK1JD4M9ES1D4WWVG5SXT8Z6VXT6HXRV17M4Q9X5W2",
"T5Y7ZZC0C5JYBTMBQ2HAQBRGWGAK42PK3BHQXAX1FPTKBFJQJ1R",
".sig.ed25519",
].join("")
it "signs arbitrary data" do
expect(kp.sign("hello")).to eq(HELLO_SIGNATURE)
end
it "generates a pair from a seed" do
x = "@7n_g0ca9FFWvMkXy2TMwM7bdMn6tNiEHKzrFX-CzAmQ=.ed25519"
x = "@XSZY1ME6QMA5BBSJ8QSDJCSG6EVDTCKYNMV221SB7B2NZR5K09J0.ed25519"
expect(kp.public_key).to eq(x)
y = "FbGoHeEcePDG3Evemrc-hm-S77cXKf8BRQgkYinJggg="
y = "2PRTG7F13HWF1HPW9FF9NDSYGSQS5VXQ2WMZY0A510J64AE9G840"
expect(kp.private_key).to eq(y)
end

View File

@ -50,7 +50,7 @@ RSpec.describe Pigeon::Message do
"depth 0",
"",
"a:\"bar\"",
"b:&ZGKl9RdLU3Avwlr-Z6j5op9XJhCmW6_v_2J1MVUvCW8=.sha256",
"b:&CHHABX8Q9D9Q0BY2BBZ6FA7SMAFNE9GGMSDTZVZZC9TK2N9F15QG.sha256",
"",
"signature __SIGNATURE__",
].join("\n")

View File

@ -23,14 +23,14 @@ RSpec.describe Pigeon::Lexer do
it "parses tokens" do
results = Pigeon::Parser.parse(tokens)
expect(results.length).to eq(3)
expect(results.length).to eq(10)
expect(results.first).to be_kind_of(Pigeon::Message)
expect(results.last).to be_kind_of(Pigeon::Message)
end
it "ingests and reconstructs a bundle" do
messages = Pigeon::Bundle.ingest("./spec/fixtures/normal.bundle")
expect(messages.length).to eq(3)
expect(messages.length).to eq(10)
expect(messages.map(&:class).uniq).to eq([Pigeon::Message])
re_bundled = messages.map(&:render).join("\n\n") + "\n"
expect(re_bundled).to eq(example_bundle)

View File

@ -2,8 +2,8 @@ require "spec_helper"
RSpec.describe Pigeon::Storage do
LOGO_BLOB = File.read("./logo.png")
IDS = %w(@_TlC2z3FT4fimecC4eytrBhOwhLUZsVBZEZriBO9cWs=.ed25519
@28FyT7evjcYrrwngr8G2V1HZ0ODK0VPsFctDEZwfZJc=.ed25519)
IDS = %w(@ZMWM5PSXRN7RFRMSWW1E3V5DNGC4XGGJTHKCAGB48SNRG4XXE5NG.ed25519
@VF0Q4KXQNY6WCAXF17GAZGDPAX8XKM70SB8N7V0NSD1H370ZCJBG.ed25519)
before(:each) do
Pigeon::Storage.reset