From 597710c6ddb6540aa084ac36c68c488bae0abc86 Mon Sep 17 00:00:00 2001 From: cray Date: Sat, 18 Nov 2023 05:02:45 +0300 Subject: [PATCH 1/2] go 1.13 -> 1.21 --- accumulator_test.go | 15 ++++----------- flocksyscall_test.go | 23 +++++++---------------- generator.go | 4 ++-- go.mod | 2 +- seed_test.go | 14 +++++--------- 5 files changed, 19 insertions(+), 39 deletions(-) diff --git a/accumulator_test.go b/accumulator_test.go index e53f219..b65ce3b 100644 --- a/accumulator_test.go +++ b/accumulator_test.go @@ -20,7 +20,6 @@ import ( "bytes" "crypto/rand" "io" - "io/ioutil" mrand "math/rand" "os" "path/filepath" @@ -89,11 +88,8 @@ func TestAccumulator(t *testing.T) { } func TestClose(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) seedFileName := filepath.Join(tempDir, "seed") for _, name := range []string{"", seedFileName} { @@ -119,11 +115,8 @@ func TestClose(t *testing.T) { } func TestReseedingDuringClose(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) seedFileName := filepath.Join(tempDir, "seed") acc, err := NewRNG(seedFileName) diff --git a/flocksyscall_test.go b/flocksyscall_test.go index 21b3707..1ef2ddd 100644 --- a/flocksyscall_test.go +++ b/flocksyscall_test.go @@ -1,20 +1,17 @@ +//go:build darwin || freebsd || linux || netbsd || openbsd // +build darwin freebsd linux netbsd openbsd package fortuna import ( - "io/ioutil" "os" "path/filepath" "testing" ) func TestFlock(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) testFileName := filepath.Join(tempDir, "test") file1, err := os.Create(testFileName) @@ -61,11 +58,8 @@ func TestFlock(t *testing.T) { } func TestFlockClose(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) testFileName := filepath.Join(tempDir, "test") file1, err := os.Create(testFileName) @@ -100,11 +94,8 @@ func TestFlockClose(t *testing.T) { } func TestSeedFileSharing(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) seedFileName := filepath.Join(tempDir, "seed") rng1, err := NewRNG(seedFileName) diff --git a/generator.go b/generator.go index 4636414..48e1f45 100644 --- a/generator.go +++ b/generator.go @@ -21,8 +21,8 @@ import ( "crypto/cipher" "crypto/rand" "io" - "io/ioutil" "net" + "os" "os/user" "time" @@ -102,7 +102,7 @@ func (gen *Generator) setInitialSeed() { // source 2: try different files with timer information, interrupt // counts, etc. (difficult to predict for an attacker) for _, fname := range []string{"/proc/timer_list", "/proc/stat"} { - buffer, _ := ioutil.ReadFile(fname) + buffer, _ := os.ReadFile(fname) n, _ := seedData.Write(buffer) wipe(buffer) isGood = isGood || (n >= 1024) diff --git a/go.mod b/go.mod index a7a2d4f..b46ec36 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,5 @@ module github.com/seehuhn/fortuna -go 1.13 +go 1.21 require github.com/seehuhn/sha256d v1.0.0 diff --git a/seed_test.go b/seed_test.go index a97b29a..1a8823e 100644 --- a/seed_test.go +++ b/seed_test.go @@ -18,18 +18,14 @@ package fortuna import ( "bytes" - "io/ioutil" "os" "path/filepath" "testing" ) func TestSeedfile(t *testing.T) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - defer os.RemoveAll(tempDir) + tempDir := os.TempDir() + defer os.Remove(tempDir) seedFileName := filepath.Join(tempDir, "seed") // check that the seed file is created @@ -51,7 +47,7 @@ func TestSeedfile(t *testing.T) { t.Fatal(err) } rng.gen.reset() - before, err := ioutil.ReadFile(seedFileName) + before, err := os.ReadFile(seedFileName) if err != nil { t.Error(err) } @@ -59,7 +55,7 @@ func TestSeedfile(t *testing.T) { if err != nil { t.Error(err) } - after, err := ioutil.ReadFile(seedFileName) + after, err := os.ReadFile(seedFileName) if err != nil { t.Error(err) } @@ -91,7 +87,7 @@ func TestSeedfile(t *testing.T) { } // check that seed files of wrong length are detected - err = ioutil.WriteFile(seedFileName, []byte("Hello"), os.FileMode(0600)) + err = os.WriteFile(seedFileName, []byte("Hello"), os.FileMode(0600)) if err != nil { t.Error(err) } From cc1f9af1723361c0c54b1c1f71557c69db08f380 Mon Sep 17 00:00:00 2001 From: cray Date: Sat, 18 Nov 2023 06:18:07 +0300 Subject: [PATCH 2/2] add windows support --- flockstub_windows.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 flockstub_windows.go diff --git a/flockstub_windows.go b/flockstub_windows.go new file mode 100644 index 0000000..1a9a824 --- /dev/null +++ b/flockstub_windows.go @@ -0,0 +1,18 @@ +//go:build windows +// +build windows + +package fortuna + +import ( + "os" +) + +// TODO find windows machine and create tests + +func flock(file *os.File) error { + return syscall.LockFileEx(int(file.Fd()), 0, 0, ^uint32(0), ^uint32(0), new(syscall.Overlapped)) +} + +func funlock(file *os.File) error { + return syscall.UnlockFileEx(int(file.Fd()), 0, 0, ^uint32(0), ^uint32(0), new(syscall.Overlapped)) +}