2022-06-27 13:02:21 +00:00
|
|
|
# Flexible Transcript
|
2022-06-19 10:35:15 +00:00
|
|
|
|
2022-06-27 13:02:21 +00:00
|
|
|
Flexible Transcript is a crate offering:
|
|
|
|
- `Transcript`, a trait offering functions transcripts should implement.
|
|
|
|
- `DigestTranscript`, a competent transcript format instantiated against a
|
|
|
|
provided hash function.
|
|
|
|
- `MerlinTranscript`, a wrapper of `merlin` into the trait (available via the
|
|
|
|
`merlin` feature).
|
2022-07-09 04:37:39 +00:00
|
|
|
- `RecommendedTranscript`, a transcript recommended for usage in applications.
|
|
|
|
Currently, this is `DigestTranscript<Blake2b512>` (available via the
|
|
|
|
`recommended` feature).
|
2022-06-27 13:02:21 +00:00
|
|
|
|
|
|
|
The trait was created while working on an IETF draft which defined an incredibly
|
|
|
|
simple transcript format. Extensions of the protocol would quickly require a
|
|
|
|
more competent format, yet implementing the one specified was mandatory to meet
|
|
|
|
the specification. Accordingly, the library implementing the draft defined an
|
|
|
|
`IetfTranscript`, dropping labels and not allowing successive challenges, yet
|
|
|
|
thanks to the trait, allowed protocols building on top to provide their own
|
|
|
|
transcript format as needed.
|
|
|
|
|
|
|
|
`DigestTranscript` takes in any hash function implementing `Digest`, offering a
|
|
|
|
secure transcript format around it. All items are prefixed by a flag, denoting
|
|
|
|
their type, and their length.
|
|
|
|
|
|
|
|
`MerlinTranscript` was used to justify the API, and if any issues existed with
|
|
|
|
`DigestTranscript`, enable a fallback. It was also meant as a way to be
|
|
|
|
compatible with existing Rust projects using `merlin`.
|