Skip to content
Snippets Groups Projects
Select Git revision
  • dailybuild_linux-x64
  • dailybuild_win32
  • master default protected
  • sqlite
  • rip_abstraction
  • dailybuild_macos-armv8
  • dd_file_lister_filanem_in_desc_color
  • mode7
  • dd_msg_reader_are_you_there_warning_improvement
  • c23-playing
  • syncterm-1.3
  • syncterm-1.2
  • test-build
  • hide_remote_connection_with_telgate
  • 638-can-t-control-c-during-a-file-search
  • add_body_to_pager_email
  • mingw32-build
  • cryptlib-3.4.7
  • ree/mastermind
  • new_user_dat
  • sbbs320d
  • syncterm-1.6
  • syncterm-1.5
  • syncterm-1.4
  • sbbs320b
  • syncterm-1.3
  • syncterm-1.2
  • syncterm-1.2rc6
  • syncterm-1.2rc5
  • push
  • syncterm-1.2rc4
  • syncterm-1.2rc2
  • syncterm-1.2rc1
  • sbbs319b
  • sbbs318b
  • goodbuild_linux-x64_Sep-01-2020
  • goodbuild_win32_Sep-01-2020
  • goodbuild_linux-x64_Aug-31-2020
  • goodbuild_win32_Aug-31-2020
  • goodbuild_win32_Aug-30-2020
40 results

hmac.js

Blame
  • hmac.js 1.21 KiB
    load("sha1.js");
    
    function hmac_sha1(key, message)
    {
    	function hex2bin(hexstr) {
    		var i;
    		var ret='';
    
    		if(hexstr.length % 2)
    			hexstr += '0';
    		for (i=0; i<hexstr.length; i+=2)
    			ret += ascii(parseInt(hexstr.substr(i, 2), 16));
    		return ret;
    	}
    
    	var okey = '';
    	var ikey = '';
    	var i;
    	var tmp;
    
    	if (key.length > 64)
    		key = hex2bin(Sha1.hash(key, false));
    	while (key.length < 64)
    		key += '\x00';
    
    	for (i=0; i<key.length; i++) {
    		tmp = ascii(key.substr(i, 1));
    		okey += ascii(tmp ^ 0x5c);
    		ikey += ascii(tmp ^ 0x36);
    	}
    
    	tmp = hex2bin(Sha1.hash(ikey + message, false));
    	return hex2bin(Sha1.hash(okey + tmp, false));
    }
    
    function hmac_md5(key, message)
    {
    	function hex2bin(hexstr) {
    		var i;
    		var ret='';
    
    		if(hexstr.length % 2)
    			hexstr += '0';
    		for (i=0; i<hexstr.length; i+=2)
    			ret += ascii(parseInt(hexstr.substr(i, 2), 16));
    		return ret;
    	}
    
    	var okey = '';
    	var ikey = '';
    	var i;
    	var tmp;
    
    	if (key.length > 64)
    		key = hex2bin(md5_calc(key, true));
    	while (key.length < 64)
    		key += '\x00';
    
    	for (i=0; i<key.length; i++) {
    		tmp = ascii(key.substr(i, 1));
    		okey += ascii(tmp ^ 0x5c);
    		ikey += ascii(tmp ^ 0x36);
    	}
    
    	tmp = hex2bin(md5_calc(ikey + message, true));
    	return hex2bin(md5_calc(okey + tmp, true));
    }