1 |
1 |
|
2 |
2 |
|
3 |
3 |
|
4 |
4 |
|
5 |
5 |
|
6 |
6 |
|
7 |
7 |
|
8 |
8 |
|
9 |
9 |
|
10 |
10 |
|
11 |
11 |
|
12 |
12 |
|
13 |
13 |
|
14 |
14 |
|
15 |
15 |
|
16 |
16 |
|
17 |
17 |
|
18 |
18 |
|
19 |
19 |
|
20 |
20 |
|
21 |
21 |
|
22 |
22 |
|
23 |
23 |
|
24 |
24 |
|
25 |
25 |
|
26 |
26 |
#include "passwordvaultconsoleutil.h" |
27 |
27 |
|
28 |
28 |
using namespace std; |
29 |
29 |
|
30 |
30 |
|
31 |
31 |
|
32 |
32 |
|
33 |
33 |
PasswordVaultConsoleUtil::PasswordVaultConsoleUtil() |
34 |
34 |
{ |
35 |
35 |
|
36 |
36 |
} |
37 |
37 |
|
38 |
38 |
|
39 |
39 |
|
40 |
40 |
|
41 |
41 |
PasswordVaultConsoleUtil::~PasswordVaultConsoleUtil() |
42 |
42 |
{ |
43 |
43 |
|
44 |
44 |
} |
45 |
45 |
|
46 |
46 |
|
47 |
47 |
|
48 |
48 |
|
49 |
49 |
void PasswordVaultConsoleUtil::DisplayMessage(const int _messageID, const char *_insert, const int _type) |
50 |
50 |
{ |
51 |
51 |
|
52 |
|
string message(GetMessageText(_messageID)); |
|
52 |
string message; |
|
53 |
GetMessageText(_messageID, &message); |
53 |
54 |
|
|
55 |
string textBuffer; |
54 |
56 |
switch (_type) |
55 |
57 |
{ |
56 |
58 |
case INFORMATIONAL_MESSAGE: |
57 |
|
message.insert(0, GetMessageText(__infoPrefix)); |
|
59 |
message.assign(message.insert(0, GetMessageText(__infoPrefix, &textBuffer))); |
58 |
60 |
break; |
59 |
61 |
case WARNING_MESSAGE: |
60 |
|
message.insert(0, GetMessageText(__warningPrefix)); |
|
62 |
message.insert(0, GetMessageText(__warningPrefix, &textBuffer)); |
61 |
63 |
break; |
62 |
64 |
case ERROR_MESSAGE: |
63 |
|
message.insert(0, GetMessageText(__errorPrefix)); |
|
65 |
message.insert(0, GetMessageText(__errorPrefix, &textBuffer)); |
64 |
66 |
break; |
65 |
67 |
case PROMPT_MESSAGE: |
66 |
|
message.insert(0, GetMessageText(__promptPrefix)); |
|
68 |
message.insert(0, GetMessageText(__promptPrefix, &textBuffer)); |
67 |
69 |
break; |
68 |
70 |
default: |
69 |
|
message.insert(0, GetMessageText(__infoPrefix)); |
|
71 |
message.insert(0, GetMessageText(__infoPrefix, &textBuffer)); |
70 |
72 |
} |
71 |
73 |
|
72 |
|
if (_insert != NULL) |
|
74 |
if (_insert != NULL && strlen(_insert) > 0) |
73 |
75 |
{ |
74 |
76 |
int insertPos = message.find("{*}", 0); |
75 |
77 |
if (insertPos != string::npos) |
76 |
78 |
{ |
77 |
79 |
message.replace(insertPos, 3, _insert); |
78 |
80 |
} |
79 |
81 |
} |
80 |
82 |
|
81 |
83 |
cout << endl << message; |
82 |
84 |
if (_type != PROMPT_MESSAGE) |
83 |
85 |
{ |
84 |
86 |
cout << endl; |
85 |
87 |
} |
86 |
88 |
|
87 |
89 |
} |
88 |
90 |
|
89 |
91 |
|
90 |
92 |
|
91 |
93 |
|
92 |
94 |
|
93 |
95 |
void PasswordVaultConsoleUtil::DisplayProgramBanner() |
94 |
96 |
{ |
95 |
97 |
|
96 |
98 |
cout << endl << "+-----------------------------------------------+"; |
97 |
99 |
cout << endl << "| Password Vault 1.0 |"; |
98 |
100 |
#ifdef TRIALVERSION |
99 |
101 |
cout << endl << "| (Limited Trial Version) |"; |
100 |
102 |
#endif |
101 |
103 |
cout << endl << "| |"; |
102 |
104 |
cout << endl << "| Teodoro Cipresso, San Jose State University |"; |
103 |
105 |
cout << endl << "| Contact: teodoro@reversingproject.info |"; |
104 |
106 |
cout << endl << "| AES 256-Bit Encryption using Crypto++ 5.5.2 |"; |
105 |
107 |
cout << endl << "+-----------------------------------------------+" << endl; |
106 |
108 |
|
107 |
109 |
} |
108 |
110 |
|
109 |
111 |
|
110 |
112 |
|
111 |
113 |
|
112 |
114 |
void PasswordVaultConsoleUtil::DisplayProgramMenu() |
113 |
115 |
{ |
114 |
116 |
|
|
117 |
string textBuffer; |
115 |
118 |
cout << endl; |
116 |
|
cout << "(" << DISPLAY_PASSWORD_RECORDS << ") " << GetMessageText(__displayPasswordRecords) << endl; |
117 |
|
cout << "(" << CREATE_PASSWORD_RECORD << ") " << GetMessageText(__createPasswordRecord) << endl; |
118 |
|
cout << "(" << EDIT_PASSWORD_RECORD << ") " << GetMessageText(__editPasswordRecord) << endl; |
119 |
|
cout << "(" << DELETE_PASSWORD_RECORD << ") " << GetMessageText(__deletePasswordRecord) << endl; |
120 |
|
cout << "(" << CHANGE_VAULT_PASSWORD << ") " << GetMessageText(__changeVaultPassword) << endl; |
121 |
|
cout << "(" << QUIT_PROGRAM << ") " << GetMessageText(__quit) << endl; |
|
119 |
cout << "(" << DISPLAY_PASSWORD_RECORDS << ") " << GetMessageText(__displayPasswordRecords, &textBuffer) << endl; |
|
120 |
cout << "(" << CREATE_PASSWORD_RECORD << ") " << GetMessageText(__createPasswordRecord, &textBuffer) << endl; |
|
121 |
cout << "(" << EDIT_PASSWORD_RECORD << ") " << GetMessageText(__editPasswordRecord, &textBuffer) << endl; |
|
122 |
cout << "(" << DELETE_PASSWORD_RECORD << ") " << GetMessageText(__deletePasswordRecord, &textBuffer) << endl; |
|
123 |
cout << "(" << CHANGE_VAULT_PASSWORD << ") " << GetMessageText(__changeVaultPassword, &textBuffer) << endl; |
|
124 |
cout << "(" << QUIT_PROGRAM << ") " << GetMessageText(__quit, &textBuffer) << endl; |
122 |
125 |
|
123 |
126 |
} |
124 |
127 |
|
125 |
128 |
|
126 |
129 |
|
127 |
130 |
|
128 |
|
const char* PasswordVaultConsoleUtil::GetMessageText(const int _messageID) |
|
131 |
const char* PasswordVaultConsoleUtil::GetMessageText(const int _messageID, string *_textBuffer) |
129 |
132 |
{ |
|
133 |
|
130 |
134 |
switch (_messageID) |
131 |
135 |
{ |
132 |
|
case __changeVaultPassword : return "Change the Vault Password"; |
133 |
|
case __createPasswordRecord : return "Create a Password Record"; |
134 |
|
case __dataDisallowedChars : return "The characters ': return ', '\"', '/', '<', and '>' are not allowed in record data."; |
135 |
|
case __deletePasswordRecord : return "Delete a Password Record"; |
136 |
|
case __descriptionSet : return "The description was set to \"{*}\"."; |
137 |
|
case __displayPasswordRecords : return "Display Password Records"; |
138 |
|
case __editPasswordRecord : return "Edit a Password Record"; |
139 |
|
case __errorPrefix : return "[Error] "; |
140 |
|
case __existingVaultNotFound : return "An existing password vault for the specified username \"{*}\" was not found--assuming new vault."; |
141 |
|
case __incorrectPassOnChange : return "The specified current vault password entered is incorrect. Program will now exit without saving for safety."; |
142 |
|
case __infoPrefix : return "[Info] "; |
143 |
|
case __invalidMenuOption : return "An invalid menu option number was specified."; |
144 |
|
case __nameSet : return "The name was set to \"{*}\"."; |
145 |
|
case __noRecordsExist : return "No records exist."; |
146 |
|
case __passwordIsBlank : return "Password cannot be blank."; |
147 |
|
case __passwordSet : return "The password was set to \"{*}\"."; |
148 |
|
case __pressEnterToRetainVal : return "Pressing Enter on the following prompts will retain existing values."; |
149 |
|
case __promptPrefix : return ">> "; |
150 |
|
case __providedPasswordWrong : return "Unable to open password vault for username \"{*}\" with the provided password."; |
151 |
|
case __quit : return "Save Records and Quit"; |
152 |
|
case __recordCreated : return "Record successfully created."; |
153 |
|
case __recordDeleted : return "Record \"{*}\" was deleted successfully."; |
154 |
|
case __recordEdited : return "Record successfully edited."; |
155 |
|
case __recordFound : return "Found a record with name \"{*}\"."; |
156 |
|
case __recordNameAlreadyExists : return "A record with the name \"{*}\" already exists."; |
157 |
|
case __recordNameIsBlank : return "Record name cannot be blank--returning to main menu..."; |
158 |
|
case __recordNotFound : return "A record with the name \"{*}\" was not found. Note: names are case-sensitive."; |
159 |
|
case __selected : return "Selected \"{*}\":"; |
160 |
|
case __specifyDescription : return "Specify a description and press Enter: "; |
161 |
|
case __specifyDescriptionEdit : return "Specify a description and press Enter ({*}): "; |
162 |
|
case __specifyName : return "Specify a name and press Enter: "; |
163 |
|
case __specifyNameEdit : return "Specify a name and press Enter ({*}): "; |
164 |
|
case __specifyNameToDelete : return "Specify the name of the record to delete and press Enter: "; |
165 |
|
case __specifyNameToEdit : return "Specify the name of the record to edit and press Enter: "; |
166 |
|
case __specifyOptionNumber : return "Specify an option number and press Enter: "; |
167 |
|
case __specifyPassword : return "Specify a password and press Enter: "; |
168 |
|
case __specifyPasswordEdit : return "Specify a password and press Enter ({*}): "; |
169 |
|
case __specifyUsername : return "Specify a username and press Enter: "; |
170 |
|
case __specifyUsernameEdit : return "Specify a username and press Enter ({*}): "; |
171 |
|
case __specifyVaultUsername : return "Specify vault username and press Enter: "; |
172 |
|
case __specifyVaultPassword : return "Specify vault password and press Enter: "; |
173 |
|
case __specifyVaultPassCurrent : return "Specify current vault password and press Enter: "; |
174 |
|
case __specifyVaultPassNew : return "Specify new vault password and press Enter: "; |
175 |
|
case __unableToEncryptVault : return "Unable to encrypt password vault before saving to disk. CryptoPP::Exception: {*}"; |
176 |
|
case __unableToHashPassword : return "Unable to compute digest for password verification. CryptoPP::Exception: {*}"; |
177 |
|
case __unableToSaveVault : return "Unable to save password vault file \"{*}\" to disk. Check local file and folder permissions."; |
178 |
|
case __userNameIllegalChars : return "Username cannot contain the characters: ? [ ] / \\ : return + < > :; \" ' , * . { } !"; |
179 |
|
case __userNameIsBlank : return "Username cannot be blank."; |
180 |
|
case __usernameSet : return "The username was set to \"{*}\"."; |
181 |
|
case __vaultLoadedOK : return "Existing password vault file \"{*}\" was loaded successfully."; |
182 |
|
case __vaultPasswordChangeOK : return "The vault password for user \"{*}\" was changed successfully."; |
183 |
|
case __vaultSavedOK : return "Password vault file \"{*}\" was saved successfully."; |
184 |
|
case __warningPrefix : return "[Warning] "; |
|
136 |
case __changeVaultPassword : DecryptMessageText("50756E7B74722D8175722D636E8279812D5D6E8080847C7F71", _textBuffer); break; |
|
137 |
case __createPasswordRecord : DecryptMessageText("507F726E81722D6E2D5D6E8080847C7F712D5F72707C7F71", _textBuffer); break; |
|
138 |
case __dataDisallowedChars : DecryptMessageText("6175722D70756E7F6E7081727F802D344734392D342F34392D343C34392D344934392D6E7B712D344B342D6E7F722D7B7C812D6E79797C8472712D767B2D7F72707C7F712D716E816E3B17", _textBuffer); break; |
|
139 |
case __deletePasswordRecord : DecryptMessageText("5172797281722D6E2D5D6E8080847C7F712D5F72707C7F71", _textBuffer); break; |
|
140 |
case __descriptionSet : DecryptMessageText("6175722D717280707F767D81767C7B2D846E802D8072812D817C2D2F88378A2F3B", _textBuffer); break; |
|
141 |
case __displayPasswordRecords : DecryptMessageText("5176807D796E862D5D6E8080847C7F712D5F72707C7F7180", _textBuffer); break; |
|
142 |
case __editPasswordRecord : DecryptMessageText("527176812D6E2D5D6E8080847C7F712D5F72707C7F71", _textBuffer); break; |
|
143 |
case __errorPrefix : DecryptMessageText("68527F7F7C7F6A2D", _textBuffer); break; |
|
144 |
case __existingVaultNotFound : DecryptMessageText("4E7B2D7285768081767B742D7D6E8080847C7F712D836E8279812D737C7F2D8175722D807D727076737672712D8280727F7B6E7A722D2F88378A2F2D846E802D7B7C812D737C827B713A3A6E8080827A767B742D7B72842D836E8279813B", _textBuffer); break; |
|
145 |
case __incorrectPassOnChange : DecryptMessageText("6175722D807D727076737672712D70827F7F727B812D836E8279812D7D6E8080847C7F712D727B81727F72712D76802D767B707C7F7F7270813B2D5D7F7C747F6E7A2D847679792D7B7C842D728576812D847681757C82812D806E83767B742D737C7F2D806E737281863B", _textBuffer); break; |
|
146 |
case __infoPrefix : DecryptMessageText("68567B737C6A2D", _textBuffer); break; |
|
147 |
case __invalidMenuOption : DecryptMessageText("4E7B2D767B836E7976712D7A727B822D7C7D81767C7B2D7B827A6F727F2D846E802D807D727076737672713B", _textBuffer); break; |
|
148 |
case __nameSet : DecryptMessageText("6175722D7B6E7A722D846E802D8072812D817C2D2F88378A2F3B", _textBuffer); break; |
|
149 |
case __noRecordsExist : DecryptMessageText("5B7C2D7F72707C7F71802D72857680813B", _textBuffer); break; |
|
150 |
case __passwordIsBlank : DecryptMessageText("5D6E8080847C7F712D706E7B7B7C812D6F722D6F796E7B783B", _textBuffer); break; |
|
151 |
case __passwordSet : DecryptMessageText("6175722D7D6E8080847C7F712D846E802D8072812D817C2D2F88378A2F3B", _textBuffer); break; |
|
152 |
case __pressEnterToRetainVal : DecryptMessageText("5D7F728080767B742D527B81727F2D7C7B2D8175722D737C79797C84767B742D7D7F7C7A7D81802D847679792D7F72816E767B2D7285768081767B742D836E798272803B", _textBuffer); break; |
|
153 |
case __promptPrefix : DecryptMessageText("4B4B2D", _textBuffer); break; |
|
154 |
case __providedPasswordWrong : DecryptMessageText("627B6E6F79722D817C2D7C7D727B2D7D6E8080847C7F712D836E8279812D737C7F2D8280727F7B6E7A722D2F88378A2F2D847681752D8175722D7D7F7C83767172712D7D6E8080847C7F713B", _textBuffer); break; |
|
155 |
case __quit : DecryptMessageText("606E83722D5F72707C7F71802D6E7B712D5E827681", _textBuffer); break; |
|
156 |
case __recordCreated : DecryptMessageText("5F72707C7F712D8082707072808073827979862D707F726E8172713B", _textBuffer); break; |
|
157 |
case __recordDeleted : DecryptMessageText("5F72707C7F712D2F88378A2F2D846E802D717279728172712D8082707072808073827979863B", _textBuffer); break; |
|
158 |
case __recordEdited : DecryptMessageText("5F72707C7F712D8082707072808073827979862D7271768172713B", _textBuffer); break; |
|
159 |
case __recordFound : DecryptMessageText("537C827B712D6E2D7F72707C7F712D847681752D7B6E7A722D2F88378A2F3B", _textBuffer); break; |
|
160 |
case __recordNameAlreadyExists : DecryptMessageText("4E2D7F72707C7F712D847681752D8175722D7B6E7A722D2F88378A2F2D6E797F726E71862D7285768081803B", _textBuffer); break; |
|
161 |
case __recordNameIsBlank : DecryptMessageText("5F72707C7F712D7B6E7A722D706E7B7B7C812D6F722D6F796E7B783A3A7F7281827F7B767B742D817C2D7A6E767B2D7A727B823B3B3B", _textBuffer); break; |
|
162 |
case __recordNotFound : DecryptMessageText("4E2D7F72707C7F712D847681752D8175722D7B6E7A722D2F88378A2F2D846E802D7B7C812D737C827B713B2D5B7C8172472D7B6E7A72802D6E7F722D706E80723A80727B8076817683723B", _textBuffer); break; |
|
163 |
case __selected : DecryptMessageText("60727972708172712D2F88378A2F47", _textBuffer); break; |
|
164 |
case __specifyDescription : DecryptMessageText("607D72707673862D6E2D717280707F767D81767C7B2D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
165 |
case __specifyDescriptionEdit : DecryptMessageText("607D72707673862D6E2D717280707F767D81767C7B2D6E7B712D7D7F7280802D527B81727F2D3588378A36472D", _textBuffer); break; |
|
166 |
case __specifyName : DecryptMessageText("607D72707673862D6E2D7B6E7A722D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
167 |
case __specifyNameEdit : DecryptMessageText("607D72707673862D6E2D7B6E7A722D6E7B712D7D7F7280802D527B81727F2D3588378A36472D", _textBuffer); break; |
|
168 |
case __specifyNameToDelete : DecryptMessageText("607D72707673862D8175722D7B6E7A722D7C732D8175722D7F72707C7F712D817C2D7172797281722D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
169 |
case __specifyNameToEdit : DecryptMessageText("607D72707673862D8175722D7B6E7A722D7C732D8175722D7F72707C7F712D817C2D727176812D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
170 |
case __specifyOptionNumber : DecryptMessageText("607D72707673862D6E7B2D7C7D81767C7B2D7B827A6F727F2D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
171 |
case __specifyPassword : DecryptMessageText("607D72707673862D6E2D7D6E8080847C7F712D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
172 |
case __specifyPasswordEdit : DecryptMessageText("607D72707673862D6E2D7D6E8080847C7F712D6E7B712D7D7F7280802D527B81727F2D3588378A36472D", _textBuffer); break; |
|
173 |
case __specifyUsername : DecryptMessageText("607D72707673862D6E2D8280727F7B6E7A722D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
174 |
case __specifyUsernameEdit : DecryptMessageText("607D72707673862D6E2D8280727F7B6E7A722D6E7B712D7D7F7280802D527B81727F2D3588378A36472D", _textBuffer); break; |
|
175 |
case __specifyVaultUsername : DecryptMessageText("607D72707673862D836E8279812D8280727F7B6E7A722D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
176 |
case __specifyVaultPassword : DecryptMessageText("607D72707673862D836E8279812D7D6E8080847C7F712D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
177 |
case __specifyVaultPassCurrent : DecryptMessageText("607D72707673862D70827F7F727B812D836E8279812D7D6E8080847C7F712D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
178 |
case __specifyVaultPassNew : DecryptMessageText("607D72707673862D7B72842D836E8279812D7D6E8080847C7F712D6E7B712D7D7F7280802D527B81727F472D", _textBuffer); break; |
|
179 |
case __unableToEncryptVault : DecryptMessageText("627B6E6F79722D817C2D727B707F867D812D7D6E8080847C7F712D836E8279812D6F72737C7F722D806E83767B742D817C2D717680783B2D507F867D817C5D5D4747528570727D81767C7B472D88378A", _textBuffer); break; |
|
180 |
case __unableToHashPassword : DecryptMessageText("627B6E6F79722D817C2D707C7A7D8281722D7176747280812D737C7F2D7D6E8080847C7F712D83727F767376706E81767C7B3B2D507F867D817C5D5D4747528570727D81767C7B472D88378A", _textBuffer); break; |
|
181 |
case __unableToSaveVault : DecryptMessageText("627B6E6F79722D817C2D806E83722D7D6E8080847C7F712D836E8279812D737679722D2F88378A2F2D817C2D717680783B2D50757270782D797C706E792D737679722D6E7B712D737C7971727F2D7D727F7A768080767C7B803B", _textBuffer); break; |
|
182 |
case __userNameIllegalChars : DecryptMessageText("6280727F7B6E7A722D706E7B7B7C812D707C7B816E767B2D8175722D70756E7F6E7081727F80472D4C2D682D6A2D3C2D692D472D7F7281827F7B2D2D382D492D4B2D47482D2F2D342D392D372D3B2D882D8A2D2E", _textBuffer); break; |
|
183 |
case __userNameIsBlank : DecryptMessageText("6280727F7B6E7A722D706E7B7B7C812D6F722D6F796E7B783B", _textBuffer); break; |
|
184 |
case __usernameSet : DecryptMessageText("6175722D8280727F7B6E7A722D846E802D8072812D817C2D2F88378A2F3B", _textBuffer); break; |
|
185 |
case __vaultLoadedOK : DecryptMessageText("5285768081767B742D7D6E8080847C7F712D836E8279812D737679722D2F88378A2F2D846E802D797C6E7172712D8082707072808073827979863B", _textBuffer); break; |
|
186 |
case __vaultPasswordChangeOK : DecryptMessageText("6175722D836E8279812D7D6E8080847C7F712D737C7F2D8280727F2D2F88378A2F2D846E802D70756E7B7472712D8082707072808073827979863B", _textBuffer); break; |
|
187 |
case __vaultSavedOK : DecryptMessageText("5D6E8080847C7F712D836E8279812D737679722D2F88378A2F2D846E802D806E8372712D8082707072808073827979863B", _textBuffer); break; |
|
188 |
case __warningPrefix : DecryptMessageText("68646E7F7B767B746A2D", _textBuffer); break; |
185 |
189 |
#ifdef TRIALVERSION |
186 |
|
case __recordLimitReached : return "Thank you for trying Password Vault! You have reached the maximum number of records allowed in this trial version."; |
|
190 |
case __recordLimitReached : DecryptMessageText("61756E7B782D867C822D737C7F2D817F86767B742D5D6E8080847C7F712D636E8279812E2D667C822D756E83722D7F726E707572712D8175722D7A6E85767A827A2D7B827A6F727F2D7C732D7F72707C7F71802D6E79797C8472712D767B2D817576802D817F766E792D83727F80767C7B3B", _textBuffer); break; |
187 |
191 |
#endif |
188 |
|
default : return "Message Not Found!"; |
|
192 |
default : DecryptMessageText("5A7280806E74722D5B7C812D537C827B712E", _textBuffer); |
189 |
193 |
} |
190 |
194 |
|
|
195 |
return _textBuffer->c_str(); |
|
196 |
|
|
197 |
} |
|
198 |
|
|
199 |
|
|
200 |
#ifdef TRIALVERSION |
|
201 |
|
|
202 |
|
|
203 |
|
|
204 |
|
|
205 |
void PasswordVaultConsoleUtil::DecryptMessageText(const char *_cipherText, string *_plainTextBuffer) |
|
206 |
{ |
|
207 |
|
|
208 |
string cipherText; |
|
209 |
|
|
210 |
cipherText.assign(_cipherText); |
|
211 |
|
|
212 |
SubstitutionCipher cipher; |
|
213 |
|
|
214 |
_plainTextBuffer->assign(cipher.decryptFromHex(cipherText)); |
|
215 |
|
191 |
216 |
} |
192 |
217 |
|
|
218 |
#endif |
193 |
219 |
|
194 |
220 |
|
195 |
221 |
|
|
222 |
|
|
223 |
|
|
224 |
|