From 2b8cbd944149afe51fadddbd67ee4499d1d86250 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 6 Feb 2016 19:20:54 +0100 Subject: Major refactoring: Split up "cryptfs" into several internal packages "git status" for reference: deleted: cryptfs/cryptfs.go deleted: cryptfs/names_core.go modified: integration_tests/cli_test.go modified: integration_tests/helpers.go renamed: cryptfs/config_file.go -> internal/configfile/config_file.go renamed: cryptfs/config_test.go -> internal/configfile/config_test.go renamed: cryptfs/config_test/.gitignore -> internal/configfile/config_test/.gitignore renamed: cryptfs/config_test/PlaintextNames.conf -> internal/configfile/config_test/PlaintextNames.conf renamed: cryptfs/config_test/StrangeFeature.conf -> internal/configfile/config_test/StrangeFeature.conf renamed: cryptfs/config_test/v1.conf -> internal/configfile/config_test/v1.conf renamed: cryptfs/config_test/v2.conf -> internal/configfile/config_test/v2.conf renamed: cryptfs/kdf.go -> internal/configfile/kdf.go renamed: cryptfs/kdf_test.go -> internal/configfile/kdf_test.go renamed: cryptfs/cryptfs_content.go -> internal/contentenc/content.go new file: internal/contentenc/content_api.go renamed: cryptfs/content_test.go -> internal/contentenc/content_test.go renamed: cryptfs/file_header.go -> internal/contentenc/file_header.go renamed: cryptfs/intrablock.go -> internal/contentenc/intrablock.go renamed: cryptfs/address_translation.go -> internal/contentenc/offsets.go new file: internal/cryptocore/crypto_api.go renamed: cryptfs/gcm_go1.4.go -> internal/cryptocore/gcm_go1.4.go renamed: cryptfs/gcm_go1.5.go -> internal/cryptocore/gcm_go1.5.go renamed: cryptfs/nonce.go -> internal/cryptocore/nonce.go renamed: cryptfs/openssl_aead.go -> internal/cryptocore/openssl_aead.go renamed: cryptfs/openssl_benchmark.bash -> internal/cryptocore/openssl_benchmark.bash renamed: cryptfs/openssl_test.go -> internal/cryptocore/openssl_test.go new file: internal/nametransform/name_api.go new file: internal/nametransform/names_core.go renamed: cryptfs/names_diriv.go -> internal/nametransform/names_diriv.go renamed: cryptfs/names_noiv.go -> internal/nametransform/names_noiv.go renamed: cryptfs/names_test.go -> internal/nametransform/names_test.go new file: internal/nametransform/pad16.go renamed: cryptfs/log.go -> internal/toggledlog/log.go renamed: cryptfs/log_go1.4.go -> internal/toggledlog/log_go1.4.go renamed: cryptfs/log_go1.5.go -> internal/toggledlog/log_go1.5.go modified: main.go modified: masterkey.go modified: pathfs_frontend/file.go modified: pathfs_frontend/file_holes.go modified: pathfs_frontend/fs.go modified: pathfs_frontend/fs_dir.go modified: pathfs_frontend/names.go modified: test.bash --- cryptfs/cryptfs.go | 83 ------------------------------------------------------ 1 file changed, 83 deletions(-) delete mode 100644 cryptfs/cryptfs.go (limited to 'cryptfs/cryptfs.go') diff --git a/cryptfs/cryptfs.go b/cryptfs/cryptfs.go deleted file mode 100644 index 3a40e29..0000000 --- a/cryptfs/cryptfs.go +++ /dev/null @@ -1,83 +0,0 @@ -package cryptfs - -// CryptFS is the crypto backend of GoCryptFS - -import ( - "crypto/aes" - "crypto/cipher" - "fmt" -) - -const ( - PROGRAM_NAME = "gocryptfs" - - DEFAULT_PLAINBS = 4096 - KEY_LEN = 32 // AES-256 - AUTH_TAG_LEN = 16 - DIRIV_LEN = 16 // identical to AES block size - DIRIV_FILENAME = "gocryptfs.diriv" -) - -type CryptFS struct { - blockCipher cipher.Block - gcm cipher.AEAD - gcmIVLen int - gcmIVGen nonceGenerator - plainBS uint64 - cipherBS uint64 - // Stores an all-zero block of size cipherBS - allZeroBlock []byte - // DirIV cache for filename encryption - DirIVCache dirIVCache -} - -func NewCryptFS(key []byte, useOpenssl bool, plaintextNames bool, GCMIV128 bool) *CryptFS { - - if len(key) != KEY_LEN { - panic(fmt.Sprintf("Unsupported key length %d", len(key))) - } - - b, err := aes.NewCipher(key) - if err != nil { - panic(err) - } - - // We want the IV size in bytes - gcmIV := 96 / 8 - if GCMIV128 { - gcmIV = 128 / 8 - } - - var gcm cipher.AEAD - if useOpenssl { - gcm = opensslGCM{key} - } else { - gcm, err = goGCMWrapper(b, gcmIV) - if err != nil { - panic(err) - } - } - - plainBS := DEFAULT_PLAINBS - cipherBS := plainBS + gcmIV + AUTH_TAG_LEN - - return &CryptFS{ - blockCipher: b, - gcm: gcm, - gcmIVLen: gcmIV, - gcmIVGen: nonceGenerator{nonceLen: gcmIV}, - plainBS: uint64(plainBS), - cipherBS: uint64(cipherBS), - allZeroBlock: make([]byte, cipherBS), - } -} - -// Get plaintext block size -func (be *CryptFS) PlainBS() uint64 { - return be.plainBS -} - -// Per-block storage overhead -func (be *CryptFS) BlockOverhead() uint64 { - return be.cipherBS - be.plainBS -} -- cgit v1.2.3