From a6ea84042f652841886937b71ed6a4be0fa00892 Mon Sep 17 00:00:00 2001 From: Vitaliy Vasylenko Date: Sat, 30 Mar 2024 01:40:41 -0400 Subject: [PATCH] feat: make filevault dir index in reverse mode --- pkg/vault/filevault/keys.go | 2 +- pkg/vault/filevault/tools.go | 9 ++++++++- pkg/vault/filevault/tools_test.go | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/vault/filevault/keys.go b/pkg/vault/filevault/keys.go index 2fbdf19..72143bd 100644 --- a/pkg/vault/filevault/keys.go +++ b/pkg/vault/filevault/keys.go @@ -11,7 +11,7 @@ import ( ) func (v *Vault) ListKeys() ([][]byte, error) { - fileList, err := filepath.Glob(filepath.Join(v.storagePath, "*", "*", "*", fmt.Sprintf("*%s", fileExtension))) + fileList, err := filepath.Glob(filepath.Join(v.storagePath, "*", "*", fmt.Sprintf("*%s", fileExtension))) if err != nil { return nil, fmt.Errorf("failed to list files: %w", err) } diff --git a/pkg/vault/filevault/tools.go b/pkg/vault/filevault/tools.go index 850970a..fcf1e3b 100644 --- a/pkg/vault/filevault/tools.go +++ b/pkg/vault/filevault/tools.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "fmt" "path/filepath" + "slices" ) const ( @@ -13,7 +14,13 @@ const ( func getKeyPath(key []byte) (string, string) { fileName := hex.EncodeToString(key) - fileDir := filepath.Join(fileName[0:2], fileName[2:4], fileName[4:6]) + keyReverse := make([]byte, len(key)) + copy(keyReverse, key) + slices.Reverse(keyReverse) + + fileNameReverse := hex.EncodeToString(keyReverse) + + fileDir := filepath.Join(fileNameReverse[0:2], fileNameReverse[2:4]) filePath := filepath.Join(fileDir, fileName) return fmt.Sprintf("%s%s", filePath, fileExtension), fileDir diff --git a/pkg/vault/filevault/tools_test.go b/pkg/vault/filevault/tools_test.go index 1eaaf22..e2ce5db 100644 --- a/pkg/vault/filevault/tools_test.go +++ b/pkg/vault/filevault/tools_test.go @@ -4,8 +4,8 @@ import "testing" func TestGetKeyPath(t *testing.T) { key := []byte{0x01, 0x02, 0x03, 0x04} - expectedPath := "01/02/03/01020304.txt" - expectedDir := "01/02/03" + expectedPath := "04/03/01020304.txt" + expectedDir := "04/03" filePath, fileDir := getKeyPath(key) if filePath != expectedPath {