diff options
| author | Jakob Unterwurzacher | 2021-11-01 14:44:32 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2021-11-01 14:44:32 +0100 | 
| commit | d530fbd400c88fa54c856d958963d77669ac9cf2 (patch) | |
| tree | d43ee0ed0ab4738e4fe5a77ceed3222740f3842c | |
| parent | 87a6bb370acc3690e89a8b0d5109fcb0dab0a374 (diff) | |
docs: names longer than 175 bytes (not 176) are stored in longnames
Quoting fusefrontend_reverse/node_helpers.go :
	// File names are padded to 16-byte multiples, encrypted and
	// base64-encoded. We can encode at most 176 bytes to stay below the 255
	// bytes limit:
	// * base64(176 bytes) = 235 bytes
	// * base64(192 bytes) = 256 bytes (over 255!)
	// But the PKCS#7 padding is at least one byte. This means we can only use
	// 175 bytes for the file name.
Noticed by @bailey27 at https://github.com/rfjakob/gocryptfs/issues/499#issuecomment-955790427
| -rw-r--r-- | Documentation/MANPAGE.md | 7 | ||||
| -rw-r--r-- | cli_args.go | 2 | ||||
| -rw-r--r-- | internal/configfile/feature_flags.go | 2 | 
3 files changed, 6 insertions, 5 deletions
| diff --git a/Documentation/MANPAGE.md b/Documentation/MANPAGE.md index b9c72dd..ffed44e 100644 --- a/Documentation/MANPAGE.md +++ b/Documentation/MANPAGE.md @@ -318,9 +318,10 @@ the directories. Example:      gocryptfs -ko noexec /tmp/foo /tmp/bar  #### -longnames -Store names longer than 176 bytes in extra files (default true) -This flag is useful when recovering old gocryptfs filesystems using -"-masterkey". It is ignored (stays at the default) otherwise. +Store names that are longer than 175 bytes in extra files (default true). + +This flag is only useful when recovering very old gocryptfs filesystems (gocryptfs v0.8 and earlier) +using "-masterkey". It is ignored (stays at the default) otherwise.  #### -nodev  See `-dev, -nodev`. diff --git a/cli_args.go b/cli_args.go index e925345..6b97744 100644 --- a/cli_args.go +++ b/cli_args.go @@ -163,7 +163,7 @@ func parseCliOpts(osArgs []string) (args argContainer) {  	flagSet.BoolVar(&args.quiet, "quiet", false, "Quiet - silence informational messages")  	flagSet.BoolVar(&args.nosyslog, "nosyslog", false, "Do not redirect output to syslog when running in the background")  	flagSet.BoolVar(&args.wpanic, "wpanic", false, "When encountering a warning, panic and exit immediately") -	flagSet.BoolVar(&args.longnames, "longnames", true, "Store names longer than 176 bytes in extra files") +	flagSet.BoolVar(&args.longnames, "longnames", true, "Store names longer than 175 bytes in extra files")  	flagSet.BoolVar(&args.allow_other, "allow_other", false, "Allow other users to access the filesystem. "+  		"Only works if user_allow_other is set in /etc/fuse.conf.")  	flagSet.BoolVar(&args.reverse, "reverse", false, "Reverse mode") diff --git a/internal/configfile/feature_flags.go b/internal/configfile/feature_flags.go index e45b20c..d6627a5 100644 --- a/internal/configfile/feature_flags.go +++ b/internal/configfile/feature_flags.go @@ -14,7 +14,7 @@ const (  	// This flag is mandatory since gocryptfs v1.0,  	// except when XChaCha20Poly1305 is used.  	FlagGCMIV128 -	// FlagLongNames allows file names longer than 176 bytes. +	// FlagLongNames allows file names longer than 175 bytes.  	FlagLongNames  	// FlagLongNameMax sets a custom name length limit, names longer than that  	// will be hashed. | 
