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 | ||
