mirror of
https://github.com/status-im/status-go.git
synced 2026-08-31 17:11:23 +00:00
Part of the Go project layout migration, item 31. Pure move plus import-path rewrite across 687 files. No API or behaviour change. The services keep their grouping under pkg/services/<name> rather than being promoted to pkg/<name>: 27 top-level directories in pkg/ would read worse than what we have, and the grouping is what makes "an RPC service" identifiable at a glance. Paths that follow the move: the logosstorage test target and generate step, the two wallet token-list tools, the migration-order check (and the pre-rebase hook symlinked to it), and the storage env helper. refs #7067
44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package utils
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/status-im/status-go/internal/crypto"
|
|
"github.com/status-im/status-go/internal/crypto/types"
|
|
"github.com/status-im/status-go/pkg/multiformat"
|
|
)
|
|
|
|
func DeserializePublicKey(compressedKey string) (types.HexBytes, error) {
|
|
rawKey, err := multiformat.DeserializePublicKey(compressedKey, "f")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
secp256k1Code := "fe701"
|
|
pubKeyBytes := "0x" + strings.TrimPrefix(rawKey, secp256k1Code)
|
|
|
|
pubKey, err := crypto.HexToPubkey(pubKeyBytes)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return crypto.CompressPubkey(pubKey), nil
|
|
}
|
|
|
|
func SerializePublicKey(compressedKey types.HexBytes) (string, error) {
|
|
rawKey, err := crypto.DecompressPubkey(compressedKey)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
pubKey := types.EncodeHex(crypto.FromECDSAPub(rawKey))
|
|
|
|
secp256k1Code := "0xe701"
|
|
base58btc := "z"
|
|
multiCodecKey := secp256k1Code + strings.TrimPrefix(pubKey, "0x")
|
|
cpk, err := multiformat.SerializePublicKey(multiCodecKey, base58btc)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return cpk, nil
|
|
}
|