diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/regress/lib/libcrypto/wycheproof/wycheproof.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/regress/lib/libcrypto/wycheproof/wycheproof.go b/src/regress/lib/libcrypto/wycheproof/wycheproof.go index accd9ab9cb..f98d4b13e8 100644 --- a/src/regress/lib/libcrypto/wycheproof/wycheproof.go +++ b/src/regress/lib/libcrypto/wycheproof/wycheproof.go | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: wycheproof.go,v 1.137 2023/03/08 05:41:08 jsing Exp $ */ | 1 | /* $OpenBSD: wycheproof.go,v 1.138 2023/03/08 06:12:52 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2018,2019,2022 Theo Buehler <tb@openbsd.org> | 4 | * Copyright (c) 2018,2019,2022 Theo Buehler <tb@openbsd.org> |
@@ -90,6 +90,7 @@ import ( | |||
90 | "regexp" | 90 | "regexp" |
91 | "runtime" | 91 | "runtime" |
92 | "strings" | 92 | "strings" |
93 | "sync" | ||
93 | "unsafe" | 94 | "unsafe" |
94 | ) | 95 | ) |
95 | 96 | ||
@@ -2973,6 +2974,14 @@ func main() { | |||
2973 | 2974 | ||
2974 | success := true | 2975 | success := true |
2975 | 2976 | ||
2977 | var wg sync.WaitGroup | ||
2978 | |||
2979 | vectorsRateLimitCh := make(chan bool, 4) | ||
2980 | for i := 0; i < cap(vectorsRateLimitCh); i++ { | ||
2981 | vectorsRateLimitCh <- true | ||
2982 | } | ||
2983 | resultCh := make(chan bool, 1024) | ||
2984 | |||
2976 | testc = newTestCoordinator() | 2985 | testc = newTestCoordinator() |
2977 | 2986 | ||
2978 | skipNormal := regexp.MustCompile(`_(ecpoint|p1363|sha3|sha512_(224|256))_`) | 2987 | skipNormal := regexp.MustCompile(`_(ecpoint|p1363|sha3|sha512_(224|256))_`) |
@@ -2990,9 +2999,26 @@ func main() { | |||
2990 | fmt.Printf("INFO: Skipping tests from \"%s\"\n", strings.TrimPrefix(tv, testVectorPath+"/")) | 2999 | fmt.Printf("INFO: Skipping tests from \"%s\"\n", strings.TrimPrefix(tv, testVectorPath+"/")) |
2991 | continue | 3000 | continue |
2992 | } | 3001 | } |
2993 | if !runTestVectors(tv, test.variant) { | 3002 | wg.Add(1) |
2994 | success = false | 3003 | <-vectorsRateLimitCh |
2995 | } | 3004 | go func(tv string, variant testVariant) { |
3005 | select { | ||
3006 | case resultCh <- runTestVectors(tv, variant): | ||
3007 | default: | ||
3008 | log.Fatal("result channel is full") | ||
3009 | } | ||
3010 | vectorsRateLimitCh <- true | ||
3011 | wg.Done() | ||
3012 | }(tv, test.variant) | ||
3013 | } | ||
3014 | } | ||
3015 | |||
3016 | wg.Wait() | ||
3017 | close(resultCh) | ||
3018 | |||
3019 | for result := range resultCh { | ||
3020 | if !result { | ||
3021 | success = false | ||
2996 | } | 3022 | } |
2997 | } | 3023 | } |
2998 | 3024 | ||