summaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/command/Command.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/reader/command/Command.java')
-rw-r--r--src/cz/crcs/ectester/reader/command/Command.java79
1 files changed, 44 insertions, 35 deletions
diff --git a/src/cz/crcs/ectester/reader/command/Command.java b/src/cz/crcs/ectester/reader/command/Command.java
index 922a33a..5a6906c 100644
--- a/src/cz/crcs/ectester/reader/command/Command.java
+++ b/src/cz/crcs/ectester/reader/command/Command.java
@@ -252,7 +252,40 @@ public abstract class Command {
public String toString() {
return "AllocateKeyAgreement";
}
- }
+ }
+
+ /**
+ *
+ */
+ public static class AllocateSignature extends Command {
+ private byte sigType;
+
+ /**
+ * Creates the INS_ALLOCATE_SIG instruction.
+ *
+ * @param cardManager cardManager to send APDU through
+ * @param sigType which type of Signature to use
+ */
+ public AllocateSignature(CardMngr cardManager, byte sigType) {
+ super(cardManager);
+ this.sigType = sigType;
+ byte[] data = new byte[]{sigType};
+ this.cmd = new CommandAPDU(ECTesterApplet.CLA_ECTESTERAPPLET, ECTesterApplet.INS_ALLOCATE_SIG, 0x00, 0x00, data);
+ }
+
+ @Override
+ public Response.AllocateSignature send() throws CardException {
+ long elapsed = -System.nanoTime();
+ ResponseAPDU response = cardManager.send(cmd);
+ elapsed += System.nanoTime();
+ return new Response.AllocateSignature(response, elapsed, sigType);
+ }
+
+ @Override
+ public String toString() {
+ return "AllocateSignature";
+ }
+ }
/**
*
@@ -518,7 +551,7 @@ public abstract class Command {
* @param privkey keyPair to use for private key, (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
* @param export whether to export ECDH secret
* @param corruption whether to invalidate the pubkey before ECDH (EC_Consts.CORRUPTION_* | ...)
- * @param type ECDH algorithm type (EC_Consts.KA_* | ...)
+ * @param type EC KeyAgreement type
* @param pubkey pubkey data to do ECDH with.
*/
public ECDH_direct(CardMngr cardManager, byte privkey, byte export, short corruption, byte type, byte[] pubkey) {
@@ -553,6 +586,7 @@ public abstract class Command {
public static class ECDSA extends Command {
private byte keyPair;
+ private byte sigType;
private byte export;
private byte[] raw;
@@ -561,20 +595,23 @@ public abstract class Command {
*
* @param cardManager cardManager to send APDU through
* @param keyPair keyPair to use for signing and verification (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
+ * @param sigType Signature type to use
* @param export whether to export ECDSA signature
* @param raw data to sign, can be null, in which case random data is signed.
*/
- public ECDSA(CardMngr cardManager, byte keyPair, byte export, byte[] raw) {
+ public ECDSA(CardMngr cardManager, byte keyPair, byte sigType, byte export, byte[] raw) {
super(cardManager);
this.keyPair = keyPair;
+ this.sigType = sigType;
this.export = export;
this.raw = raw;
int len = raw != null ? raw.length : 0;
- byte[] data = new byte[2 + len];
- ByteUtil.setShort(data, 0, (short) len);
+ byte[] data = new byte[3 + len];
+ data[0] = sigType;
+ ByteUtil.setShort(data, 1, (short) len);
if (raw != null) {
- System.arraycopy(raw, 0, data, 2, len);
+ System.arraycopy(raw, 0, data, 3, len);
}
this.cmd = new CommandAPDU(ECTesterApplet.CLA_ECTESTERAPPLET, ECTesterApplet.INS_ECDSA, keyPair, export, data);
@@ -585,7 +622,7 @@ public abstract class Command {
long elapsed = -System.nanoTime();
ResponseAPDU response = cardManager.send(cmd);
elapsed += System.nanoTime();
- return new Response.ECDSA(response, elapsed, keyPair, export, raw);
+ return new Response.ECDSA(response, elapsed, keyPair, sigType, export, raw);
}
@Override
@@ -621,33 +658,5 @@ public abstract class Command {
return "Cleanup";
}
}
-
- /**
- *
- */
- public static class Support extends Command {
-
- /**
- * @param cardManager cardManager to send APDU through
- */
- public Support(CardMngr cardManager) {
- super(cardManager);
-
- this.cmd = new CommandAPDU(ECTesterApplet.CLA_ECTESTERAPPLET, ECTesterApplet.INS_SUPPORT, 0, 0);
- }
-
- @Override
- public Response.Support send() throws CardException {
- long elapsed = -System.nanoTime();
- ResponseAPDU response = cardManager.send(cmd);
- elapsed += System.nanoTime();
- return new Response.Support(response, elapsed);
- }
-
- @Override
- public String toString() {
- return "Support";
- }
- }
}