Changeset View
Changeset View
Standalone View
Standalone View
src/crypto/aes-256-ctr.hpp
| Show First 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | public: | ||||
| } | } | ||||
| auto iv = DataT(ivSize, 0); | auto iv = DataT(ivSize, 0); | ||||
| std::copy(random.begin() + keySize, random.begin() + keySize + ivSizeInit, iv.begin()); | std::copy(random.begin() + keySize, random.begin() + keySize + ivSizeInit, iv.begin()); | ||||
| return AES256CTRDesc(RawTag{}, | return AES256CTRDesc(RawTag{}, | ||||
| DataT(random.begin(), random.begin() + keySize), | DataT(random.begin(), random.begin() + keySize), | ||||
| iv); | iv); | ||||
| } | } | ||||
| /** | |||||
| * Generate a new AES-256-CTR cipher from raw data. | |||||
| * | |||||
| * @param key The unencoded key. | |||||
| * @prama iv The unencoded iv. | |||||
| * @return An AES-256-CTR cipher generated with the raw data. | |||||
| */ | |||||
| template<class RangeT1, class RangeT2> | |||||
| static AES256CTRDesc fromRaw(RangeT1 key, RangeT2 iv) | |||||
| { | |||||
| if (key.size() < keySize || iv.size() < ivSize) { | |||||
| // Not enough random, return an invalid one | |||||
| return AES256CTRDesc(RawTag{}, DataT(), DataT()); | |||||
| } | |||||
| return AES256CTRDesc(RawTag{}, | |||||
| DataT(key.begin(), key.begin() + keySize), | |||||
| DataT(iv.begin(), iv.begin() + ivSize)); | |||||
| } | |||||
| KAZV_DECLARE_COPYABLE(AES256CTRDesc) | KAZV_DECLARE_COPYABLE(AES256CTRDesc) | ||||
| ~AES256CTRDesc(); | ~AES256CTRDesc(); | ||||
| /** | /** | ||||
| * @return whether this cipher is valid. If the cipher is invalid, you | * @return whether this cipher is valid. If the cipher is invalid, you | ||||
| * must not use any method except destructor or operator=(). | * must not use any method except destructor or operator=(). | ||||
| */ | */ | ||||
| ▲ Show 20 Lines • Show All 94 Lines • Show Last 20 Lines | |||||