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.