diff --git a/init.php b/init.php
index ca98c55..5f90a3a 100644
--- a/init.php
+++ b/init.php
@@ -41,6 +41,11 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$publicKey = $keyDetails['key'];
//$privateKey muss noch symetrisch mit $password verschlüsselt werden
+ $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));
+ $encryptedPrivateKey = openssl_encrypt($privateKey, 'aes-128-cbc', $password, 0, $iv);
+ $encryptedPrivateKeyBase64 = base64_encode($encryptedPrivateKey);
+ $ivBase64 = base64_encode($iv);
+
//FLUSH EVERYTHING IN DATABASE NOW!!!!
@@ -54,7 +59,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($conn->connect_error) {
die("Server Error");
}
- $sql = "INSERT INTO smz_messages_users (uid, username, publicKey, privateKey) VALUES ('$uid', '$username', '$publicKey', '$privateKey')";
+ $sql = "INSERT INTO smz_messages_users (uid, username, publicKey, privateKey, iv) VALUES ('$uid', '$username', '$publicKey', '$encryptedPrivateKeyBase64', '$ivBase64')";
if ($conn->query($sql) === TRUE) {
echo "
ACCOUNT ERFOLGREICH EINGERICHTET\nSCHLIEẞEN SIE DIESEN TAB UMGEHEND!
";
@@ -64,17 +69,6 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$conn->close();
- /*
- PHP Fatal error: Uncaught Error: Call to undefined function sodium_crypto_box_keypair()
- scheint irgendwie an xampp zu liegen
- php.ini bereits angepasst bringt absolut nichts
- ist wahrscheinlich zeitverschwendung
- einfach mal auf strato testen
-
- UPDATE: funktioniert auch auf Strato nicht
- */
-
-
}else{
$passwdErr = "Das Passwort ist falsch. Achten Sie darauf Ihr aktuelles Auth Passwort einzugeben.";
}
diff --git a/keyGrab.php b/keyGrab.php
index d8074db..f23fd64 100644
--- a/keyGrab.php
+++ b/keyGrab.php
@@ -23,31 +23,34 @@ function grabPublicKey($uid){
return $row["publicKey"];
}
} else {
- // ungültige Session
return false;
}
$conn->close();
}
-function grabPrivateKey(){
+
+function grabPrivateKey($password){
global $dbservername;
global $dbusername;
global $dbpassword;
global $dbname;
global $uid;
-// global $password_hash;
+ global $upassword_hash;
+ if (!password_verify($password, $upassword_hash)){
+ echo "Passwortfehler";
+ return false;
+ }
$conn = new mysqli($dbservername, $dbusername, $dbpassword, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
- $sql = "SELECT privateKey FROM smz_messages_users WHERE uid='$uid'";
+ $sql = "SELECT privateKey, iv FROM smz_messages_users WHERE uid='$uid'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
- return $row["privateKey"];
+ return openssl_decrypt(base64_decode($row["privateKey"]), 'aes-128-cbc', $password, 0, base64_decode($row["iv"]));
}
} else {
- // ungültige Session
return false;
}
$conn->close();
diff --git a/read.php b/read.php
index 2c54ef5..429b964 100644
--- a/read.php
+++ b/read.php
@@ -6,7 +6,8 @@
include('../Auth/index.php');
-$id = filter_var($_GET["id"], FILTER_SANITIZE_STRING);
+$id = filter_var($_POST["id"], FILTER_SANITIZE_STRING);
+$upassword = filter_var($_POST["upass"], FILTER_SANITIZE_STRING);
function getMessageType($id){
global $dbservername;
@@ -61,8 +62,9 @@ function getData($id){
}
function decrypt($aeskey, $body, $iv){
+ global $upassword;
include('keyGrab.php');
- $key = grabPrivateKey();
+ $key = grabPrivateKey($upassword);
$decryptedAesKey = '';
$decryptionOk = openssl_private_decrypt(base64_decode($aeskey), $decryptedAesKey, $key, OPENSSL_PKCS1_PADDING);