72 lines
2.6 KiB
XML
72 lines
2.6 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!--生成报文MAC-->
|
|
<Function name="CreatePosMAC">
|
|
<Input>SUB_AC|BK_TXN_DAT|</Input>
|
|
<Output>BK_TXN_DAT|MSG_CD|</Output>
|
|
|
|
<Process>
|
|
<!--交易设置-->
|
|
<Set>RDM_NO=SUBSTR(RIGHTSTR($BK_TXN_DAT,16),1,8)</Set>
|
|
<Set>BK_DAT_LEN=STRLEN($BK_TXN_DAT)</Set>
|
|
<Set>TXN_DAT_LEN=SUB($BK_DAT_LEN,16)</Set>
|
|
<Set>TXN_DAT=SUBSTR($BK_TXN_DAT,1,$TXN_DAT_LEN)</Set>
|
|
<Set>ADD_CHAR_LEN=SUB(16,MOD($TXN_DAT_LEN,16))</Set>
|
|
|
|
<!--根据取模结果判断需要补充的字符位数-->
|
|
<If condition="$ADD_CHAR_LEN=1">
|
|
<Set>ADD_CHAR_LEN=17</Set>
|
|
</If>
|
|
<Set>ADD_CHAR=SUBSTR(#ADD_CHAR,1,$ADD_CHAR_LEN)</Set>
|
|
|
|
<!--加密机参数设置-->
|
|
<Set>MK_VER=01</Set>
|
|
<Set>MK_IDX=18</Set>
|
|
<Set>MK_DVS_NUM=2</Set>
|
|
<Set>MK_DVS_DAT=STRCAT($MK_VER,SUBSTR($SUB_AC,7,14))</Set>
|
|
<Set>GC_KEY_FLG=0</Set>
|
|
<Set>GC_DAT=STRCAT($RDM_NO,00000000)</Set>
|
|
<Set>MAC_PAD_FLG=0</Set>
|
|
<Set>MAC_IV_DAT=$GC_DAT</Set>
|
|
<Set>MAC_DAT=STRCAT($TXN_DAT,$ADD_CHAR)</Set>
|
|
<Set>MAC_DAT_LEN=DIV(STRLEN($MAC_DAT),2)</Set>
|
|
<Set>MAC_LEN_FLG=1</Set>
|
|
|
|
<!--调用加密机生成报文MAC-->
|
|
<Exec func="HSM:HsmMACGen4C">
|
|
<Arg name="MkVer" value="$MK_VER"/>
|
|
<Arg name="MkIndex" value="$MK_IDX"/>
|
|
<Arg name="MkDvsNum" value="$MK_DVS_NUM"/>
|
|
<Arg name="MkDvsData" value="$MK_DVS_DAT"/>
|
|
<Arg name="GCKEY_Flag" value="$GC_KEY_FLG"/>
|
|
<Arg name="GCDATA" value="$GC_DAT"/>
|
|
<Arg name="MACPadflag" value="$MAC_PAD_FLG"/>
|
|
<Arg name="MacIvData" value="$MAC_IV_DAT"/>
|
|
<Arg name="MACdata" value="$MAC_DAT"/>
|
|
<Arg name="MACdataLen" value="$MAC_DAT_LEN"/>
|
|
<Arg name="MAClenFlag" value="$MAC_LEN_FLG"/>
|
|
<Arg name="MAC" value="MAC" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS81019"/>
|
|
<Arg name="MsgDat" value="生成报文MAC失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--组织输出报文-->
|
|
<Delete>BK_TXN_DAT</Delete>
|
|
<Set>BK_TXN_DAT=STRCAT($TXN_DAT,$RDM_NO,$MAC)</Set>
|
|
<!--交易成功-->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
<Arg name="MsgDat" value="生成报文MAC成功"/>
|
|
</Exec>
|
|
|
|
</Process>
|
|
</Function>
|
|
|
|
</Package>
|