diff options
| author | tb <> | 2021-11-21 11:55:00 +0000 |
|---|---|---|
| committer | tb <> | 2021-11-21 11:55:00 +0000 |
| commit | ff6fd818e90db619298226b17102f94cb10a855c (patch) | |
| tree | 97155f00000316eefe734e55b80aa8379228dd2f /src | |
| parent | a5c73ac97b067daed19c07515f4e72156bfa21d4 (diff) | |
| download | openbsd-ff6fd818e90db619298226b17102f94cb10a855c.tar.gz openbsd-ff6fd818e90db619298226b17102f94cb10a855c.tar.bz2 openbsd-ff6fd818e90db619298226b17102f94cb10a855c.zip | |
wycheproof: modify RSA tests to work with opaque RSA struct
Diffstat (limited to 'src')
| -rw-r--r-- | src/regress/lib/libcrypto/wycheproof/wycheproof.go | 68 |
1 files changed, 57 insertions, 11 deletions
diff --git a/src/regress/lib/libcrypto/wycheproof/wycheproof.go b/src/regress/lib/libcrypto/wycheproof/wycheproof.go index b10792ab6f..e23b100bf7 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.123 2021/11/21 11:41:18 tb Exp $ */ | 1 | /* $OpenBSD: wycheproof.go,v 1.124 2021/11/21 11:55:00 tb 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 Theo Buehler <tb@openbsd.org> | 4 | * Copyright (c) 2018, 2019 Theo Buehler <tb@openbsd.org> |
| @@ -2229,23 +2229,36 @@ func runRsaesOaepTestGroup(algorithm string, wtg *wycheproofTestGroupRsaesOaep) | |||
| 2229 | defer C.RSA_free(rsa) | 2229 | defer C.RSA_free(rsa) |
| 2230 | 2230 | ||
| 2231 | d := C.CString(wtg.D) | 2231 | d := C.CString(wtg.D) |
| 2232 | if C.BN_hex2bn(&rsa.d, d) == 0 { | 2232 | var rsaD *C.BIGNUM |
| 2233 | defer C.BN_free(rsaD) | ||
| 2234 | if C.BN_hex2bn(&rsaD, d) == 0 { | ||
| 2233 | log.Fatal("Failed to set RSA d") | 2235 | log.Fatal("Failed to set RSA d") |
| 2234 | } | 2236 | } |
| 2235 | C.free(unsafe.Pointer(d)) | 2237 | C.free(unsafe.Pointer(d)) |
| 2236 | 2238 | ||
| 2237 | e := C.CString(wtg.E) | 2239 | e := C.CString(wtg.E) |
| 2238 | if C.BN_hex2bn(&rsa.e, e) == 0 { | 2240 | var rsaE *C.BIGNUM |
| 2241 | defer C.BN_free(rsaE) | ||
| 2242 | if C.BN_hex2bn(&rsaE, e) == 0 { | ||
| 2239 | log.Fatal("Failed to set RSA e") | 2243 | log.Fatal("Failed to set RSA e") |
| 2240 | } | 2244 | } |
| 2241 | C.free(unsafe.Pointer(e)) | 2245 | C.free(unsafe.Pointer(e)) |
| 2242 | 2246 | ||
| 2243 | n := C.CString(wtg.N) | 2247 | n := C.CString(wtg.N) |
| 2244 | if C.BN_hex2bn(&rsa.n, n) == 0 { | 2248 | var rsaN *C.BIGNUM |
| 2249 | defer C.BN_free(rsaN) | ||
| 2250 | if C.BN_hex2bn(&rsaN, n) == 0 { | ||
| 2245 | log.Fatal("Failed to set RSA n") | 2251 | log.Fatal("Failed to set RSA n") |
| 2246 | } | 2252 | } |
| 2247 | C.free(unsafe.Pointer(n)) | 2253 | C.free(unsafe.Pointer(n)) |
| 2248 | 2254 | ||
| 2255 | if C.RSA_set0_key(rsa, rsaN, rsaE, rsaD) == 0 { | ||
| 2256 | log.Fatal("RSA_set0_key failed") | ||
| 2257 | } | ||
| 2258 | rsaN = nil | ||
| 2259 | rsaE = nil | ||
| 2260 | rsaD = nil | ||
| 2261 | |||
| 2249 | sha, err := hashEvpMdFromString(wtg.SHA) | 2262 | sha, err := hashEvpMdFromString(wtg.SHA) |
| 2250 | if err != nil { | 2263 | if err != nil { |
| 2251 | log.Fatalf("Failed to get hash: %v", err) | 2264 | log.Fatalf("Failed to get hash: %v", err) |
| @@ -2316,23 +2329,36 @@ func runRsaesPkcs1TestGroup(algorithm string, wtg *wycheproofTestGroupRsaesPkcs1 | |||
| 2316 | defer C.RSA_free(rsa) | 2329 | defer C.RSA_free(rsa) |
| 2317 | 2330 | ||
| 2318 | d := C.CString(wtg.D) | 2331 | d := C.CString(wtg.D) |
| 2319 | if C.BN_hex2bn(&rsa.d, d) == 0 { | 2332 | var rsaD *C.BIGNUM |
| 2333 | defer C.BN_free(rsaD) | ||
| 2334 | if C.BN_hex2bn(&rsaD, d) == 0 { | ||
| 2320 | log.Fatal("Failed to set RSA d") | 2335 | log.Fatal("Failed to set RSA d") |
| 2321 | } | 2336 | } |
| 2322 | C.free(unsafe.Pointer(d)) | 2337 | C.free(unsafe.Pointer(d)) |
| 2323 | 2338 | ||
| 2324 | e := C.CString(wtg.E) | 2339 | e := C.CString(wtg.E) |
| 2325 | if C.BN_hex2bn(&rsa.e, e) == 0 { | 2340 | var rsaE *C.BIGNUM |
| 2341 | defer C.BN_free(rsaE) | ||
| 2342 | if C.BN_hex2bn(&rsaE, e) == 0 { | ||
| 2326 | log.Fatal("Failed to set RSA e") | 2343 | log.Fatal("Failed to set RSA e") |
| 2327 | } | 2344 | } |
| 2328 | C.free(unsafe.Pointer(e)) | 2345 | C.free(unsafe.Pointer(e)) |
| 2329 | 2346 | ||
| 2330 | n := C.CString(wtg.N) | 2347 | n := C.CString(wtg.N) |
| 2331 | if C.BN_hex2bn(&rsa.n, n) == 0 { | 2348 | var rsaN *C.BIGNUM |
| 2349 | defer C.BN_free(rsaN) | ||
| 2350 | if C.BN_hex2bn(&rsaN, n) == 0 { | ||
| 2332 | log.Fatal("Failed to set RSA n") | 2351 | log.Fatal("Failed to set RSA n") |
| 2333 | } | 2352 | } |
| 2334 | C.free(unsafe.Pointer(n)) | 2353 | C.free(unsafe.Pointer(n)) |
| 2335 | 2354 | ||
| 2355 | if C.RSA_set0_key(rsa, rsaN, rsaE, rsaD) == 0 { | ||
| 2356 | log.Fatal("RSA_set0_key failed") | ||
| 2357 | } | ||
| 2358 | rsaN = nil | ||
| 2359 | rsaE = nil | ||
| 2360 | rsaD = nil | ||
| 2361 | |||
| 2336 | success := true | 2362 | success := true |
| 2337 | for _, wt := range wtg.Tests { | 2363 | for _, wt := range wtg.Tests { |
| 2338 | if !runRsaesPkcs1Test(rsa, wt) { | 2364 | if !runRsaesPkcs1Test(rsa, wt) { |
| @@ -2411,17 +2437,27 @@ func runRsassaTestGroup(algorithm string, wtg *wycheproofTestGroupRsassa) bool { | |||
| 2411 | defer C.RSA_free(rsa) | 2437 | defer C.RSA_free(rsa) |
| 2412 | 2438 | ||
| 2413 | e := C.CString(wtg.E) | 2439 | e := C.CString(wtg.E) |
| 2414 | if C.BN_hex2bn(&rsa.e, e) == 0 { | 2440 | var rsaE *C.BIGNUM |
| 2441 | defer C.BN_free(rsaE) | ||
| 2442 | if C.BN_hex2bn(&rsaE, e) == 0 { | ||
| 2415 | log.Fatal("Failed to set RSA e") | 2443 | log.Fatal("Failed to set RSA e") |
| 2416 | } | 2444 | } |
| 2417 | C.free(unsafe.Pointer(e)) | 2445 | C.free(unsafe.Pointer(e)) |
| 2418 | 2446 | ||
| 2419 | n := C.CString(wtg.N) | 2447 | n := C.CString(wtg.N) |
| 2420 | if C.BN_hex2bn(&rsa.n, n) == 0 { | 2448 | var rsaN *C.BIGNUM |
| 2449 | defer C.BN_free(rsaN) | ||
| 2450 | if C.BN_hex2bn(&rsaN, n) == 0 { | ||
| 2421 | log.Fatal("Failed to set RSA n") | 2451 | log.Fatal("Failed to set RSA n") |
| 2422 | } | 2452 | } |
| 2423 | C.free(unsafe.Pointer(n)) | 2453 | C.free(unsafe.Pointer(n)) |
| 2424 | 2454 | ||
| 2455 | if C.RSA_set0_key(rsa, rsaN, rsaE, nil) == 0 { | ||
| 2456 | log.Fatal("RSA_set0_key failed") | ||
| 2457 | } | ||
| 2458 | rsaN = nil | ||
| 2459 | rsaE = nil | ||
| 2460 | |||
| 2425 | h, err := hashFromString(wtg.SHA) | 2461 | h, err := hashFromString(wtg.SHA) |
| 2426 | if err != nil { | 2462 | if err != nil { |
| 2427 | log.Fatalf("Failed to get hash: %v", err) | 2463 | log.Fatalf("Failed to get hash: %v", err) |
| @@ -2496,17 +2532,27 @@ func runRSATestGroup(algorithm string, wtg *wycheproofTestGroupRSA) bool { | |||
| 2496 | defer C.RSA_free(rsa) | 2532 | defer C.RSA_free(rsa) |
| 2497 | 2533 | ||
| 2498 | e := C.CString(wtg.E) | 2534 | e := C.CString(wtg.E) |
| 2499 | if C.BN_hex2bn(&rsa.e, e) == 0 { | 2535 | var rsaE *C.BIGNUM |
| 2536 | defer C.BN_free(rsaE) | ||
| 2537 | if C.BN_hex2bn(&rsaE, e) == 0 { | ||
| 2500 | log.Fatal("Failed to set RSA e") | 2538 | log.Fatal("Failed to set RSA e") |
| 2501 | } | 2539 | } |
| 2502 | C.free(unsafe.Pointer(e)) | 2540 | C.free(unsafe.Pointer(e)) |
| 2503 | 2541 | ||
| 2504 | n := C.CString(wtg.N) | 2542 | n := C.CString(wtg.N) |
| 2505 | if C.BN_hex2bn(&rsa.n, n) == 0 { | 2543 | var rsaN *C.BIGNUM |
| 2544 | defer C.BN_free(rsaN) | ||
| 2545 | if C.BN_hex2bn(&rsaN, n) == 0 { | ||
| 2506 | log.Fatal("Failed to set RSA n") | 2546 | log.Fatal("Failed to set RSA n") |
| 2507 | } | 2547 | } |
| 2508 | C.free(unsafe.Pointer(n)) | 2548 | C.free(unsafe.Pointer(n)) |
| 2509 | 2549 | ||
| 2550 | if C.RSA_set0_key(rsa, rsaN, rsaE, nil) == 0 { | ||
| 2551 | log.Fatal("RSA_set0_key failed") | ||
| 2552 | } | ||
| 2553 | rsaN = nil | ||
| 2554 | rsaE = nil | ||
| 2555 | |||
| 2510 | nid, err := nidFromString(wtg.SHA) | 2556 | nid, err := nidFromString(wtg.SHA) |
| 2511 | if err != nil { | 2557 | if err != nil { |
| 2512 | log.Fatalf("Failed to get MD NID: %v", err) | 2558 | log.Fatalf("Failed to get MD NID: %v", err) |
