com.github.cloudfiles.crypt.fs

Members list

Type members

Classlikes

case class CryptConfig(algorithm: CryptAlgorithm, keyEncrypt: Key, keyDecrypt: Key, secRandom: SecureRandom)

A data class combining a set of properties that is required for a file system applying cryptographic operations.

A data class combining a set of properties that is required for a file system applying cryptographic operations.

The properties in this class mainly define the cryptographic algorithm to use and the keys for encryption and decryption.

Value parameters

algorithm

the cryptographic algorithm

keyDecrypt

the key for decryption

keyEncrypt

the key for encryption

secRandom

the source for randomness

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
class CryptContentFileSystem[ID, FILE <: File[ID], FOLDER](val delegate: ExtensibleFileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]], val config: CryptConfig) extends DelegateFileSystem[ID, FILE, FOLDER]

A file system extension that adds support for encrypting the content of files to another file system.

A file system extension that adds support for encrypting the content of files to another file system.

When uploading a file to this file system, the content source for the file is transformed to encrypt the data using the configured CryptAlgorithm and key; so only encrypted data is stored in the underlying file system. Analogously, on download of a file, the source returned by this file system performs decryption transparently.

Type parameters

FILE

the type to represent a file

FOLDER

the type to represent a folder

ID

the type of element IDs

Value parameters

config

the cryptography-related configuration

delegate

the underlying file system

Attributes

Supertypes
trait DelegateFileSystem[ID, FILE, FOLDER]
trait ExtensibleFileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]]
trait FileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]]
trait AutoCloseable
class Object
trait Matchable
class Any
Show all
case class CryptNamesConfig(cryptConfig: CryptConfig, ignoreUnencrypted: Boolean)

A data class representing the configuration of CryptNamesFileSystem.

A data class representing the configuration of CryptNamesFileSystem.

The configuration consists of properties related to the actual encryption plus additional properties to control the behavior of the file system.

Value parameters

cryptConfig

the cryptography-related configuration

ignoreUnencrypted

flag whether elements with unencrypted names should be ignored; if '''false''', the file system expects that all element names are encrypted and properly encoded; a name not holding this assumption causes an exception; if '''true''', such elements are ignored, e.g. when loading the content of a folder or resolving paths

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
class CryptNamesFileSystem[ID, FILE <: File[ID], FOLDER <: Folder[ID]](val delegate: ExtensibleFileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]], val namesConfig: CryptNamesConfig, resolver: PathResolver[ID, FILE, FOLDER]) extends DelegateFileSystem[ID, FILE, FOLDER]

A file system extension that automatically encrypts the names of files and folders stored in an underlying file system.

A file system extension that automatically encrypts the names of files and folders stored in an underlying file system.

When new files or folders are created, their names are encrypted using the configured CryptAlgorithm and encryption key. Analogously, when files or folders are resolved, or the content of a folder is requested, the names are again decrypted. When used together with CryptContentFileSystem both the names and content of files gets encrypted, which is a rather secure storage form.

For file systems with encrypted names, resolving a path becomes difficult, especially if encrypting a string twice with the algorithm in use does not necessarily yield the same result. To be flexible, such operations are delegated to a PathResolver object, which can be passed to the constructor. It is then possible to choose a specific resolver implementation that fits the usage scheme of the file system best.

Type parameters

FILE

the type to represent a file

FOLDER

the type to represent a folder

ID

the type of element IDs

Value parameters

delegate

the underlying file system

namesConfig

the configuration for this file system

resolver

the object that handles path resolve operations

Attributes

Companion
object
Supertypes
trait DelegateFileSystem[ID, FILE, FOLDER]
trait ExtensibleFileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]]
trait FileSystem[ID, FILE, FOLDER, FolderContent[ID, FILE, FOLDER]]
trait AutoCloseable
class Object
trait Matchable
class Any
Show all