19. Proposed Validation Strategy

This chapter proposes the tests that would establish the design works. It is a plan, not a log: no tests were executed in this study, and the chapter is written so that an implementation phase can be checked against it. The governing principle is from §6.4 — a check that has never been observed to fail has not been tested — so every requirement that can be violated has a test that violates it.

19.1 Levels

LevelEstablishesIndependent of
L1 AlgorithmEach algorithm computes correct valuesOpenSSL
L2 ProviderAlgorithms are reachable through the provider interfaceTLS
L3 Key scheduleDerivations match independently computed valuesThe network
L4 HandshakeA connection is established using the algorithms—
L5 InteroperabilityA different implementation agreesThe implementation under test

The levels are ordered by cost and by diagnostic value. A failure at L4 with L1–L3 passing localises the problem to integration; a failure at L4 with L3 untested localises it nowhere.

19.2 L1: algorithm correctness

Known-answer tests against published vectors, for each algorithm, including:

19.3 L2: provider integration

19.4 L3: key schedule

Required by §15.6 and the most valuable single test in the plan, because it catches the silent-weakening failure of §15.3.

19.5 L4: handshake

19.5.1 Required negative tests

These establish that the mechanisms discriminate, and they are not optional:

TestExpectedGuards
Deactivate the provider, retry with the custom suite requiredHandshake failsF10, silent fallback (§14.2)
Corrupt one byte of a recordConnection torn down with bad_record_mac§8.6 tag verification
Present a peer key share that is not on the curveShare rejected before any private-key operation§10.4 invalid-curve
Present a small-subgroup pointRejected§10.4
Offer the suite to a peer without itClean handshake_failure, no fallback§12.3
Configure the provider in a different library contextAlgorithms unavailable, diagnosableC6, §13.3

The second and third rows are the tests that distinguish a working security mechanism from one that has merely never been challenged. A test suite omitting them can pass completely against an implementation with no integrity protection and a recoverable private key.

19.6 L5: interoperability

Against an independent implementation, per §16.5. Where none exists, the chapter's recommendation is to say so rather than to substitute same-source testing and describe the result as interoperability.

19.7 Reporting

Results should record, for every case, what was executed and what was observed, with the environment. Following the companion paper's practice, counts of assertions should not be presented as counts of scenarios: three thousand bytewise comparisons within one test are one test, and reporting them as thousands of passing checks overstates coverage.

A results chapter should also record what was not tested. The absence of an interoperability result, of a constant-time verification (§17.5), or of a validated-module claim (§17.7) should appear in the report, because a reader cannot distinguish an untested property from a passing one by its absence.