An implementation of the TLS/SSL protocols
This report presents the forensic synthetic code analysis of aws/s2n-tls, a C project with 4,740 GitHub stars. SynthScan v2.0 examined 322,602 lines of code across 1719 source files, recording 872 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 2.9 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 872 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | codebuild/bin/install_apache2.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_ctverif.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/utils.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_awslc.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_openssl_3_0.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/jobs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/test_libcrypto_interning.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_z3_yices.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_default_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_openssl_1_0_2_fips.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_prlimit.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_install_test_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/fuzz_corpus_download.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_open_fds_test.py | 1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | COMMENT |
| LOW | codebuild/bin/s2n_set_build_preset.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/clang_format_changed_files.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_al_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_sslyze.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_ubuntu_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_codebuild_al.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_clang.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/grep_simple_mistakes.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/coverage_report.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/test_dynamic_load.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_openssl_1_1_1.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/fuzz_coverage_report.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/test_install_shared_and_static.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/run_sidetrail.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_python.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_codebuild.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_sidetrail.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/run_kwstyle.sh | 1 | #! /bin/bash | COMMENT |
| LOW | codebuild/bin/install_libressl.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_override_paths.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/run_cppcheck.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/header_mistake_scanner.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_shellcheck.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_openssl_1_0_2.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/test_exec_leak.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_cppcheck.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_boringssl.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/cpp_style_comment_linter.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_s2n_head.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | codebuild/bin/install_sidetrail_dependencies.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_setup_env.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/s2n_apache2.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_saw.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/start_codebuild.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/install_gnutls37.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/build_aws_crt_cpp.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/fuzz_corpus_upload.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/run_ctverif.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/bin/format.sh | 1 | #!/bin/bash | COMMENT |
| LOW | codebuild/spec/buildspec_musl.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_fuzz_scheduled.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_sidetrail.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_s2n_tls_bench.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_ubuntu.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_fuzz.yml | 1 | --- | COMMENT |
| LOW | codebuild/spec/buildspec_ubuntu_integrationv2.yml | 1 | --- | COMMENT |
| 737 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/integrationv2/test_key_update.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| HIGH | tests/integrationv2/test_version_negotiation.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| HIGH | tests/integrationv2/test_early_data.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| HIGH | tests/integrationv2/test_record_padding.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| HIGH | tests/integrationv2/test_external_psk.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| HIGH | tests/integrationv2/test_hello_retry_requests.py | 0 | sometimes the hello retry test parameters in combination with the s2n libcrypto results in no test cases existing. in th | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integrationv2/test_renegotiate_apache.py | 45 | def test_apache_endpoints_fail_with_no_reneg(managed_process, protocol, endpoint): # noqa: F811 | CODE |
| LOW | tests/integrationv2/test_renegotiate_apache.py | 81 | def test_change_cipher_suite_endpoint(managed_process, curve, protocol): # noqa: F811 | CODE |
| LOW | tests/integrationv2/test_renegotiate_apache.py | 112 | def test_mutual_auth_endpoint(managed_process, curve, protocol): # noqa: F811 | CODE |
| LOW | tests/integrationv2/conftest.py | 81 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW | tests/integrationv2/test_version_negotiation.py | 34 | def invalid_version_negotiation_test_parameters(*args, **kwargs): | CODE |
| LOW | tests/integrationv2/test_client_authentication.py | 28 | def assert_openssl_handshake_complete(results, is_complete=True): | CODE |
| LOW | tests/integrationv2/test_record_padding.py | 43 | def get_payload_size_from_openssl_trace(record_size_bytes: str) -> int: | CODE |
| LOW | tests/integrationv2/test_record_padding.py | 51 | def assert_openssl_records_are_padded_correctly(openssl_output: str, padding_size: int): | CODE |
| LOW⚡ | tests/integrationv2/test_sslyze.py | 214 | def assert_scan_result_completed(scan_result): | CODE |
| LOW⚡ | tests/integrationv2/test_sslyze.py | 215 | def get_connectivity_error_str(tb): | CODE |
| LOW⚡ | tests/integrationv2/test_sslyze.py | 225 | def assert_scan_attempt_completed(scan_attempt): | CODE |
| LOW | tests/integrationv2/test_sslyze.py | 241 | def invalid_sslyze_scan_parameters(*args, **kwargs): | CODE |
| LOW | tests/integrationv2/test_sslyze.py | 317 | def invalid_certificate_scans_parameters(*args, **kwargs): | CODE |
| LOW | tests/integrationv2/test_sslyze.py | 360 | def test_sslyze_certificate_scans( | CODE |
| LOW | tests/integrationv2/test_external_psk.py | 75 | def get_psk_hash_alg_from_cipher(cipher): | CODE |
| LOW | tests/integrationv2/test_external_psk.py | 112 | def validate_negotiated_psk_openssl(outcome, results): | CODE |
| LOW | tests/integrationv2/utils.py | 32 | def get_expected_openssl_version(protocol): | CODE |
| LOW | tests/integrationv2/utils.py | 41 | def get_expected_gnutls_version(protocol): | CODE |
| LOW | tests/integrationv2/test_fragmentation.py | 27 | def invalid_test_parameters_frag_len(*args, **kwargs): | CODE |
| LOW | tests/integrationv2/test_serialization.py | 60 | def test_server_serialization_backwards_compat( | CODE |
| LOW | tests/integrationv2/test_hello_retry_requests.py | 196 | def test_hrr_with_default_keyshare( | CODE |
| LOW | tests/cbmc/proofs/run-cbmc-proofs.py | 293 | def should_enable_memory_profiling(litani_caps, args): | STRING |
| LOW | tests/cbmc/proofs/lib/summarize.py | 28 | def _get_max_length_per_column_list(data): | CODE |
| LOW | tests/cbmc/proofs/lib/summarize.py | 36 | def _get_table_header_separator(max_length_per_column_list): | CODE |
| LOW | tests/cbmc/proofs/lib/summarize.py | 70 | def _get_status_and_proof_summaries(run_dict): | CODE |
| LOW | tests/sidetrail/bin/ct-verif.rb | 8 | def run_command_with_heartbeat (beat_time, cmd) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …gs/rust-examples/tokio-server-client/src/bin/client.rs | 10 | /// NOTE: this ca is to be used for demonstration purposes only! | COMMENT |
| MEDIUM | …gs/rust-examples/tokio-server-client/src/bin/server.rs | 10 | /// NOTE: this certificate and key are to be used for demonstration purposes only! | COMMENT |
| MEDIUM | …gs/rust-examples/hyper-server-client/src/bin/client.rs | 11 | /// NOTE: this CA is to be used for demonstration purposes only! | COMMENT |
| MEDIUM | …gs/rust-examples/hyper-server-client/src/bin/server.rs | 13 | /// NOTE: this certificate and key are to be used for demonstration purposes only! | COMMENT |
| MEDIUM | bindings/rust-examples/key-logging/src/lib.rs | 84 | /// NOTE: these materials are to be used for demonstration purposes only! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/s2n_alerts_protocol_test.c | 184 | *# The implementation SHOULD provide a way to facilitate logging the sending | COMMENT |
| LOW | tests/integrationv2/test_early_data.py | 88 | # but for now we can just use `-sess_in/out` and cover the S2N->S2N case in the S2N client tests. | COMMENT |
| MEDIUM | …specs/www.rfc-editor.org/rfc/rfc5246/appendix-E.2.toml | 46 | # This field, in conjunction with the version field, identifies a | COMMENT |
| MEDIUM | …/specs/www.rfc-editor.org/rfc/rfc8446/section-6.2.toml | 21 | # implementation SHOULD provide a way to facilitate logging the sending | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | codebuild/bin/s2n_open_fds_test.py | 32 | CODE | |
| LOW | tests/integrationv2/test_version_negotiation.py | 135 | CODE | |
| LOW | tests/integrationv2/providers.py | 915 | CODE | |
| LOW | tests/integrationv2/providers.py | 170 | CODE | |
| LOW | tests/integrationv2/providers.py | 439 | CODE | |
| LOW | tests/integrationv2/providers.py | 504 | CODE | |
| LOW | tests/integrationv2/providers.py | 665 | CODE | |
| LOW | tests/integrationv2/providers.py | 689 | CODE | |
| LOW | tests/integrationv2/processes.py | 110 | CODE | |
| LOW | tests/integrationv2/common.py | 231 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | codebuild/bin/s2n_setup_env.sh | 146 | # Create a link to the selected libcrypto. This shouldn't be needed when LIBCRYPTO_ROOT is set, but some tests | COMMENT |
| MEDIUM | tests/pems/crl/generate.sh | 70 | # Create a chain with just the root certificate for validating child certificates | COMMENT |
| MEDIUM | tests/pems/crl/generate.sh | 144 | # Create a chain that includes the newly signed certificate and all parent certificates | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .clinerules/BINDINGS_RELEASE_STEPS.md | 37 | #### Step 2: Run generate.sh | COMMENT |
| LOW | .clinerules/BINDINGS_RELEASE_STEPS.md | 55 | #### Step 3: Update s2n-tls Crate | COMMENT |
| LOW | .clinerules/BINDINGS_RELEASE_STEPS.md | 83 | #### Step 4: Update s2n-tls-tokio Crate | COMMENT |
| LOW | …andard/integration/src/handshake/session_resumption.rs | 286 | // Step 1: OpenSSL client ↔ OpenSSL server handshake to generate a session | COMMENT |
| LOW | …andard/integration/src/handshake/session_resumption.rs | 382 | // Step 1: Establish session with first server and get ticket | COMMENT |
| LOW | …andard/integration/src/handshake/session_resumption.rs | 397 | // Step 2: Try to resume with second server using ticket from first server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/specs/www.rfc-editor.org/rfc/rfc8446/section-7.1.toml | 42 | # In this version of TLS 1.3, the two input secrets are: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scram/aes_scram.py | 154 | # T = GMAC (N, A||C, null) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | codebuild/bin/fuzz_corpus_download.sh | 24 | # Check if corpus.zip exists in the specified S3 location. | COMMENT |
| LOW | tests/sidetrail/count_success.pl | 43 | #Check if the code under test used unexpected functions | COMMENT |
| LOW | tests/ctverif/count_success.pl | 38 | #Check if the code under test used unexpected functions | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …andard/integration/src/handshake/session_resumption.rs | 286 | // Step 1: OpenSSL client ↔ OpenSSL server handshake to generate a session | COMMENT |
| LOW | …andard/integration/src/handshake/session_resumption.rs | 382 | // Step 1: Establish session with first server and get ticket | COMMENT |
| LOW | …andard/integration/src/handshake/session_resumption.rs | 397 | // Step 2: Try to resume with second server using ticket from first server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integrationv2/processes.py | 436 | except Exception as ex: | CODE |
| LOW | tests/integrationv2/processes.py | 482 | except Exception as ex: | CODE |
| LOW | tests/integrationv2/fixtures.py | 91 | except Exception as _: | CODE |
| LOW | tests/cbmc/proofs/lib/summarize.py | 142 | except Exception as ex: # pylint: disable=broad-except | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integrationv2/processes.py | 365 | CODE | |
| LOW | tests/integrationv2/common.py | 709 | CODE | |
| LOW | .github/gha_monitor/gha_monitor/sns.py | 26 | CODE |