Author: rrelyea
Update of /cvs/dirsec/coolkey/applet
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv14460
Added Files:
AUTHORS COPYING Makefile README applet.pmf
Log Message:
Coolkey applet
--- NEW FILE AUTHORS ---
Tommaso Cucinotta
Title: Computer Engineer, PhD student
Real Title: The Body
Org: Scuola Superiore di Studi Universitari
e Perfezionamento S.Anna (Pisa, Italy)
E-mail: cucinotta(a)sssup.it
Home Page:
http://gandalf.sssup.it/~cucinotta
David Corcoran
Title: Smartcard technical consultant
Org: M.U.S.C.L.E. Project
E-mail: corcoran(a)linuxnet.com
Home Page:
http://www.linuxnet.com
Ludovic Rousseau
E-mail: ludovic.rousseau(a)free.fr
Home page:
http://ludovic.rousseau.free.fr
Modified by:
Eirik Herskedal
Title: Computer Science, Masters student
Org: Purdue University
E-mail: ehersked(a)cs.purdue.edu
Jamie Nicolson
Title: Senior Software Engineer
Org: America Online, Inc.
--- NEW FILE COPYING ---
Copyright (c) 1999-2002 David Corcoran <corcoran(a)linuxnet.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
Changes to this license can be made only by the copyright author with
explicit written consent.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Alternatively, the contents of this file may be used under the terms of
the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which
case the provisions of the LGPL are applicable instead of those above. If
you wish to allow use of your version of this file only under the terms
of the LGPL, and not to allow others to use your version of this file
under the terms of the BSD license, indicate your decision by deleting
the provisions above and replace them with the notice and other
provisions required by the LGPL. If you do not delete the provisions
above, a recipient may use your version of this file under the terms of
either the BSD license or the LGPL.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
--- NEW FILE Makefile ---
# BEGIN LICENSE BLOCK
# Copyright (c) 1999-2002 David Corcoran <corcoran(a)linuxnet.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# Changes to this license can be made only by the copyright author with
# explicit written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Alternatively, the contents of this file may be used under the terms of
# the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which
# case the provisions of the LGPL are applicable instead of those above. If
# you wish to allow use of your version of this file only under the terms
# of the LGPL, and not to allow others to use your version of this file
# under the terms of the BSD license, indicate your decision by deleting
# the provisions above and replace them with the notice and other
# provisions required by the LGPL. If you do not delete the provisions
# above, a recipient may use your version of this file under the terms of
# either the BSD license or the LGPL.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# END LICENSE BLOCK
CORE_DEPTH = ..
include ../coreconf/config.mk
#############################################################################
# Locations of toolkits.
#
#
# The Javacard kit, version 2.2. Version 2.1 should also work.
#
# The following need to be set in environment variables or in custom.mk.
# Examples :
#
#JAVACARD_KIT_DIR=c:/hack/java_card_kit-2_2
#
# The JDK. You need to use version 1.3.x; other versions aren't supported
# by the converter classes.
#
#JAVA_HOME=/cygdrive/c/jdk1.3.1_07/
#
# The top-level directory of Schlumberger's Cyberflex SDK.
#
#SLB_DIR=c:\Program Files\Schlumberger
-include custom.mk
#############################################################################
# Build Constants
#
# The Applet Identification Number.
#
AID=0x62:0x76:0x01:0xFF:0x00:0x00:0x00
#
# The Package Identification Number.
#
PID=0x62:0x76:0x01:0xFF:0x00:0x00
#
# The Java package to which the applet belongs.
#
PACKAGE=com.redhat.nkey.applet
#
# The unqualified name of the applet class.
#
APPLET_CLASS_NAME=CardEdge
#
# The directory into which output will be generated.
#
OUTPUT_DIR=output
#############################################################################
# Generated build variables.
PACKAGE_DIR=$(subst .,/,$(PACKAGE))
JAVA_SRC_FILES=$(wildcard src/$(PACKAGE_DIR)/*.java)
APPLET_QUALIFIED_CLASS_NAME=$(PACKAGE).$(APPLET_CLASS_NAME)
CONVERTER_OUTPUT_DIR=$(OUTPUT_DIR)/$(PACKAGE_DIR)/javacard
JAVAC=$(JAVA_HOME)/bin/javac
JAVA=$(JAVA_HOME)/bin/java
JAVA_SRC_FILENAMES=$(notdir $(JAVA_SRC_FILES))
JAVA_CLASS_FILES=$(patsubst %.java,$(OUTPUT_DIR)/$(PACKAGE_DIR)/%.class,
$(JAVA_SRC_FILENAMES))
#############################################################################
# The ultimate output of the build is applet.ijc. This file is ready to
# be loaded onto a token.
all: $(CONVERTER_OUTPUT_DIR)/applet.ijc
clobber: clean
clean:
touch $(JAVA_SRC_FILES)
#############################################################################
# The first step in the build is to compile the Java source files (*.java)
# into class files (*.class). These class files are regular Java class files;
# they aren't specially formatted for Javacard yet.
#
# The classpath needed to compile the Java source code.
#
BUILD_CLASSPATH="$(JAVACARD_KIT_DIR)/lib/javacardframework.jar;$(JAVACARD_KIT_DIR)/lib/api.jar;jars/visaop20.jar"
#
# build rule
#
$(JAVA_CLASS_FILES): $(JAVA_SRC_FILES)
mkdir -p $(CONVERTER_OUTPUT_DIR)
perl ./update_buildid.pl $(JAVA_SRC_FILES)
$(JAVAC) -classpath ${BUILD_CLASSPATH} -d $(OUTPUT_DIR) $(JAVA_SRC_FILES)
#############################################################################
# The next step is to convert the regular Java class files into the Javacard
# format, using the converter program included with the Javacard Kit.
# The output from the converter is applet.cap, but the next step expects
# applet.jar, so we rename it.
#
# Classpath for the converter.
#
CONVERT_CLASSPATH="$(JAVACARD_KIT_DIR)/lib/converter.jar;$(JAVACARD_KIT_DIR)/lib/offcardverifier.jar;$(SLB_DIR)/Smart
Cards and Terminals/Cyberflex Access Kits/v4/Classlibrary/jc_api_212.jar"
#
# Location of the .exp files, used for "linking" Javacard code.
#
EXPORT_PATH="$(SLB_DIR)\Smart Cards and Terminals\Cyberflex Access
Kits\v4\Toolkit\PRGMaker\Export Files"
#
# build rule
#
$(CONVERTER_OUTPUT_DIR)/applet.jar: $(JAVA_CLASS_FILES)
$(JAVA) -classpath ${CONVERT_CLASSPATH} com.sun.javacard.converter.Converter -classdir
$(OUTPUT_DIR) -out EXP JCA CAP -exportpath $(EXPORT_PATH) -applet $(AID)
$(APPLET_QUALIFIED_CLASS_NAME) -d $(OUTPUT_DIR) $(PACKAGE) $(PID) 1.0
mv $(CONVERTER_OUTPUT_DIR)/applet.cap $@
###############################################################################
# Finally, we must prepare the applet.jar file to be loaded onto a Schlumberger
# token. This means preparing it to be verified by the on-card verifier, using
# TrustedLogic's "CodeShield" technology. The Schlumberger SDK provides
# a 'makeijc' program to do this. The output is applet.ijc, which is ready to
# be loaded onto a token.
#
# Classpath for the IJC converter.
#
IJC_CLASSPATH="$(SLB_DIR)\Smart Cards and Terminals\Cyberflex Access
Kits\v4\Toolkit\PRGMaker\makeijc.jar"
#
# build rule
#
$(CONVERTER_OUTPUT_DIR)/applet.ijc: $(CONVERTER_OUTPUT_DIR)/applet.jar
$(JAVA) -classpath $(IJC_CLASSPATH) com.slb.javacard.jctools.ijc.MakeIJC -verbose
-expFileDir $(EXPORT_PATH) -type onCardVerifier $(CONVERTER_OUTPUT_DIR)/applet.jar
mkdir -p ../dist/$(OBJDIR)/bin
cp $@ ../dist/$(OBJDIR)/bin/CardEdge.$(shell cat .buildid).ijc
export:
libs: all
--- NEW FILE README ---
/************************************************************
MUSCLE SmartCard Development
Package: CardEdgeApplet
Type: Java precompiled binaries
Description: CardEdge implementation with JavaCard
Authors: Tommaso Cucinotta <cucinotta(a)sssup.it>
David Corcoran <corcoran(a)linuxnet.com>
Ludovic Rousseau <ludovic.rousseau(a)free.fr>
Modified:
Eirik Herskedal <ehersked(a)cs.purdue.edu>
See AUTHORS file for further details
Date: October 2001 - October 2002
License: See COPYING file
************************************************************/
HISTORY
============================================================
0.9.10: 20 Sep 2002
Correct a security bug: When importing a certificate (from
Mozilla) the keys were created with read, write and use set to
ALWAYS.
0.9.9: 8 Sep 2002
Include Java source code
0.9.8: Jul 2002
Include the converted CAP file
0.9.7: Mar 2002
Inclusion of GemXpressoRADIII support
0.9.6: Nov 2001
Split the packages
0.9.5:
First release
REQUIREMENTS
============================================================
In order to use this program, you must have a JavaCard 2.1.1
compliant smart card and a supported smart card reader.
You must also have all the software required to load a Java
Card Applet on your smartcard.
Different smart card vendors provide emulators for their own
smart cards. You can also try loading this program into an
emulated card. In this case you don't need cards nor readers
to be connected to your system.
DESCRIPTION
============================================================
This package contains source code and precompiled binaries for
the Card Edge Applet, a free implementation of the Cryptographic
Card Edge Definition for Java Enabled Smartcards.
http://www.musclecard.com/musclecard/
Note that different versions of this Applet could be released,
with different features disabled, in order to let you save
space on the card if your application does not require those
features at all.
ADDITIONAL FEATURES
============================================================
This Applet actually supports some pin policy enforcement.
Checks are made on the pin size, character set and mix of
characters.
The exact pin policy depends on parameters provided at
instantiation time.
KNOWN LIMITATIONS
============================================================
This Applet has been tested with Schlumberger Cyberflex
Access 32K cards, Gemplus Gxp 211 PK, Gemplus GemXploreXpresso v3
and is known to work with most cryptographic features involving
RSA and DES keys. DSA testing still needs to be done with cards
supporting it.
KNOWN BUGS
============================================================
None at the moment (02-Oct-2002)
SUPPORT
============================================================
If you need any further information, please contact us using
the public mailing list for the M.U.S.C.L.E. project.
--- NEW FILE applet.pmf ---
[PrgMaker]
Package=com.redhat.nkey.applet
PackageAID=627601FF0000
OutputDir=C:\hack\netkey\applet
ExportDir=C:\PROGRA~1\SCHLUM~1\SMARTC~1\CYBERF~1\v4\Toolkit\prgmaker\Export Files
Version=1.0
ClassDir=C:\hack\netkey\applet\src
[Applets]
NumApplets=1
Applet1=CardEdge.class
Applet1AID=627601FF000000