digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__asn1_der {
label="Asn1Der";
graph[style=dotted];
asn1_der__seq [label=<
pos | size | type | id |
0 | 1 | u1→TypeTag | type_tag |
1 | 4 | LenEncoded | len |
5 | ... | switch (type_tag) | body |
>];
asn1_der__seq_body_switch [label=<
case | type |
:type_tag_printable_string | BodyPrintableString |
:type_tag_sequence_10 | BodySequence |
:type_tag_set | BodySequence |
:type_tag_sequence_30 | BodySequence |
:type_tag_utf8string | BodyUtf8string |
:type_tag_object_id | BodyObjectId |
>];
subgraph cluster__body_sequence {
label="Asn1Der::BodySequence";
graph[style=dotted];
body_sequence__seq [label=<
pos | size | type | id |
0 | ... | Asn1Der | entries |
repeat to end of stream |
>];
}
subgraph cluster__body_utf8string {
label="Asn1Der::BodyUtf8string";
graph[style=dotted];
body_utf8string__seq [label=<
pos | size | type | id |
0 | ⇲ | str(UTF-8) | str |
>];
}
subgraph cluster__body_object_id {
label="Asn1Der::BodyObjectId";
graph[style=dotted];
body_object_id__seq [label=<
pos | size | type | id |
0 | 1 | u1 | first_and_second |
1 | ⇲ | | rest |
>];
body_object_id__inst__first [label=<
id | value |
first | (first_and_second / 40) |
>];
body_object_id__inst__second [label=<
id | value |
second | (first_and_second % 40) |
>];
}
subgraph cluster__len_encoded {
label="Asn1Der::LenEncoded";
graph[style=dotted];
len_encoded__seq [label=<
pos | size | type | id |
0 | 1 | u1 | b1 |
1 | 2 | u2be | int2 |
3 | 1 | u1 | int1 |
>];
len_encoded__inst__result [label=<
id | value |
result | (b1 == 129 ? int1 : (b1 == 130 ? int2 : b1)) |
>];
}
subgraph cluster__body_printable_string {
label="Asn1Der::BodyPrintableString";
graph[style=dotted];
body_printable_string__seq [label=<
pos | size | type | id |
0 | ⇲ | str(ASCII) | str |
>];
}
}
asn1_der__seq:len_type -> len_encoded__seq [style=bold];
asn1_der__seq:body_type -> asn1_der__seq_body_switch [style=bold];
asn1_der__seq_body_switch:case0 -> body_printable_string__seq [style=bold];
asn1_der__seq_body_switch:case1 -> body_sequence__seq [style=bold];
asn1_der__seq_body_switch:case2 -> body_sequence__seq [style=bold];
asn1_der__seq_body_switch:case3 -> body_sequence__seq [style=bold];
asn1_der__seq_body_switch:case4 -> body_utf8string__seq [style=bold];
asn1_der__seq_body_switch:case5 -> body_object_id__seq [style=bold];
asn1_der__seq:type_tag_type -> asn1_der__seq:body_type [color="#404040"];
body_sequence__seq:entries_type -> asn1_der__seq [style=bold];
body_object_id__seq:first_and_second_type -> body_object_id__inst__first [color="#404040"];
body_object_id__seq:first_and_second_type -> body_object_id__inst__second [color="#404040"];
len_encoded__seq:b1_type -> len_encoded__inst__result [color="#404040"];
len_encoded__seq:int1_type -> len_encoded__inst__result [color="#404040"];
len_encoded__seq:b1_type -> len_encoded__inst__result [color="#404040"];
len_encoded__seq:int2_type -> len_encoded__inst__result [color="#404040"];
len_encoded__seq:b1_type -> len_encoded__inst__result [color="#404040"];
}