package tools import ( "crypto" "io" ) // HelperInt is an interface to Helper. type HelperInt interface { // NewSessionKey returns a new session key (or nonce) in tool's specified length. NewSessionKey() ([]byte, error) // FillNewSessionKey fills the given []byte slice with a new session key (or nonce). FillNewSessionKey(key []byte) error // NewSessionNonce returns a new session nonce in tool's specified length. NewSessionNonce() ([]byte, error) // Random returns the io.Reader for reading randomness. Random() io.Reader // RandomBytes returns the specified amount of random bytes in a []byte slice. RandomBytes(n int) ([]byte, error) // Burn gets rid of the given []byte slice(s). This is currently ineffective, see known issues in the project's README. Burn(data ...[]byte) // DefaultSymmetricKeySize returns the default key size for this session. DefaultSymmetricKeySize() int // SecurityLevel returns the effective (ie. lowest) security level for this session. SecurityLevel() int // MaxSecurityLevel returns the (highest) security level for this session. MaxSecurityLevel() int } // SignetInt is a minimal interface to Signet. type SignetInt interface { // GetStoredKey returns the stored key and whether it is public. GetStoredKey() (key []byte, public bool) // SetStoredKey sets a new stored key and whether it is public. SetStoredKey(newKey []byte, public bool) // PublicKey returns the public key. PublicKey() crypto.PublicKey // PrivateKey returns the private key or nil, if there is none. PrivateKey() crypto.PrivateKey // SetLoadedKeys sets the loaded public and private keys. SetLoadedKeys(pubKey crypto.PublicKey, privKey crypto.PrivateKey) // LoadKey loads the serialized key pair. LoadKey() error }