25 #ifndef CRYPTO3_STREAM_DECRYPT_HPP
26 #define CRYPTO3_STREAM_DECRYPT_HPP
53 template<
typename StreamCipher,
typename InputIterator,
typename KeyIterator,
typename OutputIterator>
54 OutputIterator
decrypt(InputIterator first, InputIterator last, KeyIterator key_first, KeyIterator key_last,
57 typedef typename StreamCipher::stream_decrypter_type EncryptionMode;
63 return EncrypterImpl(first, last,
std::move(out), CiperState(StreamCipher(key_first, key_last)));
81 template<
typename StreamCipher,
typename InputIterator,
82 typename OutputAccumulator =
83 typename stream::stream_accumulator<typename StreamCipher::stream_decrypter_type>>
84 OutputAccumulator &
decrypt(InputIterator first, InputIterator last, OutputAccumulator &acc) {
86 typedef typename StreamCipher::stream_decrypter_type EncryptionMode;
92 return EncrypterImpl(first, last, acc);
109 template<
typename StreamCipher,
typename SinglePassRange,
110 typename OutputAccumulator =
111 typename stream::stream_accumulator<typename StreamCipher::stream_decrypter_type>>
112 OutputAccumulator &
decrypt(
const SinglePassRange &r, OutputAccumulator &acc) {
114 typedef typename StreamCipher::stream_decrypter_type EncryptionMode;
120 return EncrypterImpl(r, acc);
140 template<
typename StreamCipher,
typename InputIterator,
typename KeyIterator,
141 typename CipherAccumulator =
142 typename stream::stream_accumulator<typename StreamCipher::stream_decrypter_type>>
143 stream::detail::range_cipher_impl<stream::detail::value_cipher_impl<CipherAccumulator>>
144 decrypt(InputIterator first, InputIterator last, KeyIterator key_first, KeyIterator key_last) {
149 return EncrypterImpl(first, last, CipherAccumulator(StreamCipher(key_first, key_last)));
168 template<
typename StreamCipher,
typename SinglePassRange,
typename KeyRange,
typename OutputIterator>
169 OutputIterator
decrypt(
const SinglePassRange &rng,
const KeyRange &key, OutputIterator out) {
171 typedef typename StreamCipher::stream_decrypter_type EncryptionMode;
177 return EncrypterImpl(rng,
std::move(out), CipherState(StreamCipher(key)));
195 template<
typename StreamCipher,
typename SinglePassRange,
typename KeyRange,
196 typename CipherAccumulator =
197 typename stream::stream_accumulator<typename StreamCipher::stream_decrypter_type>>
198 stream::detail::range_cipher_impl<stream::detail::value_cipher_impl<CipherAccumulator>>
199 decrypt(
const SinglePassRange &r,
const KeyRange &key) {
204 return EncrypterImpl(r, CipherState(StreamCipher(key)));
OutputIterator decrypt(InputIterator first, InputIterator last, KeyInputIterator key_first, KeyInputIterator key_last, OutputIterator out)
Definition: block/include/nil/crypto3/block/algorithm/decrypt.hpp:66
OutputIterator move(const SinglePassRange &rng, OutputIterator result)
Definition: move.hpp:45
boost::accumulators::accumulator_set< digest< ProcessingMode::input_stream_bits >, boost::accumulators::features< accumulators::tag::stream< ProcessingMode > >> stream_accumulator
Cipher state managing container.
Definition: stream/include/nil/crypto3/stream/cipher_state.hpp:49
Definition: stream/include/nil/crypto3/stream/cipher_value.hpp:161
Definition: stream/include/nil/crypto3/stream/cipher_value.hpp:73
Definition: stream/include/nil/crypto3/stream/cipher_value.hpp:43
Definition: stream/include/nil/crypto3/stream/cipher_value.hpp:58