﻿// JScript File

var CryptoexternalScriptLoaded = false;
var key;

function Crypto (MaxDigits, RSA_E , RSA_M, challenge, usernameDom, passwordDom, chkpasswordDom , btn, forceClientSideValidation)
{
    this.MaxDigits = MaxDigits;
    this.RSA_E = RSA_E;
    this.RSA_M = RSA_M;
    this.challenge = challenge;
    this.usernameDom = usernameDom;
    this.passwordDom = passwordDom;
    this.chkpasswordDom = chkpasswordDom;
    this.btn = btn;
    this.forceClientSideValidation = forceClientSideValidation;
}

Crypto.prototype.initKey = function()
{
    setMaxDigits(131);
	key = new RSAKeyPair(this.RSA_E , "", this.RSA_M);
}

Crypto.prototype.cmdEncrypt = function ()
{
    this.initKey();
    var encvalue = '';
    //with (document.form1) 
	    {
            var first = this.base64encode(document.getElementById(this.usernameDom).value);
            var second = this.base64encode(document.getElementById(this.passwordDom).value)
            if (this.chkpasswordDom == null)
                {
        		    //posx.value = encryptedString(key, this.challenge + "\\" + first + "\\" + second );
        		    encvalue = encryptedString(key, this.challenge + "\\" + first + "\\" + second );;
                }
                else
                {
                    var third = this.base64encode(document.getElementById(this.chkpasswordDom).value)
        		    //posx.value = encryptedString(key, this.challenge + "\\" + first + "\\" + second + "\\" + third);
        		    encvalue = encryptedString(key, this.challenge + "\\" + first + "\\" + second + "\\" + third);
                }               
		    //challenge.value = this.challenge
    		//posy.value = "";
            document.getElementById(this.usernameDom).value = "";
            document.getElementById(this.passwordDom).value = "";
            if (this.chkpasswordDom != null)
            {
                document.getElementById(this.chkpasswordDom).value = "";
            }
        }
        return encvalue ;
}
		
Crypto.prototype.base64encode= function (str) 
    {
	    var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
		var base64DecodeChars = new Array(
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
		52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
		-1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
		15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
		-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
		41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
		var out, i, len;
		var c1, c2, c3;

        len = str.length;
		i = 0;
		out = "";
		while(i < len) 
		    {
			    c1 = str.charCodeAt(i++) & 0xff;
			    if(i == len)
			        {
				        out += base64EncodeChars.charAt(c1 >> 2);
				        out += base64EncodeChars.charAt((c1 & 0x3) << 4);
				        out += "==";
				        break;
			        }
                c2 = str.charCodeAt(i++);
			    if(i == len)
			        {
				        out += base64EncodeChars.charAt(c1 >> 2);
				        out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        				out += base64EncodeChars.charAt((c2 & 0xF) << 2);
				        out += "=";
				        break;
			        }
			    c3 = str.charCodeAt(i++);
			    out += base64EncodeChars.charAt(c1 >> 2);
			    out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
			    out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
			    out += base64EncodeChars.charAt(c3 & 0x3F);
			}
        return out;
}

CryptoexternalScriptLoaded = true;


