diff options
Diffstat (limited to 'cryptfs')
| -rw-r--r-- | cryptfs/cryptfs.go | 6 | ||||
| -rw-r--r-- | cryptfs/cryptfs_content.go | 17 | ||||
| -rw-r--r-- | cryptfs/log.go | 14 | 
3 files changed, 36 insertions, 1 deletions
| diff --git a/cryptfs/cryptfs.go b/cryptfs/cryptfs.go index 71ec996..46f5b65 100644 --- a/cryptfs/cryptfs.go +++ b/cryptfs/cryptfs.go @@ -58,6 +58,12 @@ func NewCryptFS(key []byte, useOpenssl bool) *CryptFS {  	}  } +// Get plaintext block size  func (be *CryptFS) PlainBS() uint64 {  	return be.plainBS  } + +// Get ciphertext block size +func (be *CryptFS) CipherBS() uint64 { +	return be.cipherBS +} diff --git a/cryptfs/cryptfs_content.go b/cryptfs/cryptfs_content.go index e42011a..a4dc78a 100644 --- a/cryptfs/cryptfs_content.go +++ b/cryptfs/cryptfs_content.go @@ -7,8 +7,22 @@ import (  	"os"  	"errors"  	"crypto/cipher" +	"crypto/md5" +	"encoding/hex"  ) +const ( +	// A block of 4124 zero bytes has this md5 +	ZeroBlockMd5 = "64331af89bd15a987b39855338336237" +) + +// md5sum - debug helper, return md5 hex string +func md5sum(buf []byte) string { +	rawHash := md5.Sum(buf) +	hash := hex.EncodeToString(rawHash[:]) +	return hash +} +  type CryptFile struct {  	file *os.File  	gcm cipher.AEAD @@ -55,6 +69,7 @@ func (be *CryptFS) DecryptBlock(ciphertext []byte) ([]byte, error) {  	// Extract nonce  	nonce := ciphertext[:NONCE_LEN] +	ciphertextOrig := ciphertext  	ciphertext = ciphertext[NONCE_LEN:]  	// Decrypt @@ -63,7 +78,7 @@ func (be *CryptFS) DecryptBlock(ciphertext []byte) ([]byte, error) {  	plaintext, err := be.gcm.Open(plaintext, nonce, ciphertext, nil)  	if err != nil { -		Warn.Printf("DecryptBlock: %s\n", err.Error()) +		Warn.Printf("DecryptBlock: %s, len=%d, md5=%s\n", err.Error(), len(ciphertextOrig), Warn.Md5sum(ciphertextOrig))  		return nil, err  	} diff --git a/cryptfs/log.go b/cryptfs/log.go index d40aa3f..850ec9e 100644 --- a/cryptfs/log.go +++ b/cryptfs/log.go @@ -15,6 +15,12 @@ func (l *logChannel) Printf(format string, args ...interface{}) {  	}  } +func (l *logChannel) Println(s string) { +	if l.enabled == true { +		fmt.Println(s) +	} +} +  func (l *logChannel) Dump(d []byte) {  	s := string(d)  	fmt.Println(strings.Replace(s, "\000", "\\0", -1)) @@ -24,6 +30,14 @@ func (l *logChannel) Enable() {  	l.enabled = true  } +// Only actually calculate the md5sum if the log channel is enabled to save +// CPU cycles +func (l *logChannel) Md5sum(buf []byte) string { +	if l.enabled == false { +		return "" +	} +	return md5sum(buf) +}  var Debug = logChannel{false}  var Notice = logChannel{true} | 
