Special Thanks
==============
The initialisation of smart-card presented here has been taken (in a slightly modified form) from the Gooze website. The original post can be found [here](http://www.gooze.eu/howto/smartcard-quickstarter-guide/smart-card-initialization). Many thanks for concise and precise information. I'd also like to thank the guys behind Gooze for providing me with two tokens free of charge, and especially for handing out a number of those at FOSDEM 2012.
Features
========
The Feitian ePass2003 USB token features support for generating the RSA keys of up to 2048 bits, but with the limitation of supporting only a single PIN/PUK code (i.e. no security officer PIN/PUK). The token itself is CCID compliant.
Requirements
============
For Debian Squeeze you'll need a more recent [OpenSC package](/FreeSoftwareX509Cookbook/x509_infrastructure/smart_card/preparing_the_environment/) in addition to common requirements.
In addition to that you'll need more recent version of the pcsc-lite and libccid package. Below you'll find instructions on how to rebuild them as well.
Rebuilding the pcsc-lite Packages
---------------------------------
Install the required dependencies with:
```
? root
$ apt-get build-dep pcsc-lite
```
Prepare the build directories, download the sources, and build the package:
```
----BEGIN----$
mkdir ~/src/
cd ~/src/
apt-get source pcsc-lite
cd ~/src/pcsc-lite-1.8.1/
dpkg-buildpackage -rfakeroot -b
-----END-----$
```
You should now have the package build and ready in directory:
```
# ~/src/
```
This package should be copied over to destination machines and then installed with:
```
? root
$ dpkg -i {{package}}
```
Replace the parameter *package* with the resulting filename of the Debian package.
Rebuilding the libccid
----------------------
Prior to proceeding with the rebuild of *libccid*, you'll have to install the custom-built development packages from the previous step (the *pcsc-lite* packages).
Install the remaining required dependencies with:
```
? root
$ apt-get build-dep libccid
```
Prepare the build directories, download the sources, and build the package:
```
----BEGIN----$
mkdir ~/src/
cd ~/src/
apt-get source libccid
cd ~/src/ccid-1.4.5/
dpkg-buildpackage -rfakeroot -b
-----END-----$
```
You should now have the package built and ready in directory:
```
# ~/src/
```
This package should be copied over to destination machines and then installed with:
```
? root
$ dpkg -i {{package}}
```
Replace the parameter *package* with the resulting filename of the Debian package.
Initialising the Card
=====================
The first step is to erase the contents of the smart card with:
```
$ pkcs15-init --erase-card
```
If the card has already been initialised, you will be prompted for the PIN code you've used earlier.
Now comes the initialisation of the PKCS#15 structure on the smart card. It is useful to create a configuration file for this step which will include the user's PIN/PUK codes:
```
# ~/card_options.conf
----BEGIN----
pin {{pin_code}}
puk {{puk_code}}
-----END-----
```
Replace the parameters *pin_code* and *puk_code* with user's PIN and PUK codes.
```
$ pkcs15-init --create-pkcs15 --profile pkcs15+onepin --use-default-transport-key --options-file ~/card_options.conf
```
Finally, you'll want to remove the configuration file for this particular smart card (in a safe manner):
```
$ shred -z -u -n10 ~/card_options.conf
```
The smart card is now initialised, and it can be used for storing private keys, public keys, and certificates. Multiple key/certificate pairs can be stored in the single slot it provides.