Home Download Docs Code Community
import "perkeep/pkg/blobserver/encrypt"
Overview
Index

Overview ▾

Package encrypt registers the "encrypt" blobserver storage type which stores all blobs and metadata with age encryption into other wrapped storage targets (e.g. localdisk, s3, remote, google).

An encrypt storage target is configured with two other storage targets: one to hold encrypted blobs, and one to hold encrypted metadata about the encrypted blobs. On start-up, all the metadata blobs are read to discover the plaintext blobrefs.

Encryption is currently always age. See code for metadata formats and configuration details, which are currently subject to change.

The low-level config requires 'keyFile' to be set.

Example low-level config:

"/storage-encrypted/": {
    "handler": "storage-encrypt",
    "handlerArgs": {
        "I_AGREE": "that encryption support hasn't been peer-reviewed, isn't finished, and its format might change.",
        "keyFile": "/path/to/keyfile",
        "blobs": "/blobs-storage/",
        "meta": "/meta-storage/",
        "metaIndex": {
            "file": "/path/to/index.leveldb",
            "type": "leveldb"
        },
    }
},

Index

Constants

Package files

encrypt.go meta.go permissions_posix.go

Constants

const (
    // FullMetaBlobSize is the number of lines at which we stop compacting a meta blob.
    FullMetaBlobSize = 10 * 1000 // ~ 512kB
    // SmallMetaCountLimit is the number of small meta that triggers compaction.
    SmallMetaCountLimit = 100 // 100 rounds to make a full = ~ 26MB bw waste
)
Website layout inspired by memcached.
Content by the authors.