# Class SSL.Cipher.CipherSpec

Description

  Cipher specification.

Variable bulk_cipher_algorithm

  ``program` SSL.Cipher.CipherSpec.bulk_cipher_algorithm`

Description

  The algorithm to use for the bulk of the transfered data.

Variable explicit_iv_size

  ``int` SSL.Cipher.CipherSpec.explicit_iv_size`

Description

  The number of bytes of explicit data needed for initialization vectors. This is used by AEAD ciphers, where there's a secret part of the iv "salt" of length iv_size, and an explicit part that is sent in the clear.

  This is usually `bulk_cipher_algorithm->iv_size() - iv_size`, but may be set to zero to just have the sequence number expanded to the same size as an implicit iv. This is used by the suites with Crypto.ChaCha20.POLY1305.

Variable hash

  ``Crypto.Hash` SSL.Cipher.CipherSpec.hash`

Description

  The hash algorithm for signing the handshake.

  Usually the same hash as is the base for the prf.

Note

  Only used in TLS 1.2 and later.

Variable hash_size

  ``int` SSL.Cipher.CipherSpec.hash_size`

Description

  The number of bytes in the MAC hashes.

Variable is_exportable

  ``int` SSL.Cipher.CipherSpec.is_exportable`

Description

  Indication whether the combination uses strong or weak (aka exportable) crypto.

Variable iv_size

  ``int` SSL.Cipher.CipherSpec.iv_size`

Description

  The number of bytes of random data needed for initialization vectors.

Variable ke_factory

  ``program` SSL.Cipher.CipherSpec.ke_factory`

Description

  Key exchange factory.

Variable key_bits

  ``int` SSL.Cipher.CipherSpec.key_bits`

Description

  The effective number of bits in key_material.

  This is typically `key_material * 8`, but for eg DES this is `key_material * 7`.

Variable key_material

  ``int` SSL.Cipher.CipherSpec.key_material`

Description

  The number of bytes of key material used on initialization.

Variable mac_algorithm

  ``program` SSL.Cipher.CipherSpec.mac_algorithm`

Description

  The Message Authentication Code to use for the packets.

Variable prf

  ``function`(`string(8bit)`, `string(8bit)`, `string(8bit)`, `int`:`string(8bit)`) SSL.Cipher.CipherSpec.prf`

Description

  The Pseudo Random Function to use.

See also

  prf_ssl_3_0(), prf_tls_1_0(), prf_tls_1_2()

Variable signature_alg

  ``SignatureAlgorithm` SSL.Cipher.CipherSpec.signature_alg`

Description

  The signature algorithm used for key exchange signatures.

Variable signature_hash

  ``HashAlgorithm` SSL.Cipher.CipherSpec.signature_hash`

Description

  The hash algorithm used for key exchange signatures.