## @file
# CI configuration for CryptoPkg
#
# Copyright (c) Microsoft Corporation
# Copyright (c) 2020 - 2022, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    "LicenseCheck": {
        "IgnoreFiles": [
            # These directories contain auto-generated OpenSSL content
            "Library/OpensslLib/OpensslGen"
        ]
    },
    "EccCheck": {
        ## Exception sample looks like below:
        ## "ExceptionList": [
        ##     "<ErrorID>", "<KeyWord>"
        ## ]
        "ExceptionList": [
            "8001", "IsLeap",
            "8001", "OBJ_get0_data",
            "8001", "OBJ_length",
            "5005", "X509PopCertificate"
        ],
        ## Both file path and directory path are accepted.
        "IgnoreFiles": [
            "Library/OpensslLib/openssl",
            "Library/OpensslLib/OpensslGen",
            # The unit testing folder is not to be checked
            "Test/UnitTest",
            # This has OpenSSL interfaces that aren't UEFI spec compliant
            "Library/BaseCryptLib/SysCall",
            # This has OpenSSL interfaces that aren't UEFI spec compliant
            "Library/OpensslLib/OpensslStub",
            # This has OpenSSL interfaces that aren't UEFI spec compliant
            "Library/Include/CrtLibSupport.h",
            # This has OpenSSL interfaces that aren't UEFI spec compliant
            "Library/BaseCryptLib/Hash/CryptParallelHash.h",
            "Library/Include/fcntl.h",
            # These directories contain auto-generated OpenSSL content
            "Library/OpensslLib",
            "Library/IntrinsicLib",
            "Library/BaseCryptLib/Pk/CryptPkcs7VerifyBase.c"
        ]
    },
    "CompilerPlugin": {
        "DscPath": "CryptoPkg.dsc"
    },
    ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin
    "HostUnitTestCompilerPlugin": {
        "DscPath": "Test/CryptoPkgHostUnitTest.dsc"
    },
    "CharEncodingCheck": {
        "IgnoreFiles": []
    },
    "DependencyCheck": {
        "AcceptableDependencies": [
            "MdePkg/MdePkg.dec",
            "MdeModulePkg/MdeModulePkg.dec",
            "CryptoPkg/CryptoPkg.dec",
        ],
        # For host based unit tests
        "AcceptableDependencies-HOST_APPLICATION":[],
        # For UEFI shell based apps
        "AcceptableDependencies-UEFI_APPLICATION":[],
        "IgnoreInf": []
    },
    "DscCompleteCheck": {
        "DscPath": "CryptoPkg.dsc",
        "IgnoreInf": []
    },
    "GuidCheck": {
        "IgnoreGuidName": [],
        "IgnoreGuidValue": [],
        "IgnoreFoldersAndFiles": []
    },
    "LibraryClassCheck": {
        "IgnoreHeaderFile": []
    },

    ## options defined ci/Plugin/SpellCheck
    "SpellCheck": {
        "skip": True,
        "IgnoreFiles": [],           # use gitignore syntax to ignore errors in matching files
        "ExtendWords": [],           # words to extend to the dictionary for this package
        "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
        "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
    },

    # options defined in .pytool/Plugin/UncrustifyCheck
    "UncrustifyCheck": {
        "IgnoreFiles": [
            "Library/OpensslLib/OpensslGen/include/crypto/bn_conf.h",
            "Library/OpensslLib/OpensslGen/include/crypto/dso_conf.h",
            "Library/OpensslLib/OpensslGen/include/openssl/asn1.h",
            "Library/OpensslLib/OpensslGen/include/openssl/asn1t.h",
            "Library/OpensslLib/OpensslGen/include/openssl/bio.h",
            "Library/OpensslLib/OpensslGen/include/openssl/cmp.h",
            "Library/OpensslLib/OpensslGen/include/openssl/cms.h",
            "Library/OpensslLib/OpensslGen/include/openssl/conf.h",
            "Library/OpensslLib/OpensslGen/include/openssl/configuration-ec.h",
            "Library/OpensslLib/OpensslGen/include/openssl/configuration-noec.h",
            "Library/OpensslLib/OpensslGen/include/openssl/configuration.h",
            "Library/OpensslLib/OpensslGen/include/openssl/crmf.h",
            "Library/OpensslLib/OpensslGen/include/openssl/crypto.h",
            "Library/OpensslLib/OpensslGen/include/openssl/ct.h",
            "Library/OpensslLib/OpensslGen/include/openssl/err.h",
            "Library/OpensslLib/OpensslGen/include/openssl/ess.h",
            "Library/OpensslLib/OpensslGen/include/openssl/fipskey.h",
            "Library/OpensslLib/OpensslGen/include/openssl/lhash.h",
            "Library/OpensslLib/OpensslGen/include/openssl/ocsp.h",
            "Library/OpensslLib/OpensslGen/include/openssl/opensslv.h",
            "Library/OpensslLib/OpensslGen/include/openssl/pkcs12.h",
            "Library/OpensslLib/OpensslGen/include/openssl/pkcs7.h",
            "Library/OpensslLib/OpensslGen/include/openssl/safestack.h",
            "Library/OpensslLib/OpensslGen/include/openssl/srp.h",
            "Library/OpensslLib/OpensslGen/include/openssl/ssl.h",
            "Library/OpensslLib/OpensslGen/include/openssl/ui.h",
            "Library/OpensslLib/OpensslGen/include/openssl/x509.h",
            "Library/OpensslLib/OpensslGen/include/openssl/x509v3.h",
            "Library/OpensslLib/OpensslGen/include/openssl/x509_vfy.h",
            "Library/OpensslLib/OpensslGen/providers/common/der/der_digests_gen.c",
            "Library/OpensslLib/OpensslGen/providers/common/der/der_ecx_gen.c",
            "Library/OpensslLib/OpensslGen/providers/common/der/der_ec_gen.c",
            "Library/OpensslLib/OpensslGen/providers/common/der/der_rsa_gen.c",
            "Library/OpensslLib/OpensslGen/providers/common/der/der_wrap_gen.c",
            "Library/OpensslLib/OpensslGen/providers/common/include/prov/der_digests.h",
            "Library/OpensslLib/OpensslGen/providers/common/include/prov/der_ec.h",
            "Library/OpensslLib/OpensslGen/providers/common/include/prov/der_ecx.h",
            "Library/OpensslLib/OpensslGen/providers/common/include/prov/der_rsa.h",
            "Library/OpensslLib/OpensslGen/providers/common/include/prov/der_wrap.h",
            "Library/OpensslLib/OpensslStub/uefiprov.c"
        ]
    }
}
