crypto.ecdsa: improve internal sign_digest routine (#23960)

This commit is contained in:
blackshirt 2025-03-17 21:40:52 +07:00 committed by GitHub
parent cb4d16ff3a
commit 1e5c812540
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -363,14 +363,12 @@ fn sign_digest(key &C.EVP_PKEY, digest []u8) ![]u8 {
// siglen was used to store the size of the signature output. When EVP_PKEY_sign
// was called with NULL signature buffer, siglen will tell maximum size of signature.
siglen := usize(C.EVP_PKEY_size(key))
st := C.EVP_PKEY_sign(ctx, 0, &siglen, digest.data, digest.len)
if st <= 0 {
C.EVP_PKEY_CTX_free(ctx)
return error('Get null buffer length on EVP_PKEY_sign')
}
sig := []u8{len: int(siglen)}
// calls directly with sign
do := C.EVP_PKEY_sign(ctx, sig.data, &siglen, digest.data, digest.len)
if do <= 0 {
unsafe { sig.free() }
C.EVP_PKEY_CTX_free(ctx)
return error('EVP_PKEY_sign fails to sign message')
}