crypto/sha512 — validation proof

Go’s own crypto/sha512 test suite, converted to C# by go2cs, built against the converted standard library, run under the Go-semantics test host, and compared verdict for verdict against a clean go test -json baseline of the same sources. This page is generated by the converter from that comparison — it is the evidence behind the crypto/sha512 row in Validated Test Packages.

Validated 2026-08-04 · converter f6e9c0cf0

36 matched · 1 disclosed — Go 1.23.1, windows/amd64, converted package src/core/crypto/sha512.

Verdicts

Test go test go2cs
TestAllocations pass fail (disclosed)
TestBlockGeneric pass pass
TestBlockSize pass pass
TestGolden pass pass
TestGoldenMarshal pass pass
TestGoldenMarshal/384 pass pass
TestGoldenMarshal/512 pass pass
TestGoldenMarshal/512/224 pass pass
TestGoldenMarshal/512/256 pass pass
TestLargeHashes pass pass
TestMarshalMismatch pass pass
TestSHA512Hash pass pass
TestSHA512Hash/SHA-384 pass pass
TestSHA512Hash/SHA-384/OutOfBoundsRead pass pass
TestSHA512Hash/SHA-384/ResetState pass pass
TestSHA512Hash/SHA-384/StatefulWrite pass pass
TestSHA512Hash/SHA-384/SumAppend pass pass
TestSHA512Hash/SHA-384/WriteWithoutError pass pass
TestSHA512Hash/SHA-512 pass pass
TestSHA512Hash/SHA-512/224 pass pass
TestSHA512Hash/SHA-512/224/OutOfBoundsRead pass pass
TestSHA512Hash/SHA-512/224/ResetState pass pass
TestSHA512Hash/SHA-512/224/StatefulWrite pass pass
TestSHA512Hash/SHA-512/224/SumAppend pass pass
TestSHA512Hash/SHA-512/224/WriteWithoutError pass pass
TestSHA512Hash/SHA-512/256 pass pass
TestSHA512Hash/SHA-512/256/OutOfBoundsRead pass pass
TestSHA512Hash/SHA-512/256/ResetState pass pass
TestSHA512Hash/SHA-512/256/StatefulWrite pass pass
TestSHA512Hash/SHA-512/256/SumAppend pass pass
TestSHA512Hash/SHA-512/256/WriteWithoutError pass pass
TestSHA512Hash/SHA-512/OutOfBoundsRead pass pass
TestSHA512Hash/SHA-512/ResetState pass pass
TestSHA512Hash/SHA-512/StatefulWrite pass pass
TestSHA512Hash/SHA-512/SumAppend pass pass
TestSHA512Hash/SHA-512/WriteWithoutError pass pass
TestSize pass pass

Disclosed divergences

A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s hand-owned go2cs_test_disclosures.json; a disclosed test that fails any other way is still a hard mismatch.

Test Class Pinned reason
TestAllocations alloc-profile want-zero AllocsPerRun assert: Sum copies the digest (d0 := *d) so the caller can keep writing, and that copy must deep-copy the digest’s [8]uint64 state and [128]byte block — golib’s array is a struct over a heap T[], so the copy is two managed allocations where Go's is stack-resident; Write/Sum also allocate through the hash.Hash interface surface

Excluded declarations

Declarations filtered from both sides of the comparison, and therefore not claimed above: Benchmark, Fuzz and Example declarations the converted host does not execute, plus any test requiring a capability the managed runtime does not provide — a testing member the host has not implemented, or a platform behavior it provably cannot reproduce. Each is named with the capability it needs.