1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-09 09:35:00 +09:00

GO-5297: added space key store

Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
This commit is contained in:
AnastasiaShemyakinskaya 2025-03-21 17:10:19 +01:00
parent 7669f85e4c
commit f41af256fa
No known key found for this signature in database
GPG key ID: CCD60ED83B103281
21 changed files with 4463 additions and 2471 deletions

View file

@ -1,11 +1,10 @@
package metricsid
import (
"bytes"
"github.com/anyproto/any-sync/util/crypto"
"github.com/anyproto/any-sync/util/strkey"
"github.com/anyproto/go-slip10"
"github.com/anyproto/anytype-heart/util/privkey"
)
const (
@ -13,24 +12,6 @@ const (
MetricsDerivationPath = "m/99999'/0'"
)
func deriveFromPrivKey(path string, privKey crypto.PrivKey) (key crypto.PrivKey, err error) {
rawBytes, err := privKey.Raw()
if err != nil {
return nil, err
}
node, err := slip10.DeriveForPath(path, rawBytes)
if err != nil {
return nil, err
}
return genKey(node)
}
func genKey(node slip10.Node) (key crypto.PrivKey, err error) {
reader := bytes.NewReader(node.RawSeed())
key, _, err = crypto.GenerateEd25519Key(reader)
return
}
func encodeMetricsId(pubKey crypto.PubKey) (string, error) {
raw, err := pubKey.Raw()
if err != nil {
@ -40,7 +21,7 @@ func encodeMetricsId(pubKey crypto.PubKey) (string, error) {
}
func DeriveMetricsId(privKey crypto.PrivKey) (string, error) {
key, err := deriveFromPrivKey(MetricsDerivationPath, privKey)
key, err := privkey.DeriveFromPrivKey(MetricsDerivationPath, privKey)
if err != nil {
return "", err
}

26
util/privkey/key.go Normal file
View file

@ -0,0 +1,26 @@
package privkey
import (
"bytes"
"github.com/anyproto/any-sync/util/crypto"
"github.com/anyproto/go-slip10"
)
func DeriveFromPrivKey(path string, privKey crypto.PrivKey) (key crypto.PrivKey, err error) {
rawBytes, err := privKey.Raw()
if err != nil {
return nil, err
}
node, err := slip10.DeriveForPath(path, rawBytes)
if err != nil {
return nil, err
}
return genKey(node)
}
func genKey(node slip10.Node) (key crypto.PrivKey, err error) {
reader := bytes.NewReader(node.RawSeed())
key, _, err = crypto.GenerateEd25519Key(reader)
return
}