summaryrefslogtreecommitdiffstats
path: root/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go
blob: 127dbe16f481676b15aa04182b743e667e0b9a3a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Package identity provides identity keys used for verifying the identity
// of a signal user.
package identity

import (
	"encoding/hex"
	"go.mau.fi/libsignal/ecc"
)

// NewKey generates a new IdentityKey from an ECPublicKey
func NewKey(publicKey ecc.ECPublicKeyable) *Key {
	identityKey := Key{
		publicKey: publicKey,
	}

	return &identityKey
}

// NewKeyFromBytes generates a new IdentityKey from public key bytes
func NewKeyFromBytes(publicKey [32]byte, offset int) Key {
	identityKey := Key{
		publicKey: ecc.NewDjbECPublicKey(publicKey),
	}

	return identityKey
}

// Key is a structure for representing an identity key. This same structure can
// be used for verifying recipient's identity key or storing our own identity key.
type Key struct {
	publicKey ecc.ECPublicKeyable
}

// Fingerprint gets the string fingerprint representation of the public key.
func (k *Key) Fingerprint() string {
	return hex.EncodeToString(k.publicKey.Serialize())
}

// PublicKey returns the EC Public key of the identity key
func (k *Key) PublicKey() ecc.ECPublicKeyable {
	return k.publicKey
}

// Serialize returns the serialized version of the key
func (k *Key) Serialize() []byte {
	return k.publicKey.Serialize()
}