sydapi/DProto/A0.xml
2022-01-10 17:54:07 +08:00

172 lines
5.1 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" ?>
<packet extend="base">
<req>
<command>
<hex>A0</hex>
</command>
<data extend="data">
<mode len="1" cn="模式">
<options>
<option cn="产生密钥">
<hex>0</hex>
</option>
<option cn="产生密钥并在 ZMK 下加密">
<hex>1</hex>
</option>
</options>
</mode>
<keyType len="3" cn="密钥类型">
密钥类型
</keyType>
<solution len="1" cn="密钥长度/LMK 下加密密钥的方案。">
密钥长度/LMK 下加密密钥的方案。
</solution>
<zmk cn="ZMK" :if="hasZmk()">
仅当模式为 1 时才显示该 ZMK 域
27位的索引号16位机构号+3位密钥类型+8位密钥索引号
</zmk>
<keySolution len="1" cn="加密输出密钥的密钥方案" :if="1 == $packet.data.mode$option">
加密输出密钥的密钥方案。仅当模式为 1 时才显示该域
</keySolution>
<businessKey len="1" cn="业务标识" required="false">
<text>N</text>
取值 N可选当选定此标识时表示密钥加密方案采用默认方式
</businessKey>
<tailSep len="1" :if=" null != $packet.data.tail " cn="尾分隔">
可选项。如果显示消息尾域,则该域必须显示。值为
“X19”。
<hex>19</hex>
</tailSep>
<tail maxLen="32" required="false" cn="尾部">
可选项。最大长度为 32个字符。
</tail>
</data>
</req>
<res>
<command>
<hex>A1</hex>
</command>
<data>
<error len="2" cn="错误码" format="X" :catch="catchError('%s')">
<options>
<option cn="无错误">
<hex>00</hex>
</option>
<option cn="ZMK 奇偶校验错">
<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>
</options>
</error>
<lmkHead len="1" cn="lmk 头">
如果是 'Z' lmk 16 个字节长
如果是 'X,U,S' lmk 32 个字节长
如果是 'Y,T' lmk 48 个字节长
</lmkHead>
<lmk :len="lmkLen()" cn="密钥LMK">
LMK 加密下的密钥。
</lmk>
<zmkHead len="1" cn="zmk 头" :if="1 == $packet.data.mode$option">
如果是 'Z' zmk 16 个字节长
如果是 'X,U,S' zmk 32 个字节长
如果是 'Y,T' zmk 48 个字节长
</zmkHead>
<zmk :len="zmkLen()" cn="密钥ZMK" :if="1 == $packet.data.mode$option">
ZMK 加密下的密钥。
</zmk>
<keyCheck :len="keyCheckLen()" cn="密钥校验值" required="false">
密钥校验值。当存在 ZMK 密钥时,以 ZMK 保护新密钥
的方案为基准,否则以 LMK 保护新密钥的方案为基准。
当保护新密钥的密钥方案为 S 时,输出 32H KCV 计
算算法为 SM4否则输出 16HKCV 计算算法为
DES/3DES
</keyCheck>
<tailSep len="1" required="false" cn="尾分隔">
可选项。如果显示消息尾域,则该域必须显示。值为 “X19”。
<hex>19</hex>
</tailSep>
<tail maxLen="32" required="false" cn="尾部">
可选项。最大长度为 32个字符。
</tail>
</data>
</res>
<script>function lmkLen() {
if( $final.data.lmkHead.eqStr("Y") || $final.data.lmkHead.eqStr("T") ){
return 48
}else if( $final.data.lmkHead.eqStr("X") || $final.data.lmkHead.eqStr("U") || $final.data.lmkHead.eqStr("S") ){
return 32
}
return 15
}
function zmkLen() {
if( $final.data.lmkHead.eqStr("Y") || $final.data.lmkHead.eqStr("T") ){
return 48
}else if( $final.data.lmkHead.eqStr("X") || $final.data.lmkHead.eqStr("U") || $final.data.lmkHead.eqStr("S") ){
return 32
}
return 15
}
function keyCheckLen() {
if( null != $final.data.zmk ){
if( $final.data.zmkHead.eqStr("S") ){
return 32
}else{
return 16
}
}else{
if( $final.data.lmkHead.eqStr("S") ){
return 32
}else{
return 16
}
}
}
function hasZmk(){
return 1 == $packet.data.mode$option
}
</script>
</packet>