private SurespotIdentity decryptIdentity(byte[] idBytes, String username, String password) { password = password + "_export_identity"; byte[] decompressed = Decompress(idBytes); byte[] iv = subBuf(decompressed, 0, 16); byte[] salt = subBuf(decompressed, 16, 16); byte[] data = subBuf(decompressed, 32, decompressed.Length - 32); byte[] derived = derive(password, salt); string decrypted = decrypt(data, derived, iv); textBox1.Text = decrypted; JObject json = JObject.Parse(decrypted); SurespotIdentity si = new SurespotIdentity((string)json["username"], (string)json["salt"]); string keydata = "" + json["keys"][0]; // There can be more than one key in a file JObject keys = JObject.Parse(keydata); String version = (string)keys["version"]; String spubDH = (string)keys["dhPub"]; String sprivDH = (string)keys["dhPriv"]; String spubECDSA = (string)keys["dsaPub"]; String sprivECDSA = (string)keys["dsaPriv"]; // TODO: Recreate the keys spubDH = spubDH.Substring(27, spubDH.Length - 27 - 25); Console.Write(spubDH); Console.Write("test"); byte[] pkcs8Blob = System.Convert.FromBase64String(spubDH); return(si); }
private void button1_Click(object sender, EventArgs e) { String password = textBox2.Text; byte[] file = File.ReadAllBytes("rty.ssi"); SurespotIdentity si = decryptIdentity(file, "", textBox2.Text); byte[] saltBytes = Base64.Decode(si.getSalt()); String dPassword = Encoding.UTF8.GetString(Base64.Encode(derive("qwe_export_identity", saltBytes))); // Ikke testet }
private SurespotIdentity decryptIdentity(byte[] idBytes, String username, String password) { password = password + "_export_identity"; byte[] decompressed = Decompress(idBytes); byte[] iv = subBuf(decompressed, 0, 16); byte[] salt = subBuf(decompressed, 16, 16); byte[] data = subBuf(decompressed, 32, decompressed.Length - 32); byte[] derived = derive(password, salt); string decrypted = decrypt(data, derived, iv); textBox1.Text = decrypted; JObject json = JObject.Parse(decrypted); SurespotIdentity si = new SurespotIdentity((string)json["username"], (string)json["salt"]); string keydata = "" + json["keys"][0]; // There can be more than one key in a file JObject keys = JObject.Parse(keydata); String version = (string)keys["version"]; String spubDH = (string)keys["dhPub"]; String sprivDH = (string)keys["dhPriv"]; String spubECDSA = (string)keys["dsaPub"]; String sprivECDSA = (string)keys["dsaPriv"]; // TODO: Recreate the keys spubDH = spubDH.Substring(27, spubDH.Length - 27 - 25); Console.Write(spubDH); Console.Write("test"); byte[] pkcs8Blob = System.Convert.FromBase64String(spubDH); return si; }