Commit 16b5f7b6 authored by Josh Ji's avatar Josh Ji

implement SharePIN

parent 880b40ed
passportApplet
\ No newline at end of file
......@@ -7,4 +7,7 @@
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="ProjectType">
<option name="id" value="jpab" />
</component>
</project>
\ No newline at end of file
......@@ -22,13 +22,7 @@
package josh.passport;
import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.CardRuntimeException;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.JCSystem;
import javacard.framework.Util;
import javacard.framework.*;
import javacard.security.RandomData;
import javacard.security.Signature;
import javacardx.crypto.Cipher;
......@@ -46,7 +40,7 @@ import javacardx.crypto.Cipher;
*
* @version $Revision$
*/
public class PassportApplet extends Applet implements ISO7816 {
public class PassportApplet extends Applet implements ISO7816, SharePIN {
static byte volatileState[];
static byte persistentState;
......@@ -1114,4 +1108,33 @@ public class PassportApplet extends Applet implements ISO7816 {
return (volatileState[0] & TERMINAL_AUTHENTICATED) == TERMINAL_AUTHENTICATED;
}
byte[] sharedPIN = new byte[]{'t','e','s','t','p','i','n',};
final short sharedSecret = (short)87;
@Override
public Shareable getShareableInterfaceObject(AID aid, byte b) {
if(aid.equals(new byte[]{(byte)0xa0,(byte)0x00,(byte)0x00,(byte)0x06,(byte)0x47,(byte)0x2f,(byte)0x00,(byte)0x01}, (short)0, (byte)0)){
return this;
}
return this;
}
@Override
public void setSharedPIN(byte[] apduBuffer, short offset, short length) {
sharedPIN = new byte[length];
JCSystem.requestObjectDeletion();
Util.arrayCopy(apduBuffer, offset, sharedPIN, (short)0, length );
}
@Override
public short getSharedPIN(byte[] apduBuffer, short offset) {
Util.arrayCopy(sharedPIN, (short)0 , apduBuffer, offset, (short) sharedPIN.length );
return (short)sharedPIN.length;
}
@Override
public short getSecret() {
return sharedSecret;
}
}
package josh.passport;
import javacard.framework.Shareable;
public interface SharePIN extends Shareable {
void setSharedPIN(byte[] apduBuffer, short offset, short length);
short getSharedPIN(byte[] apduBuffer, short offset);
short getSecret();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment