Skip to content

Commit

Permalink
Merge pull request #1 from davidben/completeness
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-wood authored Jul 26, 2023
2 parents 30eda9b + 773759f commit c583af6
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions draft-irtf-cfrg-cryptography-specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,24 @@ abstractions help make the job of using the object in higher-level algorithms
easier and less prone to code duplication.


### Completeness

The operations defined in a cryptography specification should be complete, with
defined behavior on all inputs. This includes error handing, and edge cases
which would otherwise not impact the algorithm's cryptographic properties.
In particular, when deserializing a byte string, the behavior on all byte
strings should be defined, including cases which would not be valid outputs of
the corresponding serialization function. A complete specification help avoids
implementation variations. These variations can lead to interoperability
failures, gaps between formal analysis and real-world practice, or security
vulnerabilities.

Avoid defining multiple implementation behaviors as valid. Leaving multiple
options to implementators leads to compounding complexity: downstream
specifications may need to profile the algorithm to pick the preferred option,
and validation tools must be configurable to assert either case.


### Documentation and Examples

Thorough documentation and illustrative examples play a crucial role in
Expand Down

0 comments on commit c583af6

Please sign in to comment.