Documentation ¶
Index ¶
- Constants
- Variables
- type Skykey
- func (sk *Skykey) CipherKey() (crypto.CipherKey, error)
- func (sk *Skykey) DeriveSubkey(derivation []byte) (Skykey, error)
- func (sk *Skykey) FromString(s string) error
- func (sk *Skykey) GenerateFileSpecificSubkey() (Skykey, error)
- func (sk Skykey) ID() (keyID SkykeyID)
- func (sk *Skykey) Nonce() []byte
- func (sk *Skykey) SubkeyWithNonce(nonce []byte) (Skykey, error)
- func (sk Skykey) ToString() (string, error)
- type SkykeyID
- type SkykeyManager
- func (sm *SkykeyManager) AddKey(sk Skykey) error
- func (sm *SkykeyManager) CreateKey(name string, cipherType crypto.CipherType) (Skykey, error)
- func (sm *SkykeyManager) IDByName(name string) (SkykeyID, error)
- func (sm *SkykeyManager) KeyByID(id SkykeyID) (Skykey, error)
- func (sm *SkykeyManager) KeyByName(name string) (Skykey, error)
- func (sm *SkykeyManager) SupportsCipherType(ct crypto.CipherType) bool
Constants ¶
const ( // SkykeyIDLen is the length of a SkykeyID SkykeyIDLen = 16 // MaxKeyNameLen is the maximum length of a skykey's name. MaxKeyNameLen = 128 )
Variables ¶
var ( // SkykeySpecifier is used as a prefix when hashing Skykeys to compute their // ID. SkykeySpecifier = types.NewSpecifier("Skykey") // SkykeyFileMagic is the first piece of data found in a Skykey file. SkykeyFileMagic = types.NewSpecifier("SkykeyFile") // ErrSkykeyWithNameAlreadyExists indicates that a key cannot be created or added // because a key with the same name is already being stored. ErrSkykeyWithNameAlreadyExists = errors.New("Skykey name already used by another key.") // ErrSkykeyWithIDAlreadyExists indicates that a key cannot be created or // added because a key with the same ID (and therefore same key entropy) is // already being stored. ErrSkykeyWithIDAlreadyExists = errors.New("Skykey ID already exists.") // SkykeyPersistFilename is the name of the skykey persistence file. SkykeyPersistFilename = "skykeys.dat" )
Functions ¶
This section is empty.
Types ¶
type Skykey ¶
type Skykey struct { Name string CipherType crypto.CipherType Entropy []byte }
Skykey is a key used to encrypt/decrypt skyfiles.
func (*Skykey) CipherKey ¶ added in v1.4.8
CipherKey returns the crypto.CipherKey equivalent of this Skykey.
func (*Skykey) DeriveSubkey ¶ added in v1.4.8
DeriveSubkey is used to create Skykeys with the same key, but with a different nonce. This is used to create file-specific keys, and separate keys for Skyfile baseSector uploads and fanout uploads.
func (*Skykey) FromString ¶ added in v1.4.8
FromString decodes the base64 string into a Skykey.
func (*Skykey) GenerateFileSpecificSubkey ¶ added in v1.4.8
GenerateFileSpecificSubkey creates a new subkey specific to a certain file being uploaded/downloaded. Skykeys can only be used once with a given nonce, so this method is used to generate keys with new nonces when a new file is uploaded.
func (Skykey) ID ¶
ID returns the ID for the Skykey. A master Skykey and all file-specific skykeys derived from it share the same ID because they only differ in nonce values, not key values. This fact is used to identify the master Skykey with which a Skyfile was encrypted.
func (*Skykey) SubkeyWithNonce ¶ added in v1.4.8
SubkeyWithNonce creates a new subkey with the same key data as this key, but with the given nonce.
type SkykeyID ¶
type SkykeyID [SkykeyIDLen]byte
SkykeyID is the identifier of a skykey.
func (*SkykeyID) FromString ¶ added in v1.4.8
FromString decodes the base64 string into a Skykey ID.
type SkykeyManager ¶
type SkykeyManager struct {
// contains filtered or unexported fields
}
SkykeyManager manages the creation and handling of new skykeys which can be referenced by their unique name or identifier.
func NewSkykeyManager ¶
func NewSkykeyManager(persistDir string) (*SkykeyManager, error)
NewSkykeyManager creates a SkykeyManager for managing skykeys.
func (*SkykeyManager) AddKey ¶
func (sm *SkykeyManager) AddKey(sk Skykey) error
AddKey creates a key with the given name, cipherType, and entropy and adds it to the key file.
func (*SkykeyManager) CreateKey ¶
func (sm *SkykeyManager) CreateKey(name string, cipherType crypto.CipherType) (Skykey, error)
CreateKey creates a new Skykey under the given name and cipherType.
func (*SkykeyManager) IDByName ¶
func (sm *SkykeyManager) IDByName(name string) (SkykeyID, error)
IDByName returns the ID associated with the given key name.
func (*SkykeyManager) KeyByID ¶
func (sm *SkykeyManager) KeyByID(id SkykeyID) (Skykey, error)
KeyByID returns the Skykey associated with that ID.
func (*SkykeyManager) KeyByName ¶
func (sm *SkykeyManager) KeyByName(name string) (Skykey, error)
KeyByName returns the Skykey associated with that key name.
func (*SkykeyManager) SupportsCipherType ¶
func (sm *SkykeyManager) SupportsCipherType(ct crypto.CipherType) bool
SupportsCipherType returns true if and only if the SkykeyManager supports keys with the given cipher type.