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` .
2023-03-16 22:46:48 +00:00
This library was
2023-03-21 00:10:00 +00:00
[audited by Cypher Stack in March 2023 ](https://github.com/serai-dex/serai/raw/e1bb2c191b7123fd260d008e31656d090d559d21/audits/Cypher%20Stack%20crypto%20March%202023/Audit.pdf ),
culminating in commit
[669d2dbffc1dafb82a09d9419ea182667115df06 ](https://github.com/serai-dex/serai/tree/669d2dbffc1dafb82a09d9419ea182667115df06 ).
Any subsequent changes have not undergone auditing.