cyclonedx.model.crypto
======================

.. py:module:: cyclonedx.model.crypto

.. autoapi-nested-parse::

   This set of classes represents cryptoPropertiesType Complex Type in the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType



Classes
-------

.. autoapisummary::

   cyclonedx.model.crypto.CryptoAssetType
   cyclonedx.model.crypto.CryptoPrimitive
   cyclonedx.model.crypto.CryptoExecutionEnvironment
   cyclonedx.model.crypto.CryptoImplementationPlatform
   cyclonedx.model.crypto.CryptoCertificationLevel
   cyclonedx.model.crypto.CryptoMode
   cyclonedx.model.crypto.CryptoPadding
   cyclonedx.model.crypto.CryptoFunction
   cyclonedx.model.crypto.AlgorithmProperties
   cyclonedx.model.crypto.CertificateProperties
   cyclonedx.model.crypto.RelatedCryptoMaterialType
   cyclonedx.model.crypto.RelatedCryptoMaterialState
   cyclonedx.model.crypto.RelatedCryptoMaterialSecuredBy
   cyclonedx.model.crypto.RelatedCryptoMaterialProperties
   cyclonedx.model.crypto.ProtocolPropertiesType
   cyclonedx.model.crypto.ProtocolPropertiesCipherSuite
   cyclonedx.model.crypto.Ikev2TransformTypes
   cyclonedx.model.crypto.ProtocolProperties
   cyclonedx.model.crypto.CryptoProperties


Module Contents
---------------

.. py:class:: CryptoAssetType

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.assetType ENUM type within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: ALGORITHM
      :value: 'algorithm'



   .. py:attribute:: CERTIFICATE
      :value: 'certificate'



   .. py:attribute:: PROTOCOL
      :value: 'protocol'



   .. py:attribute:: RELATED_CRYPTO_MATERIAL
      :value: 'related-crypto-material'



.. py:class:: CryptoPrimitive

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.primitive ENUM type within the
   CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: AE
      :value: 'ae'



   .. py:attribute:: BLOCK_CIPHER
      :value: 'block-cipher'



   .. py:attribute:: COMBINER
      :value: 'combiner'



   .. py:attribute:: DRBG
      :value: 'drbg'



   .. py:attribute:: HASH
      :value: 'hash'



   .. py:attribute:: KDF
      :value: 'kdf'



   .. py:attribute:: KEM
      :value: 'kem'



   .. py:attribute:: KEY_AGREE
      :value: 'key-agree'



   .. py:attribute:: KEY_WRAP
      :value: 'key-wrap'



   .. py:attribute:: MAC
      :value: 'mac'



   .. py:attribute:: PKE
      :value: 'pke'



   .. py:attribute:: SIGNATURE
      :value: 'signature'



   .. py:attribute:: STREAM_CIPHER
      :value: 'stream-cipher'



   .. py:attribute:: XOF
      :value: 'xof'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoExecutionEnvironment

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.executionEnvironment ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: HARDWARE
      :value: 'hardware'



   .. py:attribute:: SOFTWARE_ENCRYPTED_RAM
      :value: 'software-encrypted-ram'



   .. py:attribute:: SOFTWARE_PLAIN_RAM
      :value: 'software-plain-ram'



   .. py:attribute:: SOFTWARE_TEE
      :value: 'software-tee'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoImplementationPlatform

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.implementationPlatform ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: ARMV7_A
      :value: 'armv7-a'



   .. py:attribute:: ARMV7_M
      :value: 'armv7-m'



   .. py:attribute:: ARMV8_A
      :value: 'armv8-a'



   .. py:attribute:: ARMV8_M
      :value: 'armv8-m'



   .. py:attribute:: ARMV9_A
      :value: 'armv9-a'



   .. py:attribute:: ARMV9_M
      :value: 'armv9-m'



   .. py:attribute:: PPC64
      :value: 'ppc64'



   .. py:attribute:: PPC64LE
      :value: 'ppc64le'



   .. py:attribute:: S390X
      :value: 's390x'



   .. py:attribute:: X86_32
      :value: 'x86_32'



   .. py:attribute:: X86_64
      :value: 'x86_64'



   .. py:attribute:: GENERIC
      :value: 'generic'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoCertificationLevel

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.certificationLevel ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: NONE
      :value: 'none'



   .. py:attribute:: FIPS140_1_L1
      :value: 'fips140-1-l1'



   .. py:attribute:: FIPS140_1_L2
      :value: 'fips140-1-l2'



   .. py:attribute:: FIPS140_1_L3
      :value: 'fips140-1-l3'



   .. py:attribute:: FIPS140_1_L4
      :value: 'fips140-1-l4'



   .. py:attribute:: FIPS140_2_L1
      :value: 'fips140-2-l1'



   .. py:attribute:: FIPS140_2_L2
      :value: 'fips140-2-l2'



   .. py:attribute:: FIPS140_2_L3
      :value: 'fips140-2-l3'



   .. py:attribute:: FIPS140_2_L4
      :value: 'fips140-2-l4'



   .. py:attribute:: FIPS140_3_L1
      :value: 'fips140-3-l1'



   .. py:attribute:: FIPS140_3_L2
      :value: 'fips140-3-l2'



   .. py:attribute:: FIPS140_3_L3
      :value: 'fips140-3-l3'



   .. py:attribute:: FIPS140_3_L4
      :value: 'fips140-3-l4'



   .. py:attribute:: CC_EAL1
      :value: 'cc-eal1'



   .. py:attribute:: CC_EAL1_PLUS
      :value: 'cc-eal1+'



   .. py:attribute:: CC_EAL2
      :value: 'cc-eal2'



   .. py:attribute:: CC_EAL2_PLUS
      :value: 'cc-eal2+'



   .. py:attribute:: CC_EAL3
      :value: 'cc-eal3'



   .. py:attribute:: CC_EAL3_PLUS
      :value: 'cc-eal3+'



   .. py:attribute:: CC_EAL4
      :value: 'cc-eal4'



   .. py:attribute:: CC_EAL4_PLUS
      :value: 'cc-eal4+'



   .. py:attribute:: CC_EAL5
      :value: 'cc-eal5'



   .. py:attribute:: CC_EAL5_PLUS
      :value: 'cc-eal5+'



   .. py:attribute:: CC_EAL6
      :value: 'cc-eal6'



   .. py:attribute:: CC_EAL6_PLUS
      :value: 'cc-eal6+'



   .. py:attribute:: CC_EAL7
      :value: 'cc-eal7'



   .. py:attribute:: CC_EAL7_PLUS
      :value: 'cc-eal7+'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoMode

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.mode ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: CBC
      :value: 'cbc'



   .. py:attribute:: CCM
      :value: 'ccm'



   .. py:attribute:: CFB
      :value: 'cfb'



   .. py:attribute:: CTR
      :value: 'ctr'



   .. py:attribute:: ECB
      :value: 'ecb'



   .. py:attribute:: GCM
      :value: 'gcm'



   .. py:attribute:: OFB
      :value: 'ofb'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoPadding

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.padding ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: PKCS5
      :value: 'pkcs5'



   .. py:attribute:: PKCS7
      :value: 'pkcs7'



   .. py:attribute:: PKCS1V15
      :value: 'pkcs1v15'



   .. py:attribute:: OAEP
      :value: 'oaep'



   .. py:attribute:: RAW
      :value: 'raw'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: CryptoFunction

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.algorithmProperties.cryptoFunctions.cryptoFunction
   ENUM type within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: DECAPSULATE
      :value: 'decapsulate'



   .. py:attribute:: DECRYPT
      :value: 'decrypt'



   .. py:attribute:: DIGEST
      :value: 'digest'



   .. py:attribute:: ENCAPSULATE
      :value: 'encapsulate'



   .. py:attribute:: ENCRYPT
      :value: 'encrypt'



   .. py:attribute:: GENERATE
      :value: 'generate'



   .. py:attribute:: KEYDERIVE
      :value: 'keyderive'



   .. py:attribute:: KEYGEN
      :value: 'keygen'



   .. py:attribute:: SIGN
      :value: 'sign'



   .. py:attribute:: TAG
      :value: 'tag'



   .. py:attribute:: VERIFY
      :value: 'verify'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: AlgorithmProperties(*, primitive: Optional[CryptoPrimitive] = None, parameter_set_identifier: Optional[str] = None, curve: Optional[str] = None, execution_environment: Optional[CryptoExecutionEnvironment] = None, implementation_platform: Optional[CryptoImplementationPlatform] = None, certification_levels: Optional[collections.abc.Iterable[CryptoCertificationLevel]] = None, mode: Optional[CryptoMode] = None, padding: Optional[CryptoPadding] = None, crypto_functions: Optional[collections.abc.Iterable[CryptoFunction]] = None, classical_security_level: Optional[int] = None, nist_quantum_security_level: Optional[int] = None)

   This is our internal representation of the cryptoPropertiesType.algorithmProperties ENUM type within the CycloneDX
   standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: primitive
      :type: Optional[CryptoPrimitive]


      Cryptographic building blocks used in higher-level cryptographic systems and protocols.

      Primitives represent different cryptographic routines: deterministic random bit generators (drbg, e.g. CTR_DRBG
      from NIST SP800-90A-r1), message authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES),
      streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256),
      public-key encryption schemes (pke, e.g. RSA), extended output functions (xof, e.g. SHAKE256),
      key derivation functions (e.g. pbkdf2), key agreement algorithms (e.g. ECDH),
      key encapsulation mechanisms (e.g. ML-KEM), authenticated encryption (ae, e.g. AES-GCM) and the combination of
      multiple algorithms (combiner, e.g. SP800-56Cr2).

      Returns:
          `CryptoPrimitive` or `None`



   .. py:property:: parameter_set_identifier
      :type: Optional[str]


      An identifier for the parameter set of the cryptographic algorithm. Examples: in AES128, '128' identifies the
      key length in bits, in SHA256, '256' identifies the digest length, '128' in SHAKE128 identifies its maximum
      security level in bits, and 'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205).

      Returns:
          `str` or `None`



   .. py:property:: curve
      :type: Optional[str]


      The specific underlying Elliptic Curve (EC) definition employed which is an indicator of the level of security
      strength, performance and complexity. Absent an authoritative source of curve names, CycloneDX recommends use
      of curve names as defined at https://neuromancer.sk/std/, the source from which can be found at
      https://github.com/J08nY/std-curves.

      Returns:
          `str` or `None`



   .. py:property:: execution_environment
      :type: Optional[CryptoExecutionEnvironment]


      The target and execution environment in which the algorithm is implemented in.

      Returns:
           `CryptoExecutionEnvironment` or `None`



   .. py:property:: implementation_platform
      :type: Optional[CryptoImplementationPlatform]


      The target platform for which the algorithm is implemented. The implementation can be 'generic', running on
      any platform or for a specific platform.

      Returns:
           `CryptoImplementationPlatform` or `None`



   .. py:property:: certification_levels
      :type: SortedSet[CryptoCertificationLevel]


      The certification that the implementation of the cryptographic algorithm has received, if any. Certifications
      include revisions and levels of FIPS 140 or Common Criteria of different Extended Assurance Levels (CC-EAL).

      Returns:
          `Iterable[CryptoCertificationLevel]`



   .. py:property:: mode
      :type: Optional[CryptoMode]


      The mode of operation in which the cryptographic algorithm (block cipher) is used.

      Returns:
           `CryptoMode` or `None`



   .. py:property:: padding
      :type: Optional[CryptoPadding]


      The padding scheme that is used for the cryptographic algorithm.

      Returns:
           `CryptoPadding` or `None`



   .. py:property:: crypto_functions
      :type: SortedSet[CryptoFunction]


      The cryptographic functions implemented by the cryptographic algorithm.

      Returns:
          `Iterable[CryptoFunction]`



   .. py:property:: classical_security_level
      :type: Optional[int]


      The classical security level that a cryptographic algorithm provides (in bits).

      Returns:
          `int` or `None`



   .. py:property:: nist_quantum_security_level
      :type: Optional[int]


      The NIST security strength category as defined in
      https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/
      evaluation-criteria/security-(evaluation-criteria). A value of 0 indicates that none of the categories are met.

      Returns:
          `int` or `None`



.. py:class:: CertificateProperties(*, subject_name: Optional[str] = None, issuer_name: Optional[str] = None, not_valid_before: Optional[datetime.datetime] = None, not_valid_after: Optional[datetime.datetime] = None, signature_algorithm_ref: Optional[cyclonedx.model.bom_ref.BomRef] = None, subject_public_key_ref: Optional[cyclonedx.model.bom_ref.BomRef] = None, certificate_format: Optional[str] = None, certificate_extension: Optional[str] = None)

   This is our internal representation of the `cryptoPropertiesType.certificateProperties` complex type within
   CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: subject_name
      :type: Optional[str]


      The subject name for the certificate.

      Returns:
          `str` or `None`



   .. py:property:: issuer_name
      :type: Optional[str]


      The issuer name for the certificate.

      Returns:
          `str` or `None`



   .. py:property:: not_valid_before
      :type: Optional[datetime.datetime]


      The date and time according to ISO-8601 standard from which the certificate is valid.

      Returns:
          `datetime` or `None`



   .. py:property:: not_valid_after
      :type: Optional[datetime.datetime]


      The date and time according to ISO-8601 standard from which the certificate is not valid anymore.

      Returns:
          `datetime` or `None`



   .. py:property:: signature_algorithm_ref
      :type: Optional[cyclonedx.model.bom_ref.BomRef]


      The bom-ref to signature algorithm used by the certificate.

      Returns:
          `BomRef` or `None`



   .. py:property:: subject_public_key_ref
      :type: Optional[cyclonedx.model.bom_ref.BomRef]


      The bom-ref to the public key of the subject.

      Returns:
          `BomRef` or `None`



   .. py:property:: certificate_format
      :type: Optional[str]


      The format of the certificate. Examples include X.509, PEM, DER, and CVC.

      Returns:
          `str` or `None`



   .. py:property:: certificate_extension
      :type: Optional[str]


      The file extension of the certificate. Examples include crt, pem, cer, der, and p12.

      Returns:
          `str` or `None`



.. py:class:: RelatedCryptoMaterialType

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.relatedCryptoMaterialProperties.type ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: ADDITIONAL_DATA
      :value: 'additional-data'



   .. py:attribute:: CIPHERTEXT
      :value: 'ciphertext'



   .. py:attribute:: CREDENTIAL
      :value: 'credential'



   .. py:attribute:: DIGEST
      :value: 'digest'



   .. py:attribute:: INITIALIZATION_VECTOR
      :value: 'initialization-vector'



   .. py:attribute:: KEY
      :value: 'key'



   .. py:attribute:: NONCE
      :value: 'nonce'



   .. py:attribute:: PASSWORD
      :value: 'password'



   .. py:attribute:: PRIVATE_KEY
      :value: 'private-key'



   .. py:attribute:: PUBLIC_KEY
      :value: 'public-key'



   .. py:attribute:: SALT
      :value: 'salt'



   .. py:attribute:: SECRET_KEY
      :value: 'secret-key'



   .. py:attribute:: SEED
      :value: 'seed'



   .. py:attribute:: SHARED_SECRET
      :value: 'shared-secret'



   .. py:attribute:: SIGNATURE
      :value: 'signature'



   .. py:attribute:: TAG
      :value: 'tag'



   .. py:attribute:: TOKEN
      :value: 'token'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: RelatedCryptoMaterialState

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.relatedCryptoMaterialProperties.state ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: ACTIVE
      :value: 'active'



   .. py:attribute:: COMPROMISED
      :value: 'compromised'



   .. py:attribute:: DEACTIVATED
      :value: 'deactivated'



   .. py:attribute:: DESTROYED
      :value: 'destroyed'



   .. py:attribute:: PRE_ACTIVATION
      :value: 'pre-activation'



   .. py:attribute:: SUSPENDED
      :value: 'suspended'



.. py:class:: RelatedCryptoMaterialSecuredBy(*, mechanism: Optional[str] = None, algorithm_ref: Optional[cyclonedx.model.bom_ref.BomRef] = None)

   This is our internal representation of the `cryptoPropertiesType.relatedCryptoMaterialProperties.securedBy` complex
   type within CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: mechanism
      :type: Optional[str]


      Specifies the mechanism by which the cryptographic asset is secured by.
      Examples include HSM, TPM, XGX, Software, and None.

      Returns:
          `str` or `None`



   .. py:property:: algorithm_ref
      :type: Optional[cyclonedx.model.bom_ref.BomRef]


      The bom-ref to the algorithm.

      Returns:
          `BomRef` or `None`



.. py:class:: RelatedCryptoMaterialProperties(*, type: Optional[RelatedCryptoMaterialType] = None, id: Optional[str] = None, state: Optional[RelatedCryptoMaterialState] = None, algorithm_ref: Optional[cyclonedx.model.bom_ref.BomRef] = None, creation_date: Optional[datetime.datetime] = None, activation_date: Optional[datetime.datetime] = None, update_date: Optional[datetime.datetime] = None, expiration_date: Optional[datetime.datetime] = None, value: Optional[str] = None, size: Optional[int] = None, format: Optional[str] = None, secured_by: Optional[RelatedCryptoMaterialSecuredBy] = None)

   This is our internal representation of the `cryptoPropertiesType.relatedCryptoMaterialProperties` complex type
   within CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: type
      :type: Optional[RelatedCryptoMaterialType]


      The type for the related cryptographic material.

      Returns



   .. py:property:: id
      :type: Optional[str]


      The optional unique identifier for the related cryptographic material.

      :return:



   .. py:property:: state
      :type: Optional[RelatedCryptoMaterialState]


      The key state as defined by NIST SP 800-57.

      Returns:
           `RelatedCryptoMaterialState` or `None`



   .. py:property:: algorithm_ref
      :type: Optional[cyclonedx.model.bom_ref.BomRef]


      The bom-ref to the algorithm used to generate the related cryptographic material.

      Returns:
          `BomRef` or `None`



   .. py:property:: creation_date
      :type: Optional[datetime.datetime]


      The date and time (timestamp) when the related cryptographic material was created.

      Returns:
          `datetime` or `None`



   .. py:property:: activation_date
      :type: Optional[datetime.datetime]


      The date and time (timestamp) when the related cryptographic material was activated.

      Returns:
          `datetime` or `None`



   .. py:property:: update_date
      :type: Optional[datetime.datetime]


      The date and time (timestamp) when the related cryptographic material was updated.

      Returns:
          `datetime` or `None`



   .. py:property:: expiration_date
      :type: Optional[datetime.datetime]


      The date and time (timestamp) when the related cryptographic material expires.

      Returns:
          `datetime` or `None`



   .. py:property:: value
      :type: Optional[str]


      The associated value of the cryptographic material.

      Returns:
          `str` or `None`



   .. py:property:: size
      :type: Optional[int]


      The size of the cryptographic asset (in bits).

      Returns:
           `int` or `None`



   .. py:property:: format
      :type: Optional[str]


      The format of the related cryptographic material (e.g. P8, PEM, DER).

      Returns:
          `str` or `None`



   .. py:property:: secured_by
      :type: Optional[RelatedCryptoMaterialSecuredBy]


      The mechanism by which the cryptographic asset is secured by.

      Returns:
          `RelatedCryptoMaterialSecuredBy` or `None`



.. py:class:: ProtocolPropertiesType

   Bases: :py:obj:`str`, :py:obj:`enum.Enum`


   This is our internal representation of the cryptoPropertiesType.protocolProperties.type ENUM type
   within the CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6

   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:attribute:: DTLS
      :value: 'dtls'



   .. py:attribute:: EAP_AKA
      :value: 'eap-aka'



   .. py:attribute:: EAP_AKA_PRIME
      :value: 'eap-aka-prime'



   .. py:attribute:: FIVEG_AKA
      :value: '5g-aka'



   .. py:attribute:: IKE
      :value: 'ike'



   .. py:attribute:: IPSEC
      :value: 'ipsec'



   .. py:attribute:: PRINS
      :value: 'prins'



   .. py:attribute:: QUIC
      :value: 'quic'



   .. py:attribute:: SSH
      :value: 'ssh'



   .. py:attribute:: SSTP
      :value: 'sstp'



   .. py:attribute:: TLS
      :value: 'tls'



   .. py:attribute:: WPA
      :value: 'wpa'



   .. py:attribute:: OTHER
      :value: 'other'



   .. py:attribute:: UNKNOWN
      :value: 'unknown'



.. py:class:: ProtocolPropertiesCipherSuite(*, name: Optional[str] = None, algorithms: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None, identifiers: Optional[collections.abc.Iterable[str]] = None)

   This is our internal representation of the `cryptoPropertiesType.protocolProperties.cipherSuites.cipherSuite`
   complex type within CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: name
      :type: Optional[str]


      A common name for the cipher suite. For example: TLS_DHE_RSA_WITH_AES_128_CCM.

      Returns:
          `str` or `None`



   .. py:property:: algorithms
      :type: SortedSet[BomRef]


      A list BomRefs to algorithms related to the cipher suite.

      Returns:
          `Iterable[BomRef]` or `None`



   .. py:property:: identifiers
      :type: SortedSet[str]


      A list of common identifiers for the cipher suite. Examples include 0xC0 and 0x9E.

      Returns:
          `Iterable[str]` or `None`



.. py:class:: Ikev2TransformTypes(*, encr: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None, prf: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None, integ: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None, ke: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None, esn: Optional[bool] = None, auth: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None)

   This is our internal representation of the `cryptoPropertiesType.protocolProperties.ikev2TransformTypes`
   complex type within CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: encr
      :type: SortedSet[BomRef]


      Transform Type 1: encryption algorithms.

      Returns:
          `Iterable[BomRef]` or `None`



   .. py:property:: prf
      :type: SortedSet[BomRef]


      Transform Type 2: pseudorandom functions.

      Returns:
          `Iterable[BomRef]` or `None`



   .. py:property:: integ
      :type: SortedSet[BomRef]


      Transform Type 3: integrity algorithms.

      Returns:
          `Iterable[BomRef]` or `None`



   .. py:property:: ke
      :type: SortedSet[BomRef]


      Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H).

      Returns:
          `Iterable[BomRef]` or `None`



   .. py:property:: esn
      :type: Optional[bool]


      Specifies if an Extended Sequence Number (ESN) is used.

      Returns:
          `bool` or `None`



   .. py:property:: auth
      :type: SortedSet[BomRef]


      IKEv2 Authentication method.

      Returns:
          `Iterable[BomRef]` or `None`



.. py:class:: ProtocolProperties(*, type: Optional[ProtocolPropertiesType] = None, version: Optional[str] = None, cipher_suites: Optional[collections.abc.Iterable[ProtocolPropertiesCipherSuite]] = None, ikev2_transform_types: Optional[Ikev2TransformTypes] = None, crypto_refs: Optional[collections.abc.Iterable[cyclonedx.model.bom_ref.BomRef]] = None)

   This is our internal representation of the `cryptoPropertiesType.protocolProperties` complex type within
   CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: type
      :type: Optional[ProtocolPropertiesType]


      The concrete protocol type.

      Returns:
          `ProtocolPropertiesType` or `None`



   .. py:property:: version
      :type: Optional[str]


      The version of the protocol. Examples include 1.0, 1.2, and 1.99.

      Returns:
          `str` or `None`



   .. py:property:: cipher_suites
      :type: SortedSet[ProtocolPropertiesCipherSuite]


      A list of cipher suites related to the protocol.

      Returns:
          `Iterable[ProtocolPropertiesCipherSuite]`



   .. py:property:: ikev2_transform_types
      :type: Optional[Ikev2TransformTypes]


      The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.

      Returns:
          `Ikev2TransformTypes` or `None`



   .. py:property:: crypto_refs
      :type: SortedSet[BomRef]


      A list of protocol-related cryptographic assets.

      Returns:
          `Iterable[BomRef]`



.. py:class:: CryptoProperties(*, asset_type: Optional[CryptoAssetType] = None, algorithm_properties: Optional[AlgorithmProperties] = None, certificate_properties: Optional[CertificateProperties] = None, related_crypto_material_properties: Optional[RelatedCryptoMaterialProperties] = None, protocol_properties: Optional[ProtocolProperties] = None, oid: Optional[str] = None)

   This is our internal representation of the `cryptoPropertiesType` complex type within CycloneDX standard.

   .. note::
       Introduced in CycloneDX v1.6


   .. note::
       See the CycloneDX Schema for hashType: https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType


   .. py:property:: asset_type
      :type: Optional[CryptoAssetType]


      Cryptographic assets occur in several forms. Algorithms and protocols are most commonly implemented in
      specialized cryptographic libraries. They may however also be 'hardcoded' in software components. Certificates
      and related cryptographic material like keys, tokens, secrets or passwords are other cryptographic assets to be
      modelled.

      Returns:
          `CryptoAssetType`



   .. py:property:: algorithm_properties
      :type: Optional[AlgorithmProperties]


      Additional properties specific to a cryptographic algorithm.

      Returns:
          `AlgorithmProperties` or `None`



   .. py:property:: certificate_properties
      :type: Optional[CertificateProperties]


      Properties for cryptographic assets of asset type 'certificate'.

      Returns:
          `CertificateProperties` or `None`



   .. py:property:: related_crypto_material_properties
      :type: Optional[RelatedCryptoMaterialProperties]


      Properties for cryptographic assets of asset type 'relatedCryptoMaterial'.

      Returns:
          `RelatedCryptoMaterialProperties` or `None`



   .. py:property:: protocol_properties
      :type: Optional[ProtocolProperties]


      Properties specific to cryptographic assets of type: 'protocol'.

      Returns:
          `ProtocolProperties` or `None`



   .. py:property:: oid
      :type: Optional[str]


      The object identifier (OID) of the cryptographic asset.

      Returns:
          `str` or `None`



