- Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathOperationSupport.java
105 lines (97 loc) · 3.53 KB
/
OperationSupport.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
packageopencrypto.jcmathlib;
/**
* OperationSupport class
*
* @author Antonin Dufka
*/
publicclassOperationSupport {
privatestaticOperationSupportinstance;
publicstaticfinalshortSIMULATOR = 0x0000; // jCardSim.org simulator
publicstaticfinalshortJCOP21 = 0x0001; // NXP J2E145G
publicstaticfinalshortJCOP3_P60 = 0x0002; // NXP JCOP3 J3H145 P60
publicstaticfinalshortJCOP4_P71 = 0x0003; // NXP JCOP4 J3Rxxx P71
publicstaticfinalshortGD60 = 0x0004; // G+D Sm@rtcafe 6.0
publicstaticfinalshortGD70 = 0x0005; // G+D Sm@rtcafe 7.0
publicstaticfinalshortSECORA = 0x0006; // Infineon Secora ID S
publicshortMIN_RSA_BIT_LENGTH = 512;
publicbooleanDEFERRED_INITIALIZATION = false;
publicbooleanRSA_EXP = true;
publicbooleanRSA_SQ = true;
publicbooleanRSA_PUB = false;
publicbooleanRSA_CHECK_ONE = false;
publicbooleanRSA_CHECK_EXP_ONE = false;
publicbooleanRSA_KEY_REFRESH = false;
publicbooleanRSA_PREPEND_ZEROS = false;
publicbooleanRSA_EXTRA_MOD = false;
publicbooleanRSA_RESIZE_MOD = true;
publicbooleanRSA_APPEND_MOD = false;
publicbooleanEC_HW_XY = false;
publicbooleanEC_HW_X = true;
publicbooleanEC_HW_ADD = false;
publicbooleanEC_SW_DOUBLE = false;
publicbooleanEC_PRECISE_BITLENGTH = true;
publicbooleanEC_SET_COFACTOR = false;
publicbooleanEC_GEN = true;
publicbooleanEC_HW_X_ECDSA = true;
privateOperationSupport() {
}
publicstaticOperationSupportgetInstance() {
if (OperationSupport.instance == null) OperationSupport.instance = newOperationSupport();
returnOperationSupport.instance;
}
publicvoidsetCard(shortcard_identifier) {
switch (card_identifier) {
caseSIMULATOR:
RSA_KEY_REFRESH = true;
RSA_PREPEND_ZEROS = true;
RSA_RESIZE_MOD = false;
EC_HW_XY = true;
EC_HW_ADD = true;
EC_SW_DOUBLE = true;
EC_PRECISE_BITLENGTH = false;
break;
caseJCOP21:
RSA_PUB = true;
RSA_EXTRA_MOD = true;
RSA_APPEND_MOD = true;
EC_SW_DOUBLE = true;
// EC_GEN = false; // required by Wei25519
// EC_HW_X_ECDSA = false; // required by Wei25519
break;
caseGD60:
RSA_PUB = true;
RSA_EXTRA_MOD = true;
RSA_APPEND_MOD = true;
break;
caseGD70:
RSA_PUB = true;
RSA_CHECK_ONE = true;
RSA_EXTRA_MOD = true;
RSA_APPEND_MOD = true;
break;
caseJCOP3_P60:
DEFERRED_INITIALIZATION = true;
RSA_PUB = true;
EC_HW_XY = true;
EC_HW_ADD = true;
break;
caseJCOP4_P71:
DEFERRED_INITIALIZATION = true;
EC_HW_XY = true;
EC_HW_ADD = true;
break;
caseSECORA:
MIN_RSA_BIT_LENGTH = 1024;
RSA_SQ = false;
RSA_CHECK_EXP_ONE = true;
RSA_PUB = true;
RSA_EXTRA_MOD = true;
RSA_APPEND_MOD = true;
EC_HW_XY = true;
EC_PRECISE_BITLENGTH = false;
break;
default:
break;
}
}
}