Re: ePass2003 status

Dirk-Willem van Gulik <[email protected]>
Newsgroups gmane.comp.encryption.opensc.devel
Message-ID <[email protected]>
> On 10 Aug 2016, at 12:44, NdK <[email protected]> wrote:
> 
> Hello all.
> 
> Seems the wiki page on github is quite inaccurate regarding ePass2003
> support:
> - there's no mention of the so-pin problems (and seems so-pin
> functionality is not -yet- present)
> - GOOZE (IIUC) is no more actively involved after discontinuing the
> distribution
> 
> Overall, at least for me, it seems more an ad page than a technical one.
> 
> IIRC SO-PIN on the ePass2003 requires secure messaging to be used, but
> SM was not yet present in opensc when the epass2003 driver got added.
> Did that change?
> 
> PS: pkcs15-init -F always reports "Failed to delete object(s): Not
> supported". Is that normal? Is the card finalized anyway? Is the
> finalize step actually required on ePass2003?

Below script does the trick for me (key generated ‘off line’ — as to circumvent the 512 len limit).

Dw.

#!/bin/sh
#
# Copyright (c) 2012 Dirk-Willem van Gulik <[email protected]>, All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e

#
# Load an existing p12/pem onto a card - protected by a PIN
# of sorts; set by the (end) user or a random one.
#
PIN=${PIN:-`openssl rand 16 | hexdump -d | awk '{ print $2 $3 }’  | cut -c 1-6`}
LABEL=feitian001
PUK=${PUK:-`openssl rand 16 | hexdump -d | awk '{ print $2 $3 }’  | cut -c 1-8`}

SUBJ="/emailAddress=foobar/C=XX/L=Foobar/O=Something Nice and Lengthy/OU=Positively bizantine and so on"
TMPFILE=x-fred

function cleanup {
	srm $TMPFILE.key || rm $TMPFILE.key
	exit
}
	
trap  cleanup  SIGHUP SIGINT SIGTERM

# Self signed root
#
openssl req -new -x509 -set_serial 1 -subj "$SUBJ/CN=Da Root of it all" -out $TMPFILE-ca.pem -nodes -keyout $TMPFILE-ca.key || exit 1

# CSR and sign with above root
#
# Unfortunately we cannot do this on the card - as anything beyond 512 length will time out the USB on linux and OSX.
# pkcs11-tool --module /usr/lib/opensc-pkcs11.so --slot 1 --keypairgen --key-type rsa:2048 --pin $PIN --login
#
openssl req -new -subj "$SUBJ/CN=Fred Himself" -keyout $TMPFILE.key -out $TMPFILE.csr -nodes  || exit 1
openssl x509 -CA $TMPFILE-ca.pem -CAkey $TMPFILE-ca.key -req -set_serial 2 -in $TMPFILE.csr -out $TMPFILE.pem || exit 1

# Initialise a blank key
echo 
echo "Insert a single EPass2003 (blue or red); and press return to start wiping and re-initilaizing it (or press ctrl-C)”
echo
read nope

pkcs15-init -E || exit 1
pkcs15-init --create-pkcs15   --profile pkcs15+onepin --use-default-transport-key --puk 111111 --label $LABEL --pin 1234 || exit 1

if true; then
        # This works -- as we set decent labels.
        #
        pkcs15-init --store-private-key $TMPFILE.key --format PEM --auth-id 01 --pin $PIN || exit 1
        pkcs15-init --store-certificate $TMPFILE.pem --format PEM --auth-id 01 --pin $PIN --label fred || exit 1
        pkcs15-init --store-certificate $TMPFILE-ca.pem --format PEM --auth-id 01 --pin $PIN --label root   --authority  || exit 1
else
	# Transport password.
	#
	PASSWD=`openssl rand 16 | hexdump -d | awk '{ print $2 $3 }’  | cut -c 1-8`
        # And this fails/confuses tokend - as the labels are now DN's with the / in it.
        #
	# Package up in PKCS#12
	openssl pkcs12 -chain -export -out $TMPFILE.p12 -in $TMPFILE.pem -CAfile $TMPFILE-ca.pem -inkey $TMPFILE.key -nodes -passout pass:$PASSWD || exit 1
	
	# Show what we netted:
	openssl pkcs12 -in $TMPFILE.p12 -noout -passin pass:$PASSWD -info

	# Store.
        pkcs15-init --store-private-key $TMPFILE.p12  --format pkcs12 --auth-id 01 --pin $PIN --passphrase $PASSWD || exit 1
fi

cleanup

echo
echo Done. The PIN is $PIN, the PUK is $PUK



------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
Opensc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensc-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.