Package mixkey provides persistent mix keys and associated utilities.



    View Source
    const (
    	// TagLength is the replay tag length in bytes.
    	TagLength = sha512.Size256
    	// KeyGlob is the pattern that matches the filenames for keys that have
    	// been persisted to disk.
    	KeyGlob = "mixkey-*.db"
    	// KeyFmt is the format string corresponding to filenames for keys that
    	// have been persisted to disk.
    	KeyFmt = "mixkey-%d.db"


    This section is empty.


    This section is empty.


    type MixKey

    type MixKey struct {
    	// contains filtered or unexported fields

      MixKey is a Katzenpost server mix key.

      func New

      func New(dataDir string, epoch uint64) (*MixKey, error)

        New creates (or loads) a mix key in the provided data directory, for the given epoch.

        func (*MixKey) Deref

        func (k *MixKey) Deref()

          Deref reduces the refcount by one, and closes the key if the refcount hits 0.

          func (*MixKey) Epoch

          func (k *MixKey) Epoch() uint64

            Epoch returns the Katzenpost epoch associated with the keypair.

            func (*MixKey) IsReplay

            func (k *MixKey) IsReplay(rawTag []byte) bool

              IsReplay marks a given replay tag as seen, and returns true iff the tag has been seen previously (Test and Set).

              func (*MixKey) PrivateKey

              func (k *MixKey) PrivateKey() *ecdh.PrivateKey

                PrivateKey returns the private component of the key.

                func (*MixKey) PublicKey

                func (k *MixKey) PublicKey() *ecdh.PublicKey

                  PublicKey returns the public component of the key.

                  func (*MixKey) Ref

                  func (k *MixKey) Ref()

                    Ref increases the refcount by one.

                    func (*MixKey) SetUnlinkIfExpired

                    func (k *MixKey) SetUnlinkIfExpired(b bool)

                      SetUnlinkIfExpired sets if the key will be deleted when closed if it is expired.

                      Source Files