diff options
author | tb <> | 2021-11-21 11:41:18 +0000 |
---|---|---|
committer | tb <> | 2021-11-21 11:41:18 +0000 |
commit | a5c73ac97b067daed19c07515f4e72156bfa21d4 (patch) | |
tree | 3079c34686c58f39486b02241e16c6c04d348abb /src/regress/lib | |
parent | 8758903dc9ababe69fdd7437fc87ef4c0a87e4b2 (diff) | |
download | openbsd-a5c73ac97b067daed19c07515f4e72156bfa21d4.tar.gz openbsd-a5c73ac97b067daed19c07515f4e72156bfa21d4.tar.bz2 openbsd-a5c73ac97b067daed19c07515f4e72156bfa21d4.zip |
wycheproof.go: modify some DSA and ECDSA code to work with opaque structs
Diffstat (limited to 'src/regress/lib')
-rw-r--r-- | src/regress/lib/libcrypto/wycheproof/wycheproof.go | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/regress/lib/libcrypto/wycheproof/wycheproof.go b/src/regress/lib/libcrypto/wycheproof/wycheproof.go index 9b22f1411e..b10792ab6f 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.122 2021/09/24 20:48:23 tb Exp $ */ | 1 | /* $OpenBSD: wycheproof.go,v 1.123 2021/11/21 11:41:18 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> |
@@ -1270,12 +1270,21 @@ func encodeDSAP1363Sig(wtSig string) (*C.uchar, C.int) { | |||
1270 | s := C.CString(wtSig[sigLen/2:]) | 1270 | s := C.CString(wtSig[sigLen/2:]) |
1271 | defer C.free(unsafe.Pointer(r)) | 1271 | defer C.free(unsafe.Pointer(r)) |
1272 | defer C.free(unsafe.Pointer(s)) | 1272 | defer C.free(unsafe.Pointer(s)) |
1273 | if C.BN_hex2bn(&cSig.r, r) == 0 { | 1273 | var sigR *C.BIGNUM |
1274 | var sigS *C.BIGNUM | ||
1275 | defer C.BN_free(sigR) | ||
1276 | defer C.BN_free(sigS) | ||
1277 | if C.BN_hex2bn(&sigR, r) == 0 { | ||
1274 | return nil, 0 | 1278 | return nil, 0 |
1275 | } | 1279 | } |
1276 | if C.BN_hex2bn(&cSig.s, s) == 0 { | 1280 | if C.BN_hex2bn(&sigS, s) == 0 { |
1277 | return nil, 0 | 1281 | return nil, 0 |
1278 | } | 1282 | } |
1283 | if C.DSA_SIG_set0(cSig, sigR, sigS) == 0 { | ||
1284 | return nil, 0 | ||
1285 | } | ||
1286 | sigR = nil | ||
1287 | sigS = nil | ||
1279 | 1288 | ||
1280 | derLen := C.i2d_DSA_SIG(cSig, nil) | 1289 | derLen := C.i2d_DSA_SIG(cSig, nil) |
1281 | if derLen == 0 { | 1290 | if derLen == 0 { |
@@ -1805,12 +1814,21 @@ func encodeECDSAWebCryptoSig(wtSig string) (*C.uchar, C.int) { | |||
1805 | s := C.CString(wtSig[sigLen/2:]) | 1814 | s := C.CString(wtSig[sigLen/2:]) |
1806 | defer C.free(unsafe.Pointer(r)) | 1815 | defer C.free(unsafe.Pointer(r)) |
1807 | defer C.free(unsafe.Pointer(s)) | 1816 | defer C.free(unsafe.Pointer(s)) |
1808 | if C.BN_hex2bn(&cSig.r, r) == 0 { | 1817 | var sigR *C.BIGNUM |
1818 | var sigS *C.BIGNUM | ||
1819 | defer C.BN_free(sigR) | ||
1820 | defer C.BN_free(sigS) | ||
1821 | if C.BN_hex2bn(&sigR, r) == 0 { | ||
1822 | return nil, 0 | ||
1823 | } | ||
1824 | if C.BN_hex2bn(&sigS, s) == 0 { | ||
1809 | return nil, 0 | 1825 | return nil, 0 |
1810 | } | 1826 | } |
1811 | if C.BN_hex2bn(&cSig.s, s) == 0 { | 1827 | if C.ECDSA_SIG_set0(cSig, sigR, sigS) == 0 { |
1812 | return nil, 0 | 1828 | return nil, 0 |
1813 | } | 1829 | } |
1830 | sigR = nil | ||
1831 | sigS = nil | ||
1814 | 1832 | ||
1815 | derLen := C.i2d_ECDSA_SIG(cSig, nil) | 1833 | derLen := C.i2d_ECDSA_SIG(cSig, nil) |
1816 | if derLen == 0 { | 1834 | if derLen == 0 { |