Files
vsmartcard/npa
2011-10-18 09:03:13 +00:00
..
2010-12-08 14:44:19 +00:00
2011-09-26 08:01:30 +00:00
2010-11-14 20:34:52 +00:00
2011-05-20 09:23:30 +00:00
2010-11-14 20:34:52 +00:00
2011-02-02 18:49:14 +00:00
2011-09-26 08:01:30 +00:00
2010-11-14 20:34:52 +00:00
2010-11-14 20:34:52 +00:00
2011-10-17 12:28:41 +00:00

***
npa
***

Welcome to npa. The purpose of npa is to offer an easy to use API for the new
German identity card (neuer Personalausweis, nPA). The library also implements
secure messaging, which could also be used for other cards.

npa is implemented using OpenPACE 0.6 (http://sourceforge.net/projects/openpace/).
Some fragments of the source code are based on the source code of the OpenSC tools.

The included npa-tool has support for Password Authenticated Connection
Establishment (PACE). npa-tool can be used for PIN management or to encrypt
APDUs inside a secure messaging channel established with PACE.

============
Installation
============

See file INSTALL.

---------------
Hints on OpenSC
---------------

libnpa links against libopensc, which is discouraged and hindered since
opensc>=0.12. We really need to get rid of this dependency. You need the opensc
components to be installed (especially libopensc.so). But you might need to
adjust the opensc library flags:

``./configure OPENSC_LIBS="-L/path/to/opensc/libdir -lopensc"``

----------------
Hints on OpenSSL
----------------

If you have a local build of OpenSSL with OpenPACE, that you want to link
against use something like the following command: ::
 
    ./configure \
        OPENSSL_CFLAGS="-I/path/to/openssl-1.0.0d_with_openpace-0.6/include" \
        OPENSSL_LIBS="-L/path/to/openssl-1.0.0d_with_openpace-0.6 -lcrypto"

=====
Usage
=====

When testing PACE with either PIN, CAN, MRZ or PUK run npa-tool. Here you can
enter APDUs which are to be converted according to the secure messaging
parameter and to be sent to the card. Herefor insert the APDU in hex (upper or
lower case) with a colon to separate the bytes or without it. Example APDUs can
be found in the file apdus.
To pass a secret to npa-tool, the command line parameters or the environment
variables PIN/CAN/MRZ/PUK/NEWPIN can be used. If none of these options is used,
npa-tool will show a password prompt.

----------------------
Linking against libnpa
----------------------

If you have a local build of libnpa and OpenPACE, the preferred way to adjust
libraries and cflags for foreign code is to use pkg-config:

``./configure PKG_CONFIG_PATH="/path/to/openssl-1.0.0d_with_openpace-0.6/lib/pkgconfig:/path/to/libnpa/lib/pkgconfig"``

Alternatively you can define libs and cflags by hand: ::

    ./configure \
        OPENSSL_CFLAGS="-I/path/to/openssl-1.0.0d_with_openpace-0.6/include" \
        LIBNPA_CFLAGS="-I/path/to/openssl-1.0.0d_with_openpace-0.6/include -I/path/to/libnpa-0.1/src" \
        OPENSSL_LIBS="-L/path/to/openssl-1.0.0d_with_openpace-0.6 -lcrypto" \
        LIBNPA_LIBS="-L/path/to/openssl-1.0.0d_with_openpace-0.6 -lcrypto -L/path/to/libnpa-0.1/src/.libs -lnpa"

=========
Questions
=========

For questions, please use http://sourceforge.net/projects/vsmartcard/support


=========
API index
=========

.. doxygenindex::
   :project: npa

.. @author Frank Morgner <morgner@informatik.hu-berlin.de>