refactor(all): using namespace considered harmful
All checks were successful
continuous-integration/drone/push Build is passing

* project-wide refactor to accomodate removal of "using namespace xyz"
  to stop polluting top-level namespace with "std" as recommended by the
  Google C++ style guide.
* use a pre-commit hook to enforce this

ref:
https://google.github.io/styleguide/cppguide.html#Namespaces
This commit is contained in:
surtur 2021-11-13 21:58:05 +01:00
parent bad86c31df
commit d8adb1af87
Signed by: wanderer
GPG Key ID: 19CE1EC1D9E0486D
3 changed files with 23 additions and 23 deletions

View File

@ -20,6 +20,10 @@ repos:
files: \.(cpp|cc|cxx,h)$
types: [file, c++]
types_or: [file, c++, header]
- repo: https://github.com/gringolito/cpp-pre-commit-hooks
rev: 3481ddf0fb
hooks:
- id: check-using-namespace-directive
- repo: local
hooks:
- id: make-test

View File

@ -17,8 +17,6 @@
namespace fortuna {
namespace generator {
using namespace std;
struct Generator::G_state{
int64_t k;
unsigned __int128 ctr;
@ -40,17 +38,17 @@ auto Generator::get_state() -> G_state {
return G_state{};
}
auto Generator::reseed(const string& s) -> void {
auto Generator::reseed(const std::string& s) -> void {
G_state G = get_state();
string to_be_hashed = std::to_string(G.k) + s;
std::string to_be_hashed = std::to_string(G.k) + s;
// TODO(me): wrap do_sha in a try-catch
string a = do_sha(to_be_hashed);
std::string a = do_sha(to_be_hashed);
// str, size, base
G.k = stol(a,nullptr,10);
G.ctr++;
}
auto Generator::do_sha(const string& k_n_s) -> string {
auto Generator::do_sha(const std::string& k_n_s) -> std::string {
/* do sha256 */
using std::cout;
using std::endl;
@ -58,7 +56,7 @@ auto Generator::do_sha(const string& k_n_s) -> string {
using CryptoPP::HashFilter;
using CryptoPP::StringSink;
string digest;
std::string digest;
CryptoPP::SHA256 sha2_256;
CryptoPP::SHA3_256 sha3_256;
@ -88,7 +86,7 @@ auto Generator::do_sha(const string& k_n_s) -> string {
return "42";
}
auto Generator::do_crypto(int64_t k, unsigned __int128 ctr) -> string {
auto Generator::do_crypto(int64_t k, unsigned __int128 ctr) -> std::string {
/* this function calls the block cipher
* returns a string of k*(16 bytes);
* do whatever atm */
@ -97,10 +95,10 @@ auto Generator::do_crypto(int64_t k, unsigned __int128 ctr) -> string {
return "";
}
auto Generator::generate_blocks(unsigned int k_blocks) -> string {
auto Generator::generate_blocks(unsigned int k_blocks) -> std::string {
G_state G = get_state();
assert (G.ctr!=0);
string r = "";
std::string r = "";
for (int i = 0; i < k_blocks; ++i) {
r += do_crypto(G.k, G.ctr);
G.ctr++;
@ -108,20 +106,20 @@ auto Generator::generate_blocks(unsigned int k_blocks) -> string {
return r;
}
auto Generator::generate_random_data(uint n) -> string {
auto Generator::generate_random_data(uint n) -> std::string {
G_state G = get_state();
string r = "";
std::string r = "";
if (n < 0){
/* this should not be possible */
printf("[*] error: n cannot be < 0\n");
throw invalid_argument("n cannot be < 0");
throw std::invalid_argument("n cannot be < 0");
} else if (n > pow(2,20)){
printf("[*] error: n cannot be > 2^20\n");
throw invalid_argument("n cannot be > 2^20");
throw std::invalid_argument("n cannot be > 2^20");
}
/* do magic to compute r
* r rst-n-bytes(GenerateBlocks(G, ceil(n/16) )) */
string rr = generate_blocks(ceil(n/16));
std::string rr = generate_blocks(ceil(n/16));
r = rr.substr(0,n);
/* re-key */

View File

@ -6,26 +6,24 @@
namespace fortuna {
namespace generator {
using namespace std;
class Generator {
public:
void initialize_generator();
auto generate_blocks(unsigned int k_blocks) -> string;
auto generate_blocks(unsigned int k_blocks) -> std::string;
private:
struct G_state;
auto reseed(const string& s) -> void;
auto reseed(const std::string& s) -> void;
auto do_sha(const string& k_n_s) -> string;
auto do_sha(const std::string& k_n_s) -> std::string;
auto do_crypto(int64_t k, unsigned __int128 ctr) -> string;
auto do_crypto(int64_t k, unsigned __int128 ctr) -> std::string;
/* n is the number of random bytes to generate */
auto generate_random_data(uint n) -> string;
auto generate_random_data(uint n) -> std::string;
auto strtolowerpls(string &s) -> string;
auto strtolowerpls(std::string &s) -> std::string;
protected:
auto get_state() -> Generator::G_state;