summaryrefslogtreecommitdiff
path: root/internal/configfile/feature_flags.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/configfile/feature_flags.go')
-rw-r--r--internal/configfile/feature_flags.go41
1 files changed, 41 insertions, 0 deletions
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
+}