Documentation ¶
Overview ¶
Package nymaddr implements nym address generation and decoding.
Index ¶
Constants ¶
const (
// KeySize is the size in bytes of a key for curve25519.
KeySize = 32
)
Variables ¶
var ( // ErrNoMix is returned if no mix could be found. ErrNoMix = errors.New("nymaddr: no mix found") // ErrNoKey is returned if a private key was unavailable. ErrNoKey = errors.New("nymaddr: private key not found") // ErrExpired is returned if a nymaddr has already expired. ErrExpired = errors.New("nymaddr: expired") // ErrHMAC is returned if a nym-header HMAC verification failed. ErrHMAC = errors.New("nymaddr: HMAC mismatch") // ErrBadKey is returned if a header key is not reproduceable. ErrBadKey = errors.New("nymaddr: bad key in header") )
var Rand = rand.Reader
Rand is the random source of this package.
Functions ¶
This section is empty.
Types ¶
type Address ¶
type Address struct { MixAddress []byte // The address of the mix which will handle messages for this Nym Expire int64 // The time when the address should not be used anymore SingleUse bool // If the address may be used more than once TokenPubKey []byte // The token receive key of the mix MixPubKey []byte // Public key of the mix AddressKey []byte // Random, single use key used for this address PrivateData []byte // Encrypted private part }
Address contains a NymAddress.
func ParseAddress ¶
ParseAddress parses an address.
func (*Address) GetMixData ¶
func (ad *Address) GetMixData(keysLookup KeyFunc) (*AddressPrivate, error)
GetMixData decrypts the private portion of a nymaddress.
type AddressPrivate ¶
type AddressPrivate struct { System int32 // The system number. should be 0 Address []byte // The final address to deliver to Expire int64 // The time when the address should not be used anymore SingleUse bool // If the address may be used more than once MinDelay int32 // Minimum delay in the mix MaxDelay int32 // Maximum delay in the mix Nonce []byte // Random data, size KeySize ReceiverPubKey []byte // The pubkey of the receiver EncNym []byte // The encrypted Nym HMACHead []byte // The HMAC of the header (nonce, receiverpubkey, encnym) }
AddressPrivate is the private/encrypted part of a nymaddress.
func (AddressPrivate) GetHeader ¶
func (ap AddressPrivate) GetHeader() (header, secret []byte, err error)
GetHeader returns the header for a relay message and a secret for encryption.
func (AddressPrivate) GetUnique ¶
func (ap AddressPrivate) GetUnique() []byte
GetUnique returns a unique value of the nymaddress IF the nymaddress is single use, nil otherwise.
type AddressTemplate ¶
type AddressTemplate struct { Secret []byte // The local secret for address creation, must be random and long-lived System int32 // The system number. should be 0 MixCandidates mixaddr.AddressList // A list of mixes Expire int64 // The time when the address should not be used anymore SingleUse bool // If the address may be used more than once MinDelay int32 // Minimum delay in the mix MaxDelay int32 // Maximum delay in the mix }
AddressTemplate contains parameters for address creation.
func (AddressTemplate) GetPrivate ¶
func (tmp AddressTemplate) GetPrivate(header, MailboxAddress []byte) (nym, secret []byte, err error)
GetPrivate gets the shared secret from a header.
func (AddressTemplate) NewAddress ¶
func (tmp AddressTemplate) NewAddress(MailboxAddress, Nym []byte) ([]byte, error)
NewAddress generates a new nymaddress for nym/address from AddressTemplate. Only the first KeySize bytes of Nym are used, so use a hash of the true nym here.
type RelayHeader ¶
type RelayHeader struct { SenderKey []byte // Pubkey of the sender (mix), per message Nonce []byte // Random data, size KeySize ReceiverPubKey []byte // The pubkey of the receiver EncNym []byte // The encrypted Nym HMACHead []byte // The HMAC of the header (nonce, receiverpubkey, encnym) }
RelayHeader is the header of a relayed (post-mix) message.