mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-11 10:18:08 +09:00
Add nodes generation
This commit is contained in:
parent
35528f6024
commit
a379a56cd1
13 changed files with 306 additions and 121 deletions
95
cmd/nodesgen/gen.go
Normal file
95
cmd/nodesgen/gen.go
Normal file
|
@ -0,0 +1,95 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/config"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/encryptionkey"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey"
|
||||
"gopkg.in/yaml.v3"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
flagAccountConfigFile = flag.String("a", "etc/nodes.yml", "path to account file")
|
||||
flagBaseAddress = flag.String("ba", "127.0.0.1:4430", "base ip for each node (you should change it later)")
|
||||
flagNodeCount = flag.Int("nc", 5, "the count of nodes for which we create the keys")
|
||||
)
|
||||
|
||||
func main() {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
flag.Parse()
|
||||
|
||||
if *flagNodeCount <= 0 {
|
||||
panic("node count should not be zero or less")
|
||||
}
|
||||
|
||||
encryptionDecoder := encryptionkey.NewRSAPrivKeyDecoder()
|
||||
signingDecoder := signingkey.NewEDPrivKeyDecoder()
|
||||
|
||||
var nodes []*config.Node
|
||||
for i := 0; i < *flagNodeCount; i++ {
|
||||
node, err := genRandomNodeKeys(*flagBaseAddress, encryptionDecoder, signingDecoder)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("could not generate keys for node: %v", err))
|
||||
}
|
||||
nodes = append(nodes, node)
|
||||
}
|
||||
nodeInfo := config.NodeInfo{
|
||||
CurrentAlias: nodes[0].Alias,
|
||||
Nodes: nodes,
|
||||
}
|
||||
bytes, err := yaml.Marshal(nodeInfo)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("could not marshal the keys: %v", err))
|
||||
}
|
||||
|
||||
err = os.WriteFile(*flagAccountConfigFile, bytes, 0644)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("could not write the generated nodes to file: %v", err))
|
||||
}
|
||||
}
|
||||
|
||||
func genRandomNodeKeys(address string, encKeyDecoder keys.Decoder, signKeyDecoder keys.Decoder) (*config.Node, error) {
|
||||
encKey, _, err := encryptionkey.GenerateRandomRSAKeyPair(2048)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
signKey, _, err := signingkey.GenerateRandomEd25519KeyPair()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
encEncKey, err := encKeyDecoder.EncodeToString(encKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
encSignKey, err := signKeyDecoder.EncodeToString(signKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &config.Node{
|
||||
Alias: randString(5),
|
||||
Address: address,
|
||||
SigningKey: encSignKey,
|
||||
EncryptionKey: encEncKey,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func randString(n int) string {
|
||||
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
|
||||
b := make([]byte, n)
|
||||
for i := 0; i < n; i++ {
|
||||
idx := rand.Intn(len(letterBytes))
|
||||
b[i] = letterBytes[idx]
|
||||
}
|
||||
|
||||
return string(b)
|
||||
}
|
13
config/nodes.go
Normal file
13
config/nodes.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package config
|
||||
|
||||
type Node struct {
|
||||
Alias string `yaml:"alias"`
|
||||
Address string `yaml:"address"`
|
||||
SigningKey string `yaml:"signingKey"`
|
||||
EncryptionKey string `yaml:"encryptionKey"`
|
||||
}
|
||||
|
||||
type NodeInfo struct {
|
||||
CurrentAlias string `yaml:"currentAlias"`
|
||||
Nodes []*Node `yaml:"nodes"`
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
signingKey: 3iT1Ue7xNejwKhZ4L8SJCKZw7RLaMy5Vh9fkWFD43ZDTg5kRV3zGPuKCzWL8d2k57EMrFCk39ddknzRVhVFC6fgi77iA
|
||||
encryptionKey: 51HYzTYh5uokpYWp8EyPeTJRm6AYe2ZoZBPCLUzMR3kMijkKvEJ4bjGBdU3MxgHo4e3Dg1AFnapEZPMMHp4d3hyMB6469ZWHeGPUWh94jhB7WiRL9BtydyazQHqZQhfihK2qaTw9wgx4pq7XnydCrYS1SiQLVCGCitCLH79cHSXZNn3hrNYCz9Z3GQHX12hSKA55uzKyumZiwiiddDQ3Ufzs49hPhNuRU1QtyDYETGNCFafA2MyDv86KbdeXSgQFcghDz97A1KL2FsvfjpMBawok5NKKPmd2P1PR6cZXb1UTHRaMbAGpDuEjQNu74TsFbQQoBEahWYBgSy8Mg92JuaTjeGhLFDh5QsVF89Xj7qYK7T6CRTKuuJEgCyDYL9zbsqnZg7tXESGfazhcCYdUXXZVq3N11NDkEWz7SrNCdLscPKgqcFidBFRdVUqM2v8kGbeXQQCGTGSDsUi9yweB8xrpBdLRhJzJmKrN9xsUT8UeVjdBA4hKc8DKdV9oSxpkcJMMiCuL7EPYBA9uRMXzzeJw3HnZvFemv5QLqcPKc55q5oZp364xDwV86PMokVVGGCu67kuurertyFGKDWsfyRje7g9dy4o1t9D3pTuVmNH5Jjhb432kq38AEx8ndpAzvYPLpni44mBWutreYMg6ASDMYa19NkSRLrvjMHfF8uoP7VLitpyeWsx7mfjsQS5qms3xpTJRDJYjHN1ZPEYdxBCXPjofYyFExHH4kc27gejLMwhKMnTkGuEdnvaBSvJLwq6BUM3NsMMnqZcXFDMwarSbi67F8KyFspmYJ2jsJfEiAHzkSk65ZnppccxQjCAJgniMDQh9NwcuSG3n1Mt4VvW1B7sNrcWdFhTVnZFjBodarLJJfNYXeJDweZgwAs9Y1Ce1BbJQok1u31aJmY9ATnhKS2Bb3eDDf2kvG8q6DDcUiM5HHNqdMZbrt9jevNfR59B19C5j92DNAsCvcTmnWrSfPyphAWjJD5yTZRNdMYL1XaywncrhouSXUS7Crfpsm1yPnRQDYu6LB26vgnc35cLSNYqyX2oXfh3o4WyC2SPPCJ7LP5T8ff34hsKo78GZtc7mGreHuxieYCnJ3kYEW5WpVJ4TqQLTrnqzF2WL244V5pmUHQVF4q4ztzrG5edZS4Ah6Kq389UkU4Qo7srjMQ5KJnDpUAvJmdqdWJWftbqB5qMhRekHS3MXbgDrDL6JrpR2PcLLPPKhQHatPdhKnwgg7NABzTAxNqgb99LjsPFDhPDiK4BpWX7RbvjWm4WSZmozcRvJz75w2t3y4zvhBfNTgu8iZjE1bTL8wLpBrFMZesK5waspBP9N7uYaBKwRfb8VoUNoLWJtERwH592vqHKyg9B1mBHeH3YCQLu9NcS4qUsa5tSKmn24q9i9yBkoeVP1bFiDy3JxHUyQcaCwVgE2kWZApDw6w2T8FUp5ftWDCLb2ewGjj52cRNXb4pjgRuyLZdSa7wgn6SsQdhuAiTaKECmaEpZMoKFL9JRD9iTcAq1HNJBzP8hnaeF88UNdz8TBLr7d5Bnujpcr9mqQSj28JrRzxLNJQfWo6sWLao8LpaRzdP8QNUcv3SDMiLT9Vdb31iFvSesUzi6YG5XY95ceA7xJRzW
|
|
@ -6,5 +6,4 @@ grpcServer:
|
|||
- "127.0.0.1:4430"
|
||||
- "127.0.0.1:4431"
|
||||
tls: false
|
||||
tlsKeyFile: "etc/x509/key.pem"
|
||||
tlsCertFile: "etc/x509/cert.pem"
|
||||
|
||||
|
|
22
etc/nodes.yml
Normal file
22
etc/nodes.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
currentAlias: ULSsy
|
||||
nodes:
|
||||
- alias: ULSsy
|
||||
address: 127.0.0.1:4430
|
||||
signingKey: 3hvsvs4FSnU1p6MFJFVaHFfTfTrD7efGbacacAcYbnWMcXcAQd7k6V7PgLbHddabQH18a1TnNKHQ3Z7yRinXohAzY8HT
|
||||
encryptionKey: udNkNsbKtm7eu1Bqt5d1jyhFAxd26wjema4tDqRiZ72xdCcBZvK6WBdpXWzb5w75FHEz8DDo7qoFLB9xAQA6GuNzoDTsWJjPX9vQHz2m9rCK5FcotjZF5WWCrgeg1FhyVcnF2zTSnw8kQFejMv4iCLnhjTC8op3U1eUpZ4GVxWQ1oLTg6dBS5MQsry7TU4gX77rJQF5gY2CnG9wK3Lv127vJZ6sphQXKQ3T5E7EfDoacGphH9ondtUgd7JRUices5PS7QMPXGVxqHjn2XR4SfRu6tN3USWVBMH5TbPfJbHvhGCHogbzj3ZXt3VidJKyHk2qnXASh9akFRAvgHpf7uhK4Eet3keXV93t9yeLZfttb5HdQ6PtapdMiYYAxPscd761daY5EdhmmBJWBRGSH2TephjcZDjYY1ZwFpNteXmyiWdvodA64cvHHbtFDQtbCu8oZ1GKvM6vq53rKkVvaJT58qrCoThFGVT3xXTFDSTAiKrLxXdiJikdk87mygvPyShdhASNH95be7co9HMrpit6V1Uyk92VcSWqb84bKDhYAsn5PEJSqNtrxRZjG2Zwzd8gFMwgGvcD8iZfhXUA1PWttZ2hwp2kaEanKsSh8sEA7qkJPpvi1f23fYPhhsxjK3DRauZStbaXHoFzWXQUwtDJnitMCwu9k3A7cJmxy9R5YjTnpivgsrivMcy5cHtDXVAKv4UT2DwSgN3d6phT4jzso2sXrmbNjCnrbJjP1A7UztBuwfefHgw4kKnimB4ZyGBWbtSLY42Lt2hSWcoQPcUXkVMTabEaMY8VKApSiRFVcZX9LyiN3vYMoLgFEFs6pnc6TGVRuMP5DfdyogyEyYHSK9iumSy8iVhftjvBc1xtvv4C8q3G3yipRawKiz9FymufgXBZgnHopo1aWaMsHsr5SwQWtaGapy1rNPX51rE9fLY3a4PhBT31a6XwFxJu7pdgWjXYxeN4rioRrfQUGy4D4PW81UTkqpkVZr3bUMWxUorW6tGpSm2irTwk2KM2a62pxErbTFMZUXdcT5zeZeYTFFpVMocaixGgBS4nYvviYXqeXvQ28uNLeWAiE1PTyur32ShHf8uvtoPfVXKhCfNmTkCBh9Met9b6NYoQwk9VTUAP9E3t9DPAAtyPigkLNdERtPEje4NAoV3wsa1WNXSKNU15dpYh3B6Qcvp95YfX253eucQmVjb71Synb4RkSBdnghZzsBYvhQewAkT3432i7hwnjyTWooDgbXMiHd3UaTTFsHS7EYSJxgCe94UEHUF2SL3Wqno1ReZ95678KLLdFwEPbbXWfvAnGU1KvEiMh9y6b7WMtTwx1kdwCghpwgDhE9ktMZNc6ypyWWLYA6473ge5WKrbnR3ugCoLaEpRAWmZBhc52zP9f7SZS1PgwF4fPtuxLtEJTTBkTkdPPwhQVTwfT8viggbdPVQG4iEhdRoEUBE46HC3MK4tchz8ev8CKJMQp4GH8zweGP3JKTNbNG6b7v6kTxHnvG5LbMJMGrq1tDfADDD8NwgL2Luhoe4y9JfAysK5UHkSWaQw9L7TsxUPgj3otgrwSjGFLvfc2D6zNddfGELcoWzNLzXoFZqAyQUvFdAqUcMYanepAQJke717Wv
|
||||
- alias: NpBrA
|
||||
address: 127.0.0.1:4430
|
||||
signingKey: 3ixAJXFCYUu366ywFxsvNzAFQkVPyDKRiis1nCviHXUu5i3PkDP9FJFPGs5WZUMe83mEYVaipiW2ntiQXaxHYyYys6wp
|
||||
encryptionKey: JgG4CcCbae1qEpe7mL9SrVoZim2d7ydWKL1KV6dMtgKcnb62MVgezmTyTPrcx29ZF4wecMxKmQNcdYhAN1t7vDQTBgUrGdCbkCUYu3sLaQYuitCEM6nykS1WWTsKSkFS1HiAVoWeSpQTzVwDNM2VDkVyS5Vbmg9gnE8qt8EnebiD3Cg64YwWi3HgEyVRauygAktmanFJNRtkBsriTPFZn9RDh4mMxSa1Q4iTx4Gxuq6avw6WACWV3x7RpbwrkWh54d8abXUdWxFZGCfe87o9v4UrxcujhWzE4F4tbGyrPBNy7abamb3sVqzRZPAikLeAKeb3s8K5JpUKXTVEiKCNpijaBFBKSLf7znowdJ9NGTMsJCSwTpsznANsBMhaz5uGaL4ur8CK6u4VXQbH1yUpKrnnVVjzoXVqh4vAeUaA7sanWKdPwGcaS6oDwwWp9Mi7qrqYocWQ6EtaeAQhbQ4qRPygujnBdThGnXFLrriYH6Yzb3BJsEG9S5gXEDHytFKAYudmYd77xYcu1rN5k6V35c8EaNp8AWZbkCpkefsSPCc1dTG4Fgg9GnBwdJvrXLV6CrE6SQtjUgPcpiLGK65sEutgApbkfkyasPdpyBBp8xND4woihHpANkTx5Lxn68rDj2bk5NTLgZLJgixJRoNPLXtCWSnQU97xvtjU8UnT195KwkCTm8X62syiRE6jkR3seVWUrwLZ8qojdZkm3bS1yUyYAPaCapUwppTT4SSgTrhCjGjGkYJarJPsxinedwTEvCPzujRcNofq4nF1RedgfSimvkjHPaztQv8h8YmxX1iRZ99AoLzuSw3uohoPvDsQMt97uQFCEZt5gLmzZSXpQpNDmAX6xpwbmuHuLgP2fJ5XrygnZo1jFGPPcfTurx4aghyrBGhbVB1XBcLvrzr6XA5WtU9HwriFYx27TVfiKJFG4ZdsbSUgLSQcYKJz1cZTm2QntLaCMpiG4jEkQtaEPANgp9oARvrh6kizpkGMpuMfVbcfE4cNiYDKwkj4cHa1NRmZHzxUyKiwTzwxh2YKra28NQnFZCnbqm3kBAaf8RiJkjb489uMtDo1nQ3cFhH6X68BqnfAmx2QEWMDHeT1XLPPEAwMhJ3tqrb6nMx9oEjcof8GMxv2GyyMtsAUHFY3KE3NAvfwbgWh35V2kKiyZEmmMWrs5TuMncKCMib85ymwmfa79igHERnhH9dJhKn2HcbhUxSX3SUB1CRihDNnXLT4rExwJfQmZfUhJmAK2BjkfaEGwNwxfcLE3KWMi6BRAiXnYhBiLHeM47poNhc5c9wE5krvis6Mh3HeLxbwjLZxoLWEonQzxstSrRKz6FSzkqXWQKaavELLsiVvo7s7Ga9gMoTvLqmCK9Ksk2u1ZKkgwsp26JAfDkWpvx7UtnomdztpGbMFSiPFvHzEwhKz8qohCyBWDgN7ZjdN4doRyG98MR9wweRyKuneUE6qxXpBhCAGWSUdBYtd3EFtmpGfYscYKQazGNBw3YsfK3UADQQsWMPXqCWGqpi4mpqRsKrZv3niZB1XHHP6kNUGN75awEjh4soKhHwhpBdUx9NXYAx5BDQWR6CeZS3pzUVTnMNAcizm3SJoN6HhmhvBt7LNFEcphPtotM5f
|
||||
- alias: aVIrA
|
||||
address: 127.0.0.1:4430
|
||||
signingKey: 3hwxb9marr5HkvtWrDkXmE82mBQrNUUxeqMbrBbUjXFJuENrAe6JwqftFjLFmHvTN3r9SELsxujsaehxv1b7VcXXf3ay
|
||||
encryptionKey: 2M2HT8EVmV3H4KkqzeTUAgw4okcbPbBpUxBMg6kLKpoiJPjg1fHZtZuZjc3HEHn5n7mihCs23uJVDGhtCjQXnpwWZUn2ezBzA1t4ZjURJUDCp7FzL7kKoFETtCuxrdh4j7RcbmA73in2C5YgXeUuEpMn39ApAXTxASMcdSzm9Tk9KMqVXNNMezfu836jDG5cj72wkJgzPFKhviEZTzYjPAeqe9qMnnGLPWqwDCarj2xeqx9n15zA1Ld2KfY5JDQQDj4WBohC5N4kLTzmNjiVnKBbZzLwfW42Nypz7AWxVeKYAZVPmKbTPtJRWGAtMjY3QC36SX8YqnkxV9cHUbCo7cWbEKctsDjJjMFxR5aXsiftqTo5REaVvu8RMQXx2QPshqxFBdJiGpfyrfBnjC6KbdszBTpdSQqiAEhNkoNuvniY8DTdrNWiH1n8CPuuzx3diQVSAaX1CnJzPqXhke2pBQBZWGsiMWFVFDUjZqH9PHe2BWZ3nMaKFxKAggiVhzpRFdC5xW4DbWsfaw9m2atKC5atWaaSs1uPkjtmURGP3DvFdWGdQfiEm5WBfMCR4sd9w5Y23SBFwPvMTJCHbKsAt5iqp9BwvnnX1D4sKxP2FA9Db16aZFczfzvWfsvWGRmZwt9y8dW8axBgCL526YYap9gihFPJbEEgABZpzrLzSTeVuJfsKuwXjwKBqEiGsJaAnKzEK7KwRhsJvz2e31MYx27E2u143njA7aD5AW3civNaDzbqkeTWJYwvXXavsJ94i3FAiG6FF8yARkcPxV76FV87QFwCfN6dz8ZJthmhEDMkLgTYcsVKkhzhGWnAYB2ayJjbmL28ewGDtQtFEAosdoVs6FYjKPUDVvahWiQWmGGnnF3FwY67JCkwnYzPB96kLSQcvjE366s8x8SFwZWy32u1JwwcCwAMBKJTN3RSc1KAa2VazM5knjgtyqyFeF3EJQZLHcLGrusSWpXFqBhMbnbn7Z4GuNNwuzjEDGKK2bJ97o9xtx1pgHjjvRoK6wfJ7zTDtFWXkJqCY6CtC2cwrkw4TuyhaBz1fCnD2Nu9jz2YWu5Ery7wGJkaiVW7wfPHK3ks9VLwXViF2kHDEB1c2AzabRyTWrgGb9JU1kt9PVQM8TPyKHbBvhp6pr4jmU188PMdHKkca8Nx6mTEWhn3QbTzqPxYBzmHSFrvVVKtwyU2J2izvHfbURQ3a9psDYriZVVFeDHRCN64RFku11JREa6ddjTupEoJmBpb9VBkqzmuXFw6diTruRVNQurgm38MVCKKswTLz4BxHGMSrZh5R3YJzFJScRCDkLVy8NgZeydY1h6iE53GCZDaP1Y68XREVqkaNRnrqkaTgL6Vvr9pV1oMSrKfwAUhcCaxS9n9fxSmy8xt1p1k8VYFV91FbkTZU1r2RMQKeWA1tPCDjs9Cd65GgRkvUgJ8zHi1x6GE9CneqmqTuUqXt1xiM6Ha2eZvcGFH99xpqcskCkTkP7GAJsddb3GUuoVgGzSkXBpMSt1ghSQHp8TArzuVYkLrVViygustEXp2YtJREu6c9NWFDnCyXKDUCcGMHtS6GK1entBMr5BWK6szHys3GPLr2mK76TNWX2Xqrm1C3rCkiARhhgTLqqu8zKhJFu
|
||||
- alias: JDBbe
|
||||
address: 127.0.0.1:4430
|
||||
signingKey: 3i7vzUsjAfsaShNzUY4GQNWP6283s6HudHsWjKf55NoKBtVgcLhkVw7jA1nxt9fswtFsXGNLcpgyAScYUR3mHDZoD2Pk
|
||||
encryptionKey: 51HYzTYh5uokpYWp8EscYm3wA7Z7J2SQXirK8kjW1kkshSx3EBrkceia4jHcwbqMHSgFxBRBmuTRJAVqKPpLJ12CfEFfdcM3A2iiWJx65iacQmnFtCMvEuFrF4xKxYUyLMWXeoT5BCpLC4Vr6EDZuatvdQHER9T8fCqrBhm4ZSzyJfyzM6Vqj2pXwAMgnLN7hydUjYoxiR23E56zPva8eu1cuFuicMrmPUCwkpZohLE7wbytnkHESQvXNdbJTps3BZ7LP1K66RzwdLFvem3RC6ZxPTrNQfPeMa3KmYkaNtVPcMhbVtj2pTuLJ4EhKNx3WNLVr61UyR91n9EeQxA1G7mts7zeHN2sZbJfonJJkuxN8ppN3MeDfy8tWFRb1DQhgMwmojqhGNFQmJmbM79BHe2zSnySLNU5VtCbDobvsid2g4ZfdVgDqbBYdVaRHzgU8psDX6JiEhxZxEHu2VUy16S4PrWFa92yEpAsXQ1NLD5wg5e1utvVoWHAf4D8PyiNvy3FPwUZg42rmVbj8mWRoerDArQ4ey38SJgSX5LNddYyb6hpQQC8TQzFKTLXGgHsPsyXm8C6xdHnvtEVVNDAejbKHsDsEuom1g4EwgGdEZUYR6WKng8A9K2HP3B8fJA4qvdcnX5BgzGwGYFu5auin3doEKz6zmHmSKyWk7YMCAmeQ4UheTpBFzzW4ynRrKYQHbfRNh69skQmfJR8ANtVXcUX5VvrK8vampSxDZHMcbJKSTyh8D648HiFvoNZk77Q7K4XMiYY2ENjVfXABW29j7sLV6M3qwxqXxqerBmLRFeVZKvhrtqqG13xbQRMYqdxhSvFzcbauPE4RuLukdKiSRDh7nQrvhjp53trWLeHgECsrk4spBrsQXfn5MFJxzrt7xpcRkj4cwgiwobXfVj2z8YEakWC8965ZSr78GJgx4xDBtxJfYcxmXykysRhZd3rqfev47y9q9R5qPgZFy4PxGKsXkwFT6nwDmyghXLfVQYXsJXun2f4xwzJ7D23t825JiwwnUNrzCcEtG3fMRF3tm9yCXBB6iPRtgqwK1Uwpyu81Y9c2ztDw8zuScbMD1SAgeGcuZkA52VT7duqBLu2GAK2dddx8b4aDVZ44fGXSsmZ3bNQNPY4YtQb923hrSoPhNmwVjSLdiXWHWbszvBzMpxRKSnnNjG79St8h3Ydw9GAAuQjRkurpxWUKnhVUBUUBJ2ZvPaVADMqWzRyhKATHTSmGKtdHjX5uN8djjp6xt8FmUteQyKX9LxokMUneExp1nvQvgQxGUGdFqRqmBh2PjWvCXwsWZMaK1cFtriyqJVGr3NdsS1xCNhdxHkot2RxMeMAfzPRRsbHyR8LtJk9zcsCjWDJfpM5YBbgtrLzkuxMNPPCtMJdndyQbiW9ewY4n1WiXgH5mVkZcggrG6e78zu7jre9haC6MRKpNacsvvAUxvJLFqUFfWra48RU4MBp13Ad3JEaQkQgkKYj6qmoDK9mcaYxK3Pi8EeofAUta4kU2WBMnhsAzRCKnG2mdutsjkvTdFkEs9Nms7kvNDFdcdG6ZVQgDHdogpsSEfaXNYnoHdwNmiVGQvYEnBfgVgg4KihoBZMY5D5ZFv8amuj4mVeA9fyym1L
|
||||
- alias: PqyLS
|
||||
address: 127.0.0.1:4430
|
||||
signingKey: 3hwkRSkxTpC96DnUM9wWKRuxwLZS7CrKzXCGuWTdnhVHT644XMEEYoSiapATVMcE6Dhbmsqmpzop6ox1bqUXiyuCLbha
|
||||
encryptionKey: JgG4CcCbae1qEpe7mKhXWxXceQPz4hkU4XurwrRAoczMzDmkfpgnVtemFhuHyQqsBbEdeLrEBjxMyqu8TgtiZMD6cX4X7nPcmYRiyjq2dgeZtr7iw2syG7Zpxs5yL51jJCqbmRkJ4HCnGASFR7NWYwUGaEVKCRbgqGHwwNSBr7nKhrmm6ZHs5m6YSyXQbpqA8SxPce5GGGs6JesBzoBEh7f8S95SchThpqAKCFRFisTUFJBjbpuJTZ3T7GbR6tgVMcQTodZf2TAweStvkMzCtHpbLiDqkHxjEAB68p2KLwWN5PR9GuZQtupuKPDMVtmh3e7yvdrSF49ACL6nRSpRiB6ARMgTxb4X5sPR3CFiTVNqo7KK81KB1PyaytNkSHJ2WgURJrAafqt85BiCLney6Pk9xfGiSXve2FMY8mmzzLjccZa4PJER9WXGoFjd7QyfEkQcBEQpk77cKEeT5xc8mZEwg7sKkBGRZypMKkTd3vM3RVXRqavuq9GgW8oL1kPAZ7cknwveyZ4F446thVutK5ieXTwDikY5QpsJuJTKszpeK56EL1GWL9AV4z2xfPmsSVwvPYSi4mC5mSWgesVAatUXpWKCX5mwgw3U1D8WXhosCbnJTvtuAWKsmnyBUQWVxS3pGsb3wWZjHvnt294mUdqTbGAoS9PEGNGxEYqc7zf5i2vRfbCXAEHg9bi8qd4vMxpbxptT7s1MiTgDntFyLeKQLZ1aNkWtpfL2P3tT8VtzReEH72WQd8nMCdtFo3MiGZycqcFsSvpmofmq8DWLU6r7ZYJq5CXekrcyVBDHSbhf62KW2DMV3Z8htkUjZojwk5qVyeLNNBgDHFAFA4puZBMFVnjsn6hmwbUMqSY8kjrEsDqCXa2cLrSWu48Mm9LPLCaxsNAxVTAGAxHPBXww7cecJSWrFcfuK1iLNYg37fzU9ZYgGQ17wVMw35GL5xdq1ZC5tAdte8xYYoW4AfNoajPfnVMEHZMh7EpGLN9K4p4yr5dD9gsxtaBE8ZKJtMx5tyePS3BeajhB4Fsr7fb1CpssneCmJkXqzxqFy7U2wjaaW7FyJfwu4e5sa4KgAoNUyLHumD2F4AjDqBw7hCahut8Ua5Qo12WSjASxUAwoazPQyuech7xh71DGVPZGmzmcMamc8ek7rBWeWrxXPeTCfwXavW4F7aZDXqCHRDDjHkCaHYNyrYRhNY263Vy5VRDdKb8iHDfLToe1uf8z4BAaLQ7nYMWgZoHjum8TGQkGqCM5Jk4HpJY2mbahD4bjMueQcZH9ks82ttsrg7mFmALAUoyVjkub4KYyXhR6GqRDRLFaDUv7toM9gZ3L3p5n1RwJr7hFr2sRwjTGJ7hdSCzgNPk3NUGK3vnojpjQoKXNPgCXYyRJgTr2y7UoZWj15Gm8H1QnrK5Ar76i663RV1zu3MhghweFGnh7WE14j2NqJ4vkfe37AJmntwF19j4JdUpTtDY9b7DZT9ohSSeRkmoSuPsy9Vpai3JyFpfAWom8CmkYkDA2GR9Uwxmg2UuqWSoxxcsdn1dZJdfYWrrXodjK9PGsJ8YPLMTSZz2Ye4vshmW4znLam5B6Yh11vtivD8njej9cm8eCP2SvPcUvMyFb7ZW9p6ByeWSq
|
|
@ -1,30 +0,0 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFJTCCAw2gAwIBAgIUNiBcO8wV6YezcDQ+cLpZe/iXbGYwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIyMDcxMzE5NDgwNFoXDTMyMDcx
|
||||
MDE5NDgwNFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAg8AMIICCgKCAgEAt+6cVBVkEe9I3CRmPuAqZGnLq48DTXaRH7xz6u4ld7tU
|
||||
cpDaXw+aURRYKGfYIvcfQav/i+mYUxTQDFbfN8SULis/DckTqeBEaGgUbJJZ6w73
|
||||
kkB8BuCiIjh3W9hyUHr+WbdF9wU8K1G6GmjimBJ+qlBBewQm0kzqosVwjQVWarN4
|
||||
aEhgiyjnLF9XVYQZRVqGxKzP/MssEU7YjSPPfBEsmi6pAqiDYuZ3+sVlKuDrki0d
|
||||
r1XOcV/dcSJa4NRazxiWME+GJQ/x7gA2GlC5FbQyhrOs1sNWaBsaWQGl4oHB90T7
|
||||
b0GxKOTqI7oCMho+Ajt7eB4zN0fqeCw0nwFyzok3f/GKFk0vLnecFt+gCLyMyS6X
|
||||
Dqf/DAlvoP41UeFI/rheOwc0UcZbU0HZ2zYrzOYR4eHMHSYKma2DHvIyOYZIV0Uw
|
||||
tkyOFnoEQGSXK3TMOb7oWyrs4gl+5euPEDKqDuP28xBr4GsFbNq7/7Kd9rKwXb3L
|
||||
iyy3kot2Vf5QqDFGdyOLDFFKF7MgMrUiEX8onW+fSmjooqUq7ZyLAs8W0uim4moQ
|
||||
52t7CGUuglaTHYMi2rfoAS5qPXT76jiwu7H351Psca6EIY4V+dIiElvbYryhTNsV
|
||||
4eDdWGJoZUyGACUhPdfO9l7Wp2+Yy/HGfPWm6mKX8VPHO4llYvwgGzm6Is/pFmUC
|
||||
AwEAAaNvMG0wHQYDVR0OBBYEFKl07s6kNnGmJN/ASYQTml5UkK0AMB8GA1UdIwQY
|
||||
MBaAFKl07s6kNnGmJN/ASYQTml5UkK0AMA8GA1UdEwEB/wQFMAMBAf8wGgYDVR0R
|
||||
BBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQBs5JmRhddd
|
||||
KuyhkSWd6T/HqAQISgP72ZUAr3gt2j34GLrhDYcvKFZwcoJFCFjG3pVmvJCORVGO
|
||||
x2TYt2ntsmIyFCZlGE/TpLxbSgsykoUVBnc8ySDnTQTDJr6S7AyWQsznSD6j1/FA
|
||||
a9E8ZrsyopqIn2eZy9/Asgy1qeJVO4F1kIq+19HUDR2z1rXqVSycOQEJkF84Kgvd
|
||||
+nDJQ5W3EdamYuDQOhTOeEFfZy1HyM3APhR9JyFHHnZ2D3vsoys/LIWolBJPOq6B
|
||||
o5JjXgLrA1e12TVXlnTqZ3986vGOyjfut7o2NPO1Se5OeGr6XFwO1nhIJ4gj8OTv
|
||||
2XuBcslLXI5+6UIsXtFHXAfH7eYErkBCQGiwjYj0V8Kb4M7UZ0seqjK+gMKfvM4Z
|
||||
hAPlKP2AUNYS7TNyqW3t8SA0c52ASdAezzh/OklCO5vyzxQT4wXTQt5Bub83m9uY
|
||||
Jnrv6Kg5UPQMrTpo9usJ2zAyj+qkk8KubKOA7grtblmCTvyJFDwyiWZkr0nuvNTV
|
||||
BsKis/DbJ2hneF+2D/B2pGKxyEP1LCIV/JDTUGX3F8ljTgSihZay/ZZnPUZpbCa0
|
||||
czodlAQk4wkGxJWSH6SSkq4dD+JnBQpufBMLa1qShfUn+N1N02yiDPq9XxJytoOR
|
||||
+vHqqrPS0PcTk1x2Og0xLn6kN+MH0+jRNQ==
|
||||
-----END CERTIFICATE-----
|
|
@ -1,52 +0,0 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
3XcrP5qofkzfgz1calZv6phIGJdHLQ==
|
||||
-----END PRIVATE KEY-----
|
|
@ -65,20 +65,6 @@ func TestACLTree_UserJoinUpdate_Append(t *testing.T) {
|
|||
Decoder: signingkey.NewEd25519PubKeyDecoder(),
|
||||
}
|
||||
|
||||
// Use this for key generation
|
||||
//encryptionDecoder := keys.NewKeyDecoder(func(bytes []byte) (keys.Key, error) {
|
||||
// return encryptionkey.NewEncryptionRsaPrivKeyFromBytes(bytes)
|
||||
//})
|
||||
//encodedEncryptionKey, _ := encryptionDecoder.EncodeToString(keychain.EncryptionKeys["A"])
|
||||
//
|
||||
//signingDecoder := keys.NewKeyDecoder(func(bytes []byte) (keys.Key, error) {
|
||||
// return signingkey.NewSigningEd25519PrivKeyFromBytes(bytes)
|
||||
//})
|
||||
//encodedSigningKey, _ := signingDecoder.EncodeToString(keychain.SigningKeys["A"])
|
||||
//
|
||||
//fmt.Println(encodedEncryptionKey)
|
||||
//fmt.Println(encodedSigningKey)
|
||||
|
||||
listener := &mockListener{}
|
||||
tree, err := BuildACLTree(thr, accountData, listener)
|
||||
if err != nil {
|
||||
|
|
|
@ -2,9 +2,10 @@ package account
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/app"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/config"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/account"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/encryptionkey"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
@ -31,32 +32,38 @@ type StaticAccount struct {
|
|||
}
|
||||
|
||||
func NewFromFile(path string) (app.Component, error) {
|
||||
acc := &StaticAccount{}
|
||||
nodeInfo := &config.NodeInfo{}
|
||||
data, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = yaml.Unmarshal(data, acc); err != nil {
|
||||
if err = yaml.Unmarshal(data, nodeInfo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
privateEncryptionDecoder := keys.NewKeyDecoder(func(bytes []byte) (keys.Key, error) {
|
||||
return encryptionkey.NewEncryptionRsaPrivKeyFromBytes(bytes)
|
||||
})
|
||||
privateSigningDecoder := keys.NewKeyDecoder(func(bytes []byte) (keys.Key, error) {
|
||||
return signingkey.NewSigningEd25519PrivKeyFromBytes(bytes)
|
||||
})
|
||||
// TODO: Convert this to new decoder
|
||||
publicSigningDecoder := signingkey.NewEd25519PubKeyDecoder()
|
||||
privateEncryptionDecoder := encryptionkey.NewRSAPrivKeyDecoder()
|
||||
privateSigningDecoder := signingkey.NewEDPrivKeyDecoder()
|
||||
publicSigningDecoder := signingkey.NewEDPubKeyDecoder()
|
||||
|
||||
var acc *config.Node
|
||||
for _, node := range nodeInfo.Nodes {
|
||||
if node.Alias == nodeInfo.CurrentAlias {
|
||||
acc = node
|
||||
break
|
||||
}
|
||||
}
|
||||
if acc == nil {
|
||||
return nil, fmt.Errorf("the node should have a defined alias")
|
||||
}
|
||||
|
||||
decodedEncryptionKey, err := privateEncryptionDecoder.DecodeFromString(acc.EncryptionKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
decodedSiginingKey, err := privateSigningDecoder.DecodeFromString(acc.EncryptionKey)
|
||||
decodedSigningKey, err := privateSigningDecoder.DecodeFromString(acc.SigningKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
signKey := decodedSiginingKey.(signingkey.PrivKey)
|
||||
signKey := decodedSigningKey.(signingkey.PrivKey)
|
||||
identity, err := publicSigningDecoder.EncodeToString(signKey.GetPublic())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
130
service/node/service.go
Normal file
130
service/node/service.go
Normal file
|
@ -0,0 +1,130 @@
|
|||
package node
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/app"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/config"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/encryptionkey"
|
||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey"
|
||||
"github.com/libp2p/go-libp2p-core/crypto"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
"gopkg.in/yaml.v3"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
const CName = "NodesService"
|
||||
|
||||
type Node struct {
|
||||
Address string
|
||||
PeerId string
|
||||
SigningKey signingkey.PubKey
|
||||
EncryptionKey encryptionkey.PubKey
|
||||
SigningKeyString string
|
||||
EncryptionKeyString string
|
||||
}
|
||||
|
||||
func NewFromFile(path string) (app.Component, error) {
|
||||
nodeInfo := &config.NodeInfo{}
|
||||
data, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = yaml.Unmarshal(data, nodeInfo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var nodes []*Node
|
||||
privateEncryptionDecoder := encryptionkey.NewRSAPrivKeyDecoder()
|
||||
privateSigningDecoder := signingkey.NewEDPrivKeyDecoder()
|
||||
for _, n := range nodeInfo.Nodes {
|
||||
// ignoring ourselves
|
||||
if n.Alias == nodeInfo.CurrentAlias {
|
||||
continue
|
||||
}
|
||||
newNode, err := nodeFromYamlNode(n, privateSigningDecoder, privateEncryptionDecoder)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse node: %w", err)
|
||||
}
|
||||
nodes = append(nodes, newNode)
|
||||
}
|
||||
|
||||
return &service{nodes: nodes}, nil
|
||||
}
|
||||
|
||||
type Service interface {
|
||||
Nodes() []*Node
|
||||
}
|
||||
|
||||
type service struct {
|
||||
nodes []*Node
|
||||
}
|
||||
|
||||
func (s *service) Init(ctx context.Context, a *app.App) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *service) Name() (name string) {
|
||||
return CName
|
||||
}
|
||||
|
||||
func (s *service) Run(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *service) Close(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *service) Nodes() []*Node {
|
||||
return s.nodes
|
||||
}
|
||||
|
||||
func nodeFromYamlNode(
|
||||
n *config.Node,
|
||||
privateSigningDecoder keys.Decoder,
|
||||
privateEncryptionDecoder keys.Decoder) (*Node, error) {
|
||||
decodedSigningKey, err := privateSigningDecoder.DecodeFromString(n.SigningKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
decodedEncryptionKey, err := privateEncryptionDecoder.DecodeFromString(n.EncryptionKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rawSigning, err := decodedSigningKey.Raw()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
libp2pKey, err := crypto.UnmarshalEd25519PrivateKey(rawSigning)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
peerId, err := peer.IDFromPublicKey(libp2pKey.GetPublic())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
encKeyString, err := privateEncryptionDecoder.EncodeToString(
|
||||
decodedEncryptionKey.(encryptionkey.PrivKey).GetPublic())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
signKeyString, err := privateSigningDecoder.EncodeToString(
|
||||
decodedSigningKey.(signingkey.PrivKey).GetPublic())
|
||||
|
||||
return &Node{
|
||||
Address: n.Address,
|
||||
PeerId: peerId.String(),
|
||||
SigningKey: decodedSigningKey.(signingkey.PrivKey).GetPublic(),
|
||||
EncryptionKey: decodedEncryptionKey.(encryptionkey.PrivKey).GetPublic(),
|
||||
SigningKeyString: signKeyString,
|
||||
EncryptionKeyString: encKeyString,
|
||||
}, nil
|
||||
}
|
|
@ -107,6 +107,14 @@ func NewEncryptionRsaPubKeyFromBytes(bytes []byte) (PubKey, error) {
|
|||
return &EncryptionRsaPubKey{pubKey: *pk}, nil
|
||||
}
|
||||
|
||||
func NewRSAPrivKeyDecoder() keys.Decoder {
|
||||
return keys.NewKeyDecoder(NewEncryptionRsaPrivKeyFromBytes)
|
||||
}
|
||||
|
||||
func NewRSAPubKeyDecoder() keys.Decoder {
|
||||
return keys.NewKeyDecoder(NewEncryptionRsaPubKeyFromBytes)
|
||||
}
|
||||
|
||||
func keyEquals(k1, k2 keys.Key) bool {
|
||||
a, err := k1.Raw()
|
||||
if err != nil {
|
||||
|
|
|
@ -148,6 +148,7 @@ func UnmarshalEd25519PrivateKey(data []byte) (PrivKey, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
// TODO: remove this one in favor of new one
|
||||
type Ed25519SigningPubKeyDecoder struct{}
|
||||
|
||||
func NewEd25519PubKeyDecoder() PubKeyDecoder {
|
||||
|
@ -178,3 +179,11 @@ func (e *Ed25519SigningPubKeyDecoder) EncodeToString(pubkey PubKey) (string, err
|
|||
}
|
||||
return strkey.Encode(0x5b, raw)
|
||||
}
|
||||
|
||||
func NewEDPrivKeyDecoder() keys.Decoder {
|
||||
return keys.NewKeyDecoder(NewSigningEd25519PrivKeyFromBytes)
|
||||
}
|
||||
|
||||
func NewEDPubKeyDecoder() keys.Decoder {
|
||||
return keys.NewKeyDecoder(NewSigningEd25519PubKeyFromBytes)
|
||||
}
|
||||
|
|
|
@ -2,21 +2,21 @@ package keys
|
|||
|
||||
import "github.com/anytypeio/go-anytype-infrastructure-experiments/util/strkey"
|
||||
|
||||
type keyDecoder struct {
|
||||
create func([]byte) (Key, error)
|
||||
type keyDecoder[T Key] struct {
|
||||
create func([]byte) (T, error)
|
||||
}
|
||||
|
||||
func NewKeyDecoder(create func(bytes []byte) (Key, error)) Decoder {
|
||||
return &keyDecoder{
|
||||
func NewKeyDecoder[T Key](create func(bytes []byte) (T, error)) Decoder {
|
||||
return &keyDecoder[T]{
|
||||
create: create,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *keyDecoder) DecodeFromBytes(bytes []byte) (Key, error) {
|
||||
func (e *keyDecoder[T]) DecodeFromBytes(bytes []byte) (Key, error) {
|
||||
return e.create(bytes)
|
||||
}
|
||||
|
||||
func (e *keyDecoder) DecodeFromString(identity string) (Key, error) {
|
||||
func (e *keyDecoder[T]) DecodeFromString(identity string) (Key, error) {
|
||||
pubKeyRaw, err := strkey.Decode(0x5b, identity)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -25,11 +25,11 @@ func (e *keyDecoder) DecodeFromString(identity string) (Key, error) {
|
|||
return e.DecodeFromBytes(pubKeyRaw)
|
||||
}
|
||||
|
||||
func (e *keyDecoder) DecodeFromStringIntoBytes(identity string) ([]byte, error) {
|
||||
func (e *keyDecoder[T]) DecodeFromStringIntoBytes(identity string) ([]byte, error) {
|
||||
return strkey.Decode(0x5b, identity)
|
||||
}
|
||||
|
||||
func (e *keyDecoder) EncodeToString(key Key) (string, error) {
|
||||
func (e *keyDecoder[T]) EncodeToString(key Key) (string, error) {
|
||||
raw, err := key.Raw()
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue