[SPIP] ~version 3.0.7-->3.0.10
[ptitvelo/web/www.git] / www / prive / javascript / login-sha-min.js
1 /**
2 * Fichiers sha256.js et login.js concaténés et minifiés
3 */
4 var chrsz=8;
5 function safe_add(x,y){
6 var lsw=(x&0xFFFF)+(y&0xFFFF);
7 var msw=(x>>16)+(y>>16)+(lsw>>16);
8 return(msw<<16)|(lsw&0xFFFF);
9 }
10 function S(X,n){return(X>>>n)|(X<<(32-n));}
11 function R(X,n){return(X>>>n);}
12 function Ch(x,y,z){return((x&y)^((~x)&z));}
13 function Maj(x,y,z){return((x&y)^(x&z)^(y&z));}
14 function Sigma0256(x){return(S(x,2)^S(x,13)^S(x,22));}
15 function Sigma1256(x){return(S(x,6)^S(x,11)^S(x,25));}
16 function Gamma0256(x){return(S(x,7)^S(x,18)^R(x,3));}
17 function Gamma1256(x){return(S(x,17)^S(x,19)^R(x,10));}
18 function core_sha256(m,l){
19 var K=new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2);
20 var HASH=new Array(0x6A09E667,0xBB67AE85,0x3C6EF372,0xA54FF53A,0x510E527F,0x9B05688C,0x1F83D9AB,0x5BE0CD19);
21 var W=new Array(64);
22 var a,b,c,d,e,f,g,h,i,j;
23 var T1,T2;
24 m[l>>5]|=0x80<<(24-l%32);
25 m[((l+32>>9)<<4)+15]=l;
26 for(var i=0;i<m.length;i+=16){
27 a=HASH[0];b=HASH[1];c=HASH[2];d=HASH[3];e=HASH[4];f=HASH[5];g=HASH[6];h=HASH[7];
28 for(var j=0;j<64;j++){
29 if(j<16)W[j]=m[j+i];
30 else W[j]=safe_add(safe_add(safe_add(Gamma1256(W[j-2]),W[j-7]),Gamma0256(W[j-15])),W[j-16]);
31 T1=safe_add(safe_add(safe_add(safe_add(h,Sigma1256(e)),Ch(e,f,g)),K[j]),W[j]);
32 T2=safe_add(Sigma0256(a),Maj(a,b,c));
33 h=g;g=f;f=e;e=safe_add(d,T1);d=c;c=b;b=a;a=safe_add(T1,T2);
34 }
35 HASH[0]=safe_add(a,HASH[0]);HASH[1]=safe_add(b,HASH[1]);HASH[2]=safe_add(c,HASH[2]);HASH[3]=safe_add(d,HASH[3]);HASH[4]=safe_add(e,HASH[4]);HASH[5]=safe_add(f,HASH[5]);HASH[6]=safe_add(g,HASH[6]);HASH[7]=safe_add(h,HASH[7]);
36 }
37 return HASH;
38 }
39 function str2binb(str){
40 var bin=Array();
41 var i;
42 chrsz=8;
43 for(i=0;i<str.length;i++)
44 if(str.charCodeAt(i)>0x7F)
45 chrsz=16;
46 var mask=(1<<chrsz)-1;
47 for(i=0;i<str.length*chrsz;i+=chrsz)
48 bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(24-i%32);
49 return bin;
50 }
51 function binb2hex(binarray){
52 var hexcase=0;
53 var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";
54 var str="";
55 for(var i=0;i<binarray.length*4;i++){
56 str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);
57 }
58 return str;
59 }
60 function hex_sha256(s){return binb2hex(core_sha256(str2binb(s),s.length*chrsz));}
61 function sha256_self_test(){
62 return hex_sha256("message digest")=="f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650";
63 }
64 function affiche_login_secure(){
65 if(alea_actuel)
66 jQuery('#pass_securise').show();
67 else
68 jQuery('#pass_securise').hide();
69 }
70 function informe_auteur(c){
71 informe_auteur_en_cours=false;
72 eval('c = '+c);
73 if(c){
74 alea_actuel=c.alea_actuel;
75 alea_futur=c.alea_futur;
76 jQuery('input#session_remember:not(.modifie)')
77 .attr('checked',(c.cnx=='1')?'checked':'');
78 }else{
79 alea_actuel='';
80 }
81 if(c.logo)
82 jQuery('#spip_logo_auteur').html(c.logo);
83 else
84 jQuery('#spip_logo_auteur').html('');
85 affiche_login_secure();
86 }
87 function calcule_hash_pass(pass){
88 if((alea_actuel||alea_futur)
89 &&!pass.match(/^\{([0-9a-f]{32});([0-9a-f]{32})\}$/i)
90 &&!pass.match(/^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$/i)
91 &&sha256_self_test()
92 ){
93 var hash="";
94 hash=hex_sha256(alea_actuel+pass);
95 hash=hash+';'+hex_sha256(alea_futur+pass);
96 if(window.calcMD5){
97 hash=hash+';'+calcMD5(alea_actuel+pass);
98 hash=hash+';'+calcMD5(alea_futur+pass);
99 }
100 jQuery('input[name=password]').attr('value','{'+hash+'}');
101 }
102 }
103 function actualise_auteur(){
104 if(login!=jQuery('#var_login').attr('value')){
105 informe_auteur_en_cours=true;
106 login=jQuery('#var_login').attr('value');
107 var currentTime=new Date();
108 jQuery.get(page_auteur,{var_login:login,var_compteur:currentTime.getTime()},informe_auteur);
109 }
110 }
111 function login_submit(){
112 actualise_auteur();
113 var inputpass=jQuery('input[name=password]');
114 pass=inputpass.attr('value');
115 if(pass){
116 if(informe_auteur_en_cours&&(attente_informe<5)){
117 attente_informe++;
118 jQuery('form#formulaire_login').animeajax().find('p.boutons input').before('.');
119 setTimeout(function(){
120 jQuery('form#formulaire_login').submit();
121 },1000);
122 return false;
123 }
124 if(alea_actuel||alea_futur){
125 inputpass.after('<input name="password" type="hidden" value="" />').attr('value',pass);
126 inputpass.attr('name','nothing').attr('value','');
127 calcule_hash_pass(pass);
128 }
129 else if(informe_auteur_en_cours)
130 jQuery('input[name=password]').attr('value','');
131 }
132 }