Documentation ¶
Index ¶
- Constants
- Variables
- func PublicKeyFromHex(hexData []byte) (*ecdh.PublicKey, error)
- type CipherText
- func (c1 *CipherText) Clone(c2 *CipherText)
- func (ct *CipherText) From(pt *PlainText)
- func (ct *CipherText) GenerateSharedSecret(randomness io.Reader) error
- func (ct *CipherText) MarshalIon() ([]byte, error)
- func (ct *CipherText) MarshalPEM() ([]byte, error)
- func (ct *CipherText) UnmarshalIon(bin []byte) error
- func (ct *CipherText) UnmarshalPEM(data []byte) error
- type Config
- type Flarg
- type Message
- type Oracle
- type Peer
- type PlainText
- func (pt *PlainText) CipherText() ([]byte, error)
- func (pt *PlainText) Clone(p2 *PlainText)
- func (pt *PlainText) Digest() ([]byte, error)
- func (pt *PlainText) From(ct *CipherText)
- func (pt *PlainText) MarshalIon() ([]byte, error)
- func (pt *PlainText) MarshalPEM() ([]byte, error)
- func (pt *PlainText) PlainText() ([]byte, error)
- func (pt *PlainText) Sign(randy io.Reader, priv ed25519.PrivateKey) error
- func (pt *PlainText) String() string
- func (pt *PlainText) UnmarshalIon(bin []byte) error
- func (pt *PlainText) UnmarshalPEM(data []byte) error
- func (pt *PlainText) Verify(pub ed25519.PublicKey) bool
- type Self
Constants ¶
View Source
const GLOBAL_SALT = "oracle/v1"
Variables ¶
View Source
var ErrInvalidConfig = errors.New("invalid config")
View Source
var ErrKeysAlreadyExist = errors.New("crypto keys already exists")
View Source
var ErrNoEphemeralKey = errors.New("no ephemeral key")
View Source
var ErrNotInitialized = errors.New("oracle has not been initialized")
View Source
var UniversalNonce []byte = make([]byte, chacha20poly1305.NonceSize)
View Source
var ZeroPrivateKey *ecdh.PrivateKey = new(ecdh.PrivateKey)
Functions ¶
Types ¶
type CipherText ¶
type CipherText struct { Type string `json:"type" ion:"type"` Headers map[string]string `json:"headers" ion:"headers"` AdditionalData []byte `json:"aad" ion:"aad"` CipherTextData []byte `json:"ciphertext" ion:"ciphertext"` Signature []byte `json:"signature" ion:"signature"` Nonce []byte `json:"nonce" ion:"nonce"` EphemeralPublicKey []byte `json:"ephpub" ion:"ephpub"` // contains filtered or unexported fields }
CipherText includes payload and metadata for receiving and decrypting
func (*CipherText) Clone ¶ added in v0.1.0
func (c1 *CipherText) Clone(c2 *CipherText)
func (*CipherText) From ¶ added in v0.1.0
func (ct *CipherText) From(pt *PlainText)
create CipherText from PlainText This does _not_ peform encryption. you must handle PlainTextData and CipherTextData fields seperately.
func (*CipherText) GenerateSharedSecret ¶ added in v0.1.0
func (ct *CipherText) GenerateSharedSecret(randomness io.Reader) error
func (*CipherText) MarshalIon ¶ added in v0.1.0
func (ct *CipherText) MarshalIon() ([]byte, error)
func (*CipherText) MarshalPEM ¶
func (ct *CipherText) MarshalPEM() ([]byte, error)
func (*CipherText) UnmarshalIon ¶ added in v0.1.0
func (ct *CipherText) UnmarshalIon(bin []byte) error
func (*CipherText) UnmarshalPEM ¶
func (ct *CipherText) UnmarshalPEM(data []byte) error
type Config ¶
type Config struct { Self Self `toml:"self" json:"self"` Peers []map[string]string `toml:"peer" json:"peer"` }
var ZeroConf Config
type Flarg ¶ added in v0.1.2
type Flarg struct { Subcommand string ConfigFile *os.File Format string InputStream io.Reader OutputStream io.Writer }
Flarg represents all the args and flags after normalization and validation
var NoFlarg Flarg
The NoFlarg Flarg is used in error conditions
type Message ¶ added in v0.1.0
type Message interface { Digest() ([]byte, error) //Validate() error Sign(io.Reader, ed25519.PrivateKey) Verify(ed25519.PublicKey) bool Encrypt(io.Reader, ed25519.PublicKey) (*CipherText, error) Decrypt(ed25519.PrivateKey) (*PlainText, error) PlainText() ([]byte, error) CipherText() ([]byte, error) }
type Oracle ¶
type Oracle interface { PrivateSigningKey() ed25519.PrivateKey PublicSigningKey() ed25519.PublicKey PrivateEncryptionKey() *ecdh.PrivateKey PublicEncryptionKey() *ecdh.PublicKey Compose(string, []byte) *PlainText Sign(*PlainText) error Verify(*PlainText, Peer) bool Encrypt(*PlainText, Peer) (*CipherText, error) Decrypt(*CipherText) (*PlainText, error) Export(io.Writer) error //Import(Config) error Randomness() io.Reader AddPeer(Peer) error AsPeer() Peer Peer(string) (Peer, error) Peers() map[string]Peer }
type Peer ¶
type Peer interface { crypto.PublicKey encoding.BinaryMarshaler encoding.BinaryUnmarshaler json.Marshaler json.Unmarshaler //toml.Marshaler //toml.Unmarshaler MarshalHex() ([]byte, error) UnmarshalHex(data []byte) error Bytes() []byte Public() crypto.PublicKey // returns signing key SigningKey() ed25519.PublicKey EncryptionKey() *ecdh.PublicKey Nickname() string AsMap() map[string]string }
func PeerFromHex ¶
type PlainText ¶
type PlainText struct { Type string `json:"type" ion:"type"` Headers map[string]string `json:"headers" ion:"headers"` AdditionalData []byte `json:"aad" ion:"aad"` PlainTextData []byte `json:"plaintext" ion:"plaintext"` Signature []byte `json:"signature" ion:"signature"` Nonce []byte `json:"nonce" ion:"nonce"` EphemeralPublicKey []byte `json:"ephpub" ion:"ephpub"` // contains filtered or unexported fields }
PlainText includes payload and metadata for encrypting and sending
func (*PlainText) CipherText ¶ added in v0.1.0
func (*PlainText) From ¶ added in v0.1.0
func (pt *PlainText) From(ct *CipherText)
func (*PlainText) MarshalIon ¶ added in v0.1.0
func (*PlainText) MarshalPEM ¶ added in v0.1.0
func (*PlainText) UnmarshalIon ¶ added in v0.1.0
func (*PlainText) UnmarshalPEM ¶ added in v0.1.0
Source Files ¶
Click to show internal directories.
Click to hide internal directories.