mirror of
https://github.com/vlang/v.git
synced 2025-09-11 16:36:20 -04:00
crypto.ecdsa: improve internal sign_digest
routine (#23960)
This commit is contained in:
parent
cb4d16ff3a
commit
1e5c812540
@ -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
|
// 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.
|
// was called with NULL signature buffer, siglen will tell maximum size of signature.
|
||||||
siglen := usize(C.EVP_PKEY_size(key))
|
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)}
|
sig := []u8{len: int(siglen)}
|
||||||
|
|
||||||
|
// calls directly with sign
|
||||||
do := C.EVP_PKEY_sign(ctx, sig.data, &siglen, digest.data, digest.len)
|
do := C.EVP_PKEY_sign(ctx, sig.data, &siglen, digest.data, digest.len)
|
||||||
if do <= 0 {
|
if do <= 0 {
|
||||||
|
unsafe { sig.free() }
|
||||||
C.EVP_PKEY_CTX_free(ctx)
|
C.EVP_PKEY_CTX_free(ctx)
|
||||||
return error('EVP_PKEY_sign fails to sign message')
|
return error('EVP_PKEY_sign fails to sign message')
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user