The index.html
file containing JavaScript that makes use of the
RSA Encryption API functionality is listed below.
<!DOCTYPE html> <html manifest="manifest.appcache"> <head> <title>Hybrid Client RSA Encryption API usage example</title> <link rel="x-antenna-managed-webapp-descriptor" href="webapp-descriptor.xml" /> </head> <body> <p> <table border="0"> <tr> <td>Key Size:</td> <td><input type="text" name="keySize" id="keySize" size="38" maxlength="16" value="1024"/> </td> </tr> <tr> <td>Message:</td> <td><input type="text" name="dataString" id="dataString" size="38" maxlength="100" value="Some String...." /> </td> </tr> </table> </p> <p> <input type="button" onclick="generateKeys( window.launchbox.encryption.RSA.PEM_FORMAT );"value="Generate RSA Key Pair (PEM)" /> <input type="button" onclick="generateKeys( window.launchbox.encryption.RSA.DER_FORMAT);" value="Generate RSA Key Pair (DER)" /> <input type="button" onclick="encrypt();" value="Encrypt" /> <input type="button" onclick="decrypt();" value="Decrypt" /> <input type="button" onclick="encryptBinary();" value="EncryptBinary" /> <input type="button" onclick="decryptBinary();" value="DecryptBinary" /> </p> Public Key: <div id="publicKey"></div><hr/> Private Key: <div id="privateKey"></div><hr/> Encrypted: <div id="encrypted"></div><hr/> Decrypted: <div id="decrypted"></div><hr/> EncryptedBinary: <div id="encryptedBinary"></div><hr/> DecryptedBinary: <div id="decryptedBinary"></div><hr/> <script> function generateKeys(format) { var keySize = parseInt(document.getElementById('keySize').value); window.launchbox.encryption.RSA.generateKeys(keySize, format, { onSuccess: function (args) { console.log('RSA gen success: ' + args); console.log('public key: ' + args.publicKey); console.log('private key: ' + args.privateKey); document.getElementById('publicKey').innerHTML = args.publicKey; document.getElementById('privateKey').innerHTML = args.privateKey; }, onFailure: function (error) { console.log('RSA gen failed: ' + error.code); document.getElementById('publicKey').innerHTML = error.code; document.getElementById('privateKey').innerHTML = error.code; } }); } function encrypt() { var message = document.getElementById('dataString').value; var publicKey = document.getElementById('publicKey').innerHTML; window.launchbox.encryption.RSA.encrypt(message, publicKey, { onSuccess: function (encryptedString) { console.log('RSA enc success: ' + encryptedString); document.getElementById('encrypted').innerHTML = encryptedString; }, onFailure: function (error) { console.log('RSA enc failed: ' + error.code); document.getElementById('encrypted').innerHTML = error.code; } }); } function encryptBinary() { var message = document.getElementById('dataString').value; var publicKey = document.getElementById('publicKey').innerHTML; window.launchbox.encryption.RSA.encryptBinary(message, publicKey, { onSuccess: function (encryptedString) { console.log('RSA binary enc success: ' + encryptedString); document.getElementById('encryptedBinary').innerHTML = encryptedString; }, onFailure: function (error) { console.log('RSA binary enc failed: ' + error.code); document.getElementById('encryptedBinary').innerHTML = error.code; } }); } function decrypt() { var message = document.getElementById('encrypted').innerHTML; var privateKey = document.getElementById('privateKey').innerHTML; window.launchbox.encryption.RSA.decrypt(message, privateKey, { onSuccess: function (decryptedString) { console.log('RSA dec success: ' + decryptedString); document.getElementById('decrypted').innerHTML = decryptedString; }, onFailure: function (error) { console.log('RSA dec failed: ' + error.code); document.getElementById('decrypted').innerHTML = error.code; } }); } function decryptBinary() { var message = document.getElementById('encryptedBinary').innerHTML; var privateKey = document.getElementById('privateKey').innerHTML; window.launchbox.encryption.RSA.decryptBinary(message, privateKey, { onSuccess: function (decryptedString) { console.log('RSA binary dec success: ' + decryptedString); document.getElementById('decryptedBinary').innerHTML = decryptedString; }, onFailure: function (error) { console.log('RSA binary dec failed: ' + error.code); document.getElementById('decryptedBinary').innerHTML = error.code; } }); } </script> </body> </html>
The contents of the cache manifest file called manifest.appcache
for
this application are listed below:
CACHE MANIFEST CACHE: index.html NETWORK: *
The webapp-descriptor.xml
file for this application is defined in the
following way:
<?xml version="1.0" encoding="UTF-8"?> <webapp-descriptor xmlns="http://www.pega.com/application-hosting/ web-app-descriptor/2.0"> <id>com.pega.sample.rsaencryption</id> <version>1.0.0</version> <name>RSA Encryption API usage example</name> </webapp-descriptor>