{
    "libs":{
        "hitls_bsl": {
            "features": {
                "c": {
                    "err": null,
                    "hash": null,
                    "init": {"deps": ["err"]},
                    "base64": null,
                    "buffer": null,
                    "conf": {"deps": ["uio_file", "list"]},
                    "pem": {"deps": ["base64"]},
                    "list": null,
                    "log": null,
                    "obj":null,
                    "sal": null,
                    "sal_mem": null,
                    "sal_thread": null,
                    "sal_lock": null,
                    "sal_time": null,
                    "sal_file": null,
                    "sal_net": null,
                    "sal_str": null,
                    "sal_dl": null,
                    "tlv": null,
                    "ui": {"deps": ["sal_file"]},
                    "uio": {
                        "uio_plt": null,
                        "uio_buffer": {"deps": ["uio_plt"]},
                        "uio_sctp": {"deps": ["uio_plt", "sal_net"]},
                        "uio_tcp": {"deps": ["uio_plt", "sal_net"]},
                        "uio_udp": {"deps": ["uio_plt", "sal_net"]},
                        "uio_file": {"deps": ["uio_plt", "sal_file"]},
                        "uio_mem": {"deps": ["uio_plt", "sal_mem", "buffer"]}
                    },
                    "params": {"deps": ["list"]},
                    "print":null,
                    "asn1": {"deps": ["sal_time", "uio_plt"]}
                }
            }
        },
        "hitls_crypto":{
            "lang": "C ASM",
            "features": {
                "c": {
                    "eal": {"deps": ["init"]},
                    "ealinit": null,
                    "md": {
                        "md5": null,
                        "sm3": null,
                        "sha1": null,
                        "sha2": {
                            "sha224": null,
                            "sha256": null,
                            "sha384": null,
                            "sha512": null
                        },
                        "sha3": null
                    },
                    "mac": {
                        "hmac": null,
                        "gmac": {"deps": ["eal", "aes", "gcm"]},
                        "cmac": {
                            "cmac_aes" :{
                                "deps": ["aes"]
                            },
                            "cmac_sm4" :{
                                "deps": ["sm4"]
                            }
                        },
                        "cbc_mac": {"deps": ["sm4"]},
                        "siphash": null
                    },
                    "hpke": {
                        "deps": ["hkdf", "params"],
                        "opts": [["aes", "chacha20"], ["ecc", "x25519"]]
                    },
                    "kdf": {
                        "scrypt": {"deps": ["sha256", "pbkdf2"]},
                        "hkdf": null,
                        "pbkdf2": null,
                        "kdftls12": null,
                        "deps": ["hmac", "params"]
                    },
                    "drbg": {
                        "drbg_hash": null,
                        "drbg_hmac": {"deps": ["hmac"]},
                        "drbg_ctr": {"opts": ["aes", "sm4"]},
                        "deps": ["params"]
                    },
                    "entropy": {
                        "deps": ["list"], "opts": ["drbg_hash", "drbg_hmac", "drbg_ctr"]
                    },
                    "modes": {
                        "cbc": null,
                        "ecb": null,
                        "xts": null,
                        "ctr": null,
                        "ofb": null,
                        "cfb": null,
                        "ccm": null,
                        "gcm": null,
                        "chacha20poly1305": null
                    },
                    "cipher": {
                        "aes": null,
                        "sm4": null,
                        "chacha20": {"deps": ["chacha20poly1305"]}
                    },
                    "pkey": {
                        "ecc": {
                            "curve_nistp224": null,
                            "curve_nistp256": null,
                            "curve_nistp384": null,
                            "curve_nistp521": null,
                            "curve_bp256r1":  null,
                            "curve_bp384r1":  null,
                            "curve_bp512r1":  null,
                            "curve_sm2":      null,
                            "deps": ["bn_rand"]
                        },
                        "rsa": {
                            "rsa_gen": {"deps": ["bn_rand", "bn_prime"]},
                            "rsa_sign": {"opts": ["rsa_emsa_pss", "rsa_emsa_pkcsv15"]},
                            "rsa_verify": {"opts": ["rsa_emsa_pss", "rsa_emsa_pkcsv15"]},
                            "rsa_encrypt": {"opts": ["rsa_no_pad", "rsaes_oaep", "rsaes_pkcsv15", "rsaes_pkcsv15_tls"]},
                            "rsa_decrypt": {"opts": ["rsa_no_pad", "rsaes_oaep", "rsaes_pkcsv15", "rsaes_pkcsv15_tls"]},
                            "rsa_pad": {
                                "rsa_no_pad": {"opts": ["rsa_encrypt", "rsa_decrypt"]},
                                "rsaes_oaep": {"opts": ["rsa_encrypt", "rsa_decrypt"]},
                                "rsaes_pkcsv15": {"opts": ["rsa_encrypt", "rsa_decrypt"]},
                                "rsaes_pkcsv15_tls": {"opts": ["rsa_encrypt", "rsa_decrypt"]},
                                "rsa_emsa_pss": {"opts": ["rsa_sign", "rsa_verify"]},
                                "rsa_emsa_pkcsv15": {"opts": ["rsa_sign", "rsa_verify"]}
                            },
                            "rsa_blinding": {
                                "deps": ["bn_rand"],
                                "opts": ["rsa_decrypt", "rsa_sign"]
                            },
                            "rsa_bssa": {"deps": ["rsa_emsa_pss", "rsa_blinding"]},
                            "deps": ["bn_basic", "params"]
                        },
                        "dsa": {"deps": ["bn_rand", "asn1", "obj"]},
                        "dh": {"deps": ["bn_rand"]},
                        "ecdh": {"opts": ["curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]},
                        "ecdsa": {
                            "deps": ["asn1", "obj"],
                            "opts": ["curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521", "curve_bp256r1", "curve_bp384r1", "curve_bp512r1"]
                        },
                        "curve25519": {
                            "ed25519": {"deps": ["sha512"]},
                            "x25519": null,
                            "deps": ["params"]
                        },
                        "sm2": {
                            "sm2_crypt": {"deps": ["asn1", "obj"]},
                            "sm2_sign": {"deps": ["asn1", "obj"]},
                            "sm2_exch": null,
                            "deps": ["curve_sm2", "sm3"]
                        },
                        "kem": {
                            "mlkem": {"deps": ["sha3"]}
                        },
                        "mldsa": {"deps": ["sha3", "obj"]},
                        "hybridkem": {"deps": ["mlkem"], "opts": ["ecdh", "x25519"]},
                        "paillier": {"deps":["bn_rand", "bn_prime"]},
                        "elgamal": {"deps":["bn_rand", "bn_prime"]},
                        "slh_dsa": { "deps": ["sha3", "sha2", "obj", "eal", "hmac", "sha256", "sha512"]},
                        "xmss": { "deps": ["sha3", "sha2", "obj", "eal", "sha256", "sha512"]},
                        "deps": ["params"]
                    },
                    "provider": {"deps": ["params", "hash", "list", "sal_dl", "sal_str"]},
                    "bn": {
                        "bn_basic": null,
                        "bn_rand": null,
                        "eal_bn": null,
                        "bn_prime": {"deps": ["bn_rand"]},
                        "bn_str_conv": null,
                        "bn_cb": null,
                        "bn_prime_rfc3526": null
                    },
                    "codecskey": {
                        "key_epki" : {
                            "deps": ["pbkdf2"],
                            "opts": [
                                ["key_encode", "key_decode"],
                                ["drbg_hash", "drbg_hmac", "drbg_ctr"],
                                ["aes", "chacha20", "sm4"]
                            ]
                        },
                        "key_encode" : null,
                        "key_decode" : null,
                        "key_info" : {"deps": ["print"]},
                        "deps": ["asn1", "obj"],
                        "opts":["ecdsa", "sm2_sign", "sm2_crypt", "ed25519", "rsa_sign", "rsa_verify"]
                    },
                    "codecs": null
                },
                "x8664": {
                    "sha1": {"ins_set":["x8664", "avx512"]},
                    "sha2": {"ins_set":["x8664", "avx512"]},
                    "md5": {"ins_set":["x8664", "avx512"]},
                    "sm3": null,
                    "modes": {"ins_set":["x8664", "avx512"]},
                    "aes": {"ins_set":["x8664", "avx512"]},
                    "chacha20": {"ins_set":["x8664", "avx512"]},
                    "sm4": {"ins_set":["x8664", "avx512"]},
                    "bn": {"ins_set":["x8664", "avx512"]},
                    "x25519": null,
                    "ecc": {"ins_set":["x8664", "avx512"]}
                },
                "armv8": {
                    "sha1": null,
                    "sha2": null,
                    "sha3": null,
                    "sm3": null,
                    "aes": null,
                    "modes": null,
                    "chacha20": null,
                    "bn": null,
                    "sm4": null,
                    "x25519": null,
                    "ecc": null
                },
                "armv7": {
                    "sm3": null
                }
            }
        },
        "hitls_tls": {
            "Note": "Currently, hitls_tls does not support feature division. 'all_tls' is a temporary solution.",
            "features": {
                "c": {
                    "proto_version":{
                        "proto_tls12":null,
                        "proto_tls13":null,
                        "proto_tlcp11":null,
                        "proto_dtls12":null,
                        "proto_dtlcp11":null
                    },
                    "host": {
                        "host_client": null,
                        "host_server": null,
                        "opts": ["proto"]
                    },
                    "callback": {
                        "feature_provider": null,
                        "callback_sal" :null,
                        "callback_cert": {
                            "deps": ["callback_sal"]
                        },
                        "callback_crypt": {
                            "deps": ["callback_sal"],
                            "callback_crypt_hmac_primitives": null
                        }
                    },
                    "feature": {
                        "feature_renegotiation": null,
                        "feature_alpn": null,
                        "feature_sni": null,
                        "feature_pha": null,
                        "feature_psk": null,
                        "feature_security": {
                            "deps" :["config_cipher_suite"]
                        },
                        "feature_indicator": null,
                        "feature_session": {
                            "feature_session_ticket": null,
                            "feature_session_id": null
                        },
                        "feature_mode": {
                            "feature_mode_fall_back_scsv": null,
                            "feature_mode_auto_retry": null,
                            "feature_mode_accept_moving_write_buffer": null,
                            "feature_mode_release_buffers": null
                        },
                        "feature_key_update": null,
                        "feature_flight": null,
                        "feature_cert_mode": null,
                        "feature_kem": null,
                        "feature_client_hello_cb": null,
                        "feature_cert_cb": null,
                        "feature_max_send_fragment": null,
                        "feature_rec_inbuffer_size": null,
                        "feature_custom_extension": null,
                        "feature_certificate_authorities": null
                    },
                    "proto": {
                        "deps": ["tlv", "sal", "eal", "list"],
                        "opts": [
                            ["host", "host_client", "host_server"],
                            ["uio_sctp", "uio_tcp", "uio_udp", "uio_plt"]
                        ]
                    },
                    "config": {
                        "config_manual_dh": null,
                        "config_cert": {
                            "config_cert_verify_param": null,
                            "config_cert_load_file": null,
                            "config_cert_callback": null,
                            "config_cert_build_chain": null
                        },
                        "config_key_usage": null,
                        "config_state": null,
                        "config_record_padding": null,
                        "config_user_data": null,
                        "config_cipher_suite": null
                    },
                    "connection": {
                        "connection_info_negotiation": null
                    },
                    "suite": {
                        "suite_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "ecdh"]
                        },
                        "suite_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "ecdh"]
                        },
                        "suite_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "ecdh"]
                        },
                        "suite_aes_128_ccm_sha256": {
                            "deps": ["sha256", "ccm", "aes", "ecdh"]
                        },
                        "suite_aes_128_ccm_8_sha256": {
                            "deps": ["sha256", "ccm", "aes", "ecdh"]
                        },
                        "suite_rsa_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_256_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "rsa"]
                        },
                        "suite_dhe_rsa_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "rsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "rsa", "dh"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_rsa_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_rsa_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "rsa", "ecdh"]
                        },
                        "suite_ecdhe_ecdsa_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "ecdh", "ecdsa"]
                        },
                        "suite_dhe_rsa_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "rsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_dss_with_aes_256_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "dsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_256_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa", "dh"]
                        },
                        "suite_psk_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes"]
                        },
                        "suite_psk_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes"]
                        },
                        "suite_dhe_psk_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh"]
                        },
                        "suite_dhe_psk_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh"]
                        },
                        "suite_rsa_psk_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_psk_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "rsa"]
                        },
                        "suite_psk_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes"]
                        },
                        "suite_psk_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes"]
                        },
                        "suite_psk_with_aes_256_ccm": {
                            "deps": ["ccm", "aes"]
                        },
                        "suite_dhe_psk_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "dh"]
                        },
                        "suite_dhe_psk_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "dh"]
                        },
                        "suite_dhe_psk_with_aes_128_ccm": {
                            "deps": ["ccm", "aes", "dh"]
                        },
                        "suite_dhe_psk_with_aes_256_ccm": {
                            "deps": ["ccm", "aes", "dh"]
                        },
                        "suite_rsa_psk_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "rsa"]
                        },
                        "suite_rsa_psk_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "rsa"]
                        },
                        "suite_psk_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes"]
                        },
                        "suite_psk_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes"]
                        },
                        "suite_dhe_psk_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "dh"]
                        },
                        "suite_dhe_psk_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes", "dh"]
                        },
                        "suite_rsa_psk_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "rsa"]
                        },
                        "suite_rsa_psk_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes", "rsa"]
                        },
                        "suite_ecdhe_psk_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "ecdh"]
                        },
                        "suite_ecdhe_psk_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "ecdh"]
                        },
                        "suite_ecdhe_psk_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "ecdh"]
                        },
                        "suite_ecdhe_psk_with_aes_256_cbc_sha384": {
                            "deps": ["sha384", "cbc", "aes", "ecdh"]
                        },
                        "suite_psk_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20"]
                        },
                        "suite_ecdhe_psk_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "ecdh"]
                        },
                        "suite_dhe_psk_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "dh"]
                        },
                        "suite_rsa_psk_with_chacha20_poly1305_sha256": {
                            "deps": ["sha256", "chacha20poly1305", "chacha20", "rsa"]
                        },
                        "suite_ecdhe_psk_with_aes_128_ccm_sha256": {
                            "deps": ["sha256", "ccm", "aes", "ecdh"]
                        },
                        "suite_ecdhe_psk_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "ecdh"]
                        },
                        "suite_ecdhe_psk_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "ecdh"]
                        },
                        "suite_dh_anon_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh"]
                        },
                        "suite_dh_anon_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh"]
                        },
                        "suite_dh_anon_with_aes_128_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "dh"]
                        },
                        "suite_dh_anon_with_aes_256_cbc_sha256": {
                            "deps": ["sha256", "cbc", "aes", "dh"]
                        },
                        "suite_dh_anon_with_aes_128_gcm_sha256": {
                            "deps": ["sha256", "gcm", "aes", "dh"]
                        },
                        "suite_dh_anon_with_aes_256_gcm_sha384": {
                            "deps": ["sha384", "gcm", "aes", "dh"]
                        },
                        "suite_ecdh_anon_with_aes_128_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh", "ecdh"]
                        },
                        "suite_ecdh_anon_with_aes_256_cbc_sha": {
                            "deps": ["sha1", "cbc", "aes", "dh", "ecdh"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_128_ccm": {
                            "deps": ["ccm", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_ecdhe_ecdsa_with_aes_256_ccm": {
                            "deps": ["ccm", "aes", "ecdh", "ecdsa"]
                        },
                        "suite_dhe_rsa_with_aes_128_ccm": {
                            "deps": ["ccm", "aes", "rsa", "dh"]
                        },
                        "suite_dhe_rsa_with_aes_256_ccm": {
                            "deps": ["ccm", "aes", "rsa", "dh"]
                        },
                        "suite_rsa_with_aes_128_ccm": {
                            "deps": ["ccm", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_128_ccm_8": {
                            "deps": ["ccm", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_256_ccm": {
                            "deps": ["ccm", "aes", "rsa"]
                        },
                        "suite_rsa_with_aes_256_ccm_8": {
                            "deps": ["ccm", "aes", "rsa"]
                        },
                        "suite_ecdhe_sm4_cbc_sm3": {
                            "deps": ["sm3", "cbc", "sm4", "sm2", "ecdh"]
                        },
                        "suite_ecc_sm4_cbc_sm3": {
                            "deps": ["sm3", "cbc", "sm4", "sm2"]
                        },
                        "suite_ecdhe_sm4_gcm_sm3": {
                            "deps": ["sm3", "gcm", "sm4", "sm2", "ecdh"]
                        },
                        "suite_ecc_sm4_gcm_sm3": {
                            "deps": ["sm3", "gcm", "sm4", "sm2"]
                        }
                    },
                    "suite_cipher": {
                        "suite_cipher_aead": null,
                        "suite_cipher_cbc": null,
                        "opts": ["proto"]
                    },
                    "suite_kx": {
                        "suite_kx_ecdhe": null,
                        "suite_kx_dhe": null,
                        "suite_kx_ecdh":  null,
                        "suite_kx_dh": null,
                        "suite_kx_rsa": null,
                        "opts": ["proto"]
                    },
                    "suite_auth": {
                        "suite_auth_rsa": null,
                        "suite_auth_ecdsa": null,
                        "suite_auth_dss": null,
                        "suite_auth_psk": null,
                        "suite_auth_sm2": null,
                        "opts": ["proto"]
                    },
                    "maintain":{
                        "deps":["log", "err"],
                        "maintain_keylog": null
                    }
                }
            }
        },
        "hitls_pki":{
            "lang" : "C",
            "features" : {
                "c": {
                    "x509": {
                        "x509_crt" : {
                            "x509_crt_gen" : {"deps": ["key_encode"]},
                            "x509_crt_parse" : {"deps": ["key_decode"]},
                            "deps": ["list", "obj", "asn1"]
                        },
                        "x509_csr" : {
                            "x509_csr_gen" : {"deps": ["key_encode"]},
                            "x509_csr_parse" : {"deps": ["key_decode"]},
                            "deps": ["list", "obj", "asn1"]
                        },
                        "x509_crl" : {
                            "x509_crl_gen" : {"deps": ["key_encode"]},
                            "x509_crl_parse" : {"deps": ["key_decode"]},
                            "deps": ["list", "obj", "asn1"]
                        },
                        "x509_vfy" : {
                            "deps": ["x509_crt_parse", "x509_crl_parse"]
                        }
                    },
                    "pkcs12" : {
                        "pkcs12_gen" : {"deps": ["x509_crt_gen", "x509_crt_parse", "key_encode"]},
                        "pkcs12_parse" : {"deps": ["x509_crt_parse", "key_decode"]},
                        "deps": ["key_epki"]
                    },
                    "info": {
                        "deps": ["uio_plt", "list", "obj", "asn1", "print"],
                        "opts": ["x509_crt", "x509_crt_gen", "x509_crt_parse"]
                    }
                }
            }
        },
        "hitls_auth":{
            "lang" : "C",
            "features" : {
                "c": {
                    "privpass_token": {
                        "privpass_pubtoken": null
                    }
                }
            }
        }
    },
    "executes":{
        "hitls":{
            "features": {
                "c": {
                    "apps": null
                }
            }
        }
    },
    "modules":{
        "apps" :{
            "main": {
                ".features": ["apps"],
                ".srcs": "apps/src/*.c",
                ".deps": [
                    "platform::Secure_C",
                    "bsl::ui", "bsl::buffer", "bsl::conf", "bsl::obj", "bsl::asn1", "bsl::print",
                    "pki::x509_csr", "pki::x509_cert", "pki::x509_common", "pki::x509_crl", "pki::pkcs12"
                ],
                ".include": [
                    "include",
                    "crypto/codecskey/include",
                    "crypto/bn/include",
                    "bsl/list/include",
                    "bsl/buffer/include",
                    "bsl/pem/include",
                    "bsl/asn1/include",
                    "bsl/conf/include",
                    "include/pki",
                    "pki/x509_cert/include",
                    "pki/x509_common/include",
                    "pki/x509_csr/include",
                    "pki/pkcs12/include"
                ]
            }
        },
        "crypto":{
            "eal": {
                ".features": ["eal"],
                ".srcs": "crypto/eal/src/*.c",
                ".deps": ["bsl::sal"],
                ".include": [
                    "crypto/ealinit/include",
                    "crypto/sha1/include",
                    "crypto/sha2/include",
                    "crypto/sha3/include",
                    "crypto/md5/include",
                    "crypto/sm3/include",
                    "crypto/hmac/include",
                    "crypto/gmac/include",
                    "crypto/cmac/include",
                    "crypto/siphash/include",
                    "crypto/scrypt/include",
                    "crypto/hkdf/include",
                    "crypto/kdf/include",
                    "crypto/pbkdf2/include",
                    "crypto/drbg/include",
                    "crypto/entropy/include",
                    "crypto/modes/include",
                    "crypto/aes/include",
                    "crypto/sm4/include",
                    "crypto/chacha20/include",
                    "crypto/bn/include",
                    "crypto/encode/include",
                    "crypto/ecc/include",
                    "crypto/rsa/include",
                    "crypto/dh/include",
                    "crypto/dsa/include",
                    "crypto/ecdsa/include",
                    "crypto/ecdh/include",
                    "crypto/curve25519/include",
                    "crypto/sm2/include",
                    "crypto/paillier/include",
                    "crypto/elgamal/include",
                    "crypto/mlkem/include",
                    "crypto/mldsa/include",
                    "crypto/hybridkem/include",
                    "crypto/provider/include",
                    "crypto/slh_dsa/include",
                    "crypto/xmss/include"
                ]
            },
            "ealinit": {
                ".features": ["ealinit"],
                ".srcs": "crypto/ealinit/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include":["crypto/provider/include"]
            },
            "sha1": {
                ".features": ["sha1"],
                ".srcs": {
                    "public":"crypto/sha1/src/sha1*.c",
                    "no_asm": "crypto/sha1/src/noasm_*.c",
                    "armv8": "crypto/sha1/src/asm/*_armv8.S",
                    "x8664": {
                        "x8664": "crypto/sha1/src/asm/*_x86_64.S",
                        "avx512": "crypto/sha1/src/asm/*_x86_64.S"
                    }
                },
                ".deps": ["platform::Secure_C"]
            },
            "sha2": {
                ".features": ["sha224", "sha256", "sha384", "sha512"],
                ".srcs": {
                    "public": "crypto/sha2/src/sha2*.c",
                    "no_asm": "crypto/sha2/src/noasm_*.c",
                    "armv8": ["crypto/sha2/src/asm_*.c", "crypto/sha2/src/asm/*_armv8.S"],
                    "x8664":{
                        "x8664":["crypto/sha2/src/asm_*.c", "crypto/sha2/src/asm/*_x86_64.S"],
                        "avx512":["crypto/sha2/src/asm_*.c", "crypto/sha2/src/asm/*_x86_64.S"]
                    }
                },
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "sha3": {
                ".features": ["sha3"],
                ".srcs": {
                    "public":"crypto/sha3/src/sha3*.c",
                    "no_asm": "crypto/sha3/src/noasm_*.c",
                    "armv8": "crypto/sha3/src/asm/*_armv8.S"
                },
                ".deps": ["platform::Secure_C"]
            },
            "md5": {
                ".features": ["md5"],
                ".srcs": {
                    "public":"crypto/md5/src/md5*.c",
                    "no_asm": "crypto/md5/src/noasm_*.c",
                    "x8664": {
                        "x8664": "crypto/md5/src/asm/*_x86_64.S",
                        "avx512": "crypto/md5/src/asm/*_x86_64.S"
                    }
                },
                ".deps": ["platform::Secure_C"]
            },
            "sm3": {
                ".features": ["sm3"],
                ".srcs": {
                    "public": "crypto/sm3/src/sm3_public.c",
                    "no_asm": ["crypto/sm3/src/noasm_sm3.c"],
                    "armv8": ["crypto/sm3/src/asm/*armv8.S", "crypto/sm3/src/asm_sm3.c"],
                    "x8664": ["crypto/sm3/src/asm/*x86_64.s", "crypto/sm3/src/asm_sm3.c"],
                    "armv7": ["crypto/sm3/src/asm/*armv7.S", "crypto/sm3/src/asm_sm3.c"]
                },
                ".deps": ["platform::Secure_C"]
            },
            "hmac": {
                ".features": ["hmac"],
                ".srcs": "crypto/hmac/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": ["crypto/eal/src"]
            },
            "cmac": {
                ".features": ["cmac_aes", "cmac_sm4", "cbc_mac"],
                ".srcs": "crypto/cmac/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": [
                    "crypto/eal/src",
                    "crypto/cmac/src"
                ]
            },
            "gmac": {
                ".features": ["gmac"],
                ".srcs": "crypto/gmac/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": [
                    "crypto/eal/src",
                    "crypto/modes/src",
                    "crypto/modes/include"
                ]
            },
            "siphash": {
                ".features": ["siphash"],
                ".srcs": "crypto/siphash/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": ["crypto/eal/src"]
            },
            "hpke": {
                ".features": ["hpke"],
                ".srcs": "crypto/hpke/src/*.c",
                ".deps": ["platform::Secure_C", "crypto::bn"]
            },
            "scrypt": {
                ".features": ["scrypt"],
                ".srcs": "crypto/scrypt/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": [
                    "crypto/eal/src",
                    "crypto/pbkdf2/src"
                ]
            },
            "hkdf": {
                ".features": ["hkdf"],
                ".srcs": "crypto/hkdf/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": ["crypto/eal/src"]
            },
            "kdf": {
                ".features": ["kdftls12"],
                ".srcs": "crypto/kdf/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": ["crypto/eal/src"]
            },
            "pbkdf2": {
                ".features": ["pbkdf2"],
                ".srcs": "crypto/pbkdf2/src/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": [
                    "crypto/eal/src",
                    "crypto/ealinit/include"
                ]
            },
            "modes": {
                ".features": ["cbc", "ecb", "xts", "ctr", "ofb", "cfb", "ccm", "gcm", "chacha20poly1305"],
                ".srcs": {
                    "public": "crypto/modes/src/modes*.c",
                    "no_asm": "crypto/modes/src/noasm_*.c",
                    "armv8": [
                        "crypto/modes/src/asm/poly1305_armv8.S",
                        "crypto/modes/src/asm_aes_gcm.c",
                        "crypto/modes/src/asm_aes_xts.c",
                        "crypto/modes/src/asm_aes_cbc.c",
                        "crypto/modes/src/asm_aes_ecb.c",
                        "crypto/modes/src/asm_aes_ctr.c",
                        "crypto/modes/src/asm/aes_gcm_16block_aarch64.S",
                        "crypto/modes/src/asm/aes_gcm_64block_aarch64.S",
                        "crypto/modes/src/asm/ghash_armv8.S",
                        "crypto/modes/src/noasm_aes_ccm.c",
                        "crypto/modes/src/asm_aes_cfb.c",
                        "crypto/modes/src/asm_sm4_xts.c",
                        "crypto/modes/src/asm_sm4_ecb.c",
                        "crypto/modes/src/asm_sm4_cbc.c",
                        "crypto/modes/src/asm_sm4_cfb.c",
                        "crypto/modes/src/asm_sm4_ofb_armv8.c",
                        "crypto/modes/src/asm_sm4_ctr.c",
                        "crypto/modes/src/asm_sm4_setkey.c",
                        "crypto/modes/src/asm_sm4_gcm.c"
                    ],
                    "x8664": {
                        "x8664":[
                            "crypto/modes/src/asm_aes_ctr.c",
                            "crypto/modes/src/asm_aes_gcm.c",
                            "crypto/modes/src/asm/aes_gcm_16block_x86_64.S",
                            "crypto/modes/src/asm/aes_gcm_64block_x86_64.S",
                            "crypto/modes/src/asm/aes_gcm_96block_x86_64.S",
                            "crypto/modes/src/asm_aes_xts.c",
                            "crypto/modes/src/asm_aes_cbc.c",
                            "crypto/modes/src/asm_aes_ecb.c",
                            "crypto/modes/src/asm/ghash_x86_64.S",
                            "crypto/modes/src/asm_aes_ccm.c",
                            "crypto/modes/src/asm/aes_ccm_x86_64.S",
                            "crypto/modes/src/asm/poly1305_x86_64_avx2.S",
                            "crypto/modes/src/noasm_aes_cfb.c",
                            "crypto/modes/src/asm_sm4_xts.c",
                            "crypto/modes/src/asm_sm4_ecb.c",
                            "crypto/modes/src/asm_sm4_cbc.c",
                            "crypto/modes/src/asm_sm4_cfb.c",
                            "crypto/modes/src/asm_sm4_ofb_x86_64.c",
                            "crypto/modes/src/asm_sm4_ctr.c",
                            "crypto/modes/src/asm_sm4_setkey.c",
                            "crypto/modes/src/asm_sm4_gcm.c"
                        ],
                        "avx512":[
                            "crypto/modes/src/asm_aes_ctr.c",
                            "crypto/modes/src/noasm_aes_gcm.c",
                            "crypto/modes/src/asm/aes_gcm_16block_x86_64.S",
                            "crypto/modes/src/asm/aes_gcm_64block_x86_64.S",
                            "crypto/modes/src/asm/aes_gcm_96block_x86_64.S",
                            "crypto/modes/src/asm_aes_ecb.c",
                            "crypto/modes/src/asm_aes_cbc.c",
                            "crypto/modes/src/asm_aes_xts.c",
                            "crypto/modes/src/asm/ghash_x86_64.S",
                            "crypto/modes/src/asm_aes_ccm.c",
                            "crypto/modes/src/asm/aes_ccm_x86_64.S",
                            "crypto/modes/src/asm/poly1305_x86_64_avx2.S",
                            "crypto/modes/src/noasm_aes_cfb.c",
                            "crypto/modes/src/asm_sm4_cfb.c",
                            "crypto/modes/src/asm_sm4_xts.c",
                            "crypto/modes/src/asm_sm4_ecb.c",
                            "crypto/modes/src/asm_sm4_cbc.c",
                            "crypto/modes/src/asm_sm4_cfb.c",
                            "crypto/modes/src/asm_sm4_ofb_x86_64.c",
                            "crypto/modes/src/asm_sm4_ctr.c",
                            "crypto/modes/src/asm_sm4_setkey.c",
                            "crypto/modes/src/asm_sm4_gcm.c"
                        ]
                    }
                },
                ".deps": ["bsl::sal"],
                ".include": ["crypto/sm4/include", "crypto/aes/include", "crypto/chacha20/include", "crypto/eal/src"]
            },
            "aes": {
                ".features": ["aes"],
                ".srcs": {
                    "no_asm":[
                        "crypto/aes/src/crypt_aes.c",
                        "crypto/aes/src/crypt_aes_sbox.c",
                        "crypto/aes/src/crypt_aes_tbox.c"
                    ],
                    "public": "crypto/aes/src/crypt_aes_setkey.c",
                    "armv8":[
                        "crypto/aes/src/asm/crypt_aes_armv8.S",
                        "crypto/aes/src/asm/crypt_aes_ecb_armv8.S",
                        "crypto/aes/src/asm/crypt_aes_cbc_armv8.S",
                        "crypto/aes/src/asm/crypt_aes_ctr_armv8.S",
                        "crypto/aes/src/asm/crypt_aes_xts_armv8.S",
                        "crypto/aes/src/asm/crypt_aes_cfb_armv8.S"
                    ],
                   "x8664": {
                        "x8664": [
                            "crypto/aes/src/asm/crypt_aes_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_ecb_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_cbc_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_ctr_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_xts_x86_64.S"
                        ],
                        "avx512": [
                            "crypto/aes/src/asm/crypt_aes_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_ecb_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_cbc_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_xts_x86_64.S",
                            "crypto/aes/src/asm/crypt_aes_ctr_x86_64.S"
                        ]
                    }
                },
                ".deps": ["platform::Secure_C"]
            },
            "chacha20": {
                ".features": ["chacha20"],
                ".srcs": {
                    "public": "crypto/chacha20/src/chacha20.c",
                    "no_asm": "crypto/chacha20/src/chacha20block.c",
                    "armv8": "crypto/chacha20/src/asm/chacha20_aarch64.S",
                    "x8664": {
                        "x8664": ["crypto/chacha20/src/asm/chacha20block_x8664_avx2.S"],
                        "avx512": ["crypto/chacha20/src/asm/chacha20block_x8664_avx512.S"]
                    }
                },
                ".deps": ["bsl::sal"]
            },
            "sm4": {
                ".features": ["sm4"],
                ".srcs": {
                    "public": [
                        "crypto/sm4/src/crypt_sm4_public.c",
                        "crypto/sm4/src/crypt_sm4.c",
                        "crypto/sm4/src/sm4_key.c"
                    ],
                    "no_asm":[
                        "crypto/sm4/src/crypt_sm4.c",
                        "crypto/sm4/src/sm4_key.c"
                    ],
                    "armv8":[
                        "crypto/sm4/src/asm/crypt_sm4_armv8.S",
                        "crypto/sm4/src/asm/crypt_sm4_ex_armv8.S",
                        "crypto/sm4/src/crypt_sm4_armv8.c"
                    ],
                    "x8664":{
                        "x8664":[
                            "crypto/sm4/src/asm/crypt_sm4_macro_x86_64.s",
                            "crypto/sm4/src/asm/crypt_sm4_x86_64.S",
                            "crypto/sm4/src/crypt_sm4_x86_64.c",
                            "crypto/sm4/src/asm/crypt_sm4_modes_macro_x86_64.s",
                            "crypto/sm4/src/asm/crypt_sm4_modes_x86_64.S"
                        ],
                        "avx512":[
                            "crypto/sm4/src/asm/crypt_sm4_macro_x86_64.s",
                            "crypto/sm4/src/asm/crypt_sm4_x86_64.S",
                            "crypto/sm4/src/crypt_sm4_x86_64.c"
                        ]
                    }
                },
                ".deps": ["bsl::sal"]
            },
            "entropy":{
                ".features": ["entropy"],
                ".srcs": "crypto/entropy/src/*.c",
                ".deps": ["bsl::sal", "bsl::list"]
            },
            "drbg": {
                ".features": ["drbg_hash", "drbg_hmac", "drbg_ctr"],
                ".srcs": "crypto/drbg/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"],
                ".include": [
                    "crypto/eal/src",
                    "crypto/entropy/include",
                    "crypto/ealinit/include"
                ]
            },
            "provider": {
                ".features": ["provider"],
                ".srcs": [
                    "crypto/provider/src/mgr/*.c",
                    "crypto/provider/src/default/*.c",
                    "crypto/provider/src/cmvp/cmvp_utils/*.c",
                    "crypto/provider/src/cmvp/iso_prov/*.c",
                    "crypto/provider/src/cmvp/sm_prov/*.c",
                    "crypto/provider/src/cmvp/fips_prov/*.c"],
                ".deps": ["bsl::sal", "bsl::hash", "bsl::err", "bsl::params"],
                ".include": [
                    "crypto/provider/include",
                    "crypto/encode/include",
                    "crypto/provider/src/cmvp/cmvp_utils",
                    "crypto/ealinit/include",
                    "crypto/sha1/include",
                    "crypto/sha2/include",
                    "crypto/sha3/include",
                    "crypto/md5/include",
                    "crypto/sm3/include",
                    "crypto/scrypt/include",
                    "crypto/pbkdf2/include",
                    "crypto/kdf/include",
                    "crypto/hkdf/include",
                    "crypto/rsa/include",
                    "crypto/dsa/include",
                    "crypto/curve25519/include",
                    "crypto/dh/include",
                    "crypto/ecdsa/include",
                    "crypto/ecdh/include",
                    "crypto/sm2/include",
                    "crypto/mlkem/include",
                    "crypto/bn/include",
                    "crypto/ecc/include",
                    "crypto/hmac/include",
                    "crypto/cmac/include",
                    "crypto/gmac/include",
                    "crypto/siphash/include",
                    "crypto/paillier/include",
                    "crypto/elgamal/include",
                    "crypto/mldsa/include",
                    "crypto/slh_dsa/include",
                    "crypto/xmss/include",
                    "crypto/drbg/include",
                    "crypto/modes/include",
                    "crypto/entropy/include",
                    "crypto/entropy/src",
                    "crypto/hybridkem/include",
                    "crypto/eal/src",
                    "crypto/include",
                    "crypto/codecskey/include",
                    "include/tls",
                    "bsl/asn1/include"
                ]
            },
            "bn": {
                ".features": ["bn", "bn_basic", "bn_rand", "eal_bn",  "bn_prime", "bn_str_conv", "bn_cb", "bn_prime_rfc3526"],
                ".srcs": {
                    "public": ["crypto/bn/src/bn_*.c"],
                    "no_asm": "crypto/bn/src/noasm_*.c",
                    "armv8": ["crypto/bn/src/armv8_*.c","crypto/bn/src/asm_*.c", "crypto/bn/src/asm/*_armv8.S"],
                    "x8664": {
                        "x8664": ["crypto/bn/src/x8664_*.c", "crypto/bn/src/asm_*.c", "crypto/bn/src/asm/*_x86_64.S"],
                        "avx512": ["crypto/bn/src/x8664_*.c", "crypto/bn/src/asm_*.c", "crypto/bn/src/asm/*_x86_64.S"]
                    }
                },
                ".deps": ["bsl::sal"]
            },
            "rsa": {
                ".features": [
                    "rsa", "rsa_gen", "rsa_sign", "rsa_verify", "rsa_encrypt", "rsa_decrypt",
                    "rsa_pad", "rsa_no_pad", "rsaes_oaep", "rsaes_pkcsv15", "rsaes_pkcsv15_tls", "rsa_emsa_pss", "rsa_emsa_pkcsv15", "rsa_blinding"
                ],
                ".srcs": "crypto/rsa/src/*.c",
                ".deps" : ["crypto::bn"],
                ".include": ["crypto/eal/src"]
            },
            "curve25519": {
                ".features": ["ed25519", "x25519"],
                ".srcs": {
                    "public": "crypto/curve25519/src/curve25519*.c",
		            "no_asm": "crypto/curve25519/src/noasm_*.c",
                    "x8664": [
                        "crypto/curve25519/src/asm/*_x86_64.S",
                        "crypto/curve25519/src/asm_*.c"
                    ],
                    "armv8": [
                        "crypto/curve25519/src/asm/*_armv8.S",
                        "crypto/curve25519/src/asm_*.c"
                    ]
                },
                ".deps": ["platform::Secure_C", "bsl::sal"],
                ".include": ["crypto/eal/src"]
            },
            "dsa": {
                ".features": ["dsa"],
                ".srcs": "crypto/dsa/src/*.c",
                ".deps": ["crypto::bn", "crypto::encode"],
                ".include": ["crypto/eal/src"]
            },
            "dh": {
                ".features": ["dh"],
                ".srcs": "crypto/dh/src/*.c",
                ".deps": ["crypto::bn"],
                ".include": ["crypto/eal/src"]
            },
            "codecs": {
                ".features": ["codecs"],
                ".srcs": "codecs/src/*.c",
                ".deps": ["crypto::provider", "bsl::params", "bsl::list"],
                ".include": ["codecs/include"]

            },
            "encode": {
                ".features": ["dsa", "ecdsa", "sm2", "sm2_crypt", "sm2_sign"],
                ".srcs": "crypto/encode/src/*.c",
                ".deps": ["crypto::bn", "bsl::asn1", "bsl::obj"]
            },
            "codecskey": {
                ".features": ["codecskey", "key_epki", "key_encode", "key_info", "key_decode"],
                ".srcs": ["crypto/codecskey/src/*.c"],
                ".deps": ["bsl::asn1", "bsl::obj"],
                ".include": [
                    "crypto/codecskey/include",
                    "bsl/print/include",
                    "bsl/pem/include",
                    "crypto/bn/include",
                    "crypto/eal/include",
                    "crypto/ecc/include",
                    "crypto/rsa/include",
                    "crypto/ecdsa/include",
                    "crypto/sm2/include",
                    "crypto/curve25519/include",
                    "crypto/provider/include",
                    "crypto/provider/src/mgr"
                ]
            },
            "util": {
                ".features": [
                    "sha1", "sha224", "sha256", "sha384", "sha512",
                    "bn",
                    "drbg_hash", "drbg_hmac", "drbg_ctr",
                    "rsa", "ed25519", "x25519", "slh_dsa"
                ],
                ".srcs": "crypto/util/*.c",
                ".deps": ["platform::Secure_C"],
                ".include": [
                    "crypto/bn/include"
                ]
            },
            "ecc": {
                ".features": [
                    "ecc",
                    "curve_nistp224", "curve_nistp256", "curve_nistp384", "curve_nistp521",
                    "curve_bp256r1", "curve_bp384r1", "curve_bp512r1",
                    "curve_sm2"
                ],
                ".srcs": {
                    "public": "crypto/ecc/src/ec*.c",
                    "no_asm": "crypto/ecc/src/noasm_*.c",
                    "armv8": ["crypto/ecc/src/asm_*.c", "crypto/ecc/src/asm64_ecp_nistp256.c", "crypto/ecc/src/asm/*armv8.S"],
                    "x8664": {
                        "x8664": ["crypto/ecc/src/asm_*.c", "crypto/ecc/src/asm64_ecp_nistp256.c", "crypto/ecc/src/asm/*_x86_64.S"],
                        "avx512": ["crypto/ecc/src/asm_*.c", "crypto/ecc/src/asm64_ecp_nistp256.c", "crypto/ecc/src/asm/*_x86_64.S"]
                    }
                },
                ".deps": ["crypto::bn", "bsl::sal"],
                ".include": ["crypto/eal/src"]
            },
            "ecdh": {
                ".features": ["ecdh"],
                ".srcs": "crypto/ecdh/src/*.c",
                ".deps": ["crypto::bn", "bsl::sal", "crypto::ecc"],
                ".include": ["crypto/eal/src"]
            },
            "ecdsa": {
                ".features": ["ecdsa"],
                ".srcs": "crypto/ecdsa/src/*.c",
                ".deps": ["crypto::bn", "bsl::sal", "crypto::encode", "crypto::ecc"],
                ".include": ["crypto/eal/src"]
            },
            "sm2": {
                ".features": ["sm2_crypt", "sm2_sign", "sm2_exch"],
                ".srcs": "crypto/sm2/src/*.c",
                ".deps": ["crypto::bn", "bsl::sal", "crypto::ecc"],
                ".include": [
                    "crypto/eal/src",
                    "bsl/asn1/include",
                    "bsl/obj/include",
                    "crypto/encode/include"
                ]
            },
            "paillier": {
                ".features": ["paillier"],
                ".srcs": "crypto/paillier/src/*.c",
                ".deps": ["crypto::bn"],
                ".include": ["crypto/eal/src"]
            },
            "elgamal": {
                ".features": ["elgamal"],
                ".srcs": "crypto/elgamal/src/*.c",
                ".deps": ["crypto::bn"],
                ".include": ["crypto/eal/src"]
            },
            "mlkem": {
                ".features": ["mlkem"],
                ".srcs": "crypto/mlkem/src/*.c",
                ".deps": ["crypto::sha3", "bsl::sal"],
                ".include": ["crypto/eal/src"]
            },
            "mldsa": {
                ".features": ["mldsa"],
                ".srcs": {
                    "public": [
                        "crypto/mldsa/src/ml_dsa_core.c",
                        "crypto/mldsa/src/ml_dsa_ntt.c",
                        "crypto/mldsa/src/ml_dsa.c"
                    ]
                },
                ".deps": ["crypto::sha3", "bsl::sal", "bsl::obj"],
                ".include": ["crypto/eal/src"]
            },
            "hybridkem": {
                ".features": ["hybridkem"],
                ".srcs": "crypto/hybridkem/src/*.c",
                ".deps": ["crypto::mlkem", "bsl::sal"],
                ".include": [
                    "crypto/hybridkem/include",
                    "crypto/ecdh/include",
                    "crypto/curve25519/include",
                    "crypto/mlkem/include",
                    "crypto/ecc/include",
                    "crypto/bn/include",
                    "crypto/eal/src"
                    ]
            },
            "slh_dsa": {
                ".features": ["slh_dsa"],
                ".srcs": "crypto/slh_dsa/src/*.c",
                ".deps": ["crypto::sha3", "crypto::sha2", "bsl::obj"],
                ".include": ["crypto/eal/src", "bsl/asn1/include"]
            },
            "xmss": {
                ".features": ["xmss"],
                ".srcs": "crypto/xmss/src/*.c",
                ".deps": ["crypto::sha3", "crypto::sha2", "bsl::obj"],
                ".include": ["crypto/eal/src", "bsl/asn1/include", "crypto/slh_dsa/include", "crypto/slh_dsa/src"]
            }
        },
        "bsl":{
            "log": {
                ".features": ["log"],
                ".srcs": "bsl/log/src/*.c",
                ".deps": ["platform::Secure_C"]
            },
            "sal": {
                ".features": ["sal", "sal_mem", "sal_lock", "sal_thread", "sal_time", "sal_file", "sal_str", "sal_dl"],
                ".srcs": [
                    "bsl/sal/src/*.c",
                    "bsl/sal/src/linux/*.c"
                ],
                ".deps": ["platform::Secure_C"]
            },
            "err": {
                ".features": ["err"],
                ".srcs": "bsl/err/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "tlv": {
                ".features": ["tlv"],
                ".srcs": "bsl/tlv/src/*.c",
                ".deps": ["platform::Secure_C"]
            },
            "ui": {
                ".features": ["ui"],
                ".srcs": "bsl/ui/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "list": {
                ".features": ["list"],
                ".srcs": "bsl/list/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "obj": {
                ".features":["obj"],
                ".srcs":"bsl/obj/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"],
                ".include": ["bsl/hash/include"]
            },
            "base64": {
                ".features": ["base64"],
                ".srcs": "bsl/base64/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "buffer": {
                ".features": ["buffer"],
                ".srcs": "bsl/buffer/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "conf": {
                ".features": ["conf"],
                ".srcs": "bsl/conf/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::list", "bsl::sal", "bsl::uio"]
            },
            "pem": {
                ".features": ["pem"],
                ".srcs": "bsl/pem/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal", "bsl::base64"]
            },
            "hash": {
                ".features": ["hash"],
                ".srcs": "bsl/hash/src/*.c",
                ".deps": ["platform::Secure_C"]
            },
            "uio": {
                ".features": [
                    "uio_plt", "uio", "uio_buffer", "uio_sctp", "uio_tcp","uio_udp" , "uio_file", "uio_mem"
                ],
                ".srcs": "bsl/uio/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"],
                ".include": [
                    "bsl/buffer/include"
                ]
            },
            "asn1": {
                ".features": ["asn1"],
                ".srcs": "bsl/asn1/src/*.c",
                ".deps": ["bsl::sal"]
            },
            "print": {
                ".features": ["print"],
                ".srcs": "bsl/print/src/*.c",
                ".deps": ["bsl::sal"]
            },
            "params": {
                ".features": ["params"],
                ".srcs": "bsl/params/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            },
            "init": {
                ".features": ["init"],
                ".srcs": "bsl/init/*.c",
                ".include": ["bsl/obj/include"]
            }
        },
        "platform": {
            "Secure_C": {
            }
        },
        "tls": {
            "cm": {
                ".features": ["proto"],
                ".srcs": "tls/cm/src/*.c",
                ".deps": ["bsl::hash", "bsl::tlv", "tls::alert", "tls::handshake", "tls::ccs", "tls::app", "tls::config"],
                ".include": [
                    "include",
                    "tls/handshake/include",
                    "tls/handshake/common/include",
                    "tls/handshake/recv/include",
                    "tls/handshake/send/include",
                    "tls/record/src",
                    "tls/include"
                ]
            },
            "crypt": {
                ".features": ["proto"],
                ".srcs": "tls/crypt/crypt_adapt/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal"],
                ".include": [
                    "tls/config/include",
                    "tls/crypt/crypt_self",
                    "tls/include"
                ]
            },
            "crypt_self": {
                ".features": ["proto"],
                ".srcs": "tls/crypt/crypt_self/*.c",
                ".deps": ["tls::crypt", "crypto::eal"],
                ".include": [
                    "include",
                    "tls/config/include",
                    "tls/feature/custom_extensions/include"
                ]
            },
            "cert": {
                ".features": ["proto"],
                ".srcs": "tls/cert/**/*.c",
                ".deps": ["platform::Secure_C", "bsl::hash", "bsl::sal"],
                ".include": [
                    "include",
                    "include/tls",
                    "include/bsl",
                    "include/pki",
                    "bsl/asn1/include",
                    "crypto/eal/src",
                    "pki/x509_cert/include",
                    "pki/x509_common/include",
                    "tls/config/include",
                    "tls/cert/include",
                    "tls/handshake/pack/include",
                    "tls/cert/cert_adapt",
                    "tls/include",
                    "tls/handshake/common/include"
                ]
            },
            "config": {
                ".features": ["proto"],
                ".srcs": "tls/config/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::hash", "bsl::sal", "tls::cert", "tls::crypt"],
                ".include": [
                    "tls/record/include",
                    "tls/include"
                ]

            },
            "record": {
                ".features": ["proto"],
                ".srcs": "tls/record/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::hash", "bsl::sal", "bsl::tlv", "bsl::uio", "tls::config", "tls::crypt"],
                ".include": [
                    "tls/handshake/include",
                    "tls/handshake/common/include",
                    "tls/alert/include",
                    "bsl/async/include",
                    "tls/include"
                ]
            },
            "ccs": {
                ".features": ["proto"],
                ".srcs": "tls/ccs/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal", "tls::record", "bsl::uio"],
                ".include": [
                    "tls/handshake/include",
                    "tls/alert/include",
                    "tls/include"
                ]
            },
            "alert": {
                ".features": ["proto"],
                ".srcs": "tls/alert/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal", "tls::record"],
                ".include": [

                    "tls/record/src",
                    "tls/include"
                ]
            },
            "handshake": {
                ".features": ["proto"],
                ".srcs": "tls/handshake/**/*.c",
                ".include": [
                    "tls/include",
                    "tls/cert/include",
                    "tls/cert/cert_adapt",
                    "tls/crypt/include",
                    "tls/record/include",
                    "tls/handshake/common/include",
                    "tls/handshake/pack/include",
                    "tls/handshake/parse/include",
                    "tls/handshake/recv/include",
                    "tls/handshake/send/include",
                    "tls/handshake/reass/include",
                    "tls/handshake/cookie/include",
                    "tls/record/src",
                    "tls/alert/include"
                ],
                ".deps": ["platform::Secure_C", "bsl::hash", "bsl::sal", "bsl::tlv", "tls::cert", "tls::crypt", "tls::record", "tls::config"]
            },
            "app": {
                ".features": ["proto"],
                ".srcs": "tls/app/src/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal", "tls::record"],
                ".include": [

                    "tls/record/src",
                    "tls/include"
                ]
            },
            "feature": {
                ".features": ["proto"],
                ".srcs": "tls/feature/**/*.c",
                ".deps": ["platform::Secure_C", "bsl::sal", "bsl::tlv", "bsl::uio", "tls::cm", "tls::crypt"],
                ".include": [
                    "include",
                    "bsl/hash/include/",
                    "bsl/uio/src",
                    "tls/cert/cert_adapt",
                    "tls/handshake/parse/src",
                    "tls/handshake/common/include",
                    "tls/include",
                    "tls/handshake/pack/include"
                ]
            }
        },
        "pki" : {
            "x509_cert": {
                ".features" : ["x509", "x509_crt", "x509_crt_gen", "x509_crt_parse"],
                ".srcs" : "pki/x509_cert/src/*",
                ".deps" : ["platform::Secure_C", "pki::x509_common", "crypto::codecskey", "bsl::sal", "bsl::asn1", "bsl::obj", "bsl::list"],
                ".include": [
                    "bsl/pem/include",
                    "pki/x509_csr/include",
                    "pki/print/include"
                ]
            },
            "x509_crl" : {
                ".features" : ["x509", "x509_crl_gen", "x509_crl_parse"],
                ".srcs" : "pki/x509_crl/src/*",
                ".deps" : ["platform::Secure_C", "pki::x509_common", "bsl::sal", "bsl::asn1", "bsl::obj", "bsl::list"],
                ".include": ["bsl/pem/include"]
            },
            "x509_common" : {
                ".features" : [
                    "x509", "x509_crt", "x509_crt_gen", "x509_crt_parse",
                    "x509_crl", "x509_crl_gen", "x509_crl_parse",
                    "x509_csr", "x509_csr_gen", "x509_csr_parse",
                    "pkcs12", "pkcs12_gen", "pkcs12_parse"
                ],
                ".srcs" : "pki/x509_common/src/*",
                ".deps" : ["platform::Secure_C", "bsl::sal", "bsl::asn1", "bsl::obj", "bsl::list", "crypto::codecskey"],
                ".include": ["bsl/pem/include"]
            },
            "pki_print" : {
                ".features" : ["info"],
                ".srcs" : "pki/print/src/*",
                ".deps" : ["pki::x509_common", "bsl::sal", "bsl::asn1", "bsl::print", "bsl::obj", "bsl::list", "crypto::codecskey"],
                ".include": [
                    "pki/print/include",
                    "pki/x509_cert/include",
                    "pki/x509_csr/include",
                    "pki/x509_crl/include"
                ]
            },
            "x509_verify" : {
                ".features" : ["x509_vfy"],
                ".srcs" : "pki/x509_verify/src/*",
                ".deps" : ["platform::Secure_C", "pki::x509_cert", "pki::x509_crl", "pki::x509_common"]
            },
            "x509_csr" : {
                ".features" : ["x509", "x509_csr", "x509_csr_gen", "x509_csr_parse"],
                ".srcs" : "pki/x509_csr/src/*",
                ".deps" : ["platform::Secure_C", "pki::x509_common", "bsl::sal", "bsl::asn1", "bsl::obj", "bsl::list"],
                ".include": ["bsl/pem/include"]
            },
            "pkcs12" : {
                ".features" : ["pkcs12", "pkcs12_gen", "pkcs12_parse"],
                ".srcs" : "pki/pkcs12/src/*",
                ".deps" : ["platform::Secure_C", "pki::x509_common", "crypto::codecskey", "bsl::sal", "bsl::asn1", "bsl::obj", "bsl::list", "pki::x509_cert", "pki::cms"]
            },
            "cms" : {
                ".features" : ["pkcs12_gen", "pkcs12_parse"],
                ".srcs" : "pki/cms/src/*",
                ".deps" : ["platform::Secure_C", "crypto::codecskey"]
            }
        },
        "auth" : {
            "privpass_token": {
                ".features" : ["privpass_pubtoken"],
                ".srcs" : "auth/privpass_token/src/*",
                ".deps": ["platform::Secure_C", "bsl::sal"]
            }
        }
    }
}