mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-08 05:57:03 +09:00
36 lines
699 B
Go
36 lines
699 B
Go
package accountdata
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"github.com/anyproto/any-sync/util/crypto"
|
|
)
|
|
|
|
type AccountKeys struct {
|
|
PeerKey crypto.PrivKey
|
|
SignKey crypto.PrivKey
|
|
PeerId string
|
|
}
|
|
|
|
func New(peerKey, signKey crypto.PrivKey) *AccountKeys {
|
|
return &AccountKeys{
|
|
PeerKey: peerKey,
|
|
SignKey: signKey,
|
|
PeerId: peerKey.GetPublic().PeerId(),
|
|
}
|
|
}
|
|
|
|
func NewRandom() (*AccountKeys, error) {
|
|
peerKey, _, err := crypto.GenerateEd25519Key(rand.Reader)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
signKey, _, err := crypto.GenerateEd25519Key(rand.Reader)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &AccountKeys{
|
|
PeerKey: peerKey,
|
|
SignKey: signKey,
|
|
PeerId: peerKey.GetPublic().PeerId(),
|
|
}, nil
|
|
}
|