AWS SDK for C++  1.9.70
AWS SDK for C++
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Aws::Utils::Crypto Namespace Reference

Namespaces

 ContentCryptoSchemeMapper
 
 KeyWrapAlgorithmMapper
 
 OpenSSL
 

Classes

class  AES_CBC_Cipher_BCrypt
 
class  AES_CBC_Cipher_CommonCrypto
 
class  AES_CBC_Cipher_OpenSSL
 
class  AES_CTR_Cipher_BCrypt
 
class  AES_CTR_Cipher_CommonCrypto
 
class  AES_CTR_Cipher_OpenSSL
 
class  AES_GCM_Cipher_BCrypt
 
class  AES_GCM_Cipher_CommonCrypto
 
class  AES_GCM_Cipher_OpenSSL
 
class  AES_KeyWrap_Cipher_BCrypt
 
class  AES_KeyWrap_Cipher_CommonCrypto
 
class  AES_KeyWrap_Cipher_OpenSSL
 
class  BCryptHashImpl
 
class  BCryptSymmetricCipher
 
class  CommonCryptoCipher
 
class  ContentCryptoMaterial
 
class  CryptoBuf
 
class  EncryptionMaterials
 
class  Hash
 
class  HashFactory
 
class  HMAC
 
class  HMACFactory
 
class  MD5
 
class  MD5BcryptImpl
 
class  MD5CommonCryptoImpl
 
class  MD5OpenSSLImpl
 
class  OpenSSLCipher
 
class  SecureRandom
 
class  SecureRandomBytes
 
class  SecureRandomBytes_BCrypt
 
class  SecureRandomBytes_CommonCrypto
 
class  SecureRandomBytes_OpenSSLImpl
 
class  SecureRandomFactory
 
class  Sha1
 
class  Sha1BcryptImpl
 
class  Sha1CommonCryptoImpl
 
class  Sha1OpenSSLImpl
 
class  Sha256
 
class  Sha256BcryptImpl
 
class  Sha256CommonCryptoImpl
 
class  Sha256HMAC
 
class  Sha256HMACBcryptImpl
 
class  Sha256HMACCommonCryptoImpl
 
class  Sha256HMACOpenSSLImpl
 
class  Sha256OpenSSLImpl
 
class  SymmetricCipher
 
class  SymmetricCipherFactory
 
class  SymmetricCryptoBufSink
 
class  SymmetricCryptoBufSrc
 
class  SymmetricCryptoStream
 

Typedefs

typedef std::mbstate_t FPOS_TYPE
 
typedef Outcome< Aws::NoResult, Aws::Client::AWSError< CryptoErrors > > CryptoOutcome
 
using HashResult = Outcome< ByteBuffer, bool >
 

Enumerations

enum  ContentCryptoScheme { ContentCryptoScheme::CBC, ContentCryptoScheme::CTR, ContentCryptoScheme::GCM, ContentCryptoScheme::NONE }
 
enum  CipherMode { CipherMode::Encrypt, CipherMode::Decrypt }
 
enum  CryptoErrors { CryptoErrors::ENCRYPT_CONTENT_ENCRYPTION_KEY_FAILED, CryptoErrors::DECRYPT_CONTENT_ENCRYPTION_KEY_FAILED, CryptoErrors::GENERATE_CONTENT_ENCRYPTION_KEY_FAILED }
 
enum  KeyWrapAlgorithm {
  KeyWrapAlgorithm::KMS, KeyWrapAlgorithm::KMS_CONTEXT, KeyWrapAlgorithm::AES_KEY_WRAP, KeyWrapAlgorithm::AES_GCM,
  KeyWrapAlgorithm::NONE
}
 

Functions

AWS_CORE_API CryptoBuffer IncrementCTRCounter (const CryptoBuffer &counter, uint32_t numberOfBlocks)
 
AWS_CORE_API void InitCrypto ()
 
AWS_CORE_API void CleanupCrypto ()
 
AWS_CORE_API void SetInitCleanupOpenSSLFlag (bool initCleanupFlag)
 
AWS_CORE_API std::shared_ptr< HashCreateMD5Implementation ()
 
AWS_CORE_API std::shared_ptr< HashCreateSha1Implementation ()
 
AWS_CORE_API std::shared_ptr< HashCreateSha256Implementation ()
 
AWS_CORE_API std::shared_ptr< HMACCreateSha256HMACImplementation ()
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CBCImplementation (const CryptoBuffer &key)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CBCImplementation (const CryptoBuffer &key, const CryptoBuffer &iv)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CBCImplementation (CryptoBuffer &&key, CryptoBuffer &&iv)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CTRImplementation (const CryptoBuffer &key)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CTRImplementation (const CryptoBuffer &key, const CryptoBuffer &iv)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_CTRImplementation (CryptoBuffer &&key, CryptoBuffer &&iv)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_GCMImplementation (const CryptoBuffer &key)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_GCMImplementation (const CryptoBuffer &key, const CryptoBuffer *aad)
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_GCMImplementation (const CryptoBuffer &key, const CryptoBuffer &iv, const CryptoBuffer &tag=CryptoBuffer(0), const CryptoBuffer &aad=CryptoBuffer(0))
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_GCMImplementation (CryptoBuffer &&key, CryptoBuffer &&iv, CryptoBuffer &&tag=CryptoBuffer(0), CryptoBuffer &&aad=CryptoBuffer(0))
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_KeyWrapImplementation (const CryptoBuffer &key)
 
AWS_CORE_API std::shared_ptr< SecureRandomBytesCreateSecureRandomBytesImplementation ()
 
AWS_CORE_API void SetMD5Factory (const std::shared_ptr< HashFactory > &factory)
 
AWS_CORE_API void SetSha1Factory (const std::shared_ptr< HashFactory > &factory)
 
AWS_CORE_API void SetSha256Factory (const std::shared_ptr< HashFactory > &factory)
 
AWS_CORE_API void SetSha256HMACFactory (const std::shared_ptr< HMACFactory > &factory)
 
AWS_CORE_API void SetAES_CBCFactory (const std::shared_ptr< SymmetricCipherFactory > &factory)
 
AWS_CORE_API void SetAES_CTRFactory (const std::shared_ptr< SymmetricCipherFactory > &factory)
 
AWS_CORE_API void SetAES_GCMFactory (const std::shared_ptr< SymmetricCipherFactory > &factory)
 
AWS_CORE_API void SetAES_KeyWrapFactory (const std::shared_ptr< SymmetricCipherFactory > &factory)
 
AWS_CORE_API void SetSecureRandomFactory (const std::shared_ptr< SecureRandomFactory > &factory)
 

Variables

static const char * SecureRandom_BCrypt_Tag = "SecureRandom_BCrypt"
 
static const size_t SYMMETRIC_KEY_LENGTH = 32
 
static const size_t MIN_IV_LENGTH = 12
 
static const size_t DEFAULT_BUF_SIZE = 1024
 
static const size_t PUT_BACK_SIZE = 1
 

Typedef Documentation

◆ CryptoOutcome

Definition at line 27 of file EncryptionMaterials.h.

◆ FPOS_TYPE

typedef std::mbstate_t Aws::Utils::Crypto::FPOS_TYPE

Definition at line 17 of file CryptoBuf.h.

◆ HashResult

Definition at line 20 of file HashResult.h.

Enumeration Type Documentation

◆ CipherMode

Which mode a cipher is being used for. Encryption or Decryption

Enumerator
Encrypt 
Decrypt 

Definition at line 24 of file CryptoBuf.h.

◆ ContentCryptoScheme

Enumerator
CBC 
CTR 
GCM 
NONE 

Definition at line 15 of file ContentCryptoScheme.h.

◆ CryptoErrors

Enumerator
ENCRYPT_CONTENT_ENCRYPTION_KEY_FAILED 
DECRYPT_CONTENT_ENCRYPTION_KEY_FAILED 
GENERATE_CONTENT_ENCRYPTION_KEY_FAILED 

Definition at line 20 of file EncryptionMaterials.h.

◆ KeyWrapAlgorithm

Enumerator
KMS 
KMS_CONTEXT 
AES_KEY_WRAP 
AES_GCM 
NONE 

Definition at line 15 of file KeyWrapAlgorithm.h.

Function Documentation

◆ CleanupCrypto()

AWS_CORE_API void Aws::Utils::Crypto::CleanupCrypto ( )

You need to call this upon program shutdown.

◆ CreateAES_CBCImplementation() [1/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CBCImplementation ( const CryptoBuffer key)

Create AES in CBC mode off of a 256 bit key. Auto Generates a 16 byte secure random IV

◆ CreateAES_CBCImplementation() [2/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CBCImplementation ( const CryptoBuffer key,
const CryptoBuffer iv 
)

Create AES in CBC mode off of a 256 bit key and 16 byte IV

◆ CreateAES_CBCImplementation() [3/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CBCImplementation ( CryptoBuffer &&  key,
CryptoBuffer &&  iv 
)

Create AES in CBC mode off of a 256 bit key and 16 byte IV

◆ CreateAES_CTRImplementation() [1/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CTRImplementation ( const CryptoBuffer key)

Create AES in CTR mode off of a 256 bit key. Auto Generates a 16 byte IV in the format [nonce 4bytes ] [securely random iv 8 bytes] [ CTR init 4bytes ]

◆ CreateAES_CTRImplementation() [2/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CTRImplementation ( const CryptoBuffer key,
const CryptoBuffer iv 
)

Create AES in CTR mode off of a 256 bit key and 16 byte IV

◆ CreateAES_CTRImplementation() [3/3]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_CTRImplementation ( CryptoBuffer &&  key,
CryptoBuffer &&  iv 
)

Create AES in CTR mode off of a 256 bit key and 16 byte IV

◆ CreateAES_GCMImplementation() [1/4]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( const CryptoBuffer key)

Create AES in GCM mode off of a 256 bit key. Auto Generates a 12 byte secure random IV.

◆ CreateAES_GCMImplementation() [2/4]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( const CryptoBuffer key,
const CryptoBuffer iv,
const CryptoBuffer tag = CryptoBuffer(0),
const CryptoBuffer aad = CryptoBuffer(0) 
)

Create AES in GCM mode off of a 256 bit key, a 12 byte secure random IV, and an optional 16 byte Tag. If you are using this cipher to decrypt an encrypted payload, you must set the tag here.

◆ CreateAES_GCMImplementation() [3/4]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( const CryptoBuffer key,
const CryptoBuffer aad 
)

Create AES in GCM mode off of a 256 bit key. Auto Generates a 12 byte secure random IV and aad.

◆ CreateAES_GCMImplementation() [4/4]

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( CryptoBuffer &&  key,
CryptoBuffer &&  iv,
CryptoBuffer &&  tag = CryptoBuffer(0),
CryptoBuffer &&  aad = CryptoBuffer(0) 
)

Create AES in GCM mode off of a 256 bit key, a 16 byte secure random IV, and an optional 16 byte Tag, as well an optional add. If you are using this cipher to decrypt an encrypted payload, you must set the tag here.

◆ CreateAES_KeyWrapImplementation()

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_KeyWrapImplementation ( const CryptoBuffer key)

Create AES in Key Wrap mode off of a 256 bit key.

◆ CreateMD5Implementation()

AWS_CORE_API std::shared_ptr<Hash> Aws::Utils::Crypto::CreateMD5Implementation ( )

Create an MD5 Hash provider

◆ CreateSecureRandomBytesImplementation()

AWS_CORE_API std::shared_ptr<SecureRandomBytes> Aws::Utils::Crypto::CreateSecureRandomBytesImplementation ( )

Create SecureRandomBytes instance

◆ CreateSha1Implementation()

AWS_CORE_API std::shared_ptr<Hash> Aws::Utils::Crypto::CreateSha1Implementation ( )

Create a Sha1 Hash provider

◆ CreateSha256HMACImplementation()

AWS_CORE_API std::shared_ptr<HMAC> Aws::Utils::Crypto::CreateSha256HMACImplementation ( )

Create a Sha256 HMACHash provider

◆ CreateSha256Implementation()

AWS_CORE_API std::shared_ptr<Hash> Aws::Utils::Crypto::CreateSha256Implementation ( )

Create a Sha256 Hash provider

◆ IncrementCTRCounter()

AWS_CORE_API CryptoBuffer Aws::Utils::Crypto::IncrementCTRCounter ( const CryptoBuffer counter,
uint32_t  numberOfBlocks 
)

◆ InitCrypto()

AWS_CORE_API void Aws::Utils::Crypto::InitCrypto ( )

You need to call this before using any of the cryptography libs. Should be called after setting the factories.

◆ SetAES_CBCFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetAES_CBCFactory ( const std::shared_ptr< SymmetricCipherFactory > &  factory)

Set the global factory for AES in CBC mode providers

◆ SetAES_CTRFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetAES_CTRFactory ( const std::shared_ptr< SymmetricCipherFactory > &  factory)

Set the global factory for AES in CTR mode providers

◆ SetAES_GCMFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetAES_GCMFactory ( const std::shared_ptr< SymmetricCipherFactory > &  factory)

Set the global factory for AES in GCM mode providers

◆ SetAES_KeyWrapFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetAES_KeyWrapFactory ( const std::shared_ptr< SymmetricCipherFactory > &  factory)

Set the global factory for AES in Key Wrap mode providers

◆ SetInitCleanupOpenSSLFlag()

AWS_CORE_API void Aws::Utils::Crypto::SetInitCleanupOpenSSLFlag ( bool  initCleanupFlag)

OpenSSL infects everything with its global state. If it is being used then we automatically initialize and clean it up. If this is a problem for you, set this to false. Be aware that if you don't use our init and cleanup and you are using crypto functionality, you are responsible for installing thread locking, and loading strings and error messages.

◆ SetMD5Factory()

AWS_CORE_API void Aws::Utils::Crypto::SetMD5Factory ( const std::shared_ptr< HashFactory > &  factory)

Set the global factory for MD5 Hash providers

◆ SetSecureRandomFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetSecureRandomFactory ( const std::shared_ptr< SecureRandomFactory > &  factory)

Set the global factory for secure random bytes

◆ SetSha1Factory()

AWS_CORE_API void Aws::Utils::Crypto::SetSha1Factory ( const std::shared_ptr< HashFactory > &  factory)

Set the global factory for Sha1 Hash providers

◆ SetSha256Factory()

AWS_CORE_API void Aws::Utils::Crypto::SetSha256Factory ( const std::shared_ptr< HashFactory > &  factory)

Set the global factory for Sha256 Hash providers

◆ SetSha256HMACFactory()

AWS_CORE_API void Aws::Utils::Crypto::SetSha256HMACFactory ( const std::shared_ptr< HMACFactory > &  factory)

Set the global factory for Sha256 HMAC Hash providers

Variable Documentation

◆ DEFAULT_BUF_SIZE

const size_t Aws::Utils::Crypto::DEFAULT_BUF_SIZE = 1024
static

Definition at line 18 of file CryptoBuf.h.

◆ MIN_IV_LENGTH

const size_t Aws::Utils::Crypto::MIN_IV_LENGTH = 12
static

Definition at line 19 of file Cipher.h.

◆ PUT_BACK_SIZE

const size_t Aws::Utils::Crypto::PUT_BACK_SIZE = 1
static

Definition at line 19 of file CryptoBuf.h.

◆ SecureRandom_BCrypt_Tag

const char* Aws::Utils::Crypto::SecureRandom_BCrypt_Tag = "SecureRandom_BCrypt"
static

Definition at line 32 of file CryptoImpl.h.

◆ SYMMETRIC_KEY_LENGTH

const size_t Aws::Utils::Crypto::SYMMETRIC_KEY_LENGTH = 32
static

Definition at line 18 of file Cipher.h.