function MakeChkFake() { $this->m_Crypto = new INICrypto($this->m_REQUEST); //��������Ű �ε� if (($rtv = $this->m_Crypto->LoadMPrivKey()) != OK) { $err_msg = "��������Ű �ε�����"; $this->m_Log->WriteLog(ERROR, $err_msg); $this->MakeTXErrMsg($rtv, $err_msg); $this->m_Log->CloseLog($this->GetResult(NM_RESULTMSG)); $this->m_Crypto->FreePubKey(); return; } $this->m_Log->WriteLog(INFO, "MERCHANT PRIV KEY LOAD OK"); //���� ����Ű �ε�(SN �� �˱�����!!) if (($rtv = $this->m_Crypto->LoadMPubKey($m_cert_SN)) != OK) { $err_msg = "��������Ű �ε�����"; $this->m_Log->WriteLog(ERROR, $err_msg); $this->MakeTXErrMsg($rtv, $err_msg); $this->m_Log->CloseLog($this->GetResult(NM_RESULTMSG)); return; } $this->m_Log->WriteLog(INFO, "MERCHANT PUB KEY LOAD OK [" . $this->m_Data->m_MPubSN . "]"); foreach ($this->m_REQUEST as $key => $val) { if ($key == "inipayhome" || $key == "type" || $key == "debug" || $key == "admin" || $key == "checkopt" || $key == "enctype") { continue; } if ($key == "mid") { $temp1 .= $key . "=" . $val . "&"; } else { $temp2 .= $key . "=" . $val . "&"; } //hashmsg } //Make RN $this->m_RESULT["rn"] = $this->m_Data->MakeRN(); $temp1 .= "rn=" . $this->m_RESULT["rn"] . "&"; $checkMsg = $temp1; $checkHashMsg = $temp2; $retHashStr = Base64Encode(sha1($checkHashMsg, TRUE)); $checkMsg .= "data=" . $retHashStr; $HashMid = Base64Encode(sha1($this->m_REQUEST["mid"], TRUE)); $this->m_Crypto->RSAMPrivEncrypt($checkMsg, $RSATemp); $this->m_RESULT["encfield"] = "enc=" . $RSATemp . "&src=" . Base64Encode($checkHashMsg); $this->m_RESULT["certid"] = $HashMid . $m_cert_SN; $this->m_Log->WriteLog(INFO, "CHKFAKE KEY MAKE OK:" . $this->m_RESULT["rn"]); $this->m_Log->CloseLog($this->GetResult(NM_RESULTMSG)); $this->m_Crypto->FreeAllKey(); $this->m_RESULT[NM_RESULTCODE] = "00"; return; }
function RSAMPrivEncrypt($org_data, &$enc_data) { if (!openssl_private_encrypt($org_data, $enc_data, $this->mprivkeyid)) { return false; } $enc_data = Base64Encode($enc_data); return true; }
function MakeEncrypt($INICrypto) { //generate key/iv $key = $this->GenRand(MAX_KEY_LEN, true); $iv = $this->GenRand(MAX_IV_LEN, true); //make XML $xml = new XML(); if ($this->m_Type == TYPE_FORMPAY) { } else { if ($this->m_Type == TYPE_RECEIPT) { $PI = $xml->add_node("", PAYMENTINFO); $PM = $xml->add_node($PI, PAYMENT); $CS = $xml->add_node($PM, NM_CSHR); $PD = $xml->add_node($CS, TX_CSHR_APPLPRICE, $this->m_REQUEST["cr_price"]); $PD = $xml->add_node($CS, TX_CSHR_SUPPLYPRICE, $this->m_REQUEST["sup_price"]); $PD = $xml->add_node($CS, TX_CSHR_TAX, $this->m_REQUEST["tax"]); $PD = $xml->add_node($CS, TX_CSHR_SERVICEPRICE, $this->m_REQUEST["srvc_price"]); $PD = $xml->add_node($CS, TX_CSHR_TYPE, $this->m_REQUEST["useopt"]); $PD = $xml->add_node($CS, TX_CSHR_REGNUM, $this->m_REQUEST["reg_num"]); $PD = $xml->add_node($CS, TX_CSHR_COMPANYNUM, $this->m_REQUEST["companynumber"]); /* $PD = $xml->add_node($CS, TX_CSHR_OPENMARKET, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBCNT, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBCOMPANYNAME1, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBCOMPANYNUM1, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBREGNUM1, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBMID1, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBAPPLPRICE1, $this->m_REQUEST[""] ); $PD = $xml->add_node($CS, TX_CSHR_SUBSERVICEPRICE1, $this->m_REQUEST[""] ); */ } else { if ($this->m_Type == TYPE_CANCEL) { $CI = $xml->add_node("", CANCELINFO); $CD = $xml->add_node($CI, TX_CANCELTID, $this->m_REQUEST["tid"]); $CD = $xml->add_node($CI, TX_CANCELMSG, $this->m_REQUEST["cancelmsg"], array("urlencode" => "1")); $CD = $xml->add_node($CI, TX_CANCELREASON, $this->m_REQUEST["cancelcode"]); $this->AddUserDefinedEntity(CANCELINFO, "", $xml, $CI); } else { if ($this->m_Type == TYPE_REPAY) { //PartCancelInfo(ROOT) $CI = $xml->add_node("", PARTCANCELINFO); $CD = $xml->add_node($CI, TX_PRTC_TID, $this->m_REQUEST["oldtid"]); $CD = $xml->add_node($CI, TX_PRTC_PRICE, $this->m_REQUEST["price"]); $CD = $xml->add_node($CI, TX_PRTC_REMAINS, $this->m_REQUEST["confirm_price"]); $CD = $xml->add_node($CI, TX_PRTC_QUOTA, $this->m_REQUEST["cardquota"]); $CD = $xml->add_node($CI, TX_PRTC_INTEREST, $this->m_REQUEST["quotainterest"]); //I계좌이체 국민은행 부분취소시 계좌번호 계좌주성명을 받음 2011-10-06 $CD = $xml->add_node($CI, TX_PRTC_NOACCT, $this->m_REQUEST["no_acct"]); $CD = $xml->add_node($CI, TX_PRTC_NMACCT, $this->m_REQUEST["nm_acct"], array("urlencode" => "1")); //과세,비과세 추가 2014-07-23 by jung.ks //$CD = $xml->add_node($CI, TX_PRTC_TAX, $this->m_REQUEST["tax"] ); //$CD = $xml->add_node($CI, TX_PRTC_TAXFREE, $this->m_REQUEST["taxfree"] ); $this->AddUserDefinedEntity(PARTCANCELINFO, "", $xml, $CI); } else { if ($this->m_Type == TYPE_VACCTREPAY) { //PartCancelInfo(ROOT) $CI = $xml->add_node("", PARTCANCELINFO); $CD = $xml->add_node($CI, TX_PRTC_TID, $this->m_REQUEST["oldtid"]); $CD = $xml->add_node($CI, TX_PRTC_PRICE, $this->m_REQUEST["price"]); $CD = $xml->add_node($CI, TX_PRTC_REMAINS, $this->m_REQUEST["confirm_price"]); $CD = $xml->add_node($CI, TX_PRTC_QUOTA, $this->m_REQUEST["cardquota"]); $CD = $xml->add_node($CI, TX_PRTC_INTEREST, $this->m_REQUEST["quotainterest"]); $CD = $xml->add_node($CI, TX_PRTC_NOACCT, $this->m_REQUEST["refundacctnum"]); $CD = $xml->add_node($CI, TX_PRTC_NMACCT, $this->m_REQUEST["refundacctname"], array("urlencode" => "1")); $CD = $xml->add_node($CI, TX_PRTC_REFUNDFLGREMIT, $this->m_REQUEST["refundflgremit"]); $CD = $xml->add_node($CI, TX_PRTC_REFUNDBANKCODE, $this->m_REQUEST["refundbankcode"]); $this->AddUserDefinedEntity(PARTCANCELINFO, "", $xml, $CI); } else { if ($this->m_Type == TYPE_CAPTURE) { $CI = $xml->add_node("", CAPTUREINFO); $CD = $xml->add_node($CI, TX_CAPTURETID, $this->m_REQUEST["tid"]); $this->AddUserDefinedEntity(CAPTUREINFO, "", $xml, $CI); } else { if ($this->m_Type == TYPE_ESCROW) { if ($this->m_EscrowType == TYPE_ESCROW_DLV) { $EI = $xml->add_node("", ESCROWINFO); $EC = $xml->add_node($EI, ESCROW_DELIVERY); $ED = $xml->add_node($EC, "DLV_Oid", $this->m_REQUEST["oid"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SOid", $this->m_REQUEST["soid"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Name", $this->m_REQUEST["dlv_name"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_IP", $this->m_REQUEST["dlv_ip"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_MAC", $this->m_REQUEST["dlv_mac"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Report", $this->m_REQUEST["dlv_report"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SendName", $this->m_REQUEST["dlv_sendname"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SendPost", $this->m_REQUEST["dlv_sendpost"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SendAddr1", $this->m_REQUEST["dlv_sendaddr1"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SendAddr2", $this->m_REQUEST["dlv_sendaddr2"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_SendTel", $this->m_REQUEST["dlv_sendtel"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_RecvName", $this->m_REQUEST["dlv_recvname"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_RecvPost", $this->m_REQUEST["dlv_recvpost"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_RecvAddr", $this->m_REQUEST["dlv_recvaddr"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_RecvTel", $this->m_REQUEST["dlv_recvtel"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_ExCode", $this->m_REQUEST["dlv_excode"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_ExName", $this->m_REQUEST["dlv_exname"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Invoice", $this->m_REQUEST["dlv_invoice"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Charge", $this->m_REQUEST["dlv_charge"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_InvoiceDay", $this->m_REQUEST["dlv_invoiceday"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_GoodsCode", $this->m_REQUEST["dlv_goodscode"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Goods", $this->m_REQUEST["dlv_goods"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_GoodsCnt", $this->m_REQUEST["dlv_goodscnt"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Price", $this->m_REQUEST["price"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Reserved1", $this->m_REQUEST["dlv_reserved1"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Reserved2", $this->m_REQUEST["dlv_reserved2"], array("urlencode" => "1")); $ED = $xml->add_node($EC, "DLV_Reserved3", $this->m_REQUEST["dlv_reserved3"], array("urlencode" => "1")); } else { if ($this->m_EscrowType == TYPE_ESCROW_CNF) { //PluginIn!! } else { if ($this->m_EscrowType == TYPE_ESCROW_DNY) { //PluginIn!! } else { if ($this->m_EscrowType == TYPE_ESCROW_DNY_CNF) { $EI = $xml->add_node("", ESCROWINFO); $EC = $xml->add_node($EI, ESCROW_DENYCONFIRM); $ED = $xml->add_node($EC, "DCNF_Name", $this->m_REQUEST["dcnf_name"], array("urlencode" => "1")); } } } } } else { if ($this->m_Type == TYPE_REFUND) { $CI = $xml->add_node("", CANCELINFO); $CD = $xml->add_node($CI, TX_CANCELTID, $this->m_REQUEST["tid"]); $CD = $xml->add_node($CI, TX_CANCELMSG, $this->m_REQUEST["cancelmsg"], array("urlencode" => "1")); $CD = $xml->add_node($CI, TX_REFUNDACCTNUM, $this->m_REQUEST["racctnum"]); $CD = $xml->add_node($CI, TX_REFUNDBANKCODE, $this->m_REQUEST["rbankcode"]); $CD = $xml->add_node($CI, TX_REFUNDACCTNAME, $this->m_REQUEST["racctname"], array("urlencode" => "1")); $this->AddUserDefinedEntity(CANCELINFO, "", $xml, $CI); } else { if ($this->m_Type == TYPE_INQUIRY) { $CI = $xml->add_node("", INQUIRYINFO); $CD = $xml->add_node($CI, TX_INQR_TID, $this->m_REQUEST["tid"]); //$this->AddUserDefinedEntity( INQUIRYINFO, "", $xml, $CI ); } else { if ($this->m_Type == TYPE_OPENSUB) { $OI = $xml->add_node("", OPENSUBINFO); $OD = $xml->add_node($OI, TX_OPENREG_TID, $this->m_REQUEST["oldtid"]); $OD = $xml->add_node($OI, TX_OPENREG_MID, $this->m_REQUEST["mid"]); //$this->AddUserDefinedEntity( INQUIRYINFO, "", $xml, $CI ); } } } } } } } } } } $this->m_EncBody = $xml->make_xml(); //encrypt body by SYMM if (($rtv = $INICrypto->SymmEncrypt($this->m_EncBody, $this->m_sEncrypted, $key, $iv)) != OK) { return $rtv; } //encrypt key/iv by ASYMM if (!$INICrypto->RSAPGPubEncrypt($key, $this->m_sSessionKey)) { return ENC_RSA_ERR; } $this->m_sSessionKey = Base64Encode($this->m_sSessionKey . $iv); return OK; }