AWS SDK for C++

AWS SDK for C++ Version 1.11.804

Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Aws::Utils::Crypto Namespace Reference

Namespaces

 
 

Classes

 
class  CRC32
 
class  CRC32C
 
class  CRC64
 
class  CRCChecksum
 
class  CRTHash
 
 
 
 
class  CryptoBuf
 
 
class  Hash
 
class  HashFactory
 
class  HMAC
 
class  HMACFactory
 
class  MD5
 
 
class  SecureRandom
 
 
 
class  Sha1
 
class  Sha256
 
class  Sha256HMAC
 
class  Sha512
 
 
 
 
 
 

Typedefs

using CRC32Impl = CRCChecksum< uint32_t, Aws::Crt::Checksum::ComputeCRC32, ConvertToBuffer< uint32_t > >
 
using CRC32CImpl = CRCChecksum< uint32_t, Aws::Crt::Checksum::ComputeCRC32C, ConvertToBuffer< uint32_t > >
 
using CRC64Impl = CRCChecksum< uint64_t, Aws::Crt::Checksum::ComputeCRC64NVME, ConvertToBuffer< uint64_t > >
 
typedef std::mbstate_t FPOS_TYPE
 
 
using HashResult = Outcome< ByteBuffer, bool >
 

Enumerations

enum class  ContentCryptoScheme {
  CBC , CTR , GCM , GCM_COMMIT ,
  NONE
}
 
enum class  CipherMode { Encrypt , Decrypt }
 
 
enum class  KeyWrapAlgorithm {
  KMS , KMS_CONTEXT , AES_KEY_WRAP , AES_GCM ,
  NONE
}
 

Functions

AWS_CORE_API CryptoBuffer IncrementCTRCounter (const CryptoBuffer &counter, uint32_t numberOfBlocks)
 
bool IsGCM (ContentCryptoScheme scheme)
 
template<typename HashT >
 
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< HashCreateCRC32Implementation ()
 
AWS_CORE_API std::shared_ptr< HashCreateCRC32CImplementation ()
 
AWS_CORE_API std::shared_ptr< HashCreateCRC64Implementation ()
 
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< HashCreateSha512Implementation ()
 
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_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 SetCRC32Factory (const std::shared_ptr< HashFactory > &factory)
 
AWS_CORE_API void SetCRC64Factory (const std::shared_ptr< HashFactory > &factory)
 
AWS_CORE_API void SetCRC32CFactory (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 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

◆ CRC32CImpl

using Aws::Utils::Crypto::CRC32CImpl = typedef CRCChecksum<uint32_t, Aws::Crt::Checksum::ComputeCRC32C, ConvertToBuffer<uint32_t> >

Definition at line 112 of file CRC32.h.

◆ CRC32Impl

using Aws::Utils::Crypto::CRC32Impl = typedef CRCChecksum<uint32_t, Aws::Crt::Checksum::ComputeCRC32, ConvertToBuffer<uint32_t> >

Definition at line 108 of file CRC32.h.

◆ CRC64Impl

using Aws::Utils::Crypto::CRC64Impl = typedef CRCChecksum<uint64_t, Aws::Crt::Checksum::ComputeCRC64NVME, ConvertToBuffer<uint64_t> >

Definition at line 31 of file CRC64.h.

◆ 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

strong

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 
GCM_COMMIT 
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.

◆ ConvertToBuffer()

template<typename HashT >
ByteBuffer Aws::Utils::Crypto::ConvertToBuffer ( HashT  value)

Definition at line 15 of file CRC.h.

◆ 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.

◆ CreateCRC32CImplementation()

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

Create a CRC32C Hash provider

◆ CreateCRC32Implementation()

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

Create a CRC32 Hash provider

◆ CreateCRC64Implementation()

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

Create a CRC32 Hash provider

◆ 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

◆ CreateSha512Implementation()

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

Create a Sha512 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.

◆ IsGCM()

bool Aws::Utils::Crypto::IsGCM ( ContentCryptoScheme  scheme)
inline

Definition at line 23 of file ContentCryptoScheme.h.

◆ 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

◆ SetCRC32CFactory()

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

Set the global factory for CRC32C Hash providers

◆ SetCRC32Factory()

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

Set the global factory for CRC32 Hash providers

◆ SetCRC64Factory()

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

Set the global factory for CRC32 Hash 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.

◆ SYMMETRIC_KEY_LENGTH

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

Definition at line 18 of file Cipher.h.