AlexaClientSDK  1.26.0
A cross-platform, modular SDK for interacting with the Alexa Voice Service
Public Member Functions | List of all members
alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore Class Reference

#include <MockKeyStore.h>

Inheritance diagram for alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore:
Inheritance graph
[legend]
Collaboration diagram for alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore:
Collaboration graph
[legend]

Public Member Functions

 MOCK_METHOD6 (_encrypt, bool(const std::string &keyAlias, AlgorithmType type, const IV &iv, const DataBlock &plaintext, KeyChecksum &checksum, DataBlock &ciphertext))
 
 MOCK_METHOD8 (_encryptAE, bool(const std::string &keyAlias, AlgorithmType type, const IV &iv, const DataBlock &aad, const DataBlock &plaintext, KeyChecksum &checksum, DataBlock &ciphertext, DataBlock &tag))
 
 MOCK_METHOD6 (_decrypt, bool(const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &ciphertext, DataBlock &plaintext))
 
 MOCK_METHOD8 (_decryptAD, bool(const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &aad, const DataBlock &ciphertext, const Tag &tag, DataBlock &plaintext))
 
 MOCK_METHOD1 (_getDefaultKeyAlias, bool(std::string &))
 
bool encrypt (const std::string &keyAlias, AlgorithmType type, const IV &iv, const KeyChecksum &plaintext, DataBlock &checksum, DataBlock &ciphertext) noexcept override
 Encrypts data block. More...
 
bool encryptAE (const std::string &keyAlias, AlgorithmType type, const IV &iv, const DataBlock &aad, const DataBlock &plaintext, KeyChecksum &checksum, DataBlock &ciphertext, Tag &tag) noexcept override
 Encrypts data block using authenticated encryption algorithm. More...
 
bool decrypt (const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &ciphertext, DataBlock &plaintext) noexcept override
 Decrypts data block. More...
 
bool decryptAD (const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &aad, const DataBlock &ciphertext, const Tag &tag, DataBlock &plaintext) noexcept override
 Decrypts data block using authenticated decryption algorithm. More...
 
bool getDefaultKeyAlias (std::string &keyAlias) noexcept override
 Returns default key alias. More...
 
- Public Member Functions inherited from alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface
virtual ~KeyStoreInterface () noexcept=default
 Default destructor. More...
 

Additional Inherited Members

- Public Types inherited from alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface
typedef std::vector< unsigned char > DataBlock
 Data type for data block (encrypted or unencrypted). More...
 
typedef std::vector< unsigned char > IV
 Data type for initialization vector data. More...
 
typedef std::vector< unsigned char > KeyChecksum
 Data type for key checksum. More...
 
typedef std::vector< unsigned char > Tag
 Data type for tag. Tag (known as Message Authentication Code) is used with AEAD mode of operation like with Galois/Counter mode. More...
 

Detailed Description

Mock class for KeyStoreInterface.

Member Function Documentation

◆ decrypt()

bool alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::decrypt ( const std::string &  keyAlias,
AlgorithmType  type,
const KeyChecksum checksum,
const IV iv,
const DataBlock ciphertext,
DataBlock plaintext 
)
inlineoverridevirtualnoexcept

Decrypts data block.

Method decrypts data block. The method locates the key, checks if key type supports requested algorithm and has matching checksum (if checksum is supported), and performs decryption.

Parameters
[in]keyAliasKey alias.
[in]typeAlgorithm type to use. The method will fail, if type is AEAD algorithm like AES-GCM.
[in]checksumKey checksum if available. If implementation doesn't support checksum, the value of this parameter is ignored. The system checks checksum against checksum of a currently available key before decrypting data to ensure we don't try to use a different key, then the one, that has been used during encryption.
[in]ivInitialization vector. This vector must match have the same value, as the one used when encrypting data.
[in]ciphertextData to decrypt.
[out]plaintextDecrypted data. This method appends data to plaintext.
Returns
Boolean indicating operation success. If operation fails, the contents of plaintext is undefined.

Implements alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface.

◆ decryptAD()

bool alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::decryptAD ( const std::string &  keyAlias,
AlgorithmType  type,
const KeyChecksum checksum,
const IV iv,
const DataBlock aad,
const DataBlock ciphertext,
const Tag tag,
DataBlock plaintext 
)
inlineoverridevirtualnoexcept

Decrypts data block using authenticated decryption algorithm.

Method decrypts data block using additional authenticated data and authentication tag (also known as Message Authentication Code/MAC). This method locates the key, checks if key type supports requested algorithm and has matching checksum (if checksum is supported), and performs decryption.

Parameters
[in]keyAliasKey alias.
[in]typeAlgorithm type to use. The method will fail, if type is not AEAD algorithm like AES-GCM.
[in]checksumKey checksum if available. If implementation doesn't support checksum, the value of this parameter is ignored. The system checks checksum against checksum of a currently available key before decrypting data to ensure we don't try to use a different key, then the one, that has been used during encryption.
[in]ivInitialization vector. This vector must match have the same value, as the one used when encrypting data.
[in]aadAdditional authenticated data. This data must match AAD used when encrypting the content. Decryption will fail if the data doesn't match.
[in]ciphertextData to decrypt.
[in]tagAuthentication tag (also known as MAC). The algorithm uses tag from encryption algorithm to check if the data has been tampered.
[in]plaintextDecrypted data. This method appends data to plaintext.
Returns
Boolean indicating operation success. If operation fails, the contents of plaintext is undefined.
See also
encryptAE()

Implements alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface.

◆ encrypt()

bool alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::encrypt ( const std::string &  keyAlias,
AlgorithmType  type,
const IV iv,
const KeyChecksum plaintext,
DataBlock checksum,
DataBlock ciphertext 
)
inlineoverridevirtualnoexcept

Encrypts data block.

This method encrypts data block. The method locates the key, checks if the key type supports the algorithm, and performs encryption using provided initialization vector. As a result, the method provides key checksum (if supported), and encrypted content.

Parameters
[in]keyAliasKey alias.
[in]typeAlgorithm type to use. The method will fail, if type is AEAD algorithm like AES-GCM.
[in]ivInitialization vector.
[in]plaintextData to encrypt.
[out]checksumKey checksum. The method appends data to checksum if this attribute is supported by implementation.
[out]ciphertextEncrypted data. The method appends data to ciphertext container.
Returns
Boolean indicating operation success. If operation fails, the contents of checksum and ciphertext are undefined.

Implements alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface.

◆ encryptAE()

bool alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::encryptAE ( const std::string &  keyAlias,
AlgorithmType  type,
const IV iv,
const DataBlock aad,
const DataBlock plaintext,
KeyChecksum checksum,
DataBlock ciphertext,
Tag tag 
)
inlineoverridevirtualnoexcept

Encrypts data block using authenticated encryption algorithm.

Method encrypts data block using authenticated encryption. The method locates the key, checks if the key type supports the algorithm, and performs encryption using provided initialization vector and additional authenticated data. As a result, the method provides key checksum (if supported), authentication tag (also known as Message Authentication Code/MAC), and encrypted content.

Parameters
[in]keyAliasKey alias.
[in]typeAlgorithm type to use. The method will fail, if type is not AEAD algorithm like AES-GCM.
[in]ivInitialization vector.
[in]aadAdditional authenticated data. This data works as an input to encryption function to ensure that the resulting ciphertext can be decrypted only with the same AAD.
[in]plaintextData to encrypt.
[out]checksumKey checksum. The method appends data to checksum if this attribute is supported by implementation.
[out]ciphertextEncrypted data. The method appends data to ciphertext container.
[out]tagAuthentication tag (also known as MAC). Authentication tag must be provided to decryption function to prevent data tampering. The method appends data to tag container.
Returns
Boolean indicating operation success. If operation fails, the contents of checksum, ciphertext, and tag are undefined.
See also
decryptAD()

Implements alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface.

◆ getDefaultKeyAlias()

bool alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::getDefaultKeyAlias ( std::string &  keyAlias)
inlineoverridevirtualnoexcept

Returns default key alias.

Get default key alias. Any component can have component-specific configuration or use default configuration.

Default key alias is a platform configuration parameter, and may change over time. When the alias changes, implementation must use new alias to encrypt new data, and must use old alias to decrypt existing data as long as the old key exists.

Parameters
[out]keyAliasReference to key alias. The method replaces contents of keyAlias.
Returns
Returns true if main key alias is stored into keyAlias. Returns false on error.

Implements alexaClientSDK::acsdkCryptoInterfaces::KeyStoreInterface.

◆ MOCK_METHOD1()

alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::MOCK_METHOD1 ( _getDefaultKeyAlias  ,
bool(std::string &)   
)

◆ MOCK_METHOD6() [1/2]

alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::MOCK_METHOD6 ( _decrypt  ,
bool(const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &ciphertext, DataBlock &plaintext)   
)

◆ MOCK_METHOD6() [2/2]

alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::MOCK_METHOD6 ( _encrypt  ,
bool(const std::string &keyAlias, AlgorithmType type, const IV &iv, const DataBlock &plaintext, KeyChecksum &checksum, DataBlock &ciphertext)   
)

◆ MOCK_METHOD8() [1/2]

alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::MOCK_METHOD8 ( _decryptAD  ,
bool(const std::string &keyAlias, AlgorithmType type, const KeyChecksum &checksum, const IV &iv, const DataBlock &aad, const DataBlock &ciphertext, const Tag &tag, DataBlock &plaintext)   
)

◆ MOCK_METHOD8() [2/2]

alexaClientSDK::acsdkCryptoInterfaces::test::MockKeyStore::MOCK_METHOD8 ( _encryptAE  ,
bool(const std::string &keyAlias, AlgorithmType type, const IV &iv, const DataBlock &aad, const DataBlock &plaintext, KeyChecksum &checksum, DataBlock &ciphertext, DataBlock &tag)   
)

The documentation for this class was generated from the following file:

AlexaClientSDK 1.26.0 - Copyright 2016-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0