crypto/cipher — validation proof
Go’s own crypto/cipher 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/cipher row in
Validated Test Packages.
Validated 2026-08-25 · converter 2551d9c92
13 matched · 1 disclosed — Go 1.23.12, windows/amd64, converted package
src/core/crypto/cipher.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestAESGCM |
pass | pass |
TestCBCDecrypterAES |
pass | pass |
TestCBCEncrypterAES |
pass | pass |
TestCFBInverse |
pass | pass |
TestCFBVectors |
pass | pass |
TestCTR |
pass | pass |
TestCTR_AES |
pass | pass |
TestCryptBlocks |
pass | pass |
TestEmptyPlaintext |
pass | pass |
TestGCMAsm |
pass | skip (disclosed) |
TestGCMCounterWrap |
pass | pass |
TestGCMInvalidTagSize |
pass | pass |
TestOFB |
pass | pass |
TestTagFailureOverwrite |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — never
a tolerance, and never a test skipped to make a row pass. Each one is pinned by exact 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 |
|---|---|---|
TestGCMAsm |
platform-skip |
source-defined platform skip, and the first row of this class: gcm_test.go’s own t.Skipf fires when the assembly GCM implementation is the same type as the generic one, and the converted corpus is permanently such a platform - it has no .s codepaths at all, by design. Go reports pass because the real toolchain’s windows/amd64 build HAS a distinct assembly GCM to compare; the converted side reports skip by executing the branch Go’s own source wrote for platforms that do not. The divergence is therefore between two platforms’ verdicts on one test, not between Go and the conversion on one platform, and the verdict pair (Go pass / C# skip) is recorded openly here and on the proof page rather than folded into a count. runtime-capability’s refusal stands and does not apply: building a second GCM whose only consumer is a differential test would manufacture a platform property instead of measuring one. Pinned to the upstream skip message, so the row becomes a hard mismatch if the converted side ever skips for a different reason or stops skipping |
TestGCMAsm is a source-defined platform skip: go test reports pass and the converted
suite reports skip, because the test’s own upstream source skips on a platform property the
converted corpus genuinely and permanently holds. The skip is Go’s, not the harness’s — it is pinned
to that upstream message, so the row moves to a hard mismatch if the converted side ever skips for a
different reason, or stops skipping.
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.
- BenchmarkAESCBCDecrypt1K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCBCEncrypt1K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCFBDecrypt1K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCFBDecrypt8K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCFBEncrypt1K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCTR1K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESCTR8K (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESGCM (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAESOFB1K (benchmark): benchmark execution is deferred to Phase 4D
- ExampleNewCBCDecrypter (example): example execution is deferred to Phase 4D
- ExampleNewCBCEncrypter (example): example execution is deferred to Phase 4D
- ExampleNewCFBDecrypter (example): example execution is deferred to Phase 4D
- ExampleNewCFBEncrypter (example): example execution is deferred to Phase 4D
- ExampleNewCTR (example): example execution is deferred to Phase 4D
- ExampleNewGCM_decrypt (example): example execution is deferred to Phase 4D
- ExampleNewGCM_encrypt (example): example execution is deferred to Phase 4D
- ExampleNewOFB (example): example execution is deferred to Phase 4D
- ExampleStreamReader (example): example execution is deferred to Phase 4D
- ExampleStreamWriter (example): example execution is deferred to Phase 4D