summaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/response/Response.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/reader/response/Response.java')
-rw-r--r--src/cz/crcs/ectester/reader/response/Response.java78
1 files changed, 40 insertions, 38 deletions
diff --git a/src/cz/crcs/ectester/reader/response/Response.java b/src/cz/crcs/ectester/reader/response/Response.java
index 4abfd14..cbed3b2 100644
--- a/src/cz/crcs/ectester/reader/response/Response.java
+++ b/src/cz/crcs/ectester/reader/response/Response.java
@@ -2,8 +2,8 @@ package cz.crcs.ectester.reader.response;
import cz.crcs.ectester.applet.ECTesterApplet;
import cz.crcs.ectester.applet.EC_Consts;
-import cz.crcs.ectester.reader.Util;
-import cz.crcs.ectester.reader.ec.EC_Data;
+import cz.crcs.ectester.common.util.ByteUtil;
+import cz.crcs.ectester.common.util.CardUtil;
import javacard.framework.ISO7816;
import javacard.security.KeyPair;
@@ -13,7 +13,6 @@ import javax.smartcardio.ResponseAPDU;
* @author Jan Jancar johny@neuromancer.sk
*/
public abstract class Response {
-
private ResponseAPDU resp;
private long time;
private short[] sws;
@@ -37,7 +36,7 @@ public abstract class Response {
//parse SWs in response
for (int i = 0; i < numSW; ++i) {
if (getLength() >= (offset + 2)) {
- short sw = Util.getShort(data, offset);
+ short sw = ByteUtil.getShort(data, offset);
offset += 2;
sws[i] = sw;
if (sw != ISO7816.SW_NO_ERROR) {
@@ -63,7 +62,7 @@ public abstract class Response {
error = true;
break;
}
- short paramLength = Util.getShort(data, offset);
+ short paramLength = ByteUtil.getShort(data, offset);
offset += 2;
if (data.length < offset + paramLength) {
error = true;
@@ -88,6 +87,10 @@ public abstract class Response {
return (short) resp.getSW();
}
+ public short[] getSWs() {
+ return sws;
+ }
+
public short getSW(int index) {
return sws[index];
}
@@ -130,24 +133,44 @@ public abstract class Response {
*
*/
public static class AllocateKeyAgreement extends Response {
- byte kaType;
+ private byte kaType;
public AllocateKeyAgreement(ResponseAPDU response, long time, byte kaType) {
super(response, time);
this.kaType = kaType;
- parse(2, 0);
+ parse(1, 0);
}
@Override
public String getDescription() {
- return String.format("Allocated KeyAgreement(%s) object", Util.getKATypeString(this.kaType));
+ return String.format("Allocated KeyAgreement(%s) object", CardUtil.getKATypeString(this.kaType));
}
+ }
+
+ /**
+ *
+ */
+ public static class AllocateSignature extends Response {
+ private byte sigType;
+
+ public AllocateSignature(ResponseAPDU response, long time, byte sigType) {
+ super(response, time);
+ this.sigType = sigType;
+ parse(1, 0);
+ }
+
+ @Override
+ public String getDescription() {
+ return String.format("Allocated Signature(%s) object", CardUtil.getSigTypeString(this.sigType));
+ }
}
+ /**
+ *
+ */
public static class Allocate extends Response {
-
private byte keyPair;
private short keyLength;
private byte keyClass;
@@ -181,7 +204,6 @@ public abstract class Response {
*
*/
public static class Clear extends Response {
-
private byte keyPair;
public Clear(ResponseAPDU response, long time, byte keyPair) {
@@ -210,7 +232,6 @@ public abstract class Response {
*
*/
public static class Set extends Response {
-
private byte keyPair;
private byte curve;
private short parameters;
@@ -268,7 +289,6 @@ public abstract class Response {
*
*/
public static class Corrupt extends Response {
-
private byte keyPair;
private byte key;
private short params;
@@ -290,7 +310,7 @@ public abstract class Response {
@Override
public String getDescription() {
- String corrupt = Util.getCorruption(corruption);
+ String corrupt = CardUtil.getCorruption(corruption);
String pair;
if (keyPair == ECTesterApplet.KEYPAIR_BOTH) {
@@ -306,7 +326,6 @@ public abstract class Response {
*
*/
public static class Generate extends Response {
-
private byte keyPair;
public Generate(ResponseAPDU response, long time, byte keyPair) {
@@ -336,7 +355,6 @@ public abstract class Response {
*
*/
public static class Export extends Response {
-
private byte keyPair;
private byte key;
private short parameters;
@@ -445,7 +463,6 @@ public abstract class Response {
*
*/
public static class ECDH extends Response {
-
private byte pubkey;
private byte privkey;
private byte export;
@@ -477,7 +494,7 @@ public abstract class Response {
@Override
public String getDescription() {
- String algo = Util.getKA(type);
+ String algo = CardUtil.getKATypeString(type);
String pub = pubkey == ECTesterApplet.KEYPAIR_LOCAL ? "local" : "remote";
String priv = privkey == ECTesterApplet.KEYPAIR_LOCAL ? "local" : "remote";
@@ -486,7 +503,7 @@ public abstract class Response {
if (corruption == EC_Consts.CORRUPTION_NONE) {
validity = "unchanged";
} else {
- validity = Util.getCorruption(corruption);
+ validity = CardUtil.getCorruption(corruption);
}
return String.format("%s of %s pubkey and %s privkey(%s point)", algo, pub, priv, validity);
}
@@ -496,14 +513,15 @@ public abstract class Response {
*
*/
public static class ECDSA extends Response {
-
private byte keyPair;
+ private byte sigType;
private byte export;
private byte[] raw;
- public ECDSA(ResponseAPDU response, long time, byte keyPair, byte export, byte[] raw) {
+ public ECDSA(ResponseAPDU response, long time, byte keyPair, byte sigType, byte export, byte[] raw) {
super(response, time);
this.keyPair = keyPair;
+ this.sigType = sigType;
this.export = export;
this.raw = raw;
@@ -520,9 +538,10 @@ public abstract class Response {
@Override
public String getDescription() {
+ String algo = CardUtil.getSigTypeString(sigType);
String key = keyPair == ECTesterApplet.KEYPAIR_LOCAL ? "local" : "remote";
String data = raw == null ? "random" : "provided";
- return String.format("ECDSA with %s keypair(%s data)", key, data);
+ return String.format("%s with %s keypair(%s data)", algo, key, data);
}
}
@@ -543,21 +562,4 @@ public abstract class Response {
}
}
-
- /**
- *
- */
- public static class Support extends Response {
-
- public Support(ResponseAPDU response, long time) {
- super(response, time);
-
- parse(3, 0);
- }
-
- @Override
- public String getDescription() {
- return "Support of ECDH, ECDHC, ECDSA allocation";
- }
- }
}