Skip to content

Commit

Permalink
Bugfix: Add used field to MD5 hash state
Browse files Browse the repository at this point in the history
MD5.jl currently uses undocumented and unexported internals of the SHA stdlib.
PR #86 to SHA.jl added a new field, `used` to the SHA states. Since MD5 uses
internal SHA functions which now look for this field, MD5 tests began to fail.

This PR adds the needed `used` field, so MD5 now runs. The real fix is to not
rely on SHA internals.
  • Loading branch information
jakobnissen committed Oct 13, 2023
1 parent 043a82a commit 46de534
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "MD5"
uuid = "6ac74813-4b46-53a4-afec-0b5dc9d7885c"
version = "0.2.1"
version = "0.2.2"

[deps]
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
Expand Down
7 changes: 2 additions & 5 deletions src/types.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,14 @@ mutable struct MD5_CTX <: SHA_CTX
state::Array{UInt32,1}
bytecount::UInt64
buffer::Array{UInt8,1}
used::Bool
end

digestlen(::Type{MD5_CTX}) = 16
state_type(::Type{MD5_CTX}) = UInt32
# blocklen is the number of bytes of data processed by the transform!() function at once
blocklen(::Type{MD5_CTX}) = UInt64(64)




MD5_CTX() = MD5_CTX(copy(MD5_initial_hash_value), 0, zeros(UInt8, blocklen(MD5_CTX)))
MD5_CTX() = MD5_CTX(copy(MD5_initial_hash_value), 0, zeros(UInt8, blocklen(MD5_CTX)), false)
Base.copy(ctx::T) where {T<:MD5_CTX} = T(copy(ctx.state), ctx.bytecount, copy(ctx.buffer))
Base.show(io::IO, ::MD5_CTX) = write(io, "MD5 hash state")

0 comments on commit 46de534

Please sign in to comment.