Commit Graph

4136 Commits

Author SHA1 Message Date
Peter Marschall 961a27c921 OpenPGP: update pgp_list_files()
* fail if buffer passed as parameter is too small
* only list readable objects

Signed-off-by: Peter Marschall <peter@adpm.de>
2011-06-11 09:30:46 +02:00
Peter Marschall 2e7406922f OpenPGP: re-factor gpg_new_blob()
* get file as parameter & fail if it is NULL
* allow parent to be NULL
* do not rely on DO info to be passed as parameter,
  search it yourself using the global DO info list for the card.
* infer file type automatically from DO info matching the file ID.

Signed-off-by: Peter Marschall <peter@adpm.de>
2011-06-11 09:30:46 +02:00
Peter Marschall b6ee0e3d75 OpenPGP: immediately quit on allocation errors in init
Signed-off-by: Peter Marschall <peter@adpm.de>
2011-06-11 09:30:46 +02:00
Peter Marschall e3fca4ac11 OpenPGP: remove DO info entry for DO FF
DO FF is a "catch-all" DO that returns all the infos contained in the other
DOs in one hierarchy.
It is hence duplicate and not necessary.

Signed-off-by: Peter Marschall <peter@adpm.de>
2011-06-11 09:30:46 +02:00
Peter Marschall 01e63424f5 OpenPGP: fix algorithms & key lengths calculation
Also include forgotten DO C3 in keylength calculation.
It contains the parameters for the authentication key.

Signed-off-by: Peter Marschall <peter@adpm.de>
2011-06-11 09:30:46 +02:00
vtarasov 9863072845 pkcs11: framework-pkcs15: OpenSC specific 'non-repudiation' cryptoki attribute ...
In PKCS#11 there is no CKA_ attribute dedicated to the NON-REPUDIATION flag.
We need this flag in PKCS#15/libopensc to make dinstinction between 'signature' and 'qualified signature' key slots.


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5567 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-10 16:46:41 +00:00
vtarasov a7607b8f30 pkcs11: framework-pkcs15: when storing private key, set the key usage from the object attributes
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5566 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-10 16:41:04 +00:00
jps 93cc9bef1a For CardOS 4.3B and 4.4, the Verify Retry Counter Package
can be loaded at ADMINISTRATION life cycle phase to change
the behavior of the VERIFY command in regard to return codes.
When that package is loaded, the return code of the VERIFY 
will be ISO7816-4 compliant (63Cx with x being the value of 
the remaining retry counter when required verification has failed).


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5565 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-10 09:14:02 +00:00
Ludovic Rousseau 00d9a5d7ac Merge remote branch 'upstream/master' 2011-06-10 11:06:36 +02:00
andre 93baf137c3 libopensc: Fix for drivers returning an error if a challenge of length zero was requested. Actually nothing is done when obtaining such a challenge, thus nothing could fail.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5564 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-09 10:59:04 +00:00
andre 8a5961e970 pkcs11-tool.c: At least CKS_RO_PUBLIC_SESSION is needed.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5563 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-08 08:50:42 +00:00
jps c5c2366a0b Revert 5558
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5562 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-08 07:58:51 +00:00
andre a28bacf02c libopensc: Reveal another Belpic hack introduced in r2117.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5561 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-08 07:35:03 +00:00
jps b422872813 For CardOS 4.3B and 4.4, the Verify Retry Counter Package
can be loaded at ADMINISTRATION life cycle phase to change
the behavior of the VERIFY command in regard to return codes.
When that package is loaded, the PIN can be created with this
"verifyRC" flag in cardos.profile if the return code must be 
ISO7816-4 compliant (63Cx with x being the value of the remaining 
retry counter when required verification has failed).



git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5558 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-07 12:44:53 +00:00
Ludovic Rousseau 90272799f0 Fix compiler warning
Declare the function static to fix:
pkcs15-lib.c:1069: warning: no previous prototype for 'sc_pkcs15init_encode_prvkey_content'
2011-06-07 10:23:56 +02:00
andre 947cdad801 pkcs15.c: In function ‘compare_obj_flags’:
pkcs15.c:1115: warning: unused variable ‘data’

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5555 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-07 06:33:01 +00:00
vtarasov f0ab932031 minidriver: 'PinObject-info' data type is changed for the 'AuthenticatioObject-info' data type
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5554 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 17:03:23 +00:00
vtarasov d5b8a6cd5f RuToken: 'use uninitialized variable' warning
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5553 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 16:53:07 +00:00
vtarasov 226bfaac74 pkcs15: add few attributes to the biometric authentication data type ...
to make happy VS compiler


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5552 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 16:51:36 +00:00
vtarasov efc5760646 win32: build also static version the pkcs11 module
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5551 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 16:14:11 +00:00
vtarasov d888b3fd55 pkcs15: use general 'AuthenticationObject' instead of 'PinObject'
now the attributes of the previous 'pin-info' data type are included
as the sub-type attributes of the general 'auth-info' data .
It will allow to include support of the 'biometricTemplate' and 'authKey' authentication types.

http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016655.html


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5550 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 15:46:25 +00:00
vtarasov 32d035a9ad AuthentIC: when returning PIN info set the 'tries-left' data to the 'non-initialized' value
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5549 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 15:13:06 +00:00
vtarasov f45f22ca73 westcos: resolve signed/unsigned comparison warning
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5548 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 15:05:58 +00:00
vtarasov f9b1a1e102 pkcs15: in 'TokenInfo' data the 'serialNumber' attribut is optional
If 'serialNumber' attribute is absent in the 'TokenInfo' data,
in the parsed data, this attribute will be set to the value of the card's serial.


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5547 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 15:01:15 +00:00
andre a9eba2b205 libopensc: Remove unused parameter 'file_out' in function 'sc_pkcs15_read_file'.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5546 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-05 11:08:36 +00:00
vtarasov c74d33d0b0 coding style: tiny indent style issue
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5545 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 19:43:10 +00:00
vtarasov a479c368a6 pkcs11-tool: allow non-interactive change of User/SO PIN
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5543 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 19:20:11 +00:00
vtarasov 438cf4b2d4 RuToken-ECP: profile option to allow the reset of User PIN with SoPIN
http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016716.html


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5542 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 19:06:43 +00:00
vtarasov da0a77b8c0 authentic: spelling of message
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5541 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 18:22:42 +00:00
vtarasov d43e692e98 pkcs11: implement changing of SoPIN
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5540 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 18:17:02 +00:00
vtarasov 35bd07ed5e pkcs11: with 'init-pin-in-SO-session' PIN unblock style, try to set PIN when PUK value is not available
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5539 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 18:05:02 +00:00
vtarasov 36a85ffe5b iso7816: resolve problem 'r5237 breaks support for Belgian eID', thanks to Jean-Pierre.
http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016703.html


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5538 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 17:28:37 +00:00
vtarasov b3cbf5453e pkcs11: resolve problem 'change 5421 breaks MIT Kerberos login', thanks to Douglas.
http://www.opensc-project.org/pipermail/opensc-devel/2011-June/016734.html


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5537 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 17:20:10 +00:00
vtarasov 3095f5479f pkcs11-tool: resolve compiler warning '"OPENSSL_VERSION_NUMBER" is not defined', thanks to Ludovic
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5536 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 17:12:12 +00:00
vtarasov d5679f58af warning: resolve 'suggest parentheses around operand' compiler warning
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5535 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 17:00:36 +00:00
vtarasov f026db6f84 compile warnings: resolve 'comparison between signed and unsigned' compiler warnings
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5534 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-02 16:59:39 +00:00
andre 31a56bb374 pkcs11-tool.c: Remove useless parameter 'slot' from a lot of function prototypes.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5533 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-01 18:51:26 +00:00
vtarasov 9ac55871fb pkcs15init: oberthur: cleanup compiler warnings
http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016724.html


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5532 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-01 17:15:31 +00:00
andre e966cc1e6e dir.c: In function ‘update_single_record’:
dir.c:318: warning: unused parameter ‘file’


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5531 c6295689-39f2-0310-b995-f0e70906c6a9
2011-06-01 16:54:40 +00:00
andre dfbb55777c pkcs15.c: In function ‘__sc_pkcs15_search_objects’:
pkcs15.c:981: warning: unused variable ‘ctx’


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5530 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-31 15:12:31 +00:00
andre 7dff44ae53 framework-pkcs15.c: In function ‘set_gost_params’:
framework-pkcs15.c:1892: warning: comparison between signed and unsigned
framework-pkcs15.c:1902: warning: comparison between signed and unsigned


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5529 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-31 15:09:01 +00:00
vtarasov 185e3f8259 pkcs11-tool: replace 'slot-label' argument with the two new ones -- 'slot-description' and 'token-label'...
the main difference between 'slot-description' and 'token-label' is that 
the first one is unique in any case, 
the second one can be the same for more then one slots.


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5528 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-30 14:47:50 +00:00
vtarasov 8931231396 pkcs11-tool: show CKA_VALUE of the GOST public key object
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5527 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-30 13:28:16 +00:00
vtarasov 40cf9a5cca libopensc: reverse data to sign when signing with the GOST key
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5526 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 19:23:18 +00:00
vtarasov 2e8df6d226 libopensc: eliminate repetetive debug messages
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5525 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:50:33 +00:00
vtarasov b21e04f42a libopensc: avoid warning "missing braces around initializer"
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5524 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:47:44 +00:00
vtarasov bf830d63da gost: when decoding public key, add explicit key params
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5523 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:45:00 +00:00
vtarasov a41a9c3f82 pkcs11: pkcs15 framework support for the import of the GOST key
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5522 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:35:34 +00:00
vtarasov e81c174372 pkcs15-tool: encode GOST public key with the key parameters ...
.. so that it can be used with the OpenSSL tools


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5521 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:25:04 +00:00
vtarasov a9e9aaee78 gost: GOST key parameters data type, encode gost parameters procedure
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5520 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:18:43 +00:00
vtarasov 1dd7d1fdeb pkcs11: debug title for GOSTRPARAMS
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5519 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 18:07:18 +00:00
vtarasov 4d2428378d pkcs11-tool: CKA_VALUE of imported GOST key has to be presented in the little endian order
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5518 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 17:55:26 +00:00
vtarasov 71b1f55f7c pkcs15-init: use general function to reverse memory buffer
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5517 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 17:49:00 +00:00
vtarasov dce63c8bfc libopensc: new exported function to reverse memory buffer
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5516 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 17:47:54 +00:00
vtarasov a045543cc1 minidriver: unused variable
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5514 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 11:50:13 +00:00
vtarasov 319cb6f071 minidriver: when reading 'cardid' file return the content of 'cardid' file ...
'cardid' size is 16 bytes.
It's initialized by the 'empty-cardid' value (00-0F) overwritten (from left) by the last 16 (or less) bytes
of the card's serial.


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5513 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-29 11:48:50 +00:00
vtarasov ee4f346b07 pkcs15init oberthur: avoid warnings 'signed/unsigned mismatch'
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5512 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-28 22:47:05 +00:00
martin 2d43c601e9 Remove unused code: sc_pkcs15init_get_label()
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5511 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-28 22:14:14 +00:00
martin 215c133ba0 libopensc: remove more traces of software token/non-native private key related code.
pkcs15-wrap.c can be removed. Clarified/changed the meaning of "insecure" flag to pkcs15-init tool,
which will be needed to explicitly enforce the creation of a key which does not require a PIN.

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5510 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-28 22:14:07 +00:00
vtarasov 7179778e22 authentic: avoid warning C4018: signed/unsigned mismatch
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5509 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-28 19:30:26 +00:00
pk c97fc2e719 support for TCOS3 IdKey cards and fix for bug #256
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5508 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-28 14:24:27 +00:00
andre 661cc0dd47 libopensc: Remove the somewhat mysterious flag SC_CARD_CAP_NO_FCI.
It's solely purpose was to get opensc-explorer to work with card-belpic (r2118, r2119).

Relates to #296.

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5507 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-27 12:33:52 +00:00
andre 487a7ab372 sc-test.c: In function ‘sc_test_init’:
sc-test.c:80: warning: comparison between signed and unsigned
sc-test.c:94: warning: comparison between signed and unsigned


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5506 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-27 09:29:01 +00:00
andre 4a2dfa6822 pkcs11-tool.c: In function ‘sign_data’:
pkcs11-tool.c:1253: warning: comparison between signed and unsigned
pkcs11-tool.c: In function ‘write_object’:
pkcs11-tool.c:1777: warning: unused variable ‘type’


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5505 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-27 09:24:09 +00:00
andre bbcb867a8f card-openpgp.c: In function ‘pgp_enumerate_blob’:
card-openpgp.c:584: warning: comparison between signed and unsigned
card-openpgp.c: In function ‘pgp_card_ctl’:
card-openpgp.c:1036: warning: unused variable ‘priv’
card-openpgp.c: In function ‘pgp_init’:
card-openpgp.c:272: warning: ‘child’ may be used uninitialized in this function


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5504 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-27 08:49:43 +00:00
martin dffe79d559 SetCOS/FinEID: add support for cards issued after 01.03.2011
Thanks to Juha Tuomala & Tero Kivinen <kivinen@iki.fi> for the patch.

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5502 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-24 19:08:55 +00:00
martin 1bb6c706b9 pkcs15-crypt: remove extractable key support. Only native keys (operations on the card) are supported.
This amends r4646 and related commits.

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5501 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-24 19:08:43 +00:00
martin 3655d1a1e4 pkcs15-tool: align access flags with the rest of output.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5500 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-24 19:08:05 +00:00
martin 4899f70b4e OpenPGP: use updated ushort2bebytes() in pgp_get_pubkey()
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5499 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:50 +00:00
martin 15cdf5367d rewrite bebyte conversion functions: NULL check, return buffer
Rewrite bebyte conversion functions:
* check whether the buffer passed is non-NULL
* for conversions to bebytes, return the buffer passed

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5498 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:45 +00:00
martin fa259c63d5 OpenPGP: re-factor pgp_list_files()
Use ushort2bebytes instead of calculating the mapping to IDs ourselves.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5497 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:38 +00:00
martin e422a57449 OpenPGP: re-factor pgp_get_blob()
Instead of jumping out of the loop when the correct child is found,
and checking afterwards again if we found the correct object,
do everything directly in the loop and return from there.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5496 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:33 +00:00
martin 782b4efa73 OpenPGP: get flags & algorithms in pgp_get_card_features()
Extend pgp_get_card_features() to get card's flags & supported algorithms
from the card:
* get algorith values from "algorithm attributes" DOs 0x00c1 - 0x00c3

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5495 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:27 +00:00
martin c46152d89b OpenPGP: extend pgp_get_card_features()
Extend pgp_get_card_features() with these features:
* get SC_CARD_CAP_RNG capability from "extended capabilities" DO 0x00c0
* for OpenPGP 2.0 cards get max_send_size / max_recv_size values
  from "extended capabilities" DI 0x00c0
* get max_pin_len from "CHV status bytes" DO 0x00c4

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5494 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:15 +00:00
martin 1342648a89 OpenPGP: new function to get card's features
Add a new function pgp_get_card_features() to get the card's capabilities,
algorithms, features, ... instead of doing it all in pgp_init():
* get SC_CARD_CAP_APDU_EXT capability from ATR
* for openPGP 2.0 cards, if not found in ATR,
  get SC_CARD_CAP_APDU_EXT capability from "historical bytes" DO 0x5f52

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5493 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:33:04 +00:00
martin ee446adf09 OpenPGP: check for get_fn != NULL in pgp_read_blob()
In pgp_read_blob(), check if the pointer to the function we want to call
is defined.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5492 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:59 +00:00
martin 19142ee9af OpenPGP: deal with DOs depending on card version
Have separate copies of pgp_objects[] data elements specific to the card's
version, and extend these structures with additional information:
* Some spec changes cannot be compatibly expressed in one common
  simple data structure without making it too complex.
* depending on specification version, only deal with those DOs
  that are legal within that version
* add information or read & write access conditions
* add information for non-toplevel and/or write-only DOs
* use symbolic names for constants

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5491 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:54 +00:00
martin 88e88d9317 OpenPGP: read BCD version from card
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5490 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:49 +00:00
martin cf3a34cbef OpenPGP: re-factor pgp_select_file()
* remove unnecessary copy operations with a temporary path object,
  instead increase the start index.
* addd comments

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5489 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:43 +00:00
martin 4a3df98450 OpenPGP: comment use of "current"
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5488 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:36 +00:00
martin 101cf28766 OpenPGP: clean up with pgp_finish()
Use pgp_finish() wherever possible to clean up.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5487 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:31 +00:00
martin 9aa7342000 OpenPGP: re-factor pgp_finish()
Re-structure pgp_finish() for easier reading.
While at it, check for priv != NULL before free()ing it.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5486 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:26 +00:00
martin ec1f1bd812 OpenPGP: sprinkle with LOG_... macros
Instrument functions used in the card operations table pgp_ops[]
with log macros to ease debugging.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5485 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:21 +00:00
martin 9c26b8f7d3 OpenPGP: briefly document each function
Write a short comment at the beginning of each function,
shortly sketching what the function does.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5484 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:10 +00:00
martin 70fa98232a OpenPGP: remove unused element from structure
The element size in struct do_info is never used. Get rid of it.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5483 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:05 +00:00
martin 9765eda21c OpenPGP: implement card_ctl() command SC_CARDCTL_GET_SERIALNR
Implement card_ctl(), crrently restricted only to SC_CARDCTL_GET_SERIALNR.
The card's serial number is copied from the respective bytes in the AID.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5482 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:32:00 +00:00
martin 6e04d7f6bf OpenPGP: free memory when selecting the application fails
free() the memory already reserved when the file identifying the OpenPGP
application fails & reset the pointers in the card strcuture back to NULL.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5481 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:55 +00:00
martin 56f6718bf2 OpenPGP: allow extended APDUs in all functions
Depending on the card's capabilities and the necessity (requested response
size > 256) allow extended APDUs in all functions talking to the card.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5480 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:50 +00:00
martin f32a8ff59c OpenPGP: use card "extended Lc/Le" capabilities
adapt pgp_get_pubkey() and pgp_read_blob() to make use of the information
about the "extended Lc/Le" capabilities.

This allows reading OpenPGP Card v2.0 keys!

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5479 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:45 +00:00
martin 1911db7532 OpenPGP: update card capabilities from historical bytes
According to OpenPGP card specs 1.1 & 2.0 historical bytes in the ATR
indicate capabilities:
* bit 0x40 of the 3rd byte of the compact-TLV entry with TL 0x73 tells
  whether the card supports extended Lc/Le fields in APDUs.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5478 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:39 +00:00
martin 1bb69cb847 OpenPGP: catch calloc() errors in pgp_new_blob()
Detect and react on out of memory errors in pgp_new_blob() and its callers.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5477 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:31 +00:00
martin 6b7906f0a2 OpenPGP: use symbolic names for errors/success
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5476 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:24 +00:00
martin 75a89e7c25 OpenPGP: add some comments
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5475 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:18 +00:00
martin 4892af32c4 OpenPGP: re-factor pgp_set_blob()
* NULL-ify freed data pointer
* avoid unnecessary malloc() calls
* cope with malloc() errors
* do not rely on blob->file for be set

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5474 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:09 +00:00
martin ea64ba24af OpenPGP: NULL-ify free()'d pointer
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5473 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:31:02 +00:00
martin d248026abc OpenPGP: implement function to free the fake file system
* pgp_iterate_blobs(): walk through the blob tree
* pgp_free_blob(): free a blob

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5472 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:30:56 +00:00
martin 03381a2594 OpenPGP: re-factor pgp_enumerate_blob()
Leverage the fact that OpenPGP cards use TLV encoding according to
ASN.1 BER-encoding rules and use sc_asn1_read_tag() as the workhorse
within pgp_enumerate_blob().

There's one peculiarity though:
OpenPGP cards expect 'cla' to be merged into 'tag'.
This is done manually after calling sc_asn1_read_tag().

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5471 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:30:49 +00:00
martin 61bbb0f904 OpenPGP: try to match flags with specification
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5470 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:30:42 +00:00
martin e5bee33260 OpenPGP: add indication of 2048 RSA agorithm for OpenPGP 2.0 cards
Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5469 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:30:36 +00:00
martin 223f704b83 OpenPGP: fix top-level DOs according to spec
Added:
* 00c4: new top-level DO in 2.0
        can also be found inside constructed DOs 006E/0073 in 2.0 & 1.1
* 0101: new optional top-level DO starting in 1.1
        for private use
        max 254 bytes;
        access: read - always; write - verify CHV2
* 0102: new optional top-level DO starting in 1.1
        for private use
        max 254 bytes;
        access: read - always; write - verify CHV3
* 5f52: new top-level DO in 2.0
        can also be found inside constructed DOs 006E in 2.0
* 7f21: new optional top-level DO in 2.0
        use: card holder certificate (e.g. X.509) for the AUT key in the card
Removed:
* 0073: never a top-level DO, but part of top-level constructed DO 006E
Changed:
* 005e: not a constructed DO, but a simple/primitive DO

Note:
Trying to read non-existent top-level DOs or top-level DOs that weren't defined
in a spec version later than the current card's version does not hurt.
They are returned as empty.

Signed-off-by: Peter Marschall <peter@adpm.de>

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5468 c6295689-39f2-0310-b995-f0e70906c6a9
2011-05-23 17:29:09 +00:00