public void TestReceiveResponse() { TestWebServiceProxy testProxy = new TestWebServiceProxy(); ITransportProxy proxy = testProxy; FolaighKeyStore keyStore = new FolaighKeyStore(KEYSTORE, "bird8top".ToCharArray()); RSACipher encryptorVerifier = new RSACipher( keyStore, "stateKey", false); RSACipher signerDecryptor = new RSACipher( keyStore, "countyKey", true); SecureTransport transport = new SecureTransport(proxy, encryptorVerifier, signerDecryptor); String sender = "stateKey"; string result = transport.receive(encryptedMessage, signature, encryptedAesKey, encryptedIV, sender); // The result should be an XML document with an encrypted AES key // and // IV, // an AES-encrypted response string, and a signed hash of the // encrypted // response string. ResponseInfo objResponseInfo = ResponseInfo.decode(result); encryptorVerifier = new RSACipher( keyStore, "countyKey", false); signerDecryptor = new RSACipher( keyStore, "stateKey", true); byte[] sig = Convert.FromBase64String(objResponseInfo.Signature); byte[] hash = encryptorVerifier.decrypt(sig); byte[] encryptedResponse = Convert.FromBase64String(objResponseInfo.Response); byte[] expectedHash = Hash.getHash(encryptedResponse); Assert.AreEqual(hash, expectedHash); byte[] key = signerDecryptor.decrypt(Convert.FromBase64String(objResponseInfo.Key)); byte[] iv = signerDecryptor.decrypt(Convert.FromBase64String(objResponseInfo.IV)); AESCipher cipher = new AESCipher(key, iv); Assert.AreEqual(TestWebServiceProxy.THIS_IS_THE_RESPONSE, cipher .decrypt(encryptedResponse)); }
public void TestResponseInfoDecode() { String key = "key", iv = "iv", response = "response", signature = "signature"; ResponseInfo objResponseInfo = new ResponseInfo(key, iv, response, signature); string xmlString = objResponseInfo.encode(); // Now decode it objResponseInfo = ResponseInfo.decode(xmlString); Assert.IsNotNull(objResponseInfo); Assert.AreEqual(key, objResponseInfo.Key); Assert.AreEqual(iv, objResponseInfo.IV); Assert.AreEqual(response, objResponseInfo.Response); Assert.AreEqual(signature, objResponseInfo.Signature); }