Closed ghost closed 11 years ago
sorry, I think the files (host.cert and host.key) had some issue from where I had used the earlier keys. Its working with another pair of files with below code. So, closing the issue.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns="*" creationComplete="onCreationComplete();">
<mx:Script>
<![CDATA[
import com.hurlant.crypto.Crypto;
import com.hurlant.crypto.rsa.RSAKey;
import com.hurlant.crypto.symmetric.AESKey;
import com.hurlant.crypto.symmetric.ICipher;
import com.hurlant.crypto.symmetric.IPad;
import com.hurlant.crypto.symmetric.IVMode;
import com.hurlant.crypto.symmetric.NullPad;
import com.hurlant.crypto.symmetric.PKCS5;
import com.hurlant.crypto.prng.Random;
import com.hurlant.util.Hex;
import mx.utils.Base64Encoder;
import mx.utils.Base64Decoder;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import com.hurlant.crypto.cert.X509CertificateCollection;
import com.hurlant.crypto.cert.X509Certificate;
import com.hurlant.util.der.PEM;
private var pmode:String;
private var src:ByteArray;
private var decrypteddata:ByteArray;
private var encrypteddata:ByteArray;
private var myCertstr:String = "-----BEGIN CERTIFICATE-----\n"+
"MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG\n"+
"A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE\n"+
"MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl\n"+
"YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw\n"+
"ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE\n"+
"CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs\n"+
"ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD\n"+
"+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9\n"+
"MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1\n"+
"C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ\n"+
"kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf\n"+
"jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr\n"+
"evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=\n"+
"-----END CERTIFICATE-----" ;
private var myprivkeystr:String = "-----BEGIN RSA PRIVATE KEY-----\n"+
"MIICWwIBAAKBgQDGAQa8eT5T9FjSP2Xcw/uj5LZrq5/hdpEGG7XO10IfPy0wbwqP\n"+
"j+omaCxJlAPXuxFy0cYFNQlangIu0HAJ/TMAZXPJLBSRwdK7X/aZn/Ds2vRNAcp5\n"+
"av+Pym9cfnfgMoS+6CvbUMAduLhzrnh4tQv4lb/AkliomHuoczdbcWHvKwIDAQAB\n"+
"AoGAXzxrIwgmBHeIqUe5FOBnDsOZQlyAQA+pXYjCf8Rll2XptFwUdkzAUMzWUGWT\n"+
"G5ZspA9l8Wc7IozRe/bhjMxuVK5yZhPDKbjqRdWICA95Jd7fxlIirHOVMQRdzI7x\n"+
"NKqMNQN05MLJfsEHUYtOLhZE+tfhJTJnnmB7TMwnJgc4O5ECQQD8oOJ45tyr46zc\n"+
"OAt6ao7PefVLiW5Qu+PxfoHmZmDV2UQqeM5XtZg4O97VBSugOs3+quIdAC6LotYl\n"+
"/6N+E4y3AkEAyKWD2JNCrAgtjk2bfF1HYt24tq8+q7x2ek3/cUhqwInkrZqOFoke\n"+
"x3+yBB879TuUOadvBXndgMHHcJQKSAJlLQJAXRuGnHyptAhTe06EnHeNbtZKG67p\n"+
"I4Q8PJMdmSb+ZZKP1v9zPUxGb+NQ+z3OmF1T8ppUf8/DV9+KAbM4NI1L/QJAdGBs\n"+
"BKYFObrUkYE5+fwwd4uao3sponqBTZcH3jDemiZg2MCYQUHu9E+AdRuYrziLVJVk\n"+
"s4xniVLb1tRG0lVxUQJASfjdGT81HDJSzTseigrM+JnBKPPrzpeEp0RbTP52Lm23\n"+
"YARjLCwmPMMdAwYZsvqeTuHEDQcOHxLHWuyN/zgP2A==\n"+
"-----END RSA PRIVATE KEY-----" ;
private function onCreationComplete():void {
processData();
}
private function decryptData():void
{
RequestResult.text = "";
pmode = "DECRYPT";
Decrypt.enabled = false;
Encrypt.enabled = true;
processData();
}
private function encryptData():void
{
RequestResult.text = "";
pmode = "ENCRYPT";
Decrypt.enabled = true;
Encrypt.enabled = false;
processData();
}
private function processData():void
{
if(pmode == "DECRYPT"){
Source.text = "Data to be decrypted";
Target.text = "Decrypted data";
Decrypt.enabled = false;
Encrypt.enabled = true;
RequestResult.text = ResponseResult.text;
ResponseResult.text = "";
// Get the private key from the key file
var privateRSAKey: RSAKey = PEM.readRSAPrivateKey(myprivkeystr);
privateRSAKey.decrypt(encrypteddata, decrypteddata, encrypteddata.length);
// Convert the decrypted data to its original format
ResponseResult.text = Hex.toString(Hex.fromArray(decrypteddata));
}
else{
pmode = "ENCRYPT";
Source.text = "Data to be encrypted";
Target.text = "Encrypted data";
Decrypt.enabled = true;
Encrypt.enabled = false;
src = new ByteArray;
decrypteddata = new ByteArray;
encrypteddata = new ByteArray;
var textstr:String = "test data test data test data testing 1234";
RequestResult.text = textstr;
ResponseResult.text = "";
// Get the public key from the certificate file
var x509cert:X509Certificate = new X509Certificate(PEM.readCertIntoArray(myCertstr));
var publicRSAKey: RSAKey = x509cert.getPublicKey();
// Convert the data to ByteArray
src = Hex.toArray(Hex.fromString(textstr));
publicRSAKey.encrypt(src, encrypteddata, src.length);
// Covert the encrypted data into Hex format
ResponseResult.text = Hex.fromArray(encrypteddata);
}
}
]]>
</mx:Script>
<mx:Panel id="Title" width="100%" height="60%" horizontalAlign="left" paddingBottom="5"
paddingLeft="5" paddingRight="5" paddingTop="5" title="Certificate test with RSA">
<mx:Label id="Source" text="" fontWeight="bold" height="5%"/>
<mx:TextArea id="RequestResult" text= "" editable="false" width="100%" height="44.5%"/>
<mx:Label id="Target" text="" fontWeight="bold" height="5%"/>
<mx:TextArea id="ResponseResult" text="" editable="false" width="100%" height="44.5%"/>
<mx:Button id="Decrypt" label="Decrypt Data" width="5%" height="0.5%" click="decryptData()"/>
<mx:Button id="Encrypt" label="Encrypt Data" width="5%" height="0.5%" click="encryptData()"/>
</mx:Panel>
</mx:Application>
Sorry for not getting back to you earlier. I'm glad you got it resolved.
Hi,
I am a non-Flex person but was experimenting the AS3Crypto functionalities with Flex .swf embeded into the SAP backend. I am using the original library v1.3 in my flex project. The Symmetric algorithms provided are working fine, but while I was testing the RSA Asymmetric algorithm along with PEM files, its crashing. Please let me know if I am doing something wrong and how to correct it?
Below is my code used for testing the RSA encryption/decryption. It crashes during decryption saying: "TypeError: Error #1009: Cannot access a property or method of a null object reference."
Code I wrote for testing: