Corresponding schema can be:
{"our": [
+ ["T", "M"],
[".", "a"],
["E"],
["T", "S"],
ai {{field . {str} >0}}
fpr {{field . {bin} len=32}}
our {
+ {field . {map}}
{field a {with ai}}
{field v {bin str}}
{field fpr {with fpr}}
"field" command helps creation of commands related to the field.
- {field N {T} [optional] [!exists] [{of type T}] [{of S}]
+ {field N {T ...} [optional] [!exists] [{of type T}] [{of S}]
[>n] [<n] [len=n] [=v] [prec=p] [utc]}
"N" required argument is the name of the field to consider. Either it is
encrypted {
+ {field . {map}}
{field dem {with dem}}
{field kem {list} {of kem} >0}
{field id {hexlet} optional}
}
kem {
+ {field . {map}}
{field a {str} >0}
{field cek {bin} >0}
}
balloon-cost {
+ {field . {map}}
{field s {int} >0} {# space cost}
{field t {int} >0} {# time cost}
{field p {int} >0} {# parallel cost}
}
kem-balloon-blake2b-hkdf {
+ {field . {map}}
{field a {str} =balloon-blake2b-hkdf}
{field cek {bin} >0} {# wrapped CEK}
{field salt {bin} >0}
kem-gost3410-hkdf {
+ {field . {map}}
{field a {str} =gost3410-hkdf}
{field cek {bin} >0} {# wrapped CEK}
{field ukm {bin} len=16} {# additional keying material}
kem-pbkdf2 {
+ {field . {map}}
{field a {str} =pbkdf2}
{field cek {bin} >0} {# wrapped CEK}
{field hash {str} >0} {# hash algorithm identifier}
kem-with-encap {
+ {field . {map}}
{field a {str} >0} {# sntrup761-x25519-hkdf-blake2b}
{# mceliece6960119-x25519-hkdf-shake256}
{field cek {bin} >0} {# wrapped CEK}
prehash {
+ {field . {map}}
{field t {str} =prehash}
{field algos {set} >0} {# set of hash algorithm identifiers}
}
pub {
+ {field . {map}}
{field load {with load}}
{field sigs {list} {of sig} >0 optional}
{field pubs {list} {of pub} >0 optional}
}
sig {
+ {field . {map}}
{field tbs {with pub-sig-tbs}}
{field sign {with av}}
}
schema-include fpr.tcl
signed {
+ {field . {map}}
{field load {with load}}
{field sigs {list} {of sig} >0 optional}
{field pubs {list} {of type map} >0 optional}
}
sig {
+ {field . {map}}
{field tbs {with tbs}}
{field sign {with av}}
}