Browse Source

Save created secret id to secrets_sent to allow delete later

HelloZeroNet 8 years ago
parent
commit
5dd3cd06de
3 changed files with 36 additions and 4 deletions
  1. 1 1
      js/MessageListSent.coffee
  2. 4 3
      js/User.coffee
  3. 31 0
      js/lib/Base64Number.js

+ 1 - 1
js/MessageListSent.coffee

@@ -29,7 +29,7 @@ class MessageListSent extends MessageList
 				encrypted_messages = (row.encrypted.split(",") for row in db_rows)
 				@setLoadingMessage "Decrypting sent secrets..."
 				Page.user.getDecryptedSecretsSent (sent_secrets) =>
-					keys = (aes_key for address, aes_key of sent_secrets)
+					keys = (aes_key.replace(/.*:/, "") for address, aes_key of sent_secrets)
 					@setLoadingMessage "Decrypting sent messages..."
 					Page.cmd "aesDecrypt", [encrypted_messages, keys], (decrypted_messages) =>
 						message_rows = []

+ 4 - 3
js/User.coffee

@@ -49,9 +49,10 @@ class User extends Class
 				[key, iv, encrypted] = res
 				Page.cmd "eciesEncrypt", [key, publickey], (secret) =>  # Encrypt the new key for remote user
 					# Add for remote user
-					@data.secret[@getNewIndex("secret")] = secret
+					secret_index = @getNewIndex("secret")
+					@data.secret[secret_index] = secret
 					# Add key for me
-					secrets_sent[user_address] = key
+					secrets_sent[user_address] = Base64Number.fromNumber(secret_index)+":"+key
 					Page.cmd "eciesEncrypt", [JSON.stringify(secrets_sent)], (secrets_sent_encrypted) =>
 						if not secrets_sent_encrypted
 							return cb false
@@ -63,7 +64,7 @@ class User extends Class
 			if not secrets_sent
 				secrets_sent = {}
 			if secrets_sent[user_address]  # Already exits
-				return cb(secrets_sent[user_address])
+				return cb(secrets_sent[user_address].replace(/.*:/, ""))
 			else
 				@log "Creating new secret for #{user_address}"
 				@addSecret secrets_sent, user_address, (aes_key) ->

+ 31 - 0
js/lib/Base64Number.js

@@ -0,0 +1,31 @@
+window.Base64Number = {
+    _Rixits : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/",
+    fromNumber : function(number) {
+        if (isNaN(Number(number)) || number === null ||
+            number === Number.POSITIVE_INFINITY)
+            throw "The input is not valid";
+        if (number < 0)
+            throw "Can't represent negative numbers now";
+
+        var rixit; // like 'digit', only in some non-decimal radix
+        var residual = Math.floor(number);
+        var result = '';
+        while (true) {
+            rixit = residual % 64
+            result = this._Rixits.charAt(rixit) + result;
+            residual = Math.floor(residual / 64);
+            if (residual == 0)
+                break;
+            }
+        return result;
+    },
+
+    toNumber : function(rixits) {
+        var result = 0;
+        rixits = rixits.split('');
+        for (var e = 0; e < rixits.length; e++) {
+            result = (result * 64) + this._Rixits.indexOf(rixits[e]);
+        }
+        return result;
+    }
+};