diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-05-03 00:12:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-03 00:12:52 +0200 |
commit | 49b28f19978b45e4a8868e68a07b8f28807e4705 (patch) | |
tree | 0f55a3944b74eb4ec33fbeab1962aa56c52eb60a /tests | |
parent | fbc97e712a67f30076f7633880383c8c4ae7866f (diff) | |
download | Nim-49b28f19978b45e4a8868e68a07b8f28807e4705.tar.gz |
fixes #14136 (#14198)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/metatype/tshacontext.nim | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/metatype/tshacontext.nim b/tests/metatype/tshacontext.nim new file mode 100644 index 000000000..7f649d202 --- /dev/null +++ b/tests/metatype/tshacontext.nim @@ -0,0 +1,44 @@ + +# bug #14136 + +type + MDigest*[bits: static[int]] = object + ## Message digest type + data*: array[bits div 8, byte] + + Sha2Context*[bits: static[int], + bsize: static[int], + T: uint32|uint64] = object + count: array[2, T] + state: array[8, T] + buffer: array[bsize, byte] + + sha256* = Sha2Context[256, 64, uint32] + +template hmacSizeBlock*(h: typedesc): int = + when (h is Sha2Context): + int(h.bsize) + else: + {.fatal: "Choosen hash primitive is not yet supported!".} + +type + HMAC*[HashType] = object + ## HMAC context object. + mdctx: HashType + opadctx: HashType + ipad: array[HashType.hmacSizeBlock, byte] + opad: array[HashType.hmacSizeBlock, byte] + +func hkdfExtract*[T;S,I: char|byte](ctx: var HMAC[T], + prk: var MDigest[T.bits], # <------- error here "Error: type expected" + salt: openArray[S], + ikm: openArray[I] + ) = + discard + +var ctx: HMAC[sha256] +var prk: MDigest[sha256.bits] +let salt = [byte 0x00, 0x01, 0x02] +let ikm = "CompletelyRandomInput" + +ctx.hkdfExtract(prk, salt, ikm) |