Annotation of quickfilters/www/encrypt.html, revision 1.2

1.1       axel.gru    1: <!DOCTYPE html>
                      2: <html lang="en">
                      3:   <head>
                      4:     <title>quickFilters</title>
                      5:     <!-- LOCAL HEAD.TXT -->
                      6:     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                      7:     <meta content="text/css" http-equiv="Content-Style-Type" />
                      8:     <link rel="stylesheet" href="css/project_nav.css?v=3" type="text/css">
                      9:     <link rel="stylesheet" href="css/myProjects.css?v=23" type="text/css">
1.2     ! axel.gru   10:     <script src="script/premium.js"> </script>
1.1       axel.gru   11: 
                     12:   </head>  
                     13: <body>
                     14: 
                     15:        <!-- ####################### BEGIN MAIN CONTENT ########################## -->
                     16:        <div id="main-content-no-nav">
                     17: 
                     18:       <table id="project-navigation">
                     19: 
                     20:         <tbody id="resources" class="project-navigations">
                     21:           <tr>
                     22:             <th scope="row"></th>
                     23:             <td class="navigation-list">
                     24:               <a href="index.html" class="first-item active">Home</a>
                     25:               <a href="installation.html">Installation</a>
                     26:               <a href="version.html">Version&nbsp;History</a>
                     27:               <a href="faq_tips.html">FAQ&nbsp;+&nbsp;Tips</a>
                     28:               <a href="donate.html">Support&nbsp;quickFilters!</a>
                     29:               <a href="screenshots.html">Screenshots</a>
                     30:               <a href="bugs.html">Bugs + Feature Requests</a>
                     31:               <a href="quickFilters.html">quickFilters</a>
                     32:               <a href="menuOnTop.html">Menu On Top</a>
                     33:             </td>
                     34:           </tr>
                     35:         </tbody>
                     36:       </table> 
                     37:        
                     38:                <div class="h2container">
                     39:                        <h2 class="page-header" style="vertical-align:top;">License Encryption</h2>
                     40:                </div>
                     41: 
                     42:                <style type="text/css">
                     43:                        spacer {
                     44:                                width:4em;
                     45:                        }
                     46:                        .formContainer {
                     47:                                vertical-align: top;
                     48:                        }
                     49:                        .formBox {
                     50:                                border: 1px solid gray;
                     51:                                border-top-right-radius: 1em;
                     52:                                display: inline-block;
                     53:                                margin-right: 1em;
                     54:                                padding: 1em;
                     55:                                position: relative;
                     56:                        }
                     57:                        .boxLabel {
                     58:                                background: rgba(230,230,230,1);
                     59:                                border: 1px solid gray;
                     60:                                left: 1em;
                     61:                                padding: 0.3em 1em;
                     62:                                top: -14px; 
                     63:                                position: absolute;
                     64:                                cursor: pointer;
                     65:                        }
                     66:                        .buttonPanel {
                     67:                                text-align: right;
                     68:                        }
                     69:                        .encryptionBox input[type=text] {
                     70:                                width: 70em;
                     71:                        }
                     72:                        #personData input[type=text] {
                     73:                                width: 20em;
                     74:                        }
                     75:                        .label {
                     76:                                display: inline-block;
                     77:                                min-width: 100px;
                     78:                        }
                     79:                        #maxDigits, #prefix, #keySize {
                     80:                                width: 3em !important;
                     81:                        }
                     82:                        #licenseKey {
                     83:                                font-size: 10pt;
                     84:                                font-family: Consolas, Courier, monospace;
                     85:                                width:95em;
                     86:                                height:4em;
                     87:                        }
                     88:                </style>
                     89: 
1.2     ! axel.gru   90:                <script type="text/javascript" src="script/encrypt.js?ver=1" charset="UTF-8">
1.1       axel.gru   91: 
                     92:                </script>
                     93: 
                     94:                <script type="text/javascript">
                     95: 
                     96:                // note: encryption keys have to be entered manually and are stored in a cookie
                     97:                //       as they are not for public consumption!
                     98:                const default_RSA_decryption= "1933eef03efab13188c903d69d293d4db35372620a0c26f23e1f805ba2d4e87",
                     99:                                default_RSA_modulus     = "1ef94b8a38bcfecc0dc49517045dd7362b3e8181be290a4dc298c807b052297",
                    100:                                default_RSA_keySize = "256",
                    101:                                default_RSA_maxDigits = "35",
                    102:                                domain_RSA_decryption   = "",
                    103:                                domain_RSA_modulus      = "",
                    104:                                domain_RSA_keySize = "512",
                    105:                                domain_RSA_maxDigits = "67";
                    106:                var             dummy = 0, key_type=0;
                    107:                                
                    108:                function onPageLoad() {
                    109:                        key_type = 1;
                    110:                        toggleEncryption();
                    111:                        var now = new Date(),
                    112:                                        expiryDate = addDate(now, 1,'Y'),
                    113:                                        txtDate = expiryDate.getFullYear() + '-' + twoDigit(expiryDate.getMonth()+1) + '-' + twoDigit(expiryDate.getDate());
                    114:                        document.getElementById('expiry').value = txtDate;      
                    115:                        checkCookies();
                    116:                }               
                    117: 
                    118:                function toggleEncryption() {
                    119:                        // change to domain encryption key
                    120:                        key_type = (key_type==1) ? 0 : 1;
                    121:                        switch (key_type) {
                    122:                                case 0:
1.2     ! axel.gru  123:                                        document.getElementById('prefix').value = 'QI-';
1.1       axel.gru  124:                                        document.getElementById('modulo').value = default_RSA_modulus;
                    125:                                        document.getElementById('decryptionKey').value = default_RSA_decryption;
                    126:                                        document.getElementById('keySize').value = default_RSA_keySize;
                    127:                                        document.getElementById('maxDigits').value = default_RSA_maxDigits;
                    128:                                        document.getElementById('emailLabel').textContent='Email:';
                    129:                                        break;
                    130:                                case 1:
1.2     ! axel.gru  131:                                        document.getElementById('prefix').value = 'QID-';
1.1       axel.gru  132:                                        document.getElementById('modulo').value = domain_RSA_modulus;
                    133:                                        document.getElementById('decryptionKey').value = domain_RSA_decryption;
                    134:                                        document.getElementById('keySize').value = domain_RSA_keySize;
                    135:                                        document.getElementById('maxDigits').value = domain_RSA_maxDigits;
                    136:                                        document.getElementById('emailLabel').textContent='* Domain:';
                    137:                                        break;
                    138:                        }
                    139:                        checkCookies(); // fill the correct decryption Key
                    140:                }
                    141: 
                    142:                /** removed from encryption script as these need to access form specific variables **/
                    143:                function createKey() {
                    144:                        var keySize = parseInt(document.getElementById('keySize').value, 10);
                    145:                        if (keySize) {
                    146:                                // encryptionExponent, decryptionExponent, modulus
                    147:                                var enc = document.getElementById('encryptionKey').value,
                    148:                                                dec = document.getElementById('decryptionKey').value,
                    149:                                                mod = document.getElementById('modulo').value,
                    150:                                                maxD = parseInt(document.getElementById('maxDigits').value);
                    151:                                setMaxDigits(maxD);
                    152:                                key = new RSAKeyPair(enc, dec, mod);
                    153:                                return key;
                    154:                        }
                    155:                        return null;
                    156:                }
                    157: 
                    158:                function encrypt(LicenseKey) {
                    159:                        var key = createKey(),
                    160:                                        t1 = new Date().getTime(),
                    161:                                        result = encryptedString(key, LicenseKey),
                    162:                                        t2 = new Date().getTime();
                    163:                        // txtMessages.value = "Done. Encryption took " + (t2 - t1) + " milliseconds.";
                    164:                        return result;
                    165:                }
                    166: 
                    167:                function encryptForm() {
                    168:                        var email = document.getElementById('email').value,
                    169:                                        txtDate = document.getElementById('expiry').value,
                    170:                                        productPrefix = document.getElementById('prefix').value,
                    171:                                        plainText = productPrefix + email + ':' + txtDate,
                    172:                                        encKey = document.getElementById('encryptionKey').value;
                    173:                        if (!encKey) {
                    174:                                alert('Please enter Encryption Key!');
                    175:                                return;
                    176:                        }
                    177:                        alert( 'Encrypting License Key: ' + plainText);
                    178:                        var license = plainText.replace('@','[at]') + ';' +  encrypt(plainText);
                    179:                        document.getElementById('licenseKey').value = license;
                    180:                        // store decryption key in cookie
                    181:                        switch (key_type) {
                    182:                                case 0:
                    183:                                        setCookie('simpleKey', encKey, 400); 
                    184:                                        break;
                    185:                                case 1:
                    186:                                        setCookie('domainKey', encKey, 400); 
                    187:                                        break;
                    188:                        }
                    189:                }
                    190: 
                    191:                function setCookie(cname, cvalue, exdays) {
                    192:                        var d = new Date();
                    193:                        d.setTime(d.getTime() + (exdays*24*60*60*1000));
                    194:                        var expires = "expires="+ d.toUTCString();
                    195:                        document.cookie = cname + "=" + cvalue + "; " + expires;
                    196:                }
                    197: 
                    198: 
                    199:                function getCookie(cname) {
                    200:                        var name = cname + "=";
                    201:                        var ca = document.cookie.split(';');
                    202:                        for(var i = 0; i < ca.length; i++) {
                    203:                                var c = ca[i];
                    204:                                while (c.charAt(0) == ' ') {
                    205:                                                c = c.substring(1);
                    206:                                }
                    207:                                if (c.indexOf(name) == 0) {
                    208:                                                return c.substring(name.length, c.length);
                    209:                                }
                    210:                        }
                    211:                        return "";
                    212:                }
                    213: 
                    214:                function checkCookies() {
                    215:                        var sKey = getCookie(key_type == 0 ? 'simpleKey' : 'domainKey');
                    216:                        if (sKey != "") {
                    217:                                document.getElementById('encryptionKey').value = sKey;
                    218:                        } 
                    219:                }
                    220:                </script>
                    221: 
                    222:                <p style="font-style: italic; border: 2px solid gray; padding: 0.7em; margin: 0.5em 0;">Disclaimer: this form uses a cookie to store the encryption key on your hard drive. 
                    223:                         If you use this page for encrypting a license key, you agree to the use of that cookie. 
                    224:                </p>
                    225:                <h3>Form Entry</h3>
                    226:                <form>
                    227:                        <div class = "formContainer">
                    228:                                <div class="formBox" id="personData">
                    229:                                        <span class="boxLabel">User Data</span><br>
                    230:                                        <span class="label">Prefix:</span> <input type="text" id="prefix"/><br>
                    231:                                        <span class="label" id="emailLabel">Email:</span> <input type="text" id="email"/><br>
                    232:                                        <span class="label">Expiry Date:</span> <input type="text" id="expiry"/>
                    233:                                        <div class="buttonPanel">
                    234:                                                <button type="button" id="btnEncrypt" onclick="encryptForm(); return false;">Encrypt!</button>
                    235:                                        </div>
                    236:                                </div>
                    237:                                <div class="encryptionBox formBox">
                    238:                                        <span class="boxLabel" id="infoLabel" onclick="toggleEncryption();">Encryption Info</span><br>
                    239:                                        <span class="label">Max Digits:</span><input type="text" id="maxDigits"/>
                    240:                                        <span class="label"  style="margin-left: 8em !important;">Key Size:</span><input type="text" id="keySize" />
                    241:                                        <br>
                    242:                                        <span class="label">Encryption Key:</span><input type="text" id="encryptionKey" />
                    243:                                        <br>
                    244:                                        <span class="label">Decryption Key:</span><input type="text" id="decryptionKey" />
                    245:                                        <br>
                    246:                                        <span class="label">Modulo:</span><input type="text" id="modulo" />
                    247:                                </div>
                    248:                        </div>
                    249:                        <h4>License Key</h4>
                    250:                        <p>
                    251:                                <textarea id="licenseKey" rows="4" cols="65" wrap="hard"></textarea>
                    252:                        </p>    
                    253:                                
                    254: 
                    255:                </form>
                    256:                </div>
                    257: 
                    258:        <script type="text/javascript">
                    259:                onPageLoad();
                    260:        </script>
                    261:        
                    262: 
                    263: </body>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>