Replace globally GC'ed variable with function.
This commit is contained in:
parent
a740d4ce54
commit
60f52cb22f
@ -96,7 +96,7 @@ proc getEcHashCfg(alg: JwtAlgorithm): HashCfg =
|
|||||||
else: raise newException(ValueError,
|
else: raise newException(ValueError,
|
||||||
"Unsupported ECDSA signature algorithm '" & $alg & "'")
|
"Unsupported ECDSA signature algorithm '" & $alg & "'")
|
||||||
|
|
||||||
result = HASHES[hashAlg]
|
result = hashConfig(hashAlg)
|
||||||
|
|
||||||
proc bearEcSign(
|
proc bearEcSign(
|
||||||
message: string,
|
message: string,
|
||||||
|
@ -33,11 +33,37 @@ let HASHES* = newTable[HashAlgorithm, HashCfg]([
|
|||||||
size: sha512Size)),
|
size: sha512Size)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
proc hashConfig*(alg: HashAlgorithm): HashCfg =
|
||||||
|
case alg:
|
||||||
|
of SHA1: return HashCfg(
|
||||||
|
alg: SHA1,
|
||||||
|
vtable: addr sha1Vtable,
|
||||||
|
oid: HASH_OID_SHA1,
|
||||||
|
size: sha1Size)
|
||||||
|
|
||||||
|
of SHA256: return HashCfg(
|
||||||
|
alg: SHA256,
|
||||||
|
vtable: addr sha256Vtable,
|
||||||
|
oid: HASH_OID_SHA256,
|
||||||
|
size: sha256Size)
|
||||||
|
|
||||||
|
of SHA384: return HashCfg(
|
||||||
|
alg: SHA384,
|
||||||
|
vtable: addr sha384Vtable,
|
||||||
|
oid: HASH_OID_SHA384,
|
||||||
|
size: sha384Size)
|
||||||
|
|
||||||
|
of SHA512: return HashCfg(
|
||||||
|
alg: SHA512,
|
||||||
|
vtable: addr sha512Vtable,
|
||||||
|
oid: HASH_OID_SHA512,
|
||||||
|
size: sha512Size)
|
||||||
|
|
||||||
proc hash*(data: string, alg: HashAlgorithm): string =
|
proc hash*(data: string, alg: HashAlgorithm): string =
|
||||||
|
|
||||||
var ctx: HashCompatContext
|
var ctx: HashCompatContext
|
||||||
var pCtx = cast[ptr ptr HashClass](addr ctx)
|
var pCtx = cast[ptr ptr HashClass](addr ctx)
|
||||||
let hashCfg = HASHES[alg]
|
let hashCfg = hashConfig(alg)
|
||||||
result = newString(hashCfg.size)
|
result = newString(hashCfg.size)
|
||||||
hashCfg.vtable.init(pCtx)
|
hashCfg.vtable.init(pCtx)
|
||||||
hashCfg.vtable.update(pCtx, unsafeAddr data[0], data.len)
|
hashCfg.vtable.update(pCtx, unsafeAddr data[0], data.len)
|
||||||
|
@ -133,7 +133,7 @@ proc getRsaHashCfg(alg: JwtAlgorithm): HashCfg =
|
|||||||
else: raise newException(ValueError,
|
else: raise newException(ValueError,
|
||||||
"Unsupported RSA signature algorithm '" & $alg & "'")
|
"Unsupported RSA signature algorithm '" & $alg & "'")
|
||||||
|
|
||||||
result = HASHES[hashAlg]
|
result = hashConfig(hashAlg)
|
||||||
|
|
||||||
proc bearRsaSign(
|
proc bearRsaSign(
|
||||||
message: string,
|
message: string,
|
||||||
|
Loading…
Reference in New Issue
Block a user