Home to the Signal Protocol as well as other cryptographic primitives which make Signal possible.
This report presents the forensic synthetic code analysis of signalapp/libsignal, a Rust project with 5,897 GitHub stars. SynthScan v2.0 examined 341,176 lines of code across 1451 source files, recording 555 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 2.4 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 555 distinct pattern matches across 15 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 | bin/prepare_release.py | 161 | # Release Step 2: Tag the release commit. | COMMENT |
| LOW | rust/keytrans/src/left_balanced.rs | 1 | // | COMMENT |
| LOW | rust/keytrans/src/left_balanced.rs | 21 | //! / \ / \ | COMMENT |
| LOW | rust/keytrans/src/lib.rs | 301 | /// MonitoringData is the structure retained for each key in the KT server being | COMMENT |
| LOW | rust/keytrans/src/proto.rs | 1 | // | COMMENT |
| LOW | rust/keytrans/src/verify.rs | 261 | Some(verifying_key), | COMMENT |
| LOW | rust/keytrans/src/verify.rs | 1201 | ); | COMMENT |
| LOW | rust/keytrans/src/verify.rs | 1361 | // A counter increment that's only visible at a frontier proof (e.g. a | COMMENT |
| LOW | rust/net/infra/proptest-regressions/route/schedule.txt | 1 | # Seeds for failure cases proptest has generated in the past. It is | COMMENT |
| LOW | rust/net/infra/src/timeouts.rs | 1 | use std::time::Duration; | COMMENT |
| LOW | rust/net/infra/src/timeouts.rs | 21 | /// and one of them produced a result, we'll wait this time interval | COMMENT |
| LOW | rust/net/infra/src/certs.rs | 61 | let verifier = VERIFIER.get_or_init(|| { | COMMENT |
| LOW | rust/net/infra/src/certs.rs | 181 | COMMENT | |
| LOW | rust/net/infra/src/host.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/route.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/route.rs | 21 | //! | COMMENT |
| LOW | rust/net/infra/src/route.rs | 41 | //! # Route providers | COMMENT |
| LOW | rust/net/infra/src/route.rs | 61 | //! `Connector` implementations are often stateless, like `StatelessTcp`, but | COMMENT |
| LOW | rust/net/infra/src/route.rs | 161 | /// A hostname in a route that can later be resolved to IP addresses. | COMMENT |
| LOW | rust/net/infra/src/route.rs | 281 | } | COMMENT |
| LOW | rust/net/infra/src/route.rs | 301 | /// depends on recorded state from previous connection attempts and the order in | COMMENT |
| LOW | rust/net/infra/src/ws.rs | 41 | /// This time is measured across calls to [`Connection::handle_next_event`] | COMMENT |
| LOW | rust/net/infra/src/route/proxy.rs | 81 | COMMENT | |
| LOW | rust/net/infra/src/route/resolve.rs | 21 | UnresolvedHost, UsePreconnect, WebSocketRoute, | COMMENT |
| LOW | rust/net/infra/src/route/resolve.rs | 41 | fn resolve(self, lookup: impl FnMut(&str) -> IpAddr) -> Self::Resolved; | COMMENT |
| LOW | rust/net/infra/src/route/provider.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/route/describe.rs | 21 | UnresolvedTransportRoute, UnresolvedWebsocketServiceRoute, UsesTransport, | COMMENT |
| LOW | rust/net/infra/src/route/describe.rs | 41 | /// to a [`WithLoggableDescription`] route. | COMMENT |
| LOW | rust/net/infra/src/route/schedule.rs | 61 | /// This is notionally a stream, though it doesn't (yet) implement [`Stream`]. | COMMENT |
| LOW | rust/net/infra/src/route/schedule.rs | 541 | max_delay, | COMMENT |
| LOW | rust/net/infra/src/route/schedule.rs | 561 | // | COMMENT |
| LOW | rust/net/infra/src/route/http.rs | 21 | #[derive(Clone, Debug, PartialEq, Eq, Hash)] | COMMENT |
| LOW | rust/net/infra/src/route/connect/logging.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/route/connect/composed.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/route/connect/throttle.rs | 41 | /// Replaces the inner `Connector` in `self`. | COMMENT |
| LOW | rust/net/infra/src/route/connect/preconnect.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/utils/binary_heap.rs | 41 | COMMENT | |
| LOW | rust/net/infra/src/dns/custom_resolver.rs | 41 | const MAX_CACHE_TTL: Duration = Duration::from_secs(5 * 60); | COMMENT |
| LOW | rust/net/infra/src/dns/dns_types.rs | 1 | // | COMMENT |
| LOW | rust/net/infra/src/dns/dns_types.rs | 21 | #[derive(Clone, Copy)] | COMMENT |
| LOW | rust/net/infra/src/ws/attested.rs | 21 | /// Encrypted connection to an attested host. | COMMENT |
| LOW | rust/net/infra/src/ws/connection.rs | 21 | COMMENT | |
| LOW | rust/net/infra/src/ws/connection.rs | 41 | /// This should implement [`Stream`] and [`Sink`](futures_util::Sink) for websocket | COMMENT |
| LOW | rust/net/infra/src/ws/connection.rs | 101 | /// | COMMENT |
| LOW | rust/net/infra/src/ws/connection.rs | 121 | #[strum(serialize_all = "lowercase")] | COMMENT |
| LOW | rust/net/infra/src/ws/connection.rs | 141 | Io(IoError), | COMMENT |
| LOW | rust/net/infra/src/ws/connection.rs | 201 | /// | COMMENT |
| LOW | rust/net/chat/examples/chat_request_scaffold.rs | 1 | // | COMMENT |
| LOW | rust/net/chat/src/logging.rs | 221 | #[test_case("BB==" => "BB==")] | COMMENT |
| LOW | rust/net/chat/src/grpc.rs | 221 | /// Helper to transform `tonic` streaming responses into `libsignal-net-chat` high-level streams. | COMMENT |
| LOW | rust/net/chat/src/grpc.rs | 241 | /// The result type is a `Stream<Result<T, RequestError<E>>>`, to be treated as a [`TryStream`]; any | COMMENT |
| LOW | rust/net/chat/src/registration.rs | 21 | /// | COMMENT |
| LOW | rust/net/chat/src/stream_util.rs | 1 | // | COMMENT |
| LOW | rust/net/chat/src/stream_util.rs | 101 | /// that the stream has ended. Then, collects subsequent items during the next debounce | COMMENT |
| LOW | rust/net/chat/src/ws.rs | 321 | } | COMMENT |
| LOW | rust/net/chat/src/registration/service.rs | 61 | /// Describes how to make an unauthenticated [`ChatConnection`]. | COMMENT |
| LOW | rust/net/chat/src/grpc/devices.rs | 121 | } | COMMENT |
| LOW | rust/net/chat/src/api/backups.rs | 161 | #[expect(rustdoc::broken_intra_doc_links)] // fixed_seed_test_rng is cfg(test) | COMMENT |
| LOW | rust/net/chat/src/api/usernames.rs | 1 | // | COMMENT |
| LOW | rust/net/chat/src/api/registration.rs | 261 | } | COMMENT |
| 353 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | rust/net/infra/src/route.rs | 1218 | && reflector.outer.inner.fragment.host_header.as_ref() | CODE |
| CRITICAL | rust/net/infra/src/route.rs | 1239 | && reflector.outer.inner.fragment.host_header.as_ref() | CODE |
| CRITICAL | rust/attest/src/dcap.rs | 429 | let report_isvprodid = evidence.quote.support.qe_report_body.isvprodid.get(); | CODE |
| CRITICAL | rust/attest/src/dcap.rs | 438 | let qe_report_miscselect = evidence.quote.support.qe_report_body.miscselect.get(); | CODE |
| CRITICAL | rust/attest/src/dcap.rs | 469 | let report_isvsvn = evidence.quote.support.qe_report_body.isvsvn.get(); | CODE |
| CRITICAL | …/java/org/signal/libsignal/protocol/SessionCipher.java | 84 | return new org.signal.libsignal.protocol.state.internal.IdentityKeyStore() { | CODE |
| CRITICAL | …/java/org/signal/libsignal/protocol/SessionCipher.java | 125 | return new org.signal.libsignal.protocol.state.internal.SessionStore() { | CODE |
| CRITICAL | …/java/org/signal/libsignal/protocol/SessionCipher.java | 215 | new org.signal.libsignal.protocol.state.internal.PreKeyStore() { | CODE |
| CRITICAL | …/java/org/signal/libsignal/protocol/SessionCipher.java | 228 | new org.signal.libsignal.protocol.state.internal.SignedPreKeyStore() { | CODE |
| CRITICAL | …/java/org/signal/libsignal/protocol/SessionCipher.java | 237 | new org.signal.libsignal.protocol.state.internal.KyberPreKeyStore() { | CODE |
| CRITICAL | …/org/signal/libsignal/protocol/groups/GroupCipher.java | 47 | return new org.signal.libsignal.protocol.state.internal.SenderKeyStore() { | CODE |
| CRITICAL | …enchmarks/src/androidTest/java/ClientZkOperations.java | 32 | new org.signal.libsignal.zkgroup.auth.ClientZkAuthOperations(serverPublicParams); | CODE |
| CRITICAL⚡ | node/ts/test/KeyTransparencyTest.ts | 150 | await expect(run(429)).to.be.rejected.and.eventually.have.property( | CODE |
| CRITICAL⚡ | node/ts/test/KeyTransparencyTest.ts | 156 | ).to.be.rejected.and.eventually.have.property( | CODE |
| CRITICAL⚡ | node/ts/test/KeyTransparencyTest.ts | 160 | await expect(run(500)).to.be.rejected.and.eventually.have.property( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rust/protocol/src/session_management.rs | 36 | // ── Public API ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 357 | // ── Session management (Sesame) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 401 | // ── Try current session ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 466 | // ── Try previous sessions (Whisper only) ───────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 558 | // ── Per-session decrypt ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 608 | // ── Logging helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 708 | // ── Comparison proptest ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 1492 | // ── Dual-path simulation helpers ──────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 1855 | // ── DualSession convenience wrapper ───────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 2348 | // ── Scenario tests ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 2841 | // ── Phase 1: legacy enc+dec on session A ───────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 2885 | // ── Encrypt delayed message (not yet delivered) ────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 2911 | // ── Session transition: A → B ───────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 2998 | // ── Phase 2: new enc+dec on session B ──────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/session_management.rs | 3043 | // ── Deliver delayed message ─────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/double_ratchet.rs | 24 | // ── State ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/double_ratchet.rs | 57 | // ── Serialization bridge ────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/double_ratchet.rs | 171 | // ── Operations ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/double_ratchet.rs | 255 | // ── Internals ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/pqxdh.rs | 94 | // ── Initiator ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | rust/protocol/src/pqxdh.rs | 238 | // ── Recipient ──────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/prepare_release.py | 117 | def get_workflow_name_mapping(repo_name: str) -> dict[int, str]: | CODE |
| LOW | bin/prepare_release.py | 357 | def check_gh_installed_and_authed() -> None: | CODE |
| LOW | …ridge/node/futures/tests-node-module/src/store_like.rs | 85 | // function doubleNameFromStoreUsingJoin(store: { getName: () => Promise<string> }): Promise<string> | COMMENT |
| LOW | java/check_code_size.py | 25 | def measure_stripped_library_size(lib_path: str) -> int: | CODE |
| LOW | java/check_code_size.py | 53 | def current_origin_main_entry() -> Optional[Mapping[str, Any]]: | CODE |
| LOW | node/build_node_bridge.py | 24 | def check_for_debug_level_logs(src_path: str) -> None: | CODE |
| LOW | node/build_node_bridge.py | 32 | def check_for_attest_testutil(src_path: str) -> None: | CODE |
| LOW | node/ts/NiceConverters.ts | 26 | export function cdnCredentialReturnConverter( | CODE |
| LOW | node/ts/NativeNice.ts | 151 | function returnConverterGetDevicesOut( | CODE |
| LOW | node/ts/NativeNice.ts | 160 | function returnConverterLinkedDeviceInternal( | CODE |
| LOW | node/ts/NativeNice.ts | 172 | function returnConverterMyRemoteDeriveEnum( | CODE |
| LOW | node/ts/NativeNice.ts | 195 | function returnConverterMyRemoteDeriveStruct( | CODE |
| LOW | node/ts/NativeNice.ts | 204 | function returnConverterMySimpleTestEnum( | CODE |
| LOW | node/ts/NativeNice.ts | 219 | function returnConverterMyTestEnum( | CODE |
| LOW⚡ | node/ts/NativeNice.ts | 252 | function returnConverterMyTestPoint( | CODE |
| LOW⚡ | node/ts/NativeNice.ts | 258 | function returnConverterMyTestStruct( | CODE |
| LOW⚡ | node/ts/NativeNice.ts | 267 | function returnConverterRemoveDeviceArgs( | CODE |
| LOW⚡ | node/ts/NativeNice.ts | 275 | function returnConverterRemoveDeviceOut( | CODE |
| LOW | node/ts/NativeNice.ts | 288 | function returnConverterReserveUsernameHashArgs( | CODE |
| LOW | node/ts/NativeNice.ts | 298 | function returnConverterReserveUsernameHashOut( | CODE |
| LOW | node/ts/NativeNice.ts | 317 | function returnConverterSetDeviceNameArgs( | CODE |
| LOW | node/ts/NativeNice.ts | 326 | function returnConverterSetDeviceNameOut( | CODE |
| LOW | node/ts/NativeNice.ts | 341 | function returnConverterSetUsernameLinkArgs( | CODE |
| LOW | node/ts/NativeNice.ts | 350 | function returnConverterSetUsernameLinkOut( | CODE |
| LOW | node/ts/NativeNice.ts | 367 | function returnConverterTestStreamChunk( | CODE |
| LOW | node/ts/NativeNice.ts | 376 | function argConverterMyRemoteDeriveEnum( | CODE |
| LOW | node/ts/NativeNice.ts | 405 | function argConverterMyRemoteDeriveStruct( | CODE |
| LOW | node/ts/NativeNice.ts | 412 | function argConverterMySimpleTestEnum( | CODE |
| LOW | node/ts/index.ts | 641 | export async function processSenderKeyDistributionMessage( | CODE |
| LOW | node/ts/index.ts | 1227 | export async function sealedSenderEncryptMessage( | CODE |
| LOW⚡ | node/ts/index.ts | 1274 | export async function sealedSenderMultiRecipientEncrypt( | CODE |
| LOW⚡ | node/ts/index.ts | 1277 | export async function sealedSenderMultiRecipientEncrypt( | CODE |
| LOW⚡ | node/ts/index.ts | 1284 | export async function sealedSenderMultiRecipientEncrypt( | CODE |
| LOW | node/ts/index.ts | 1318 | export function sealedSenderMultiRecipientMessageForSingleRecipient( | CODE |
| LOW | node/ts/index.ts | 1324 | export async function sealedSenderDecryptMessage( | CODE |
| LOW | node/ts/index.ts | 1353 | export async function sealedSenderDecryptToUsmc( | CODE |
| LOW | node/ts/net/RegistrationSession.ts | 17 | export function convertNativeRegistrationSessionState( | CODE |
| LOW | node/ts/test/MessageBackupTest.ts | 309 | function createDisappearingChatItemFrame(): Uint8Array<ArrayBuffer> { | CODE |
| LOW | node/ts/test/MessageBackupTest.ts | 313 | function createViewOnceChatItemFrame(): Uint8Array<ArrayBuffer> { | CODE |
| LOW | node/ts/test/SealedSenderServerAPI.ts | 47 | function assertMessageForRecipient( | CODE |
| LOW | node/ts/test/UsernamesTest.ts | 14 | function assertThrowsLibSignalError( | CODE |
| LOW | node/ts/test/MediaSanitizerTest.ts | 192 | function assertSanitizedMetadataEqual( | CODE |
| LOW | node/ts/test/chat/UnauthMessagesServiceTest.ts | 37 | async function sendTestMultiRecipientMessage( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/org/signal/libsignal/net/UnauthMessagesServiceTest.kt | 0 | { "missingdevices": [4, 5], "extradevices": [40, 50] } | STRING |
| HIGH | …va/org/signal/libsignal/net/AuthMessagesServiceTest.kt | 0 | { "missingdevices": [4, 5], "extradevices": [40, 50] } | STRING |
| HIGH | …lientTests/ChatServices/AuthMessagesServiceTests.swift | 0 | { "missingdevices": [4, 5], "extradevices": [40, 50] } | STRING |
| HIGH | …entTests/ChatServices/UnauthMessagesServiceTests.swift | 0 | { "missingdevices": [4, 5], "extradevices": [40, 50] } | STRING |
| HIGH | …va/org/signal/libsignal/net/AuthMessagesServiceTest.kt | 0 | { "cdn":123, "key":"abcde", "headers":{"one":"val1","two":"val2"}, "signeduploadlocation":"http://example.org/upload" } | STRING |
| HIGH | …a/org/signal/libsignal/net/UnauthBackupsServiceTest.kt | 0 | { "cdn":123, "key":"abcde", "headers":{"one":"val1","two":"val2"}, "signeduploadlocation":"http://example.org/upload" } | STRING |
| HIGH | …lientTests/ChatServices/AuthMessagesServiceTests.swift | 0 | { "cdn":123, "key":"abcde", "headers":{"one":"val1","two":"val2"}, "signeduploadlocation":"http://example.org/upload" } | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/prepare_release.py | 94 | print(f'Error: command {e.cmd} exited with status {e.returncode}.') | CODE |
| LOW | bin/prepare_release.py | 102 | except Exception as ex: | CODE |
| MEDIUM⚡ | bin/prepare_release.py | 286 | print(f"Error: You are on branch '{current_branch}'.") | CODE |
| MEDIUM⚡ | bin/prepare_release.py | 294 | print('Error: Git working tree is not clean! This can cause unexpected behavior, as this script commits to G | CODE |
| MEDIUM⚡ | bin/prepare_release.py | 304 | print('Error: Git working tree is not clean! This can cause unexpected behavior, as this script commits to G | CODE |
| MEDIUM⚡ | bin/prepare_release.py | 313 | print(f'Error: {release_notes_file_path} not found. Cannot proceed with release.') | CODE |
| MEDIUM | bin/prepare_release.py | 363 | print('Error: GitHub CLI (gh) is not installed. Please install it and re-run.') | CODE |
| MEDIUM | bin/prepare_release.py | 392 | print(f'Error while running command: {cmd}') | CODE |
| MEDIUM | bin/prepare_release.py | 420 | print(f"Error: Could not find a matching '{workflow_name}' run for commit {head_sha}.") | CODE |
| MEDIUM | bin/prepare_release.py | 444 | print(f'Error: Could not parse JSON for run {selected_run_id}.') | CODE |
| MEDIUM | bin/prepare_release.py | 450 | print(f"Error: '{workflow_name}' did not succeed (status={status}, conclusion={conclusion}).") | CODE |
| MEDIUM | bin/prepare_release.py | 466 | print(f"Error: version string '{version_str}' is not in 'vMAJOR.MINOR.PATCH' format.") | CODE |
| MEDIUM | bin/prepare_release.py | 479 | print(f'Error: {filepath} not found.') | CODE |
| LOW | java/check_code_size.py | 86 | except Exception as e: | CODE |
| MEDIUM | java/check_code_size.py | 53 | def current_origin_main_entry() -> Optional[Mapping[str, Any]]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rust/protocol/src/state/session.rs | 585 | // Don't forget to clean up new pending fields. | COMMENT |
| LOW | …a/org/signal/libsignal/crypto/Aes256GcmEncryption.java | 51 | * <p>Don't forget to call {@link #computeTag} when encryption is complete. | COMMENT |
| LOW | …a/org/signal/libsignal/crypto/Aes256GcmEncryption.java | 62 | * <p>Don't forget to call {@link #computeTag} when encryption is complete. | COMMENT |
| LOW | …a/org/signal/libsignal/crypto/Aes256GcmDecryption.java | 51 | * <p>Don't forget to call {@link #verifyTag} when decryption is complete. | COMMENT |
| LOW | …a/org/signal/libsignal/crypto/Aes256GcmDecryption.java | 64 | * <p>Don't forget to call {@link #verifyTag} when decryption is complete. | COMMENT |
| LOW | …nal/libsignal/messagebackup/OnlineBackupValidator.java | 17 | * decryption and decompression steps, but that also means it's validating less. Don't forget to | COMMENT |
| LOW | swift/Sources/LibSignalClient/MessageBackup.swift | 169 | /// This is much faster than using `validateMessageBackup(...)` because it bypasses the decryption and decompression ste | COMMENT |
| LOW | swift/Sources/LibSignalClient/Aes256Gcm.swift | 166 | /// Don't forget to call ``computeTag()`` when encryption is complete. | COMMENT |
| LOW | swift/Sources/LibSignalClient/Aes256Gcm.swift | 255 | /// Don't forget to call ``verifyTag(_:)`` when decryption is complete. | COMMENT |
| LOW | node/ts/MessageBackup.ts | 163 | * steps, but that also means it's validating less. Don't forget to call `finalize()`! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rust/net/chat/src/grpc/messages.rs | 820 | let fake_token = structurally_valid_group_send_token(); | CODE |
| LOW | rust/net/chat/src/grpc/messages.rs | 826 | MultiRecipientSendAuthorization::Group(fake_token), | CODE |
| LOW | rust/net/chat/src/ws/messages.rs | 779 | let fake_token = structurally_valid_group_send_token(); | CODE |
| LOW | rust/net/chat/src/ws/messages.rs | 797 | UserBasedSendAuthorization::User(UserBasedAuthorization::Group(fake_token)), | CODE |
| LOW | rust/net/chat/src/ws/messages.rs | 1272 | let fake_token = structurally_valid_group_send_token(); | CODE |
| LOW | rust/net/chat/src/ws/messages.rs | 1277 | MultiRecipientSendAuthorization::Group(fake_token), | CODE |
| LOW | rust/message-backup/src/unknown.rs | 223 | fn fake_data() -> Self { | CODE |
| LOW⚡ | rust/message-backup/src/unknown.rs | 271 | proto::TestMessage::fake_data(), | CODE |
| LOW⚡ | rust/message-backup/src/unknown.rs | 272 | proto::TestMessage::fake_data().wire_cast_as::<proto::TestMessage>(), | CODE |
| LOW⚡ | rust/message-backup/src/unknown.rs | 273 | proto::TestMessage::fake_data().wire_cast_as::<proto::TestMessageWithExtraFields>(), | CODE |
| LOW | rust/message-backup/src/unknown.rs | 349 | proto::TestMessage::fake_data().wire_cast_as::<proto::TestMessageWithExtraFields>(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rust/keytrans/src/log.rs | 411 | // Step 1: Verify that the consistency proof aligns with m_root. | COMMENT |
| LOW | rust/keytrans/src/log.rs | 445 | // Step 2: Verify that the consistency proof aligns with n_root. | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2103 | // Step 1: temporarily add a new field to the .proto. | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2113 | // Step 2: Add `some_fake_field: None` to the above construction of | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2116 | // Step 3: Serialize and print out the new fixture data (uncomment the following) | COMMENT |
| LOW | rust/protocol/src/sealed_sender.rs | 2152 | // Step 4: update the following fixture data with the new values from above. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rust/keytrans/src/log.rs | 411 | // Step 1: Verify that the consistency proof aligns with m_root. | COMMENT |
| LOW | rust/keytrans/src/log.rs | 445 | // Step 2: Verify that the consistency proof aligns with n_root. | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2103 | // Step 1: temporarily add a new field to the .proto. | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2113 | // Step 2: Add `some_fake_field: None` to the above construction of | COMMENT |
| LOW⚡ | rust/protocol/src/sealed_sender.rs | 2116 | // Step 3: Serialize and print out the new fixture data (uncomment the following) | COMMENT |
| LOW | rust/protocol/src/sealed_sender.rs | 2152 | // Step 4: update the following fixture data with the new values from above. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 241 | # When building libsignal, just use our forks so we don't end up with two different versions of the libraries. | COMMENT |
| MEDIUM | rust/net/infra/src/route/connect/interface_monitor.rs | 45 | /// Essentially an [`AsyncFn`] with a few extra constraints. We would need `async_fn_traits` to | COMMENT |
| MEDIUM | swift/Sources/LibSignalClient/DataStoreProtocols.swift | 21 | /// Essentially `Any`, but still able to catch typos when calling something that uses stores. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …st/bridge/shared/types/src/support/transform_helper.rs | 18 | /// Extracts the value from the TransformHelper and transforms it as requested. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/run_with_network_isolation.sh | 5 | # Usage: | COMMENT |
| LOW | swift/Sources/LibSignalClient/KeyTransparency.swift | 118 | /// Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rust/bridge/jni/impl/src/logging.rs | 104 | // ID are worth not having the guardrails. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/update_versions.py | 27 | def update_version(file: str, pattern: re.Pattern[str], new_version: str) -> None: | CODE |