2010-01-15 00:43:56 +01:00
|
|
|
{stdenv, makeWrapper, ed, libopensc_dnie}:
|
|
|
|
|
|
|
|
let
|
|
|
|
opensc = libopensc_dnie.opensc;
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "${opensc.name}-dnie-wrapper";
|
|
|
|
|
|
|
|
buildInputs = [ makeWrapper ];
|
|
|
|
|
|
|
|
phases = [ "installPhase" ];
|
|
|
|
|
|
|
|
installPhase = ''
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out/etc
|
2010-01-15 00:43:56 +01:00
|
|
|
cp ${opensc}/etc/opensc.conf $out/etc
|
|
|
|
chmod +w $out/etc/opensc.conf
|
|
|
|
|
|
|
|
# NOTE: The libopensc-dnie.so driver requires /usr/bin/pinentry available, to sign
|
|
|
|
|
|
|
|
${ed}/bin/ed $out/etc/opensc.conf << EOF
|
|
|
|
/card_drivers
|
|
|
|
a
|
|
|
|
card_drivers = dnie;
|
|
|
|
card_driver dnie {
|
|
|
|
module = ${libopensc_dnie}/lib/libopensc-dnie.so;
|
|
|
|
}
|
|
|
|
.
|
|
|
|
w
|
|
|
|
q
|
|
|
|
EOF
|
|
|
|
|
|
|
|
# Disable pkcs15 file caching, otherwise the card does not work
|
|
|
|
sed -i 's/use_caching = true/use_caching = false/' $out/etc/opensc.conf
|
|
|
|
|
|
|
|
for a in ${opensc}/bin/*; do
|
|
|
|
makeWrapper $a $out/bin/`basename $a` \
|
|
|
|
--set OPENSC_CONF $out/etc/opensc.conf
|
|
|
|
done
|
|
|
|
|
|
|
|
# Special wrapper for pkcs11-tool, which needs an additional parameter
|
|
|
|
rm $out/bin/pkcs11-tool
|
|
|
|
makeWrapper ${opensc}/bin/pkcs11-tool $out/bin/pkcs11-tool \
|
|
|
|
--set OPENSC_CONF $out/etc/opensc.conf \
|
|
|
|
--add-flags "--module ${opensc}/lib/opensc-pkcs11.so"
|
|
|
|
|
|
|
|
# Add, as bonus, a wrapper for the firefox in the PATH, that loads the
|
|
|
|
# proper opensc configuration.
|
|
|
|
cat > $out/bin/firefox-dnie << EOF
|
|
|
|
#!${stdenv.shell}
|
|
|
|
export OPENSC_CONF=$out/etc/opensc.conf
|
|
|
|
exec firefox
|
|
|
|
EOF
|
|
|
|
chmod +x $out/bin/firefox-dnie
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = {
|
|
|
|
description = "Access to the opensc tools and firefox using the Spanish national ID SmartCard";
|
|
|
|
longDescription = ''
|
|
|
|
Opensc needs a special configuration and special drivers to use the SmartCard
|
|
|
|
the Spanish governement provides to the citizens as ID card.
|
|
|
|
Some wrapper scripts take care for the proper opensc configuration to be used, in order
|
|
|
|
to access the certificates in the SmartCard through the opensc tools or firefox.
|
|
|
|
Opensc will require a pcscd daemon running, managing the access to the card reader.
|
|
|
|
'';
|
|
|
|
maintainers = with stdenv.lib.maintainers; [viric];
|
|
|
|
};
|
|
|
|
}
|