密钥存储flash空间80->120,写调用说明
This commit is contained in:
@@ -159,6 +159,8 @@ public final class Method {
|
||||
|
||||
|
||||
public Method() {
|
||||
// key list tmp buffer, lenth must equal with key_store(flash)!
|
||||
update_key_buf = JCSystem.makeTransientByteArray((short)120, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
// 算法内部使用23Byte IV
|
||||
extracted_iv_23 = JCSystem.makeTransientByteArray((short)23, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
|
||||
@@ -174,8 +176,6 @@ public final class Method {
|
||||
location_data = JCSystem.makeTransientByteArray((short)5, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
location_res_data = JCSystem.makeTransientByteArray((short)5, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
|
||||
update_key_buf = JCSystem.makeTransientByteArray((short)80, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
|
||||
rot31_bits = JCSystem.makeTransientShortArray((short)31, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
rot31_resBits = JCSystem.makeTransientShortArray((short)31, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class XwSecurity extends Applet {
|
||||
// TODO Auto-generated constructor stub
|
||||
method = new Method(); //todo new?
|
||||
// key store -> flash
|
||||
key_store_byte = new byte[80];
|
||||
key_store_byte = new byte[120];
|
||||
|
||||
register(bArray, (short)(bOffset + 1), bArray[bOffset]);
|
||||
}
|
||||
|
||||
135
README.md
135
README.md
@@ -11,6 +11,141 @@ sudo apt-get install scons
|
||||
sudo apt-get install build-essential
|
||||
```
|
||||
|
||||
---
|
||||
0909 位置加密applet调用说明
|
||||
|
||||
1. E2 密钥存储接口
|
||||
说明:
|
||||
密钥长度为16或32B,加上密钥信息(4B)最多36B,按每个密钥40B存储在flash中。目前共分配了120B空间。(可存3个密钥)
|
||||
遇相同(算法类型, 密钥ID, 密钥版本)密钥,覆盖存储;
|
||||
新密钥存储在新空间;
|
||||
密钥长度超长会报错,空间满会报错。
|
||||
返回A1+5字节密文+9000
|
||||
|
||||
样例1
|
||||
存储一个长度16,算法A1,id01,version02的Key[1122..FF00]
|
||||
80 E2 00 01 14
|
||||
13 A1 01 02 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 00
|
||||
|
||||
/send 80E200011413A10102112233445566778899AABBCCDDEEFF00
|
||||
->
|
||||
90 00
|
||||
|
||||
|
||||
样例2
|
||||
存储一个长度32,算法A2,id02,version02的Key[0102..1F20]
|
||||
80 E2 00 02 24
|
||||
23 A2 02 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
|
||||
|
||||
/send 80E200022423A202020102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20
|
||||
->
|
||||
90 00
|
||||
|
||||
|
||||
样例3
|
||||
存储一个长度FF,算法A2,id02,version02的Key[0102..1F20]
|
||||
80 E2 00 02 24
|
||||
FF A2 02 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
|
||||
/send 80E2000224FFA202020102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20
|
||||
->
|
||||
69 84 (超长 FF)
|
||||
|
||||
|
||||
样例4
|
||||
存储一个长度32,算法A2,id01,version02的Key[0102..1F20]
|
||||
80 E2 00 02 24
|
||||
23 A2 01 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
|
||||
|
||||
/send 80E200022423A202020102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20
|
||||
->
|
||||
90 00
|
||||
|
||||
样例4
|
||||
存储一个长度16,算法A3,id02,version02的Key[0102..0F10],执行后空间满 120B
|
||||
80 E2 00 02 14
|
||||
13 A3 02 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
|
||||
/send 80E200021413A302020102030405060708090A0B0C0D0E0F10
|
||||
->
|
||||
90 00
|
||||
|
||||
样例5
|
||||
存储一个长度16,算法A3,id09,version02的Key[0102..0F10]
|
||||
80 E2 00 02 14
|
||||
13 A3 09 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
|
||||
/send 80E200021413A309020102030405060708090A0B0C0D0E0F10
|
||||
->
|
||||
6A 84 空间满
|
||||
|
||||
|
||||
样例6
|
||||
存储一个长度16,算法A2,id02,version02的Key[0102..0F10](覆盖样例3空间)
|
||||
80 E2 00 02 14
|
||||
13 A2 02 02
|
||||
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
|
||||
|
||||
/send 80E200021413A202020102030405060708090A0B0C0D0E0F10
|
||||
->
|
||||
90 00
|
||||
|
||||
--------
|
||||
|
||||
|
||||
2. CA 位置加密
|
||||
数据为1字节随机数,6字节STMSI,5字节数据
|
||||
目前随机数和STMSI未使用,此接口用固定Key IV,对数据进行Zuc256加密,返回加密后数据。
|
||||
|
||||
// Key: 32字节
|
||||
private static final byte[] KEY32 = {
|
||||
(byte)0x30,(byte)0x31,(byte)0x32,(byte)0x33,(byte)0x34,(byte)0x35,(byte)0x36,(byte)0x37,
|
||||
(byte)0x38,(byte)0x39,(byte)0x61,(byte)0x62,(byte)0x63,(byte)0x64,(byte)0x65,(byte)0x66,
|
||||
(byte)0x30,(byte)0x31,(byte)0x32,(byte)0x33,(byte)0x34,(byte)0x35,(byte)0x36,(byte)0x37,
|
||||
(byte)0x38,(byte)0x39,(byte)0x61,(byte)0x62,(byte)0x63,(byte)0x64,(byte)0x65,(byte)0x66
|
||||
};
|
||||
// IV: 25字节
|
||||
private static final byte[] IV25 = {
|
||||
(byte)0x30,(byte)0x31,(byte)0x32,(byte)0x33,(byte)0x34,(byte)0x35,(byte)0x36,(byte)0x37,
|
||||
(byte)0x38,(byte)0x39,(byte)0x61,(byte)0x62,(byte)0x63,(byte)0x64,(byte)0x65,(byte)0x66,
|
||||
(byte)0x67,(byte)0x30,(byte)0x31,(byte)0x32,(byte)0x33,(byte)0x34,(byte)0x35,(byte)0x36,
|
||||
(byte)0x37
|
||||
};
|
||||
|
||||
样例1
|
||||
80 CA 00 00 0E
|
||||
A1 0C 00 11 22 33 44 55 66 AA BB CC DD EE
|
||||
|
||||
/send 80CA00000EA10C00112233445566AABBCCDDEE
|
||||
|
||||
->
|
||||
A1 06 01 9C 00 B3 15 05 90 00
|
||||
|
||||
|
||||
样例2
|
||||
80 CA 00 00 0E
|
||||
A1 0C 00 11 22 33 44 55 66 FF 00 FF 00 FF
|
||||
|
||||
/send 80CA00000EA10C00112233445566FF00FF00FF
|
||||
|
||||
->
|
||||
A1 06 01 C9 BB 80 C8 14 90 00
|
||||
|
||||
样例3
|
||||
80 CA 00 00 0E
|
||||
A1 0C 00 11 22 33 44 55 66 31 32 33 34 35
|
||||
|
||||
/send 80CA00000EA10C001122334455663132333435
|
||||
|
||||
->
|
||||
A1 06 01 07 89 4C FC DE 90 00
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user