Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Term with payloads #280

Draft
wants to merge 210 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
d1d86d5
TermEval: term + 2 optional payloads Vec<u8> (initial value, mutated …
LCBH Sep 11, 2023
3996312
Traces now contain TermEval, with optional payloads (allowing bit-lev…
LCBH Sep 11, 2023
c4cf1cc
MakeMessage and BitFlip mutations
LCBH Sep 12, 2023
26077c2
some corrections for passing tests
LCBH Sep 12, 2023
99d2aed
Update certificates with 100000 day lifetime
maxammann Sep 13, 2023
529b7ed
Add openssl 312
maxammann Sep 13, 2023
0a00d80
some corrections for passing tests (all of them now succeed)
LCBH Sep 13, 2023
82cc4d7
cleaning up and add "TODO-bitlevel" todos
LCBH Sep 13, 2023
7bfa5fd
idea of evaluate sub-term by downcasting
LCBH Sep 14, 2023
97ed6d0
two types of evaluation
LCBH Sep 14, 2023
47a73bf
correct evaluation now, TODO: any_get_encoding
LCBH Sep 14, 2023
e00f229
any_get_encoding is implemented for TLS, TODO: macro instead + invest…
LCBH Sep 14, 2023
29d7a54
Add cross-platform RNG
maxammann Sep 15, 2023
c20f4cc
Set lib dir
maxammann Sep 15, 2023
1e62dbf
Fix crash if non-git directory
maxammann Sep 15, 2023
b7be0a5
Add leak test
maxammann Sep 15, 2023
f147e3e
Update certificates with 100000 day lifetime
maxammann Sep 13, 2023
50852b8
macro for any_get_encoding + more useful Fn error messages + better t…
LCBH Sep 15, 2023
5974259
Merge remote-tracking branch 'origin/certs' into termWithPayloads
LCBH Sep 15, 2023
9659538
evaluate and lazy_evaluate are fully tested now and work
LCBH Sep 18, 2023
b37b56f
new input.input() implem, trace can be executed with the new architec…
LCBH Sep 19, 2023
185f19b
evaluate now replace bitstrings from payloads as expected (V1 for now)
LCBH Sep 19, 2023
0848ef9
mutations: new organization for bit-level mutations
LCBH Sep 19, 2023
a1d5223
bit_mutations.rs: we now have almost full HAVOC
LCBH Sep 19, 2023
29b8dd5
rustfmt pass
LCBH Sep 19, 2023
c58d3c0
fix error in puffin tests
LCBH Sep 19, 2023
aca4f76
integration tests for bit-level mutations
LCBH Sep 20, 2023
729c511
refine choose_term: exclude subterms of non-symbolic, possibly exclud…
LCBH Sep 20, 2023
3a7c526
refine opaque filtering for MakeMessage + refine encoding implem with…
LCBH Sep 21, 2023
5a6f2ad
clewan up MakeMessage::mutate
LCBH Sep 22, 2023
d5a4609
refine choose_term for MakeMessage, excluding the inside of list funt…
LCBH Sep 22, 2023
c13067e
refactor mutations::utils into utils
LCBH Sep 25, 2023
9cb7496
implement reservoir sampling with weighted nodes (deeper-> higher pro…
LCBH Sep 25, 2023
eaf765a
some refactoring
LCBH Sep 25, 2023
0e853ef
new evaluation algorithm, taking payloads into account, better reserv…
LCBH Sep 28, 2023
27b52d8
graphviz: different color for non-symbolic term
LCBH Sep 28, 2023
c6dc76c
replace payloads algorithm + cleaning up
LCBH Oct 3, 2023
8fff177
new algo for eval/replace_payloads but replace_payloads should be rew…
LCBH Oct 4, 2023
2a41054
minor
LCBH Oct 5, 2023
2cd65ef
minor
LCBH Oct 5, 2023
e494efe
new algorithm for term evaluation, much more robust but assuming we n…
LCBH Oct 9, 2023
90dc047
typos and working on unitests
LCBH Oct 9, 2023
a60a61c
minor re-archi
LCBH Oct 9, 2023
7196f00
debugging level
LCBH Oct 9, 2023
6e0e629
reduce debugging level
LCBH Oct 9, 2023
942588c
reduce debugging level
LCBH Oct 9, 2023
9e6a3f8
reduce debugging level
LCBH Oct 10, 2023
0c48b35
reduce debugging level
LCBH Oct 10, 2023
76dc00f
add mising muations. Crossover: still something to decide (see bit_mu…
LCBH Oct 10, 2023
8b182ec
more logging
LCBH Oct 18, 2023
34259b6
add Wolfssl563 (latest stable version from June 20, 2023)
LCBH Oct 18, 2023
c0e956c
Merge remote-tracking branch 'upstream/openssl312' into termWithPayloads
LCBH Oct 18, 2023
4e2d797
remove leaky code
LCBH Oct 18, 2023
0910a0f
allow executing non-TCP traces in TCP mode
LCBH Oct 20, 2023
1fda13c
revert logging fixed config
LCBH Oct 31, 2023
e137353
grapgically visualize terms with payloads
LCBH Oct 31, 2023
db626e3
improve heuristics to find payload to replace
LCBH Oct 31, 2023
a00a9ba
new test, payload under enc TLS1.3
LCBH Nov 7, 2023
120191e
Merge remote-tracking branch 'tom/fix_wolfssl_hanging' into termWithP…
LCBH Nov 10, 2023
f5165b8
Merge remote-tracking branch 'tom/update_bindgen' into termWithPayloads
LCBH Nov 10, 2023
8c94902
Fix compilation for wolfssl master
maxammann Nov 13, 2023
a7f991b
Merge branch 'main' into termWithPayloads
LCBH Nov 14, 2023
3293fbb
Merge remote-tracking branch 'origin/fix-wolfssl-master' into termWit…
LCBH Nov 14, 2023
9512514
add wolf 564 target
LCBH Nov 14, 2023
6b09b5e
fix out of band error in replace_payloads
LCBH Nov 14, 2023
2a72eb7
minor
LCBH Dec 13, 2023
f75b0ec
openssl deterministic test fails
LCBH Dec 14, 2023
fcbf53c
openssl deterministic test fails
LCBH Dec 14, 2023
33c1e1c
Merge remote-tracking branch 'origin/boringssl' into termWithPayloads
LCBH Jan 25, 2024
eebe61c
Merge remote-tracking branch 'origin/boringssl' into termWithPayloads
LCBH Jan 25, 2024
9399461
minor
LCBH Jan 26, 2024
708fd87
openssl11u + openssl312 (not working) versions
LCBH Jan 26, 2024
27b9aaf
deterministic tests
LCBH Jan 26, 2024
7b9a734
fix compilation
LCBH Jan 26, 2024
457fb47
boring
LCBH Jan 26, 2024
a6ad02c
Revert "boring"
LCBH Jan 26, 2024
3597db5
fix compilation
LCBH Jan 26, 2024
75b9474
fix compilation
LCBH Jan 26, 2024
f991b9f
minor
LCBH Jan 26, 2024
35b8937
Fix eval_until_opaque to take into account shifts from previous repla…
LCBH Feb 5, 2024
3e02eb5
minor
LCBH Feb 13, 2024
4f55940
Wrapping terms of the form Vec<T> into Wrapper(T) in order to be able…
LCBH Feb 15, 2024
9d31788
fix compilation and test issues
LCBH Feb 15, 2024
fd00bed
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Feb 15, 2024
7062b9d
Merge remote-tracking branch 'origin/boringssl' into termWithPayloads
LCBH Feb 15, 2024
8f568a7
fix test issue for puffin
LCBH Feb 15, 2024
1a4bc6a
fix test issue for puffin
LCBH Feb 15, 2024
f0ed05d
replace_payloads now passes the test term::test_replace_bitstring_mul…
LCBH Mar 6, 2024
dfa957b
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Mar 6, 2024
32aa091
fix merge
LCBH Mar 6, 2024
a4b174d
cargo fmt
LCBH Mar 6, 2024
22c7f38
feat(openssl): implement non-clear mode for OpenSSL PUT
michaelmera Mar 11, 2024
5a3b78d
fix(cli): don't use tlspuffin exit code to convey semantically meanin…
michaelmera Mar 11, 2024
a35a0fe
fix(cli): display missing trace file when the `execute` command fails
michaelmera Mar 11, 2024
71aafa5
docs(cli): fix seeds directory name in CLI help and documentation
michaelmera Mar 11, 2024
378c54e
fix(tlspuffin): don't generate incompatible seeds when there is no bu…
michaelmera Mar 11, 2024
a5a5a6c
fix(cli): remove duplicated log message when generating seeds
michaelmera Mar 11, 2024
1e837ae
fix(cli): correct default `-n <num>` value when running `execute` on …
michaelmera Mar 11, 2024
85658f1
refactor(openssl): fix clippy errors in openssl-src
michaelmera Mar 12, 2024
ce9359d
revert fiel removal
LCBH Mar 12, 2024
f7eb670
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Mar 12, 2024
9c32c73
cargo fmt
LCBH Mar 12, 2024
ab9f90a
cargo fmt
LCBH Mar 12, 2024
8764c9f
cargo fmt
LCBH Mar 12, 2024
f5c73af
fix conditional use
LCBH Mar 12, 2024
5d83b4a
fix conditional use
LCBH Mar 12, 2024
493f82b
fix conditional use
LCBH Mar 12, 2024
be8d808
fix conditional use
LCBH Mar 12, 2024
da0061e
fix libssh any_get_encoding
LCBH Mar 12, 2024
a3fbd63
fix libssh any_get_encoding + cli execute
LCBH Mar 12, 2024
538fb27
also add to eval_tree for root variables
LCBH Mar 12, 2024
ae6f27d
trace::input: no longer needs to read_bytes, add_to_inbound a directl…
LCBH Mar 12, 2024
83ee84d
reorder any_get_encoding: first try Message, then OpaqueMessage, then…
LCBH Mar 12, 2024
e3ab337
fix some tests
LCBH Mar 12, 2024
436e017
fix some tests
LCBH Mar 12, 2024
edbcdcd
cargo fmt
LCBH Mar 12, 2024
2210094
fix test_byte_remove_payloads and make_message: allows to make_mutate…
LCBH Mar 12, 2024
d835b08
condition tests that require deterministic PUT
LCBH Mar 13, 2024
8d96c8b
fix test_byte_simple
LCBH Mar 13, 2024
d04f493
fix test_byte_interesting
LCBH Mar 13, 2024
c5ad418
various fixes
LCBH Mar 15, 2024
d898394
fix test_term_eval_payloads and add logging to understand failures, s…
LCBH Mar 15, 2024
4d70bcb
eval_until_opaque: use payload when it exists instead of re-evaluating
LCBH Mar 15, 2024
0951834
try_read_bytes: reorder tries, TODO: measure differences
LCBH Mar 15, 2024
d584ec6
revert(cli): revert changes to `execute` command, introduce `execute-…
michaelmera Mar 18, 2024
54febdf
ci: add recipe to run github actions locally
michaelmera Mar 3, 2024
66df886
ci: fix wrong input in call to workflow Swatinem/rust-cache@v2
michaelmera Mar 4, 2024
0e12244
ci: update external actions with Node 16 deprecation warnings
michaelmera Mar 4, 2024
de3fd60
ci: ensure save-cache flag is correctly propagated
michaelmera Mar 4, 2024
f1929c3
ci: allow setting CI checks level through PR labels
michaelmera Mar 4, 2024
d94ed53
ci: merge workflows for pull request and push
michaelmera Mar 4, 2024
9b0246c
ci: print CI/CD configuration at the end of the configure job
michaelmera Mar 4, 2024
d55b883
ci: add recipe to run super-linter locally
michaelmera Mar 5, 2024
4b89495
ci: add smoke test before expensive CI/CD stages
michaelmera Mar 11, 2024
310f93b
ci: hide git message about being in detached HEAD state
michaelmera Mar 11, 2024
b581b8a
ci: remove duplicated configurations from build matrix
michaelmera Mar 12, 2024
5a14c74
ci: set explicit workflow permissions
michaelmera Mar 12, 2024
265caea
ci: add check for C/C++ code style with clang-format
michaelmera Mar 25, 2024
e93471b
ci: correctly add tlspuffin test matrix jobs in workflow
michaelmera Mar 25, 2024
9809f08
ci: build binaries in a first step during smoke test
michaelmera Mar 25, 2024
08c490d
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Mar 25, 2024
be7e1f6
Fix merge error + fmt check
LCBH Mar 25, 2024
4f176ae
Merge remote-tracking branch 'origin/boringssl' into termWithPayloads
LCBH Mar 25, 2024
0035e05
Fix merge error + fmt check
LCBH Mar 25, 2024
806ebb4
add two exceptions for failing function symbols introduced by BoringSSL
LCBH Mar 25, 2024
3b8da71
fix find_unique_match_rec: total attempts number
LCBH Mar 27, 2024
f31061e
Merge branch 'boringssl' into termWithPayloads
LCBH Mar 27, 2024
612c3ee
chore: remove unnecessary files
michaelmera Mar 28, 2024
954f596
Add new heuristic to find_unique_match_rec: address cases where to_se…
LCBH Mar 29, 2024
db61f86
reorga
LCBH Mar 29, 2024
de025b9
using Cow instead custom enum
LCBH Mar 29, 2024
75ed082
condition test that require seeds not accepted by boringssl + comments
LCBH Mar 29, 2024
8665a53
cargo fmt
LCBH Mar 29, 2024
b4107ab
Merge remote-tracking branch 'origin/boringssl' into termWithPayloads
LCBH Mar 29, 2024
54b489a
Merge remote-tracking branch 'michaelmera/improve-ci' into termWithPa…
LCBH Mar 29, 2024
6207fde
fix merge
LCBH Mar 29, 2024
2937adb
optimizing refine_window_heuristic a bit
LCBH Mar 29, 2024
9256ca4
Merge branch 'main' into termWithPayloads
LCBH Mar 29, 2024
5df43f5
condition det test
LCBH Mar 29, 2024
b7eb7d2
Merge remote-tracking branch 'origin/termWithPayloads' into termWithP…
LCBH Mar 29, 2024
874547d
fix merge
LCBH Apr 2, 2024
cc4903a
minor
LCBH Apr 2, 2024
61b4685
debug messages
LCBH Apr 2, 2024
a22b4fa
Merge remote-tracking branch 'michaelmera/main' into termWithPayloads
LCBH Apr 2, 2024
c66131a
remove unnecessary file + minor debug
LCBH Apr 2, 2024
fb3bfc8
improve debugging messages
LCBH Apr 5, 2024
e04e79f
add opaque symbols
LCBH Apr 5, 2024
55055af
fix 2 bugs in find_unique_match
LCBH Apr 5, 2024
466d1d3
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Apr 5, 2024
9113a9a
cargo fnt
LCBH Apr 5, 2024
a60140e
Merge remote-tracking branch 'origin/main' into termWithPayloads
LCBH Apr 8, 2024
9073123
`make_message` takes a `put_registry` + `add_to_inbound` does not own…
LCBH Apr 8, 2024
d65e589
fix libssh for HEAD~1
LCBH Apr 8, 2024
52a6d3b
Fix heuristic 2 and heuristic 3
LCBH Apr 10, 2024
924fbb7
Missing opaque function symbol
LCBH Apr 10, 2024
9b08030
Removed test-purpose condition + cargo fmt
LCBH Apr 10, 2024
b7b540e
Fix find_unique_match heuristic 3
LCBH Apr 11, 2024
5e2eb00
Fix MakeMessage: never chooses a non-symbolic term to mutate
LCBH Apr 11, 2024
162c3dd
Fix silly bug in Heuritstic 2
LCBH Apr 11, 2024
3ec242a
Make sure fn_hello_retry_request takes all its argument, no more buil…
LCBH Apr 11, 2024
6a00889
fix HEAD~1
LCBH Apr 11, 2024
ca88869
Add a CLI option to always Skip bit-level mutations
LCBH Apr 11, 2024
143aba8
Fix test
LCBH Apr 11, 2024
09d072d
Fix HelloRetryRequest reading (version and random were already read i…
LCBH Apr 11, 2024
84cafcf
Fix fn_certificate_verify by removing built-in PayloadU16 encoding so…
LCBH Apr 15, 2024
8538c63
type alias for mutations
LCBH Apr 15, 2024
0c2cf76
fn_key_share_deterministic_extension is opaque
LCBH Apr 17, 2024
2f1c66d
find_unique_match_rec: Relax heuristic 2 and try to first make it so …
LCBH Apr 17, 2024
89ab121
try_read_bytes: no longer owns bitstring
LCBH Apr 17, 2024
87a90b2
many fn_* symbol function were not "atomic" and had Payload* built-in…
LCBH Apr 17, 2024
b5c2923
Fix any_get_encoding that made test_term_eval fails: add new Encode f…
LCBH Apr 17, 2024
e212e95
Fix seed_cve_2022_39173_minimized
LCBH Apr 18, 2024
bd1576e
New uni test test_term_read_encode checking term.encode = term.encode…
LCBH Apr 18, 2024
65d0ff6
oupsi
LCBH Apr 18, 2024
edf3182
disable test_invalid_length_errors when enable-guards is not enabled
LCBH Apr 18, 2024
51e230f
re-enable a safety check as it is used to detect when to stop deframing
LCBH Apr 18, 2024
e1d221d
disable more invalid tests when enable-guards is disabled
LCBH Apr 18, 2024
60fda9b
test_term_payloads_eval: do not try to add payload if already no exec…
LCBH Apr 18, 2024
6c95b3a
disable sanity check post payload_replacement in release mode
LCBH Apr 18, 2024
50f7d82
cleaning up the PR
LCBH Apr 18, 2024
157e5e1
add option `-wo-dy` to disable DY mutations (but keep bit-level mutat…
LCBH Apr 19, 2024
58ace6b
fix tests
LCBH Apr 22, 2024
75d7068
fix tests
LCBH Apr 22, 2024
a4902db
fix tests
LCBH Apr 22, 2024
f922e95
add EVE ECC cert and private keys -> attacker an now use fn_ecdsa_sign_*
LCBH Jun 20, 2024
b1bcf99
Add cross-over mutations.
LCBH Jun 24, 2024
a4dced6
minor
LCBH Jun 24, 2024
29fb130
mutation logging + move mutation config to mutation
LCBH Jun 26, 2024
983744c
Adding a test running all mutations multiple times, making sure they …
LCBH Jun 26, 2024
3a65b81
Add Encode for Transcript structs
LCBH Jun 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion crates/boringssl-src/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::{
collections::HashSet,
fs, io,
env, fs, io,
io::ErrorKind,
path::{Path, PathBuf},
process::Command,
Expand Down Expand Up @@ -105,6 +105,13 @@ fn build_boringssl<P: AsRef<Path>>(dest: &P, options: &BoringSSLOptions) -> Path
.define("CMAKE_BUILD_TYPE", "Release")
.define("OPENSSL_NO_BUF_FREELISTS", "1");

if env::var("TARGET") == Ok("aarch64-apple-darwin".into()) {
// We rely on llvm installed with homebrew on Mac OS X since Xcode does not ship llvm with libfuzzer!
boring_conf
.define("CMAKE_C_COMPILER", "/opt/homebrew/opt/llvm/bin/clang")
.define("CMAKE_CXX_COMPILER", "/opt/homebrew/opt/llvm/bin/clang++");
}

if options.deterministic {
// FUZZ flag will enable deterministic mode in BoringSSL along with
// disabling all encryption. To prevent BoringSSL from disabling encryption
Expand Down
4 changes: 4 additions & 0 deletions puffin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ libafl_targets = "0.10.1"

# Logging
log = { version = "0.4.17" }
#features = ["release_max_level_off", "max_level_warn"]
log4rs = "1.2.0"

# Other Dependencies
Expand All @@ -45,6 +46,9 @@ cfg-if = "1.0.0"
serde_json = "1.0.81" # Used for StatsMonitor TOOD: Hide behind feature flag
ahash = "0.8.3"
nix = "0.25.0"
paste = "1.0"
anyhow = "1.0"
derivative = "2.2.0"

[dev-dependencies]
test-log = "0.2.10"
Expand Down
47 changes: 47 additions & 0 deletions puffin/src/algebra/atoms.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,53 @@ impl Clone for Function {
}

impl Function {
/// Does the function symbol computes "opaque" message such as encryption, signature, MAC, AEAD, etc?
pub fn is_opaque(&self) -> bool {
// TODO: have protocol-dependent implementation for this
// debug!("Name: {}", self.fn_container.shape.name);
self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_encrypt_handshake" //TODO
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_encrypt_application"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_decrypt_application"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_encrypt12"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_derive_binder"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_derive_psk"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_decode_ecdh_pubkey"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_new_pubkey12"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_cert::fn_rsa_sign_server"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_cert::fn_rsa_sign_client"

// Get functions: opaque as they do not yield a bitstring containing all the bitstrings of their arguments
// (however needed for computing shifts in `replace_payloads`) TODO: improve this in the future
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_fields::fn_get_server_key_share"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_fields::fn_get_client_key_share"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_fields::fn_get_any_client_curve"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_get_ticket"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_get_ticket_age_add"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_get_ticket_nonce"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_cert::fn_get_context"
// Uses hashes
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_append_transcript"
// arg is not present
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_messages::fn_heartbeat_fake_length"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_fill_binder"
// Use enc
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_fields::fn_verify_data"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_fields::fn_verify_data_server"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_utils::fn_decrypt_handshake"
// Compute a deterministic key share... (TODO: WHY IS THAT?)
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_extensions::fn_key_share_deterministic_extension"
|| self.fn_container.shape.name == "tlspuffin::tls::fn_impl::fn_extensions::fn_key_share_deterministic_server_extension"
// TODO:
// fn_signed_certificate_timestamp_extension is weird, it's encoding is empty....
}

/// Does the function symbol computes a list such as fn_append_certificate?
pub fn is_list(&self) -> bool {
// TODO: have protocol-dependent implementation for this
// debug!("Name: {}", self.fn_container.shape.name);
self.fn_container.shape.name.contains("_append")
}

pub fn new(shape: DynamicFunctionShape, dynamic_fn: Box<dyn DynamicFunction>) -> Self {
Self {
unique_id: random(),
Expand Down
Loading