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

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

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