From f2d208c464a1f157014127bfa97dbb7b84158f95 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 5 Jun 2016 12:53:10 +0200 Subject: configfile: use map[flagIota] for feature flags This should make things saner and more extensible. It prepares the infrastructure for "required feature flags" that will be used to deprecate old gocryptfs version. --- internal/configfile/feature_flags.go | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 internal/configfile/feature_flags.go (limited to 'internal/configfile/feature_flags.go') diff --git a/internal/configfile/feature_flags.go b/internal/configfile/feature_flags.go new file mode 100644 index 0000000..d439363 --- /dev/null +++ b/internal/configfile/feature_flags.go @@ -0,0 +1,41 @@ +package configfile + +type flagIota int + +const ( + FlagPlaintextNames flagIota = iota + FlagDirIV + FlagEMENames + FlagGCMIV128 + FlagLongNames +) + +// knownFlags stores the known feature flags and their string representation +var knownFlags map[flagIota]string = map[flagIota]string{ + FlagPlaintextNames: "PlaintextNames", + FlagDirIV: "DirIV", + FlagEMENames: "EMENames", + FlagGCMIV128: "GCMIV128", + FlagLongNames: "LongNames", +} + +// isFeatureFlagKnown verifies that we understand a feature flag +func (cf *ConfFile) isFeatureFlagKnown(flag string) bool { + for _, knownFlag := range knownFlags { + if knownFlag == flag { + return true + } + } + return false +} + +// isFeatureFlagSet - is the feature flag "flagWant" enabled? +func (cf *ConfFile) IsFeatureFlagSet(flagWant flagIota) bool { + flagString := knownFlags[flagWant] + for _, flag := range cf.FeatureFlags { + if flag == flagString { + return true + } + } + return false +} -- cgit v1.2.3