@@ -63,10 +63,11 @@ public class GPSecureChannel extends CardChannel {
63
63
private final GPKeySet mStaticKeys ;
64
64
/** Key diversification to apply */
65
65
private final GPKeyDiversification mDiversification ;
66
+
66
67
/** Protocol policy in effect */
67
- private final SCPProtocolPolicy mProtocolPolicy ;
68
+ private SCPProtocolPolicy mProtocolPolicy ;
68
69
/** Security policy in effect */
69
- private final SCPSecurityPolicy mSecurityPolicy ;
70
+ private SCPSecurityPolicy mSecurityPolicy ;
70
71
71
72
/** Expected SCP protocol - 0 means ANY */
72
73
private int mExpectedProtocol = 0 ;
@@ -89,19 +90,19 @@ public class GPSecureChannel extends CardChannel {
89
90
* @param context for this secure channel
90
91
* @param channel to communicate through
91
92
* @param keys to use
92
- * @param protocolPolicy to conform to
93
- * @param securityPolicy to conform to
94
93
*/
95
94
public GPSecureChannel (GPContext context , CardChannel channel ,
96
- GPKeySet keys , GPKeyDiversification diversification ,
97
- SCPProtocolPolicy protocolPolicy , SCPSecurityPolicy securityPolicy ) {
95
+ GPKeySet keys , GPKeyDiversification diversification ) {
96
+ // final fields
98
97
mRandom = new SecureRandom ();
99
98
mContext = context ;
100
99
mChannel = channel ;
101
100
mStaticKeys = keys ;
102
101
mDiversification = diversification ;
103
- mProtocolPolicy = protocolPolicy ;
104
- mSecurityPolicy = securityPolicy ;
102
+ // config fields
103
+ mProtocolPolicy = context .getProtocolPolicy ();
104
+ mSecurityPolicy = context .getSecurityPolicy ();
105
+ // state fields
105
106
reset ();
106
107
}
107
108
@@ -122,11 +123,37 @@ public SCPParameters getActiveProtocol() {
122
123
return mActiveProtocol ;
123
124
}
124
125
126
+ /** @return the protocol policy in effect on this channel */
127
+ public SCPProtocolPolicy getProtocolPolicy () {
128
+ return mProtocolPolicy ;
129
+ }
130
+
131
+ /** @return the security policy in effect on this channel */
132
+ public SCPSecurityPolicy getSecurityPolicy () {
133
+ return mSecurityPolicy ;
134
+ }
135
+
125
136
/** @return true if the channel is established */
126
137
public boolean isEstablished () {
127
138
return mIsEstablished ;
128
139
}
129
140
141
+ /**
142
+ * Set the protocol policy to be used for this channel
143
+ * @param protocolPolicy
144
+ */
145
+ public void setProtocolPolicy (SCPProtocolPolicy protocolPolicy ) {
146
+ mProtocolPolicy = protocolPolicy ;
147
+ }
148
+
149
+ /**
150
+ * Set the security policy to be used for this channel
151
+ * @param securityPolicy
152
+ */
153
+ public void setSecurityPolicy (SCPSecurityPolicy securityPolicy ) {
154
+ mSecurityPolicy = securityPolicy ;
155
+ }
156
+
130
157
/**
131
158
* Inform the secure channel about the protocol to be used
132
159
* <p/>
@@ -266,6 +293,10 @@ private ResponseAPDU transmitInternal(CommandAPDU command) throws CardException
266
293
public void open () throws CardException {
267
294
LOG .debug ("opening secure channel" );
268
295
296
+ // log policies
297
+ LOG .debug ("using protocol policy " + mProtocolPolicy );
298
+ LOG .debug ("using security policy " + mSecurityPolicy );
299
+
269
300
// generate the host challenge
270
301
byte [] hostChallenge = generateChallenge ();
271
302
0 commit comments