﻿/*******************************************************
Rainbow technology IKey token web-base authentication
Version 1.0
Author: Farrokh Rezazadeh
Ordered by Gam Electronic
*******************************************************/

var IKEY_ROOT_DIR					= 0x0000;
var IKEY_7816_ROOT_DIR				= 0x3F00;
var IKEY_AUTO_ID_BASE				= 0xF0000;
var IKEY_INDEX_FILE					= 0xFFFF;
var IKEY_TOKEN_NAME_FILE			= 0xFFFE;

var IKEY_SYS_TYPE1					= 0x01;
var IKEY_APP_NAME_SIZE				= 0x20;
var IKEY_FRIENDLY_NAME_SIZE			= 0x20;

var IKEY_DIR_BY_ID					= 0x00000100;
var IKEY_DIR_BY_LONG_ID				= 0x00000200;
var IKEY_DIR_BY_NAME				= 0x00000300;
var IKEY_DIR_BY_GUID				= 0x00000400;
var IKEY_DIR_BY_GUID_STR			= 0x00000500;
var IKEY_DIR_BY_MASK				= 0x00000F00;

var IKEY_FILETYPE_UNUSED			= 0x00;
var IKEY_FILETYPE_DIR				= 0x01;
var IKEY_FILETYPE_DATA				= 0x02;
var IKEY_FILETYPE_COUNTER			= 0x03;
var IKEY_FILETYPE_KEY				= 0x04;
var IKEY_FILETYPE_UNKNOWN			= 0xFF;

var IKEY_ACCESS_ANYONE				= 0x00;
var IKEY_ACCESS_USER				= 0x01;
var IKEY_ACCESS_OFFICER				= 0x02;
var IKEY_ACCESS_NONE				= 0x07;

var IKEY_ACCESS_READ				= 0x01;
var IKEY_ACCESS_WRITE				= 0x02;
var IKEY_ACCESS_CRYPT				= 0x04;

var IKEY_CAPS_MD5HMAC				= 0x00000001;
var IKEY_CAPS_MD5XOR				= 0x00000002;
var IKEY_CAPS_MD5CHAP				= 0x00000004;
var IKEY_CAPS_DES					= 0x00000008;

var IKEY_OPEN_NEXT					= 0x00000000;
var IKEY_OPEN_FIRST					= 0x00000001;
var IKEY_OPEN_CURRENT				= 0x00000002;
var IKEY_OPEN_SPECIFIC				= 0x00000003;
var IKEY_OPEN_SC_HANDLE				= 0x00000004;
var IKEY_OPEN_MASK					= 0x00000007;
var IKEY_OPEN_BY_NAME				= 0x00000100;
var IKEY_OPEN_BY_GUID				= 0x00000200;
var IKEY_OPEN_BY_GUID_STR			= 0x00000300;
var IKEY_OPEN_BY_MASK				= 0x00000F00;

var IKEY_DIR_FROM_MF				= 0x00000000;
var IKEY_DIR_FROM_CUR_DF			= 0x00000010;
var IKEY_DIR_TO_PARENT				= 0x00000020;

var IKEY_FILE_GRANT					= 0x00000000;
var IKEY_FILE_READ					= 0x00000010;
var IKEY_FILE_WRITE					= 0x00000020;
var IKEY_FILE_CRYPT					= 0x00000040;

var IKEY_CREATE_AUTO_ID				= 0x00010000;

var IKEY_DELETE_RECURSIVE			= 0x00010000;

var IKEY_VERIFY_USER_PIN			= 0x00;
var IKEY_VERIFY_SO_PIN				= 0x01;
var IKEY_VERIFY_NO_HASH				= 0x00001000;

var IKEY_CHANGE_USER_PIN			= 0x00000000;
var IKEY_UNBLOCK_USER_PIN			= 0x00000001;
var IKEY_CHANGE_SO_PIN				= 0x00000002;
var IKEY_CHANGE_MASK				= 0x0000000F;
var IKEY_CHANGE_NO_HASH				= 0x00001000;

var IKEY_SCOPE_MF					= 0x00000000;

var IKEY_HASH_MD5_XOR				= 0x00;
var IKEY_HASH_MD5_HMAC				= 0x01;
var IKEY_HASH_MD5_CHAP				= 0x02;
var IKEY_HASH_TYPE_MASK				= 0xFF;

var IKEY_PROP_CAPABILITIES			= 0x00;
var IKEY_PROP_MEM_SIZE				= 0x01;
var IKEY_PROP_ACCESSINFO			= 0x03;
var IKEY_PROP_APP_NAME				= 0x04;
var IKEY_PROP_APP_GUID				= 0x05;
var IKEY_PROP_VERSIONINFO			= 0x06;
var IKEY_PROP_SERNUM				= 0x07;
var IKEY_PROP_LED_ON				= 0x08;
var IKEY_PROP_LED_OFF				= 0x09;
var IKEY_PROP_FRIENDLY_NAME			= 0x0B;
var IKEY_PROP_SYSINFO				= 0x0C;

var IKEYS_PROP_VER_DEFAULT			= 0x00;
var IKEYS_PROP_VER_DRIVER			= 0x01;
var IKEYS_PROP_VER_MAJOR			= 0x02;
var IKEYS_PROP_VER_MINOR			= 0x03;
var IKEYS_PROP_VER_PRODCODE			= 0x04;
var IKEYS_PROP_VER_CONFIG			= 0x05;

var IKEYS_PROP_SYS_DEFAULT			= 0x00;
var IKEYS_PROP_SYS_FLAGS			= 0x01;
var IKEYS_PROP_SYS_FREESPACE		= 0x02;
var IKEYS_PROP_SYS_FILESYSTYPE		= 0x05;
var IKEYS_PROP_SYS_MAXDIRLEVEL		= 0x06;

var IKEYS_PROP_ACCESS_DEFAULT		= 0x00;
var IKEYS_PROP_ACCESS_PINRETRIES	= 0x01;
var IKEYS_PROP_ACCESS_PINCOUNTER	= 0x02;
var IKEYS_PROP_ACCESS_FLAGS			= 0x03;
var IKEYS_PROP_ACCESS_CREATE		= 0x05;
var IKEYS_PROP_ACCESS_DELETE		= 0x06;

var IKEYS_PROP_FILE_DEFAULT			= 0x00;
var IKEYS_PROP_FILE_ID				= 0x01;
var IKEYS_PROP_FILE_FLAGS			= 0x02;
var IKEYS_PROP_FILE_FILESIZE		= 0x03;
var IKEYS_PROP_FILETYPE				= 0x04;
var IKEYS_PROP_FILE_READACCESS		= 0x05;
var IKEYS_PROP_FILE_WRITEACCESS		= 0x06;
var IKEYS_PROP_FILE_CRYPTACCESS		= 0x07;
var IKEYS_PROP_FILE_GRANTEDACCESS	= 0x14;

var IKEYS_FILE_ASCII				= 0x00;
var IKEYS_FILE_BINARY				= 0x01;




/*******************************************************
CONVERSIONS
*******************************************************/

function decimal(dec)
{
	this.dec=dec;
	this.toBinary=function() { return this.dec.toString(2); }
	this.toHex=function() { return this.dec.toString(16).toUpperCase(); }
	this.toOctal=function() { return this.dec.toString(8); }
}

function binary(bin)
{
	this.bin=bin;
	this.toDecimal=function() { return parseInt(this.bin, 2); }
	this.toHex=function() { return this.toDecimal().toString(16).toUpperCase(); }
	this.toOctal=function() { return this.toDecimal().toString(8); }
}

function hex(hex)
{
	this.hex=hex;
	this.toDecimal=function() { return parseInt(this.hex, 16); }
	this.toBinary=function() { return this.toDecimal().toString(2); }
	this.toOctal=function() { return this.toDecimal().toString(8); }
}

function octal(oct)
{
	this.oct=oct;
	this.toDecimal=function() { return parseInt(this.oct, 8); }
	this.toBinary=function() { return this.toDecimal().toString(2); }
	this.toHex=function() { return this.toDecimal().toString(16).toUpperCase(); }
}
