Botan  1.11.15
Public Types | Public Member Functions | Static Public Member Functions
Botan::Parallel Class Reference

#include <par_hash.h>

Inheritance diagram for Botan::Parallel:
Botan::HashFunction Botan::Buffered_Computation

List of all members.

Public Types

typedef SCAN_Name Spec

Public Member Functions

void clear ()
HashFunctionclone () const
void final (byte out[])
secure_vector< bytefinal ()
template<typename Alloc >
void final (std::vector< byte, Alloc > &out)
virtual size_t hash_block_size () const
std::string name () const
size_t output_length () const
 Parallel (const std::vector< HashFunction * > &hashes)
secure_vector< byteprocess (const byte in[], size_t length)
secure_vector< byteprocess (const secure_vector< byte > &in)
secure_vector< byteprocess (const std::vector< byte > &in)
secure_vector< byteprocess (const std::string &in)
void update (const byte in[], size_t length)
void update (const secure_vector< byte > &in)
void update (const std::vector< byte > &in)
void update (const std::string &str)
void update (byte in)
template<typename T >
void update_be (const T in)

Static Public Member Functions

static Parallelmake (const Spec &spec)

Detailed Description

Parallel Hashes

Definition at line 19 of file par_hash.h.


Member Typedef Documentation

typedef SCAN_Name Botan::HashFunction::Spec [inherited]

Definition at line 37 of file hash.h.


Constructor & Destructor Documentation

Botan::Parallel::Parallel ( const std::vector< HashFunction * > &  hashes)
Parameters:
hashesa set of hashes to compute in parallel

Definition at line 89 of file par_hash.cpp.

References clone().

   {
   for(size_t i = 0; i != in.size(); ++i)
      {
      std::unique_ptr<HashFunction> h(in[i]->clone());
      hashes.push_back(std::move(h));
      }
   }

Member Function Documentation

void Botan::Parallel::clear ( ) [virtual]

Implements Botan::HashFunction.

Definition at line 83 of file par_hash.cpp.

   {
   for(auto&& hash : hashes)
      hash->clear();
   }
HashFunction * Botan::Parallel::clone ( ) const [virtual]
Returns:
new object representing the same algorithm as *this

Implements Botan::HashFunction.

Definition at line 73 of file par_hash.cpp.

Referenced by Parallel().

   {
   std::vector<HashFunction*> hash_copies;

   for(auto&& hash : hashes)
      hash_copies.push_back(hash->clone());

   return new Parallel(hash_copies);
   }
void Botan::Buffered_Computation::final ( byte  out[]) [inline, inherited]

Complete the computation and retrieve the final result.

Parameters:
outThe byte array to be filled with the result. Must be of length output_length()

Definition at line 90 of file buf_comp.h.

Referenced by botan_hash_final(), botan_mac_final(), Botan::McEliece_KEM_Decryptor::decrypt(), Botan::TLS::Session::decrypt(), Botan::McEliece_KEM_Encryptor::encrypt(), Botan::TLS::Session::encrypt(), Botan::mgf1_mask(), Botan::pbkdf2(), and Botan::TLS::write_record().

{ final_result(out); }
secure_vector<byte> Botan::Buffered_Computation::final ( ) [inline, inherited]

Complete the computation and retrieve the final result.

Returns:
secure_vector holding the result

Definition at line 97 of file buf_comp.h.

         {
         secure_vector<byte> output(output_length());
         final_result(&output[0]);
         return output;
         }
template<typename Alloc >
void Botan::Buffered_Computation::final ( std::vector< byte, Alloc > &  out) [inline, inherited]

Definition at line 105 of file buf_comp.h.

         {
         out.resize(output_length());
         final_result(&out[0]);
         }
virtual size_t Botan::HashFunction::hash_block_size ( ) const [inline, virtual, inherited]
Returns:
hash block size as defined for this algorithm

Reimplemented in Botan::MDx_HashFunction, Botan::Skein_512, Botan::Keccak_1600, Botan::Comb4P, Botan::GOST_34_11, and Botan::MD2.

Definition at line 35 of file hash.h.

{ return 0; }
Parallel * Botan::Parallel::make ( const Spec spec) [static]

Definition at line 17 of file par_hash.cpp.

References Botan::SCAN_Name::arg(), and Botan::SCAN_Name::arg_count().

   {
   auto& hash_fns = Algo_Registry<HashFunction>::global_registry();

   std::vector<std::unique_ptr<HashFunction>> hashes;

   for(size_t i = 0; i != spec.arg_count(); ++i)
      {
      std::unique_ptr<HashFunction> h(hash_fns.make(spec.arg(i)));

      if(!h)
         return nullptr;
      hashes.push_back(std::move(h));
      }

   Parallel* p = new Parallel;
   std::swap(p->hashes, hashes);
   return p;
   }
std::string Botan::Parallel::name ( ) const [virtual]

Implements Botan::HashFunction.

Definition at line 63 of file par_hash.cpp.

References Botan::string_join().

   {
   std::vector<std::string> names;

   for(auto&& hash : hashes)
      names.push_back(hash->name());

   return "Parallel(" + string_join(names, ',') + ")";
   }
size_t Botan::Parallel::output_length ( ) const [virtual]
Returns:
length of the output of this function in bytes

Implements Botan::Buffered_Computation.

Definition at line 54 of file par_hash.cpp.

   {
   size_t sum = 0;

   for(auto&& hash : hashes)
      sum += hash->output_length();
   return sum;
   }
secure_vector<byte> Botan::Buffered_Computation::process ( const byte  in[],
size_t  length 
) [inline, inherited]

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters:
inthe input to process as a byte array
lengththe length of the byte array
Returns:
the result of the call to final()

Definition at line 118 of file buf_comp.h.

Referenced by Botan::HMAC_RNG::HMAC_RNG(), Botan::RTSS_Share::split(), and Botan::Cert_Extension::Subject_Key_ID::Subject_Key_ID().

         {
         add_data(in, length);
         return final();
         }
secure_vector<byte> Botan::Buffered_Computation::process ( const secure_vector< byte > &  in) [inline, inherited]

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters:
inthe input to process
Returns:
the result of the call to final()

Definition at line 130 of file buf_comp.h.

         {
         add_data(&in[0], in.size());
         return final();
         }
secure_vector<byte> Botan::Buffered_Computation::process ( const std::vector< byte > &  in) [inline, inherited]

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters:
inthe input to process
Returns:
the result of the call to final()

Definition at line 142 of file buf_comp.h.

         {
         add_data(&in[0], in.size());
         return final();
         }
secure_vector<byte> Botan::Buffered_Computation::process ( const std::string &  in) [inline, inherited]

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters:
inthe input to process as a string
Returns:
the result of the call to final()

Definition at line 154 of file buf_comp.h.

         {
         update(in);
         return final();
         }
void Botan::Buffered_Computation::update ( const byte  in[],
size_t  length 
) [inline, inherited]

Add new input to process.

Parameters:
inthe input to process as a byte array
lengthof param in in bytes

Definition at line 34 of file buf_comp.h.

Referenced by botan_hash_update(), botan_mac_update(), Botan::McEliece_KEM_Decryptor::decrypt(), Botan::TLS::Session::decrypt(), Botan::McEliece_KEM_Encryptor::encrypt(), Botan::TLS::Session::encrypt(), Botan::mgf1_mask(), Botan::pbkdf2(), and Botan::TLS::write_record().

{ add_data(in, length); }
void Botan::Buffered_Computation::update ( const secure_vector< byte > &  in) [inline, inherited]

Add new input to process.

Parameters:
inthe input to process as a secure_vector

Definition at line 40 of file buf_comp.h.

         {
         add_data(&in[0], in.size());
         }
void Botan::Buffered_Computation::update ( const std::vector< byte > &  in) [inline, inherited]

Add new input to process.

Parameters:
inthe input to process as a std::vector

Definition at line 49 of file buf_comp.h.

         {
         add_data(&in[0], in.size());
         }
void Botan::Buffered_Computation::update ( const std::string &  str) [inline, inherited]

Add new input to process.

Parameters:
strthe input to process as a std::string. Will be interpreted as a byte array based on the strings encoding.

Definition at line 73 of file buf_comp.h.

         {
         add_data(reinterpret_cast<const byte*>(str.data()), str.size());
         }
void Botan::Buffered_Computation::update ( byte  in) [inline, inherited]

Process a single byte.

Parameters:
inthe byte to process

Definition at line 82 of file buf_comp.h.

{ add_data(&in, 1); }
template<typename T >
void Botan::Buffered_Computation::update_be ( const T  in) [inline, inherited]

Add an integer in big-endian order

Parameters:
inthe value

Definition at line 58 of file buf_comp.h.

References Botan::get_byte().

Referenced by Botan::mgf1_mask(), and Botan::pbkdf2().

         {
         for(size_t i = 0; i != sizeof(T); ++i)
            {
            byte b = get_byte(i, in);
            add_data(&b, 1);
            }
         }

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