This commit is contained in:
Andreas Rumpf 2019-06-02 06:33:35 +02:00 • committed by GitHub
commit 4a35d2b571
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 9 deletions

View file

@ -16,6 +16,7 @@ static: literal
static: constant folding
static: static string
foo1
1
'''
"""
@ -220,3 +221,52 @@ proc regr(p: Foo[void]): seq[int] =
discard regr(Foo[int]())
discard regr(Foo[void]())
type
Sha2Context*[bits: static[int],
bsize: static[int],
T: uint32|uint64] = object
count: array[2, T]
state: array[8, T]
buffer: array[bsize, byte]
sha224* = Sha2Context[224, 64, uint32]
sha256* = Sha2Context[256, 64, uint32]
sha384* = Sha2Context[384, 128, uint64]
sha512* = Sha2Context[512, 128, uint64]
sha512_224* = Sha2Context[224, 128, uint64]
sha512_256* = Sha2Context[256, 128, uint64]
type
RipemdContext*[bits: static[int]] = object
count: array[2, uint32]
state: array[bits div 32, uint32]
buffer: array[64, byte]
ripemd128* = RipemdContext[128]
ripemd160* = RipemdContext[160]
ripemd256* = RipemdContext[256]
ripemd320* = RipemdContext[320]
const
MaxHmacBlockSize = 256
type
HMAC*[HashType] = object
mdctx: HashType
opadctx: HashType
template sizeBlock*(h: HMAC[Sha2Context]): uint = 1u
template sizeBlock*(h: HMAC[RipemdContext]): uint = 0u
proc init*[T](hmctx: HMAC[T], key: ptr byte, ulen: uint) =
const sizeBlock = hmctx.sizeBlock
echo sizeBlock
proc hmac*[A, B](HashType: typedesc, key: openarray[A],
data: openarray[B]) =
var ctx: HMAC[HashType]
ctx.init(nil, 0)
sha256.hmac("", "")