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

Namespaces

 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_OpenSSL
 
class  BCryptHashImpl
 
class  BCryptSymmetricCipher
 
class  CommonCryptoCipher
 
class  CryptoBuf
 
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  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
 
using HashResult = Outcome< ByteBuffer, bool >
 

Enumerations

enum  CipherMode { CipherMode::Encrypt, CipherMode::Decrypt }
 

Functions

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< 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 &iv, const CryptoBuffer &tag=CryptoBuffer(0))
 
AWS_CORE_API std::shared_ptr< SymmetricCipherCreateAES_GCMImplementation (CryptoBuffer &&key, CryptoBuffer &&iv, CryptoBuffer &&tag=CryptoBuffer(0))
 
AWS_CORE_API std::shared_ptr< SecureRandomBytesCreateSecureRandomBytesImplementation ()
 
AWS_CORE_API void SetMD5Factory (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 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

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

Definition at line 27 of file CryptoBuf.h.

Definition at line 30 of file HashResult.h.

Enumeration Type Documentation

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

Enumerator
Encrypt 
Decrypt 

Definition at line 34 of file CryptoBuf.h.

Function Documentation

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

You need to call this upon program shutdown.

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

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

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

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 ]

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

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

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 16 byte secure random IV.

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( const CryptoBuffer key,
const CryptoBuffer iv,
const CryptoBuffer tag = 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. If you are using this cipher to decrypt an encrypted payload, you must set the tag here.

AWS_CORE_API std::shared_ptr<SymmetricCipher> Aws::Utils::Crypto::CreateAES_GCMImplementation ( CryptoBuffer &&  key,
CryptoBuffer &&  iv,
CryptoBuffer &&  tag = 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. If you are using this cipher to decrypt an encrypted payload, you must set the tag here.

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

Create an MD5 Hash provider

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

Create SecureRandomBytes instance

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

Create a Sha256 HMACHash provider

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

Create a Sha256 Hash provider

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.

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

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

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

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.

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

Set the global factory for MD5 Hash providers

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

Set the global factory for secure random bytes

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

Set the global factory for Sha256 Hash providers

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

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

Definition at line 28 of file CryptoBuf.h.

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

Definition at line 29 of file Cipher.h.

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

Definition at line 29 of file CryptoBuf.h.

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

Definition at line 42 of file CryptoImpl.h.

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

Definition at line 28 of file Cipher.h.