diff options
| author | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-02-26 19:39:00 +0000 | 
|---|---|---|
| committer | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-02-26 19:39:00 +0000 | 
| commit | 6576428966f1e3d688269a407b072fb01f9f7647 (patch) | |
| tree | f79a9c3c70c27477133c9283dd4b0440b7559d05 /smcc/src | |
| parent | bd18d9084fd139aaae40ad8d525c1d0e626f2e5e (diff) | |
| download | mocca-6576428966f1e3d688269a407b072fb01f9f7647.tar.gz mocca-6576428966f1e3d688269a407b072fb01f9f7647.tar.bz2 mocca-6576428966f1e3d688269a407b072fb01f9f7647.zip | |
1.1 candidate (activation)
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@309 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'smcc/src')
6 files changed, 76 insertions, 33 deletions
| diff --git a/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java b/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java index 13c57686..86223854 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java @@ -30,8 +30,6 @@ package at.gv.egiz.smcc;  import java.nio.charset.Charset; -import java.util.logging.Level; -import java.util.logging.Logger;  import javax.smartcardio.CardChannel;  import javax.smartcardio.CardException;  import javax.smartcardio.CommandAPDU; @@ -41,7 +39,7 @@ import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;  public class ACOSCard extends AbstractSignatureCard implements SignatureCard { -   +    private static Log log = LogFactory.getLog(ACOSCard.class);    public static final byte[] AID_DEC = new byte[] { (byte) 0xA0, (byte) 0x00, @@ -100,8 +98,15 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {        (byte) 0x01 // RSA // TODO: Not verified yet    }; +  private static final int PINSPEC_INF = 0; +  private static final int PINSPEC_DEC = 1; +  private static final int PINSPEC_SIG = 2; +    public ACOSCard() {      super("at/gv/egiz/smcc/ACOSCard"); +    pinSpecs.add(PINSPEC_INF, new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("inf.pin.name"), KID_PIN_INF, null)); +    pinSpecs.add(PINSPEC_DEC, new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("dec.pin.name"), KID_PIN_DEC, null)); +    pinSpecs.add(PINSPEC_SIG, new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name"), KID_PIN_SIG, null));    }    /* (non-Javadoc) @@ -165,7 +170,8 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {      try {        if ("IdentityLink".equals(infobox)) { -        PINSpec spec = new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("inf.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_INF); +        //new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("inf.pin.name"));          int retries = -1;          String pin = null; @@ -219,7 +225,8 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {        if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)) { -        PINSpec spec = new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_SIG); +        //new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name"));          int retries = -1;          String pin = null; @@ -260,7 +267,8 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {        } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)) { -        PINSpec spec = new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("dec.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_DEC); +        //new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("dec.pin.name"));          int retries = -1;          String pin = null; @@ -322,11 +330,6 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {    }    @Override -  public byte[] getKIDs() { -    return new byte[] { KID_PIN_DEC, KID_PIN_INF, KID_PIN_SIG }; -  } - -  @Override    public int verifyPIN(String pin, byte kid) throws LockedException, NotActivatedException, SignatureCardException {      CardChannel channel = getCardChannel(); diff --git a/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java b/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java index 67f090a5..cb068725 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java @@ -31,7 +31,11 @@ package at.gv.egiz.smcc;  import java.io.ByteArrayOutputStream;  import java.io.IOException;  import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List;  import java.util.Locale; +import java.util.Map;  import java.util.ResourceBundle;  import javax.smartcardio.ATR; @@ -49,6 +53,8 @@ public abstract class AbstractSignatureCard implements SignatureCard {    private static Log log = LogFactory.getLog(AbstractSignatureCard.class); +  protected List<PINSpec> pinSpecs = new ArrayList<PINSpec>(); +    private ResourceBundle i18n;    private String resourceBundleName; @@ -433,4 +439,8 @@ public abstract class AbstractSignatureCard implements SignatureCard {      }    } +  @Override +  public List<PINSpec> getPINSpecs() { +    return pinSpecs; +  }  } diff --git a/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java b/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java index 0852d664..d180ddf0 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java @@ -35,23 +35,40 @@ public class PINSpec {      String name_; +    byte kid_; + +    byte[] context_aid_; + +    /** +     * +     * @param minLenght +     * @param maxLength +     * @param rexepPattern +     * @param resourceBundle +     * @param name +     * @param kid the keyId for this pin +     */      public PINSpec(int minLenght, int maxLength, String rexepPattern,  -        ResourceBundle resourceBundle, String name) { +        ResourceBundle resourceBundle, String name, byte kid, byte[] contextAID) {          minLength_ = minLenght;          maxLength_ = maxLength;          rexepPattern_ = rexepPattern;          resourceBundle_ = resourceBundle;          name_ = name; +        kid_ = kid; +        context_aid_ = contextAID;      }      public PINSpec(int minLenght, int maxLength, String rexepPattern,  -        String name) { +        String name, byte kid, byte[] contextAID) {          minLength_ = minLenght;          maxLength_ = maxLength;          rexepPattern_ = rexepPattern;          name_ = name; +        kid_ = kid; +        context_aid_ = contextAID;      } @@ -75,7 +92,14 @@ public class PINSpec {      public String getRexepPattern() {          return rexepPattern_;      } -     + +    public byte getKID() { +      return kid_; +    } + +    public byte[] getContextAID() { +      return context_aid_; +    }  } diff --git a/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java b/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java index e80c6683..ae43629e 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java @@ -29,10 +29,8 @@  package at.gv.egiz.smcc;  import java.math.BigInteger; -import java.util.ArrayList;  import java.util.Arrays; -import java.util.List;  import javax.smartcardio.CardChannel;  import javax.smartcardio.CardException;  import javax.smartcardio.CommandAPDU; @@ -42,7 +40,7 @@ import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;  public class STARCOSCard extends AbstractSignatureCard implements SignatureCard { -   +    /**     * Logging facility.     */ @@ -155,12 +153,17 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard    };    public static final byte KID_PIN_CARD = (byte) 0x01; -   + +  private static final int PINSPEC_CARD = 0; +  private static final int PINSPEC_SS = 1; +    /**     * Creates an new instance.     */    public STARCOSCard() {      super("at/gv/egiz/smcc/STARCOSCard"); +    pinSpecs.add(PINSPEC_CARD, new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("card.pin.name"), KID_PIN_CARD, null)); +    pinSpecs.add(PINSPEC_SS, new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name"), KID_PIN_SS, AID_DF_SS));    }    @Override @@ -210,7 +213,8 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard      try {        if ("IdentityLink".equals(infobox)) { -        PINSpec spec = new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("card.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_CARD); +        //new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("card.pin.name"));          int retries = -1;          String pin = null; @@ -302,7 +306,8 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard        if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)) { -        PINSpec spec = new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_SS); +        //new PINSpec(6, 10, "[0-9]", getResourceBundle().getString("sig.pin.name"));          int retries = -1;          String pin = null; @@ -334,7 +339,8 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard        } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)) { -        PINSpec spec = new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("card.pin.name")); +        PINSpec spec = pinSpecs.get(PINSPEC_CARD); +        //new PINSpec(4, 4, "[0-9]", getResourceBundle().getString("card.pin.name"));          int retries = -1;          String pin = null; @@ -455,11 +461,6 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard      }    } -  @Override -  public byte[] getKIDs() { -    return new byte[] { KID_PIN_CARD, KID_PIN_SS }; -  } -    /**     * VERIFY PIN     * <p> diff --git a/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java b/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java index bad7ccf6..8dc4ac2a 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java @@ -36,9 +36,13 @@ import java.security.cert.Certificate;  import java.security.cert.CertificateEncodingException;  import java.security.cert.CertificateException;  import java.security.cert.CertificateFactory; +import java.util.ArrayList;  import java.util.Enumeration; +import java.util.HashMap; +import java.util.List;  import java.util.Locale; +import java.util.Map;  import javax.smartcardio.Card;  import javax.smartcardio.CardTerminal; @@ -311,7 +315,7 @@ public class SWCard implements SignatureCard {      if (password == null) { -      PINSpec pinSpec = new PINSpec(0, -1, ".", "KeyStore-Password"); +      PINSpec pinSpec = new PINSpec(0, -1, ".", "KeyStore-Password", (byte) 0x01, null);        password = provider.providePIN(pinSpec, -1); @@ -390,13 +394,13 @@ public class SWCard implements SignatureCard {    }    @Override -  public byte[] getKIDs() { -    return null; +  public int verifyPIN(String pin, byte kid) throws LockedException, NotActivatedException, SignatureCardException { +    return -1;    }    @Override -  public int verifyPIN(String pin, byte kid) throws LockedException, NotActivatedException, SignatureCardException { -    return -1; +  public List<PINSpec> getPINSpecs() { +    return new ArrayList<PINSpec>();    }  } diff --git a/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java b/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java index 1ec35b78..1e5e09c8 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java @@ -31,6 +31,7 @@ package at.gv.egiz.smcc;  import java.util.List;  import java.util.Locale; +import java.util.Map;  import javax.smartcardio.Card;  import javax.smartcardio.CardTerminal; @@ -118,10 +119,10 @@ public interface SignatureCard {        PINProvider provider) throws SignatureCardException, InterruptedException;    /** -   * get the KIDs for the availabel PINs +   * Get the KIDs for all available PINs and the corresponding PINSpecs     * @return array of KIDs     */ -  public byte[] getKIDs(); +  public List<PINSpec> getPINSpecs();    /**     * | 
