# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
name = "phasm-core"
version = "0.2.4"
authors = ["Christoph Gaffga"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Pure-Rust steganography engine — hide encrypted messages in JPEG photos"
readme = "README.md"
keywords = [
    "steganography",
    "jpeg",
    "encryption",
    "stego",
]
categories = [
    "multimedia::images",
    "cryptography",
]
license = "GPL-3.0-only"
repository = "https://github.com/cgaffga/phasmcore"

[features]
cabac-stego = ["h264-encoder"]
default = []
h264-encoder = ["video"]
parallel = ["rayon"]
simd = []
video = ["memmap2"]
wasm = [
    "js-sys",
    "wasm-bindgen",
]

[lib]
name = "phasm_core"
path = "src/lib.rs"

[[example]]
name = "h264_bframe_demo"
path = "examples/h264_bframe_demo.rs"

[[example]]
name = "h264_cabac_decoder"
path = "examples/h264_cabac_decoder.rs"

[[example]]
name = "h264_cabac_drift"
path = "examples/h264_cabac_drift.rs"

[[example]]
name = "h264_cabac_n_frame_test"
path = "examples/h264_cabac_n_frame_test.rs"

[[example]]
name = "h264_cabac_real_world"
path = "examples/h264_cabac_real_world.rs"

[[example]]
name = "h264_cabac_spec_ref"
path = "examples/h264_cabac_spec_ref.rs"

[[example]]
name = "h264_cabac_trace_diff"
path = "examples/h264_cabac_trace_diff.rs"

[[example]]
name = "h264_cabac_vs_cavlc_rd"
path = "examples/h264_cabac_vs_cavlc_rd.rs"

[[example]]
name = "h264_capacity_report"
path = "examples/h264_capacity_report.rs"

[[example]]
name = "h264_cavlc_mode_stats"
path = "examples/h264_cavlc_mode_stats.rs"

[[example]]
name = "h264_cavlc_real_world_validate"
path = "examples/h264_cavlc_real_world_validate.rs"

[[example]]
name = "h264_encode_full_img4138"
path = "examples/h264_encode_full_img4138.rs"

[[example]]
name = "h264_encode_full_img4273"
path = "examples/h264_encode_full_img4273.rs"

[[example]]
name = "h264_encode_generic"
path = "examples/h264_encode_generic.rs"

[[example]]
name = "h264_encode_test"
path = "examples/h264_encode_test.rs"

[[example]]
name = "h264_i8x8_rd_report"
path = "examples/h264_i8x8_rd_report.rs"

[[example]]
name = "h264_iip_1080p_force"
path = "examples/h264_iip_1080p_force.rs"

[[example]]
name = "h264_iip_32x32_parity"
path = "examples/h264_iip_32x32_parity.rs"

[[example]]
name = "h264_iip_parity_real"
path = "examples/h264_iip_parity_real.rs"

[[example]]
name = "h264_intra_in_p_parity_test"
path = "examples/h264_intra_in_p_parity_test.rs"

[[example]]
name = "h264_long_form_bench"
path = "examples/h264_long_form_bench.rs"

[[example]]
name = "h264_multigop_bench"
path = "examples/h264_multigop_bench.rs"

[[example]]
name = "h264_multigop_parity"
path = "examples/h264_multigop_parity.rs"

[[example]]
name = "h264_nframe_bench"
path = "examples/h264_nframe_bench.rs"

[[example]]
name = "h264_nframe_drift"
path = "examples/h264_nframe_drift.rs"

[[example]]
name = "h264_p_slice_parse"
path = "examples/h264_p_slice_parse.rs"

[[example]]
name = "h264_recon_diff_test"
path = "examples/h264_recon_diff_test.rs"

[[example]]
name = "h264_state_reset_diag"
path = "examples/h264_state_reset_diag.rs"

[[example]]
name = "h264_stealth_retrospective"
path = "examples/h264_stealth_retrospective.rs"

[[example]]
name = "h264_stego_1080p_smoke"
path = "examples/h264_stego_1080p_smoke.rs"

[[example]]
name = "h264_stego_4domain_bench"
path = "examples/h264_stego_4domain_bench.rs"

[[example]]
name = "h264_stego_bench"
path = "examples/h264_stego_bench.rs"

[[example]]
name = "h264_ytnews_calib"
path = "examples/h264_ytnews_calib.rs"

[[example]]
name = "test_encode"
path = "examples/test_encode.rs"

[[example]]
name = "test_link"
path = "examples/test_link.rs"

[[example]]
name = "test_timing"
path = "examples/test_timing.rs"

[[test]]
name = "armor_geometry"
path = "tests/armor_geometry.rs"

[[test]]
name = "armor_roundtrip"
path = "tests/armor_roundtrip.rs"

[[test]]
name = "cross_platform"
path = "tests/cross_platform.rs"

[[test]]
name = "ghost_roundtrip"
path = "tests/ghost_roundtrip.rs"

[[test]]
name = "h264_bridge_atomic_swap"
path = "tests/h264_bridge_atomic_swap.rs"

[[test]]
name = "h264_cross_arch_determinism"
path = "tests/h264_cross_arch_determinism.rs"

[[test]]
name = "h264_encoder_integration"
path = "tests/h264_encoder_integration.rs"

[[test]]
name = "h264_encoder_mid_clip_restart"
path = "tests/h264_encoder_mid_clip_restart.rs"

[[test]]
name = "h264_gop_replay_cover"
path = "tests/h264_gop_replay_cover.rs"

[[test]]
name = "h264_handbrake_audio_passthrough"
path = "tests/h264_handbrake_audio_passthrough.rs"

[[test]]
name = "h264_handbrake_mux"
path = "tests/h264_handbrake_mux.rs"

[[test]]
name = "h264_oracle_test"
path = "tests/h264_oracle_test.rs"

[[test]]
name = "h264_pass1_for_gop_range"
path = "tests/h264_pass1_for_gop_range.rs"

[[test]]
name = "h264_pass1_per_gop_counts"
path = "tests/h264_pass1_per_gop_counts.rs"

[[test]]
name = "h264_phase_f_capacity_regression"
path = "tests/h264_phase_f_capacity_regression.rs"

[[test]]
name = "h264_roundtrip_test"
path = "tests/h264_roundtrip_test.rs"

[[test]]
name = "h264_stealth_eva_altinisik"
path = "tests/h264_stealth_eva_altinisik.rs"

[[test]]
name = "h264_stealth_optimal_rate_mvp"
path = "tests/h264_stealth_optimal_rate_mvp.rs"

[[test]]
name = "h264_stealth_yao_vpf"
path = "tests/h264_stealth_yao_vpf.rs"

[[test]]
name = "h264_stego_ibpbp_compliance"
path = "tests/h264_stego_ibpbp_compliance.rs"

[[test]]
name = "h264_stego_real_world"
path = "tests/h264_stego_real_world.rs"

[[test]]
name = "h264_stego_stealth_measurement"
path = "tests/h264_stego_stealth_measurement.rs"

[[test]]
name = "h264_stego_streaming_orchestrator"
path = "tests/h264_stego_streaming_orchestrator.rs"

[[test]]
name = "h264_stego_streaming_orchestrator_v2"
path = "tests/h264_stego_streaming_orchestrator_v2.rs"

[[test]]
name = "h264_streaming_pass_equivalence"
path = "tests/h264_streaming_pass_equivalence.rs"

[[test]]
name = "h264_transcode_real_world"
path = "tests/h264_transcode_real_world.rs"

[[test]]
name = "jpeg_roundtrip"
path = "tests/jpeg_roundtrip.rs"

[[test]]
name = "optimizer_experiment"
path = "tests/optimizer_experiment.rs"

[[test]]
name = "optimizer_roundtrip"
path = "tests/optimizer_roundtrip.rs"

[[test]]
name = "progressive_jpeg"
path = "tests/progressive_jpeg.rs"

[[test]]
name = "real_photos_roundtrip"
path = "tests/real_photos_roundtrip.rs"

[[test]]
name = "recompression_survival"
path = "tests/recompression_survival.rs"

[[test]]
name = "shadow_roundtrip"
path = "tests/shadow_roundtrip.rs"

[[test]]
name = "si_uniward"
path = "tests/si_uniward.rs"

[[test]]
name = "stego_debug"
path = "tests/stego_debug.rs"

[dependencies.aes-gcm-siv]
version = "0.11"

[dependencies.argon2]
version = "0.5"

[dependencies.brotli]
version = "7"
features = ["std"]
default-features = false

[dependencies.crc32fast]
version = "1.4"

[dependencies.hmac]
version = "0.12"

[dependencies.js-sys]
version = "0.3"
optional = true

[dependencies.memmap2]
version = "0.9"
optional = true

[dependencies.num-complex]
version = "0.4"

[dependencies.rand]
version = "0.8"

[dependencies.rand_chacha]
version = "0.3"

[dependencies.rayon]
version = "1"
optional = true

[dependencies.sha2]
version = "0.10"

[dependencies.wasm-bindgen]
version = "0.2"
optional = true

[dependencies.zeroize]
version = "1"

[lints.clippy]
doc_lazy_continuation = "allow"
many_single_char_names = "allow"
needless_range_loop = "allow"
too_many_arguments = "allow"
type_complexity = "allow"

[profile.dist]
lto = "thin"
inherits = "release"
