179 lines
5.4 KiB
XML
179 lines
5.4 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<packet extend="base">
|
||
<req>
|
||
|
||
<command>
|
||
<hex>FK</hex>
|
||
</command>
|
||
<data extend="data">
|
||
|
||
<key len="1" cn="标识">
|
||
<options>
|
||
<option cn="ZEK">
|
||
<hex>0</hex>
|
||
</option>
|
||
<option cn="ZAK">
|
||
<hex>1</hex>
|
||
</option>
|
||
</options>
|
||
</key>
|
||
|
||
<zmk cn="ZMK" >
|
||
LMK 对(04-05)加密的 ZMK。
|
||
27 位的索引号:16 位机构号+3 位密钥类型+8 位密钥
|
||
索引号
|
||
</zmk>
|
||
|
||
<zekOrzak cn="ZEK 或 ZAK" >
|
||
ZMK 下加密的 ZEK 或 ZAK
|
||
</zekOrzak>
|
||
|
||
<businessKey len="1" cn="业务标识">
|
||
取值 N(可选)当选定此标识时,表示密钥加密方案采用默认方式
|
||
</businessKey>
|
||
|
||
<separator cn="分隔符" :if=" null != $packet.data.zmkSolution ">
|
||
可选项。如果显示后面的三个域,则该域必须显示。
|
||
值为“;”。
|
||
如果命令不需要一个可选域,则用一个有效值或 0 填
|
||
充。
|
||
</separator>
|
||
|
||
<zmkSolution len="1" cn="密钥方案(ZMK)" required="false">
|
||
可选项。ZMK 下加密密钥的方案。
|
||
</zmkSolution>
|
||
|
||
<lmkSolution len="1" cn="密钥方案(LMK)" required="false">
|
||
可选项。ZMK 下加密密钥的方案。
|
||
</lmkSolution>
|
||
|
||
<keyCheckType len="1" cn="密钥校验值类型" required="false">
|
||
可选项。密钥校验值计算方式。
|
||
0-KCV 向后兼容。
|
||
1-KCV 6H。
|
||
</keyCheckType>
|
||
|
||
|
||
<tailSep len="1" :if=" null != $packet.data.tail " cn="尾分隔">
|
||
可选项。如果显示消息尾域,则该域必须显示。值为
|
||
“X’19”。
|
||
<hex>19</hex>
|
||
</tailSep>
|
||
|
||
<tail maxLen="32" required="false" cn="尾部">
|
||
可选项。最大长度为 32个字符。
|
||
</tail>
|
||
</data>
|
||
|
||
|
||
|
||
</req>
|
||
<res>
|
||
|
||
<command>
|
||
<hex>FL</hex>
|
||
</command>
|
||
<data>
|
||
<error len="2" cn="错误码" format="X" :catch="catchError('%s')">
|
||
<options>
|
||
<option cn="无错误">
|
||
<hex>00</hex>
|
||
</option>
|
||
<option cn="第一个成份奇偶校验错">
|
||
<hex>10</hex>
|
||
</option>
|
||
<option cn="用户存储区中没有装载密钥">
|
||
<hex>12</hex>
|
||
</option>
|
||
<option cn="LMK 错误">
|
||
LMK 错误;报告给管理员。
|
||
<hex>13</hex>
|
||
</option>
|
||
<option cn="输入数据错">
|
||
<hex>15</hex>
|
||
</option>
|
||
<option cn="无效用户存储区索引">
|
||
<hex>21</hex>
|
||
</option>
|
||
<option cn="密钥方案错误">
|
||
<hex>26</hex>
|
||
</option>
|
||
<option cn="数据长度错误">
|
||
<hex>80</hex>
|
||
</option>
|
||
</options>
|
||
</error>
|
||
|
||
<zekLmkHead len="1" cn="zpk 头" :if="zekChoice()">
|
||
如果是 'Z' ,zmk 16 个字节长
|
||
如果是 'X,U,S' ,zmk 32 个字节长
|
||
如果是 'Y,T' ,zmk 48 个字节长
|
||
</zekLmkHead>
|
||
|
||
<zekLmk :len="zekLmkLen()" cn="ZPK(LMK)" :if="zekChoice()">
|
||
LMK30-31对下加密的ZEK。(仅当标志位为0时才有该域)
|
||
</zekLmk>
|
||
|
||
<zakLmkHead len="1" cn="zpk 头" :if="zakChoice()">
|
||
如果是 'Z' ,zmk 16 个字节长
|
||
如果是 'X,U,S' ,zmk 32 个字节长
|
||
如果是 'Y,T' ,zmk 48 个字节长
|
||
</zakLmkHead>
|
||
|
||
<zakLmk :len="zakLmkLen()" cn="ZPK(LMK)" :if="zakChoice()">
|
||
LMK26-27对下加密的ZAK。(仅当标志位为1时才有该域)
|
||
</zakLmk>
|
||
|
||
<keyCheck :len="keyCheckLen()" cn="密钥校验值">
|
||
用ZEK或ZAK加密64位0的结果。是16H还是6H取决于KCV的类型选项。
|
||
当输入可选项的LMK密钥方案为S时,KCV选项为0是,输入出32H
|
||
</keyCheck>
|
||
|
||
<tailSep len="1" required="false" cn="尾分隔">
|
||
可选项。如果显示消息尾域,则该域必须显示。值为 “X’19”。
|
||
<hex>19</hex>
|
||
</tailSep>
|
||
|
||
<tail maxLen="32" required="false" cn="尾部">
|
||
可选项。最大长度为 32个字符。
|
||
</tail>
|
||
</data>
|
||
|
||
|
||
|
||
</res>
|
||
<script>function zekLmkLen() {
|
||
return Util.lenChoice($final.getSection('data').getSection('zekLmkHead').getValue() )
|
||
}
|
||
|
||
function zakLmkLen() {
|
||
return Util.lenChoice($final.getSection('data').getSection('zakLmkHead').getValue() )
|
||
}
|
||
|
||
function zakChoice() {
|
||
if(1 == $packet.get('data').get('key$option')){
|
||
return true
|
||
}else {
|
||
return false
|
||
}
|
||
}
|
||
|
||
function zekChoice() {
|
||
if(0 == $packet.get('data').get('key$option')){
|
||
return true
|
||
}else {
|
||
return false
|
||
}
|
||
|
||
}
|
||
|
||
function keyCheckLen() {
|
||
|
||
if(1 == $packet.get('data').get('key$option')){
|
||
return Util.keyCheckLen($final.getSection('data').getSection('zakLmkHead').getValue() )
|
||
}else {
|
||
return Util.keyCheckLen($final.getSection('data').getSection('zekLmkHead').getValue() )
|
||
}
|
||
|
||
} </script>
|
||
</packet> |