This repository has been archived on 2026-07-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PasswordEncryption/Password.h
T
amazing-username 30bc1f8245 Addressed Issue #10
2018-03-31 15:04:20 -05:00

96 lines
2.5 KiB
C++

#ifndef PASSWORD_H_
#define PASSWORD_H_
#include<iostream>
#include<string>
#include"Encryption.h"
#include"FileNameRetrieval.h"
#include"GeneratePasswordFileName.h"
#include"TimeInformation.h"
template<typename S = string>
class Password : public TimeInformation<int>
{
S filename;
const S passwordDirectory{FolderStructure::passwordDirectory};
S encryptedMessage;
S decryptedMessage;
int year, month, day;
public:
Password();
Password(const S&);
friend class Encryption;
void setupEncryptedMessage(const S&);
void setupDecryptedMessage(const S&);
void setupPasswordFilename();
void setupPasswordFilename(const S&);
void setupDate();
S retrieveEncryptedMessage() const;
S retrieveDecryptedMessage() const;
S passwordFilename() const;
S passwordPath() const;
bool repetitive();
};
template<typename S>
Password<S>::Password()
{
setupPasswordFilename();
}
template<typename S>
Password<S>::Password(const S& filename) : filename(filename) { }
template<typename S>
void Password<S>::setupEncryptedMessage(const S& pass) { encryptedMessage.assign(pass); }
template<typename S>
void Password<S>::setupDecryptedMessage(const S& pass) { decryptedMessage.assign(pass); }
template<typename S>
void Password<S>::setupPasswordFilename()
{
for (auto passwordNameDoesNotExist = true; passwordNameDoesNotExist; passwordNameDoesNotExist = repetitive())
{
GeneratePasswordFileName gp{};
year = gp.retrieveYear();
month = gp.retrieveMonth();
dayOfMonth = gp.retrieveDayOfMonth();
filename.assign(gp.passwordFileNameString());
}
}
template<typename S>
void Password<S>::setupPasswordFilename(const S& fin)
{
for (auto passwordNameDoesNotExist = true; passwordNameDoesNotExist; passwordNameDoesNotExist = repetitive())
{
filename.assign(fin);
}
}
template<typename S>
S Password<S>::retrieveEncryptedMessage() const { return encryptedMessage; }
template<typename S>
S Password<S>::retrieveDecryptedMessage() const { return decryptedMessage; }
template<typename S>
S Password<S>::passwordFilename() const { return filename; }
template<typename S>
S Password<S>::passwordPath() const { return passwordDirectory + filename; }
template<typename S>
bool Password<S>::repetitive()
{
filename.append(".txt");
FileNameRetrieval fnr;
fnr.retrievePasswordNames();
vector<string> createdPasswordNames{fnr.passwordNameContainer()};
auto count = 0;
for (auto cPNBegin = createdPasswordNames.begin(); cPNBegin!=createdPasswordNames.end(); ++cPNBegin)
{
if (filename.compare(*cPNBegin)==0) ++count;
if (count>0) return true;
}
return false;
}
#endif