public static byte[] createSeed(byte[] masterKey)
 {
     byte[] array = BaseFunctions.secureRandom(32);
     byte[] array2;
     if (masterKey == null)
     {
         array2 = new byte[array.Length];
         array.CopyTo(array2, 0);
     }
     else
     {
         array2 = new byte[masterKey.Length + array.Length];
         masterKey.CopyTo(array2, 0);
         array.CopyTo(array2, masterKey.Length);
     }
     return(HashBaseFunction.createBinaryHash(array2));
 }
Example #2
0
 public static byte[] createSeed(byte[] masterKey)
 {
     byte[] buffer = BaseFunctions.secureRandom(32);
     byte[] buffer2;
     if (masterKey == null)
     {
         buffer2 = new byte[buffer.Length];
         buffer.CopyTo(buffer2, 0);
     }
     else
     {
         buffer2 = new byte[masterKey.Length + buffer.Length];
         masterKey.CopyTo(buffer2, 0);
         buffer.CopyTo(buffer2, masterKey.Length);
     }
     return(HashBaseFunction.createBinaryHash(buffer2));
 }
 public static byte[] createSerialNumber(string pin)
 {
     return(HashBaseFunction.createBinaryHash(DateTime.Now.ToString("yyyyMMddHHmmssfff") + pin));
 }
        public static byte[] createCryptKey(byte[] serialNumber, string pin)
        {
            string text = BaseFunctions.HexEncoder(serialNumber);

            return(HashBaseFunction.createBinaryHash(text.Substring(text.Length - 4, 4) + pin + text.Substring(0, 2)));
        }
Example #5
0
        public bool Export(string pin, string deviceType, string masterKey, TokenCryptoData tokenCryptoData, out string tokenBlob)
        {
            tokenBlob = null;
            bool result;

            try
            {
                if (pin == null || pin.Length < 4 || deviceType == null || deviceType.Length != 2)
                {
                    result = false;
                }
                else
                {
                    byte[] blob        = new byte[114];
                    byte[] cryptoBlock = new byte[48];
                    byte[] _oTPOffSet  = new byte[]
                    {
                        (byte)tokenCryptoData.TokenBaseParams.OTPOffSet
                    };
                    byte[] _oTPTotalDigits = new byte[]
                    {
                        (byte)tokenCryptoData.TokenBaseParams.OTPTotalDigits
                    };
                    byte[] _movingFactorType = new byte[]
                    {
                        (byte)tokenCryptoData.TokenBaseParams.MovingFactorType
                    };
                    byte[] _hOTPMovingFactorDrift = new byte[]
                    {
                        (byte)tokenCryptoData.TokenBaseParams.HOTPMovingFactorDrift
                    };
                    byte[] _dvType = new byte[]
                    {
                        (char.Parse(deviceType.Substring(0, 1)) <= '9' && char.Parse(deviceType.Substring(0, 1)) >= '0') ? byte.Parse(deviceType.Substring(0, 1)) : ((byte)char.Parse(deviceType.Substring(0, 1))),
                        (char.Parse(deviceType.Substring(1, 1)) <= '9' && char.Parse(deviceType.Substring(1, 1)) >= '0') ? byte.Parse(deviceType.Substring(1, 1)) : ((byte)char.Parse(deviceType.Substring(1, 1)))
                    };
                    byte[] _pin          = HashBaseFunction.createBinaryHash(BaseFunctions.convertStringToByteArray(pin));
                    byte[] _movingFactor = BitConverter.GetBytes(tokenCryptoData.CryptoData.MovingFactor);
                    byte[] _serialNumber = BaseFunctions.HexDecoder(tokenCryptoData.CryptoData.InternalSerialNumber);
                    byte[] _internalKey  = tokenCryptoData.GetTokenSeed(masterKey);
                    Buffer.BlockCopy(_internalKey, 0, cryptoBlock, 0, 32);
                    Buffer.BlockCopy(_movingFactor, 0, cryptoBlock, 32, 8);
                    Buffer.BlockCopy(_oTPTotalDigits, 0, cryptoBlock, 40, 1);
                    Buffer.BlockCopy(_oTPOffSet, 0, cryptoBlock, 41, 1);
                    Buffer.BlockCopy(_movingFactorType, 0, cryptoBlock, 42, 1);
                    Buffer.BlockCopy(_hOTPMovingFactorDrift, 0, cryptoBlock, 43, 1);
                    Buffer.BlockCopy(_dvType, 0, blob, 0, 2);
                    Buffer.BlockCopy(_pin, 0, blob, 2, 32);
                    Buffer.BlockCopy(_serialNumber, 0, blob, 34, 32);
                    Buffer.BlockCopy(HOTPCipher.encrypt(cryptoBlock, HOTPCipherInitialize.createCryptKey(_serialNumber, pin)), 0, blob, 66, 48);
                    tokenBlob = BaseFunctions.HexEncoder(blob);
                    result    = true;
                }
            }
            catch (Exception ex)
            {
                SAFLOGGER.Write(SAFLOGGER.LOGGEREventID.EXCEPTION, "SAFCORE", new string[]
                {
                    "http://sfexpand.SAFCore.BLOBStructInfSrv.softfinanca.com/",
                    Assembly.GetExecutingAssembly().FullName.ToString(),
                    ex.ToString()
                });
                tokenBlob = null;
                result    = false;
            }
            return(result);
        }
Example #6
0
        public static byte[] createCryptKey(byte[] serialNumber)
        {
            string _str = BaseFunctions.HexEncoder(serialNumber);

            return(HashBaseFunction.createBinaryHash(_str.Substring(serialNumber.Length - 4) + _str.Substring(0, 6)));
        }