public OperationResult ResetChallengeRequest(string tokenInternalID) { OperationResult result; try { TokenCryptoData tokenCryptoData = new TokensDAO().loadTokenCryptoData(tokenInternalID); if (tokenCryptoData.ID == null) { result = OperationResult.Error; } else { result = new TokensChallengeRequestDAO().resetChallengeRequest(tokenCryptoData.ID); } } catch { result = OperationResult.Error; } return(result); }
public OperationResult ChallengeRequest(string tokenInternalID, string dataEntropy, out string newChallenge) { TokenCryptoData _tkCryptoData = new TokensDAO().loadTokenCryptoData(tokenInternalID); OperationResult result; if (_tkCryptoData.ID == null) { newChallenge = null; result = OperationResult.Error; } else { if (_tkCryptoData.TokenBaseParams.MovingFactorType != TokenMovingFactorType.TransactionAuthenticationNumber && _tkCryptoData.TokenBaseParams.MovingFactorType != TokenMovingFactorType.EventBase && _tkCryptoData.TokenBaseParams.SeedType == TokenSeedType.ActivactionKey) { throw new Exception("Function not implemented for this type of token!!"); } string currentChallenge = (string)new TokensChallengeRequestDAO().loadChallengeRequest(tokenInternalID); if (currentChallenge != null) { newChallenge = this.formatChallenge(currentChallenge.Trim()); result = OperationResult.Success; } else { int _idx = 0; int iRequest = int.Parse(SAFConfiguration.readParameterExternal("TANRequestPositions")); int iDigitsByPos = int.Parse(SAFConfiguration.readParameterExternal("TANDigitsByPosition")); int[] _array = new int[iRequest]; string _lastRequest = string.Empty; DateTime _lastRequestValidThru = (_tkCryptoData.TokenBaseParams.ChallengeRequestValidUntil > 0) ? DateTime.Now.AddSeconds((double)_tkCryptoData.TokenBaseParams.ChallengeRequestValidUntil) : DateTime.MaxValue; while (_idx != iRequest) { bool _flag; do { _flag = false; Random rndArray = new Random(); _array[_idx] = rndArray.Next(0, _tkCryptoData.TokenBaseParams.OTPValidationWindow); for (int _idx2 = 0; _idx2 < _idx; _idx2++) { if (_array[_idx] == _array[_idx2]) { _flag = true; break; } } } while (_flag); Random rndPos = new Random(); string text = _lastRequest; _lastRequest = string.Concat(new string[] { text, _array[_idx].ToString().Trim(), ";", rndPos.Next(0, _tkCryptoData.TokenBaseParams.OTPTotalDigits).ToString().Trim(), "|" }); _idx++; } newChallenge = this.formatChallenge(_lastRequest.Substring(0, _lastRequest.Length - 1).Trim()); result = new TokensChallengeRequestDAO().persistChallengeRequest(tokenInternalID, _lastRequest.Substring(0, _lastRequest.Length - 1).Trim(), _lastRequestValidThru); } } return result; }
public OperationResult ResetChallengeRequest(string tokenInternalID) { OperationResult result; try { TokenCryptoData tokenCryptoData = new TokensDAO().loadTokenCryptoData(tokenInternalID); if (tokenCryptoData.ID == null) { result = OperationResult.Error; } else { result = new TokensChallengeRequestDAO().resetChallengeRequest(tokenCryptoData.ID); } } catch { result = OperationResult.Error; } return result; }