パスワードキーボード

4095 ワード

キーの初期化と使用手順:
1.PINpadパラメータPinpad_を設定するSetPPType()
2.Pinpadが正常Pinpadに接続されているかどうかを検査する接続()またはPinpad_connect2()
3.index 0,Pinpad_へのマスターキーのダウンロードLoadMasterKey()
4.0番のプライマリ・キーが存在するかどうかを検出し、Pinpad_Checkkey(0);
5.0番マスターキーを選択し、ユーザーパスワードPinpad_を入力GetPin();
QMFプロジェクトでは、EvedIFunc_OnCallFunc()の中のVMAC_InitDevices();奥のDevice_Init_Pinpad()関数は,暗号キーボードを初期化した.
void Device_Init_Pinpad(Term_Config *T_Config)
{

  /*        -    */
  switch(T_Config->mfixPrm.PP_In_Ext)
  {
    case INTERNAL_PINPAD:
      Pinpad_SetPPType(INTERNAL_PINPAD, T_Config->mfixPrm .PP_DesType, CLEAR_FORMAT);
      break;
    case EXTERNAL_PINPAD:
      Pinpad_SetPPType(EXTERNAL_PINPAD, T_Config->mfixPrm .PP_DesType, CLEAR_FORMAT);
      break;
    default:
      return;
  }
  
  //if (T_Config->mfixPrm.PP_In_Ext == EXTERNAL_PINPAD) //         Pinpad_Connect()
  {
    /*  PINpad      
    MmiUtil_DispChinese("      ",1,3);*/
    Pinpad_Close();
    
    if(Pinpad_Connect() != VS_SUCCESS)
    {
      MmiUtil_DispChinese("        ", 1, 3);
      SVC_WAIT(2000);
    }
    else
    {
      MmiUtil_DispChinese("        ", 1, 3);
    }
  }
  MmiUtil_Reset();
  
  return;
}

Mobileの中に
EvdIFunc_OnActive()関数内のVMAC_InitDevices(0);関数の
  open_pinpad(flag);関数はパスワードキーボードを初期化しました
/***************************************************************************
** pinpad_open() -- open the pin pad communications port.
***************************************************************************/
void open_pinpad(int flag)
{

// flag == 0
  char buf[20];
  int type ;
  
  
  NF_Get_Env("#ENCYPT", buf, 1);  //          
  
  if(buf[0] == '1')
    pos_cfg.tdes = 1;  //3//3DES
  else
    pos_cfg.tdes = 0;  //DES
    
  type = MmiUtil_GetTerminalType();  //      
  
  if(type == _VX610 || type == _VX670 || type == _VX680 || type == _VX680C || type == _VX810 || type == _VX820)
  {
    NF_Put_Env("#PINPAD", "0", 1);  //           
  }

  
  NF_Get_Env("#PINPAD", buf, 1);
  pos_cfg.pinpad_type = (buf[0] == '1');




  /*      ,     */
  if(pos_cfg.tdes)  //  3DES   
  {
    /*  PINpad  */
    if(pos_cfg.pinpad_type == 1)  
      Pinpad_SetPPType(EXTERNAL_PINPAD, PP222_3DES_MODE, CLEAR_FORMAT);                   
    else//       
      Pinpad_SetPPType(INTERNAL_PINPAD, PP222_3DES_MODE, CLEAR_FORMAT);
  }
  else //  DES  
  {
    /*  PINpad  */
    if(pos_cfg.pinpad_type == 1)
      Pinpad_SetPPType(EXTERNAL_PINPAD, PP222_DES_MODE, CLEAR_FORMAT);
    else
      Pinpad_SetPPType(INTERNAL_PINPAD, PP222_DES_MODE, CLEAR_FORMAT);
  }


  
  /*  PINpad      */
  if(flag)  //flag == 0       
  {
    if(pos_cfg.pinpad_type == 1)
      disp_msg3("        ");
    else
      disp_msg3("        ");
  }
  
  if(pos_cfg.pinpad_type == 1)  //    
  {


     MmiUtil_UserClr(LINE2);
  MmiUtil_DisplayLine((char*)"      2", LINE2);
  wait_key(60);
  
    buf[NF_Get_Env("#PINPORT", buf, sizeof(buf))] = 0; //      /0
    
    if(strlen(buf) <= 0)  //      com1    com2
      strcpy(buf, "/dev/com2");
      
    if(Pinpad_Connect2(buf) != VS_SUCCESS) //Iinpad_Connect2        
    {
      if(flag)
      {
        disp_msg3("        ");
        SVC_WAIT(2000);
      }
    }
    else if(flag)
      disp_msg3("      OK");
  } // end if(pos_cfg)
  else
  {
    MmiUtil_UserClr(LINE2);
  
  MmiUtil_DisplayLine((char*)"      1", LINE2);
  wait_key(60);
    if(Pinpad_Connect() != VS_SUCCESS)
    {
      if(flag)
      {
        disp_msg3("        ");
        SVC_WAIT(2000);
      }
    }
    else if(flag)
      disp_msg3("      OK");
  }
}




サインした時
パスワードキーボードが再オープンし、プライマリ・キーが存在するかどうかを検出します.
そして
消費する時
プライマリ・キーが存在するかどうかを検出し、Pinpad_を介してGetPinはパスワードを取得し、
返品時にマスターパスワードを取得し、マスターキー検出を行わなかった
  if(MmiUtil_InputPWD(LINE2, (char*)Disp, (char*)tmp, passwd_min_len, passwd_len, RIGHT_JST)<0)入力パスワード取得