diff --git a/src/peer/identity.js b/src/peer/identity.js index 7cb1a1d..6726fe8 100644 --- a/src/peer/identity.js +++ b/src/peer/identity.js @@ -1,12 +1,11 @@ const thenifyAll = require('thenify-all') const path = require('path') -const fs = thenifyAll(require('fs'), {}, ['readFile']) +const fs = thenifyAll(require('fs'), {}, ['readFile', 'writeFile']) const PeerId = thenifyAll(require('peer-id'), {}, ['createFromPrivKey', 'create']) const PeerInfo = require('peer-info') -const Crypto = require('libp2p-crypto') +const Crypto = thenifyAll(require('libp2p-crypto'), {}, ['unmarshalPrivateKey']) const Multiaddr = require('multiaddr') const b58 = require('bs58') -const { b58MultihashForBuffer } = require('../common/util') const NODE_KEY_TYPE = 'RSA' const NODE_KEY_BITS = 2048 @@ -129,7 +128,20 @@ function publisherKeyFromB58String (key58: string): PublicSigningKey { // eslint } function publisherKeyToB58String (key: PublicSigningKey): string { // eslint-disable-line no-undef - return b58MultihashForBuffer(key.bytes) + return b58.encode(key.bytes) +} + +function loadPublisherId (filename: string): Promise { + return fs.readFile(filename) + .then(bytes => Crypto.unmarshalPrivateKey(bytes)) + .then(privateKey => ({ + id58: b58.encode(privateKey.public.bytes), + privateKey + })) +} + +function savePublisherId (publisherId: PublisherId, filename: string): Promise { + return fs.writeFile(filename, publisherId.privateKey.bytes) } function signBuffer ( @@ -164,6 +176,8 @@ module.exports = { loadOrGenerateIdentity, inflateMultiaddr, generatePublisherId, + loadPublisherId, + savePublisherId, publisherKeyFromB58String, publisherKeyToB58String, signBuffer, diff --git a/test/resources/generate_test_publisher_ids.js b/test/resources/generate_test_publisher_ids.js new file mode 100644 index 0000000..c4ff2d9 --- /dev/null +++ b/test/resources/generate_test_publisher_ids.js @@ -0,0 +1,19 @@ +const path = require('path') +const mkdirp = require('mkdirp') +const {generatePublisherId, savePublisherId} = require('../../lib/peer/identity') + +const NUM_IDS = 20 +const outputDir = path.join(__dirname, 'publisher_ids') +mkdirp.sync(outputDir) + +const promises = [] +for (let i = 0; i < NUM_IDS; i++) { + promises.push( + generatePublisherId().then(id => + savePublisherId(id, path.join(outputDir, `${id.id58}.id`))) + ) +} + +Promise.all(promises).then(ids => { + console.log(`wrote ${ids.length} ids to ${outputDir}`) +}) diff --git a/test/resources/publisher_ids/4XTTM2UhNoDF1EfwonksnNN1zRGcZCMFutDRMtXYgciwiLzCf.id b/test/resources/publisher_ids/4XTTM2UhNoDF1EfwonksnNN1zRGcZCMFutDRMtXYgciwiLzCf.id new file mode 100644 index 0000000..852abd5 --- /dev/null +++ b/test/resources/publisher_ids/4XTTM2UhNoDF1EfwonksnNN1zRGcZCMFutDRMtXYgciwiLzCf.id @@ -0,0 +1 @@ +`\tNiaɥ6u&"ӿE*/}*#W؊(բ4/}*#W؊(բ4 \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTM33j1mHcbg5ctzCmsmvaiUCixX5jxTbkKHm2vCokC6uxw.id b/test/resources/publisher_ids/4XTTM33j1mHcbg5ctzCmsmvaiUCixX5jxTbkKHm2vCokC6uxw.id new file mode 100644 index 0000000..4675604 --- /dev/null +++ b/test/resources/publisher_ids/4XTTM33j1mHcbg5ctzCmsmvaiUCixX5jxTbkKHm2vCokC6uxw.id @@ -0,0 +1 @@ +`4̌6FEQKX+_O'mZ4I7}:9%'Y^>>TZ4I7}:9%'Y^>>T \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTM3NVNm4VryWP91VXdEeoDXC2NzZkKRvUmPMnb1JdosJFk.id b/test/resources/publisher_ids/4XTTM3NVNm4VryWP91VXdEeoDXC2NzZkKRvUmPMnb1JdosJFk.id new file mode 100644 index 0000000..30989c5 Binary files /dev/null and b/test/resources/publisher_ids/4XTTM3NVNm4VryWP91VXdEeoDXC2NzZkKRvUmPMnb1JdosJFk.id differ diff --git a/test/resources/publisher_ids/4XTTM6UEBfKSWUnC4KERbW8hesAAAGgrZcu68AXqihsFvU8w6.id b/test/resources/publisher_ids/4XTTM6UEBfKSWUnC4KERbW8hesAAAGgrZcu68AXqihsFvU8w6.id new file mode 100644 index 0000000..4a609fc --- /dev/null +++ b/test/resources/publisher_ids/4XTTM6UEBfKSWUnC4KERbW8hesAAAGgrZcu68AXqihsFvU8w6.id @@ -0,0 +1 @@ +`-NxVڅ]NlSP]u]F'xO40revÌw*A7;YO40revÌw*A7;Y \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTM6UNDgjn7Y6FqnGyKiRf7NmqKzi7ofeh3ZRzFGmv5tkyQ.id b/test/resources/publisher_ids/4XTTM6UNDgjn7Y6FqnGyKiRf7NmqKzi7ofeh3ZRzFGmv5tkyQ.id new file mode 100644 index 0000000..a4f0ecc --- /dev/null +++ b/test/resources/publisher_ids/4XTTM6UNDgjn7Y6FqnGyKiRf7NmqKzi7ofeh3ZRzFGmv5tkyQ.id @@ -0,0 +1 @@ +``Q8➭)^=ˢYhd[ф`O=EJL4­,^3PK겑.O=EJL4­,^3PK겑. \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTM7xSyXgsrwG83aXEKt5Edp9LFmqxCxum1ABXAXDw5QHHy.id b/test/resources/publisher_ids/4XTTM7xSyXgsrwG83aXEKt5Edp9LFmqxCxum1ABXAXDw5QHHy.id new file mode 100644 index 0000000..caa342b Binary files /dev/null and b/test/resources/publisher_ids/4XTTM7xSyXgsrwG83aXEKt5Edp9LFmqxCxum1ABXAXDw5QHHy.id differ diff --git a/test/resources/publisher_ids/4XTTMATDw8fXWT5BGGaoc4A2sEbnLmMYBbekYnznDJ9K8c2cg.id b/test/resources/publisher_ids/4XTTMATDw8fXWT5BGGaoc4A2sEbnLmMYBbekYnznDJ9K8c2cg.id new file mode 100644 index 0000000..e228b4f --- /dev/null +++ b/test/resources/publisher_ids/4XTTMATDw8fXWT5BGGaoc4A2sEbnLmMYBbekYnznDJ9K8c2cg.id @@ -0,0 +1,2 @@ +`4sG +3RaJHɦgeqkZy6F>R \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMAhtTw2zgTVa5XFxHKeXcJGftdCVmsGR5zYzGspdLr2qf.id b/test/resources/publisher_ids/4XTTMAhtTw2zgTVa5XFxHKeXcJGftdCVmsGR5zYzGspdLr2qf.id new file mode 100644 index 0000000..e40527a --- /dev/null +++ b/test/resources/publisher_ids/4XTTMAhtTw2zgTVa5XFxHKeXcJGftdCVmsGR5zYzGspdLr2qf.id @@ -0,0 +1 @@ +`Ibe (.3md>=u?7H5Î"@^7$YB `ъA.z~ B"@^7$YB `ъA.z~ B \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMB2cFTq23PTFGEdeT93cLdNptcSUekShxoUp5vzkjbkA4.id b/test/resources/publisher_ids/4XTTMB2cFTq23PTFGEdeT93cLdNptcSUekShxoUp5vzkjbkA4.id new file mode 100644 index 0000000..8c05688 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMB2cFTq23PTFGEdeT93cLdNptcSUekShxoUp5vzkjbkA4.id @@ -0,0 +1,2 @@ +` +EZΦ,t!MjhB#גxfZ`]  ~궱ML=xfZ`]  ~궱ML= \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMBauYYKRkmWLyDwdU2sb4JgQX7VoZwwkPpmeFqrQoWWt7.id b/test/resources/publisher_ids/4XTTMBauYYKRkmWLyDwdU2sb4JgQX7VoZwwkPpmeFqrQoWWt7.id new file mode 100644 index 0000000..3444771 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMBauYYKRkmWLyDwdU2sb4JgQX7VoZwwkPpmeFqrQoWWt7.id @@ -0,0 +1 @@ +`f|S5rB ֮IsQs4Gm4)?[shN8CuBa˰4)?[shN8CuBa˰ \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMCh4xe8E49486DUFko3cmqak3vrymKd5kMUBAVhMbxUkj.id b/test/resources/publisher_ids/4XTTMCh4xe8E49486DUFko3cmqak3vrymKd5kMUBAVhMbxUkj.id new file mode 100644 index 0000000..cd16780 Binary files /dev/null and b/test/resources/publisher_ids/4XTTMCh4xe8E49486DUFko3cmqak3vrymKd5kMUBAVhMbxUkj.id differ diff --git a/test/resources/publisher_ids/4XTTMDi5msCJgo8GFAHvZkE57cCK4QCPRQSrUSQcPMqQexT3E.id b/test/resources/publisher_ids/4XTTMDi5msCJgo8GFAHvZkE57cCK4QCPRQSrUSQcPMqQexT3E.id new file mode 100644 index 0000000..3bdfe1c --- /dev/null +++ b/test/resources/publisher_ids/4XTTMDi5msCJgo8GFAHvZkE57cCK4QCPRQSrUSQcPMqQexT3E.id @@ -0,0 +1 @@ +`Iu^ LLyg9 O܋ݹ'ž; vv-VIZ8=gT읟qž; vv-VIZ8=gT읟q \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMEj74YR3oT18Uh1ZR1DbWpG5BXftvcSnyrwC6JbgS9AcG.id b/test/resources/publisher_ids/4XTTMEj74YR3oT18Uh1ZR1DbWpG5BXftvcSnyrwC6JbgS9AcG.id new file mode 100644 index 0000000..c93fad0 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMEj74YR3oT18Uh1ZR1DbWpG5BXftvcSnyrwC6JbgS9AcG.id @@ -0,0 +1 @@ +` (FҊĎ PmFtaam+@Wt#7ͽe`AuYqWt#7ͽe`AuYq \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMF7HGrVmmnFATLrCMwboCDxnnm6CPcC8dyE8Tigfb5kYh.id b/test/resources/publisher_ids/4XTTMF7HGrVmmnFATLrCMwboCDxnnm6CPcC8dyE8Tigfb5kYh.id new file mode 100644 index 0000000..532391b --- /dev/null +++ b/test/resources/publisher_ids/4XTTMF7HGrVmmnFATLrCMwboCDxnnm6CPcC8dyE8Tigfb5kYh.id @@ -0,0 +1,2 @@ +`/rl 4 +!fU7@@>EϏsWȜ=umn'ϏsWȜ=umn' \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMFB2m8B8ShvUiXNuywUmK6r3e8YM5fsQsLArHMeUpjhWk.id b/test/resources/publisher_ids/4XTTMFB2m8B8ShvUiXNuywUmK6r3e8YM5fsQsLArHMeUpjhWk.id new file mode 100644 index 0000000..db205ee --- /dev/null +++ b/test/resources/publisher_ids/4XTTMFB2m8B8ShvUiXNuywUmK6r3e8YM5fsQsLArHMeUpjhWk.id @@ -0,0 +1,3 @@ +`l[Ǵr;P۱ U~(z#Ѕ;- +4.(KNЮЅ;- +4.(KNЮ \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMFSVc6B4fRt5s71438dXcPE9NBPVQ5sRow1qtcARARHCJ.id b/test/resources/publisher_ids/4XTTMFSVc6B4fRt5s71438dXcPE9NBPVQ5sRow1qtcARARHCJ.id new file mode 100644 index 0000000..8138e82 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMFSVc6B4fRt5s71438dXcPE9NBPVQ5sRow1qtcARARHCJ.id @@ -0,0 +1,2 @@ +`%Ax.EdAܴLF +O'{2 1z|J/ &.DHF6{2 1z|J/ &.DHF6 \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMFVjr2Zga6A1PF4GPZ43fSqvgWUfR8T3seEsfEBe3PUDi.id b/test/resources/publisher_ids/4XTTMFVjr2Zga6A1PF4GPZ43fSqvgWUfR8T3seEsfEBe3PUDi.id new file mode 100644 index 0000000..b879e96 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMFVjr2Zga6A1PF4GPZ43fSqvgWUfR8T3seEsfEBe3PUDi.id @@ -0,0 +1,3 @@ +`q :ŢSk܍^7P}B <ٜKl"1A +\]P}B <ٜKl"1A +\] \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMGbTZFhxPnpwUmC8JaQS6NHeLj98TdbdjSeAT9qupk5x9.id b/test/resources/publisher_ids/4XTTMGbTZFhxPnpwUmC8JaQS6NHeLj98TdbdjSeAT9qupk5x9.id new file mode 100644 index 0000000..5196566 --- /dev/null +++ b/test/resources/publisher_ids/4XTTMGbTZFhxPnpwUmC8JaQS6NHeLj98TdbdjSeAT9qupk5x9.id @@ -0,0 +1 @@ +`zFmWS0$F >)A>)6/@DU3&WZaOP6>)6/@DU3&WZaOP6 \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMHa54HQoW8Lp6nLUzKt5QwZAUxux6DDshbBN5w4WNj759.id b/test/resources/publisher_ids/4XTTMHa54HQoW8Lp6nLUzKt5QwZAUxux6DDshbBN5w4WNj759.id new file mode 100644 index 0000000..088f40a --- /dev/null +++ b/test/resources/publisher_ids/4XTTMHa54HQoW8Lp6nLUzKt5QwZAUxux6DDshbBN5w4WNj759.id @@ -0,0 +1 @@ +`v`o@1@C5"]{ؤ|̃#Dh8ʨ•Y}+6_#Dh8ʨ•Y}+6_ \ No newline at end of file diff --git a/test/resources/publisher_ids/4XTTMHhM2e1nPVRgN6M7WM8WUcCnVwYwb8aS3ou9uKg5rdrHX.id b/test/resources/publisher_ids/4XTTMHhM2e1nPVRgN6M7WM8WUcCnVwYwb8aS3ou9uKg5rdrHX.id new file mode 100644 index 0000000..eb0bf39 Binary files /dev/null and b/test/resources/publisher_ids/4XTTMHhM2e1nPVRgN6M7WM8WUcCnVwYwb8aS3ou9uKg5rdrHX.id differ