if(typeof Ektron == "undefined") window.Ektron = {}; if(typeof Ektron.PrivateData == "undefined") { Ektron.PrivateData = { LoadEncryptedData : function(){ Ektron.PrivateData.GetSecurityKey(function(){}); $ektron(".EktronEncryptedData").each(function(index){ Ektron.PrivateData.LoadEncryptedDataCallback(($ektron(".EktronEncryptedData"))[index]); }); }, LoadEncryptedDataCallback : function(item){ var html = item.innerHTML; if(html.substring(0,4) == "key:"){ var keyValue = html.substring(4); Ektron.PrivateData.Log(keyValue); Ektron.PrivateData.Get(keyValue, function(data){ var decData = data; Ektron.PrivateData.Log(data); item.innerHTML = decData; $ektron(item).removeClass("EktronEncryptedData"); }); } }, Get : function(key, callback) { Ektron.PrivateData.Log("Ektron.PrivateData.Get(" + key + ", " + callback + ")\n"); $ektron.post("/WorkArea/PrivateData/PrivateData.ashx?action=get&key="+key, {}, function(data){ if(Ektron.PrivateData.SecurityKey == ""){ var dataToProcess = data; Ektron.PrivateData.GetSecurityKey(function(){ callback(Ektron.PrivateData.Decrypt(Ektron.Crypto.Base64.decode(dataToProcess))); }); }else{ callback(Ektron.PrivateData.Decrypt(Ektron.Crypto.Base64.decode(data))); } }); }, Set : function(key, data, callback) { Ektron.PrivateData.GetSecurityKey(function(){ Ektron.PrivateData.Log("Ektron.PrivateData.Set(" + key + ", " + data + ", " + callback + ")\n"); var encdata = Ektron.PrivateData.Encrypt(data); $ektron.post("/WorkArea/PrivateData/PrivateData.ashx?action=set&key="+key, encdata, callback); }); }, Encrypt : function(data) { Ektron.PrivateData.Log("Ektron.PrivateData.Encrypt(" + data + ")\n"); Ektron.Crypto.SetEncryptionAlgorithm(Ektron.Crypto.EncryptionAlgorithms.AES256); if(Ektron.PrivateData.SecurityKey == ""){ Ektron.PrivateData.Log("Security Key Needed"); Ektron.PrivateData.GetSecurityKey(); return ""; }else{ return Ektron.Crypto.Convert.ByteArrayToString(Ektron.Crypto.EncryptData(data, Ektron.Crypto.Convert.StringToByteArray(Ektron.PrivateData.SecurityKey))); } }, Decrypt : function(data) { Ektron.Crypto.SetEncryptionAlgorithm(Ektron.Crypto.EncryptionAlgorithms.AES256); Ektron.PrivateData.Log("Ektron.PrivateData.Decrypt(" + data + ")\n"); if(Ektron.PrivateData.SecurityKey == ""){ Ektron.PrivateData.Log("Security Key Needed"); Ektron.PrivateData.GetSecurityKey(); return ""; }else{ Ektron.PrivateData.Log("Key Check : " + Ektron.PrivateData.SecurityKey); return Ektron.Crypto.DecryptData(Ektron.Crypto.Convert.StringToByteArray(data), Ektron.Crypto.Convert.StringToByteArray(Ektron.PrivateData.SecurityKey)); } }, SetLoginInfo : function(username, password) { Ektron.Crypto.SetCryptographicHashAlgorithm(Ektron.Crypto.CryptographicHashAlgorithms.SHA512); Ektron.PrivateData.SecurityKey = Ektron.Crypto.Hash(password); Ektron.PrivateData.GetBrowserInfo(); Ektron.PrivateData.CreateStoredValueBox(); Ektron.PrivateData.SaveValue(); Ektron.PrivateData.DeleteStoredValueBox(); }, ClearLoginInfo : function(){ Ektron.PrivateData.SecurityKey = ""; Ektron.PrivateData.GetBrowserInfo(); Ektron.PrivateData.CreateStoredValueBox(); Ektron.PrivateData.SaveValue(); Ektron.PrivateData.DeleteStoredValueBox(); }, SaveValue : function(){ if( Ektron.PrivateData.ValidBroswer ){ Ektron.Cache.Set(Ektron.PrivateData.SecurityKey, Ektron.PrivateData.SaveCallback); }else{ Ektron.PrivateData.Log('Warning: Your browser is not compatable with Ektron Secure Data'); } }, SaveCallback : function(){ }, LoadValue : function(secondCallback){ if( Ektron.PrivateData.ValidBroswer){ Ektron.Cache.Get(Ektron.PrivateData.LoadCallback, secondCallback); }else{ Ektron.PrivateData.Log('Warning: Your browser is not compatable with Ektron Secure Data'); } }, LoadCallback : function(data, secondCallback){ Ektron.PrivateData.SecurityKey = data; Ektron.PrivateData.Log('Load Callback : ' + Ektron.PrivateData.SecurityKey); if(typeof secondCallback != "undefined"){ secondCallback(); } }, GetSecurityKey : function(callback){ if(Ektron.PrivateData.SecurityKey == ""){ Ektron.PrivateData.CreateStoredValueBox(); Ektron.PrivateData.GetBrowserInfo(); if(Ektron.PrivateData.ValidBroswer == true){ Ektron.PrivateData.Log("Browser Type Id: " + Ektron.PrivateData.BrowserType + " Version OK"); Ektron.PrivateData.LoadValue(callback); }else{ Ektron.PrivateData.Log("Browser Type Id: " + Ektron.PrivateData.BrowserType + " Unsecure Version"); //show login here } }else{ callback(); } }, CreateStoredValueBox : function(){ var hashBox = $ektron(".ektronPrivateDataTempStorage"); if(hashBox.length == 0){ var hashBox = document.createElement("div"); hashBox.className = "ektronPrivateDataTempStorage"; hashBox.Id = "ektronPrivateDataTempStorage"; $ektron(hashBox).html(""); $ektron(hashBox).appendTo("body"); }else{ $ektron("#ektronPrivateDataTempStorageText").val( Ektron.PrivateData.SecurityKey ); } Ektron.PrivateData.Log("Text Box Created"); }, DeleteStoredValueBox : function(){ $ektron("#ektronPrivateDataTempStorageText").val(""); switch(Ektron.PrivateData.BrowserType){ case Ektron.PrivateData.BrowserTypes.MSIE: break; case Ektron.PrivateData.BrowserTypes.Firefox: $ektron(".ektronPrivateDataTempStorage").remove(); break; case Ektron.PrivateData.BrowserTypes.Safari: $ektron(".ektronPrivateDataTempStorage").remove(); break; default: Ektron.PrivateData.Log('Warning: Your browser is not compatable with Ektron Secure Data'); break; } Ektron.PrivateData.Log("Text Box Removed"); }, GetBrowserInfo : function(){ if($ektron.browseris.msie){ Ektron.PrivateData.BrowserType = Ektron.PrivateData.BrowserTypes.MSIE; if($ektron.browseris.version == "7.0"){ Ektron.PrivateData.ValidBroswer = true; } }else if($ektron.browseris.safari){ Ektron.PrivateData.BrowserType = Ektron.PrivateData.BrowserTypes.Safari; if($ektron.browseris.version > 312){ Ektron.PrivateData.ValidBroswer = true; } }else if($ektron.browseris.mozilla){ Ektron.PrivateData.BrowserType = Ektron.PrivateData.BrowserTypes.Firefox; if(parseFloat($ektron.browseris.version.substring(0,3)) >= 1.9){ Ektron.PrivateData.ValidBroswer = true; } } }, Log : function(text) { if(Ektron.PrivateData.Debug){ if(typeof console != "undefined") { console.log(text); } else { alert(text); } } } }; Ektron.PrivateData.Debug = false; Ektron.PrivateData.BrowserTypes = { MSIE : 1, Safari: 2, Firefox : 3, Other: 4}; Ektron.PrivateData.BrowserType = Ektron.PrivateData.BrowserTypes.Other; Ektron.PrivateData.ValidBroswerAccepted = false; Ektron.PrivateData.KeyStrength = "SHA-512"; Ektron.PrivateData.SecurityKey = ""; Ektron.PrivateData.GetSecurityKey(); } if (typeof Sys != "undefined") { Sys.Application.notifyScriptLoaded(); }