Exemplo n.º 1
0
    /// <summary>
    /// 将DPX文件中的DIGIPASS信息存入数据库
    /// </summary>
    /// <param name="DPXFileNamePath">DPX文件路径</param>
    /// <param name="InitKey">DPX文件使用的KEY</param>
    /// <param name="Msg">返回的操作信息</param>
    /// <returns>操作是否成功</returns>
    public bool SaveDataFromDPX(string DPXFileNamePath, string InitKey, ref string Msg)
    {
        DatabaseAccess.BeginTransaction();
        AAL2Wrap dp = null;

        try
        {
            dp = new AAL2Wrap();
            int      appCount = 0, digiPassCount = 0;
            string[] AppliNames = dp.AAL2DPXInit(DPXFileNamePath, InitKey, ref appCount, ref digiPassCount);
            if (AppliNames == null)
            {
                Msg = string.Format("DPX Import Error:{0}", dp.getLastError());
                return(false);
            }
            AAL2Wrap.TDigipass[] AppliBlobs;

            AppliBlobs = new AAL2Wrap.TDigipass[appCount];
            for (int j = 0; j < (digiPassCount * appCount);)
            {
                AppliBlobs = dp.AAL2DPXGetTokenBlobs(ref appCount);
                for (int l = 0; l < appCount; l++)
                {
                    SaveDigiPass(AppliBlobs[l].SerialNumber, AppliBlobs[l].Type, AppliBlobs[l].Mode, AppliBlobs[l].bDpData);
                    j++;
                }
            }
            Msg = string.Format("AppCount:{0},DigiPassCount:{1} Saved", appCount, digiPassCount);
            return(true);
        }
        catch (SqlException ex)
        {
            Msg = ex.Message;
            DatabaseAccess.RollbackTransaction();
            return(false);
        }
        finally
        {
            dp.AAL2DPXClose();
            DatabaseAccess.CommitTransaction();
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// 将DPX文件中的DIGIPASS信息存入数据库
    /// </summary>
    /// <param name="DPXFileNamePath">DPX文件路径</param>
    /// <param name="InitKey">DPX文件使用的KEY</param>
    /// <param name="Msg">返回的操作信息</param>
    /// <returns>操作是否成功</returns>
    public bool SaveDataFromDPX(string DPXFileNamePath, string InitKey, ref string Msg)
    {
        DatabaseAccess.BeginTransaction();
        AAL2Wrap dp = null;
        try
        {
            dp = new AAL2Wrap();
            int appCount = 0, digiPassCount = 0;
            string[] AppliNames = dp.AAL2DPXInit(DPXFileNamePath, InitKey, ref appCount, ref digiPassCount);
            if (AppliNames == null)
            {
                Msg = string.Format("DPX Import Error:{0}", dp.getLastError());
                return false;
            }
            AAL2Wrap.TDigipass[] AppliBlobs;

            AppliBlobs = new AAL2Wrap.TDigipass[appCount];
            for (int j = 0; j < (digiPassCount * appCount); )
            {
                AppliBlobs = dp.AAL2DPXGetTokenBlobs(ref appCount);
                for (int l = 0; l < appCount; l++)
                {
                    SaveDigiPass(AppliBlobs[l].SerialNumber, AppliBlobs[l].Type, AppliBlobs[l].Mode, AppliBlobs[l].bDpData);
                    j++;
                }
            }
            Msg = string.Format("AppCount:{0},DigiPassCount:{1} Saved", appCount, digiPassCount);
            return true;
        }
        catch (SqlException ex)
        {
            Msg = ex.Message;
            DatabaseAccess.RollbackTransaction();
            return false;
        }
        finally
        {
            dp.AAL2DPXClose();
            DatabaseAccess.CommitTransaction();
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 验证动态密码 RESPONSE ONLY
    /// </summary>
    /// <param name="passWord">密码</param>
    /// <param name="SerialNumber">序列号</param>
    /// <param name="DigipassType">型号</param>
    /// <param name="Mode">模式</param>
    /// <param name="Data">数据</param>
    /// <param name="Msg">返回的消息</param>
    /// <returns>验证成功返回HOSTCODE否则返回FALSE</returns>
    public bool VerifyDigiPass(string passWord, string SerialNumber, string DigipassType, string Mode, byte[] Data, ref string Msg)
    {
        AAL2Wrap dp  = new AAL2Wrap();
        int      ret = 0;

        ret = dp.AAL2VerifyPassword(Data, passWord, null);
        Msg = dp.getLastError();
        //超出限时阀值,重置数据.
        if (ret == 202 || ret == 203)
        {
            dp.AAL2ResetTokenInfo(Data);
        }
        //保存数据到数据库
        SaveDigiPass(SerialNumber, DigipassType, Mode, Data);
        if (ret == 0)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemplo n.º 4
0
 /// <summary>
 /// 验证动态密码 RESPONSE ONLY
 /// </summary>
 /// <param name="passWord">密码</param>
 /// <param name="SerialNumber">序列号</param>
 /// <param name="DigipassType">型号</param>
 /// <param name="Mode">模式</param>
 /// <param name="Data">数据</param>
 /// <param name="Msg">返回的消息</param>
 /// <returns>验证成功返回HOSTCODE否则返回FALSE</returns>
 public bool VerifyDigiPass(string passWord,string SerialNumber, string DigipassType, string Mode, byte[] Data,ref string Msg)
 {
     AAL2Wrap dp = new AAL2Wrap();
     int ret = 0;
     ret = dp.AAL2VerifyPassword(Data, passWord, null);
     Msg = dp.getLastError();
     //超出限时阀值,重置数据.
     if (ret == 202 || ret == 203)
     {
         dp.AAL2ResetTokenInfo(Data);
     }
     //保存数据到数据库
     SaveDigiPass(SerialNumber, DigipassType, Mode, Data);
     if (ret == 0)
     {
         return true;
     }
     else
     {
         return false;
     }
 }