ripemd128digest.bmx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. '
  2. ' Copyright (C) 2019-2022 Bruce A Henderson
  3. '
  4. ' This software is provided 'as-is', without any express or implied
  5. ' warranty. In no event will the authors be held liable for any damages
  6. ' arising from the use of this software.
  7. '
  8. ' Permission is granted to anyone to use this software for any purpose,
  9. ' including commercial applications, and to alter it and redistribute it
  10. ' freely, subject to the following restrictions:
  11. '
  12. ' 1. The origin of this software must not be misrepresented; you must not
  13. ' claim that you wrote the original software. If you use this software
  14. ' in a product, an acknowledgment in the product documentation would be
  15. ' appreciated but is not required.
  16. ' 2. Altered source versions must be plainly marked as such, and must not be
  17. ' misrepresented as being the original software.
  18. ' 3. This notice may not be removed or altered from any source distribution.
  19. '
  20. SuperStrict
  21. Rem
  22. bbdoc: RIPEMD-128 Digest
  23. about:
  24. See <https://en.wikipedia.org/wiki/RIPEMD>
  25. End Rem
  26. Module Crypto.Ripemd128Digest
  27. ModuleInfo "CC_OPTS: -DLTC_NO_TEST -DLTC_NO_FILE"
  28. ModuleInfo "CC_OPTS: -DLTC_RIPEMD128"
  29. Import "common.bmx"
  30. New TRipemd128DigestRegister
  31. Rem
  32. bbdoc: An Ripemd-128 message digest.
  33. End Rem
  34. Type TRipemd128 Extends TMessageDigest
  35. Method New()
  36. digestPtr = bmx_digest_rmd128_init()
  37. End Method
  38. Method OutBytes:Int() Override
  39. Return 16
  40. End Method
  41. Rem
  42. bbdoc: Updates the hash with @dataLen bytes of data.
  43. End Rem
  44. Method Update:Int(data:Byte Ptr, dataLen:Int) Override
  45. Return bmx_digest_rmd128_process(digestPtr, data, dataLen)
  46. End Method
  47. Rem
  48. bbdoc: Finishes hashing and produces the digest, filling @digest with the hashed bytes.
  49. about: The hashing state is reset, ready to create a new digest.
  50. End Rem
  51. Method Finish:Int(digest:Byte[]) Override
  52. Assert digest.length >= 16, "Byte array must be at least 16 bytes."
  53. Return bmx_digest_rmd128_done(digestPtr, digest)
  54. End Method
  55. End Type
  56. Type TRipemd128DigestRegister Extends TDigestRegister
  57. Method GetDigest:TMessageDigest( name:String ) Override
  58. name = name.ToUpper()
  59. If name = "RMD-128" Or name = "RMD128" Or name = "RIPEMD-128" Or name = "RIPEMD128" Then
  60. Return New TRipemd128
  61. End If
  62. End Method
  63. Method ToString:String() Override
  64. Return "RIPEMD-128"
  65. End Method
  66. End Type