Module ripemd

This module implements RIPEMD set of cryptographic hash functions, designed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. [http://www.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf]

This module is Nim adoptation of original C source code by Antoon Bosselaers. [https://homes.esat.kuleuven.be/~bosselae/ripemd160/ps/AB-9601/rmd160.c]

This module includes support of RIPEMD-128/160/256/320.

Tests made according to official test vectors [https://homes.esat.kuleuven.be/~bosselae/ripemd160.html].

Types

RipemdContext[bits] = 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]
ripemd = ripemd128 | ripemd160 | ripemd256 | ripemd320

Procs

proc init(ctx: var RipemdContext)
proc clear(ctx: var RipemdContext) {...}{.inline.}
proc update(ctx: var RipemdContext; data: ptr byte; ulen: uint)
"is greater" operator. This is the same as y < x.
proc update[T: bchar](ctx: var RipemdContext; data: openArray[T])
proc finish(ctx: var RipemdContext; data: ptr byte; ulen: uint): uint
"is greater or equals" operator. This is the same as y <= x.
proc finish(ctx: var RipemdContext): MDigest[ctx.bits]
proc finish[T: bchar](ctx: var RipemdContext; data: var openArray[T])
"is greater or equals" operator. This is the same as y <= x.

Templates

template sizeDigest(ctx: RipemdContext): uint
template sizeBlock(ctx: RipemdContext): uint
template sizeDigest(r: typedesc[ripemd]): int
template sizeBlock(r: typedesc[ripemd]): int