gradido/src/cpsp/debugPassphrase.cpsp
2020-02-28 13:27:17 +01:00

81 lines
2.7 KiB
Plaintext

<%@ page class="DebugPassphrasePage" %>
<%@ page form="true" %>
<%@ page compressed="true" %>
<%@ page baseClass="SessionHTTPRequestHandler" %>
<%@ page ctorArg="Session*" %>
<%@ header include="SessionHTTPRequestHandler.h" %>
<%!
#include "../Crypto/KeyPair.h"
%>
<%%
const char* pageName = "Debug Passphrase";
auto mm = MemoryManager::getInstance();
KeyPair keys;
std::string privKeyHex = "";
std::string privKeyCryptedHex = "";
User::passwordHashed pwdHashed = 0;
Poco::AutoPtr<controller::User> existingUser;
if(!form.empty()) {
auto passphrase = KeyPair::filterPassphrase(form.get("passphrase", ""));
Mnemonic* wordSource = nullptr;
if(!User::validatePassphrase(passphrase, &wordSource)) {
addError(new Error("debug Passphrase", "invalid passphrase"), false);
} else {
keys.generateFromPassphrase(passphrase.data(), wordSource);
}
auto email = form.get("email", "");
auto newUser = new User(email.data(), "first_name", "last_name");
if(email != "") {
existingUser = controller::User::create();
existingUser->load(email);
}
newUser->validatePwd(form.get("password", ""), this);
pwdHashed = newUser->getPwdHashed();
auto privKey = keys.getPrivateKey();
if(privKey) {
privKeyHex = KeyPair::getHex(privKey);
auto privKeyCrypted = newUser->encrypt(privKey);
if(privKeyCrypted) {
privKeyCryptedHex = KeyPair::getHex(privKeyCrypted);
mm->releaseMemory(privKeyCrypted);
}
}
getErrors(newUser);
delete newUser;
}
%><%@ include file="header_old.cpsp" %>
<div class="grd_container">
<h1>Debug Passphrase</h1>
<%= getErrorsHtml() %>
<form method="POST">
<fieldset class="grd_container_small">
<legend>Userdata</legend>
<p class="grd_small">
<label for="email">E-Mail</label>
<input id="email" type="email" name="email" value="<%= !form.empty() ? form.get("email") : "" %>"/>
</p>
<p class="grd_small">
<label for="password">Passwort</label>
<input id="password" type="password" name="password"/>
</p>
<textarea style="width:100%;height:100px" name="passphrase"><%= !form.empty() ? form.get("passphrase", "") : "" %></textarea>
</fieldset>
<input class="grd-form-bn grd-form-bn-succeed" type="submit" name="submit" value="Debug">
</form>
<p>Public key:<br><%= keys.getPubkeyHex() %></p>
<p>Private Key:<br><%= privKeyHex %></p>
<p>Passwort Hashed:<br><%= std::to_string(pwdHashed) %></p>
<p>Private key crypted:<br><%= privKeyCryptedHex %></p>
<% if(!existingUser.isNull()) {
auto userModel = existingUser->getModel();
auto dbPubkey = userModel->getPublicKey();
%>
<p>user Public: <br><%= KeyPair::getHex(dbPubkey, ed25519_pubkey_SIZE) %></p>
<% } %>
</div>
<%@ include file="footer.cpsp" %>