identity

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2025 License: 0BSD Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CURVE                = "Curve25519"
	KEYSIZE              = 512 // Combined length of encryption key (256) and signing key (256)
	RATCHETSIZE          = 256
	RATCHET_EXPIRY       = 2592000 // 30 days in seconds
	TRUNCATED_HASHLENGTH = 128
	NAME_HASH_LENGTH     = 80

	// Token constants for Fernet-like spec
	TOKEN_OVERHEAD   = 16 // AES block size
	AES128_BLOCKSIZE = 16
	HASHLENGTH       = 256
	SIGLENGTH        = KEYSIZE

	RATCHET_ROTATION_INTERVAL = 1800 // Default 30 minutes in seconds
	MAX_RETAINED_RATCHETS     = 512  // Maximum number of retained ratchet keys
)

Variables

This section is empty.

Functions

func GetKnownDestination

func GetKnownDestination(hash string) ([]interface{}, bool)

func GetRandomHash

func GetRandomHash() []byte

func HashFromString

func HashFromString(hash string) ([]byte, error)

func Remember

func Remember(packet []byte, destHash []byte, publicKey []byte, appData []byte)

func TruncatedHash

func TruncatedHash(data []byte) []byte

func ValidateAnnounce

func ValidateAnnounce(packet []byte, destHash []byte, publicKey []byte, signature []byte, appData []byte) bool

Types

type Identity

type Identity struct {
	// contains filtered or unexported fields
}

func FromBytes

func FromBytes(data []byte) (*Identity, error)

FromBytes creates an Identity from a 64-byte private key representation

func FromFile

func FromFile(path string) (*Identity, error)

func FromPublicKey

func FromPublicKey(publicKey []byte) *Identity

func LoadOrCreateTransportIdentity

func LoadOrCreateTransportIdentity() (*Identity, error)

func New

func New() (*Identity, error)

func NewIdentity

func NewIdentity() (*Identity, error)

NewIdentity creates a new Identity instance with fresh keys

func Recall

func Recall(hash []byte) (*Identity, error)

func RecallIdentity

func RecallIdentity(path string) (*Identity, error)

func (*Identity) CleanupExpiredRatchets

func (i *Identity) CleanupExpiredRatchets()

func (*Identity) ComputeHMAC

func (i *Identity) ComputeHMAC(key, message []byte) []byte

func (*Identity) Decrypt

func (i *Identity) Decrypt(ciphertextToken []byte, ratchets [][]byte, enforceRatchets bool, ratchetIDReceiver *common.RatchetIDReceiver) ([]byte, error)

func (*Identity) DecryptWithHMAC

func (i *Identity) DecryptWithHMAC(data []byte, key []byte) ([]byte, error)

func (*Identity) Encrypt

func (i *Identity) Encrypt(plaintext []byte, ratchet []byte) ([]byte, error)

func (*Identity) EncryptWithHMAC

func (i *Identity) EncryptWithHMAC(plaintext []byte, key []byte) ([]byte, error)

func (*Identity) GenerateHMACKey

func (i *Identity) GenerateHMACKey() []byte

func (*Identity) GetContext

func (i *Identity) GetContext() []byte

func (*Identity) GetCurrentRatchetKey

func (i *Identity) GetCurrentRatchetKey() []byte

func (*Identity) GetEncryptionKey

func (i *Identity) GetEncryptionKey() []byte

GetEncryptionKey returns the X25519 public key used for encryption

func (*Identity) GetHexHash

func (i *Identity) GetHexHash() string

func (*Identity) GetNameHash

func (i *Identity) GetNameHash() []byte

GetNameHash returns a 10-byte hash derived from the identity's public key

func (*Identity) GetPrivateKey

func (i *Identity) GetPrivateKey() []byte

func (*Identity) GetPublicKey

func (i *Identity) GetPublicKey() []byte

func (*Identity) GetRatchetID

func (i *Identity) GetRatchetID(ratchetPubBytes []byte) []byte

func (*Identity) GetRatchetKey

func (i *Identity) GetRatchetKey(id string) ([]byte, bool)

func (*Identity) GetRatchets

func (i *Identity) GetRatchets() [][]byte

func (*Identity) GetSalt

func (i *Identity) GetSalt() []byte

func (*Identity) GetSigningKey

func (i *Identity) GetSigningKey() []byte

GetSigningKey returns the Ed25519 public key used for signing

func (*Identity) Hash

func (i *Identity) Hash() []byte

func (*Identity) Hex

func (i *Identity) Hex() string

func (*Identity) RotateRatchet

func (i *Identity) RotateRatchet() ([]byte, error)

func (*Identity) SetRatchetKey

func (i *Identity) SetRatchetKey(id string, key []byte)

func (*Identity) Sign

func (i *Identity) Sign(data []byte) []byte

func (*Identity) String

func (i *Identity) String() string

func (*Identity) ToFile

func (i *Identity) ToFile(path string) error

func (*Identity) ValidateAnnounce

func (i *Identity) ValidateAnnounce(data []byte, destHash []byte, appData []byte) bool

ValidateAnnounce validates an announce packet's signature

func (*Identity) ValidateHMAC

func (i *Identity) ValidateHMAC(key, message, messageHMAC []byte) bool

func (*Identity) Verify

func (i *Identity) Verify(data []byte, signature []byte) bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL