Commit Graph

307 Commits

Author SHA1 Message Date
Pol Henarejos
1756ec49ad
When user resets retry counter and sends the SO-PIN (P1=0x0) it becomes authenticated in this session.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-12 00:29:34 +02:00
Pol Henarejos
7b286b04b1
Introducing MKEK (Master Key Encryption Key).
MKEK is used to encrypt all keys in the device, regardless of Key Domains or DKEK. From now on, all keys are encrypted using an AES 256-bit secret key. MKEK is also encrypted and stored based on a derived key from PIN. When user introduces the PIN, the MKEK can be unlocked to load the stored private/secret keys.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-12 00:20:02 +02:00
Pol Henarejos
a731e88c78
Adding MKEK ef id.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-11 22:59:54 +02:00
Pol Henarejos
ffd31f2ea7
Memset kcv to 0 always when called.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-10 23:58:01 +02:00
Pol Henarejos
356eeea505
Added support for ECDH_XKEK.
Note that it is unfinished. ECDH_XKEK is utilized for deriving and setting the KEK, based on the calc DH secret. It should not return anything, just SW_OK (this is not what is happening right now).

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-10 23:51:41 +02:00
Pol Henarejos
34d9469157
When creating XKEK domain, it returns key domain UID.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-10 23:29:08 +02:00
Pol Henarejos
36b1bf9875
Added ECDH algorithms for XKEK and AUT.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-10 23:28:44 +02:00
Pol Henarejos
f122a9ab28
Upgrade to version 2.6.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-09 00:42:58 +02:00
Pol Henarejos
14dbad4dd7
Do not return PIN unitialized if PKA is enabled.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-09 00:27:53 +02:00
Pol Henarejos
cdce9ab50b
Adding pka_enabled() to check whether the device is configured with PKA.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-09 00:26:56 +02:00
Pol Henarejos
7bbcbc57eb
Removing unnecessary debug.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-06 01:36:03 +02:00
Pol Henarejos
3ebf4fdff5
User authentication is unlinked from session_pin
Due to PUK Authentication, user authentication is not linked to having a valid session_pin anymore. In case of enabled PUK Auth, session_pin is used only for unlocking DKEK, but not for granting auth privileges, as they only are granted when PUK Auth succeeds.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-08-06 01:13:09 +02:00
Pol Henarejos
77e5fa2d2b Added static files for device key and certiticate.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-15 15:57:54 +02:00
Pol Henarejos
6bd2e65459 Add function for building PrKD asn1
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-15 15:38:11 +02:00
Pol Henarejos
d1f0f45525
Added support for native PKCS1.5 and OEP decryption.
It is not tested, as it is not supported by pkcs11 modules. For instance, OpenSSL implements OEP in local side, calling a RAW decryption on the device.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-14 17:00:23 +02:00
Pol Henarejos
efc1b4a4ae
Fix meta deletion.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-14 16:45:06 +02:00
Pol Henarejos
a45303d9e6
Added support for specific purposes. Added support for SHA512 operations.
Keys can only be used for the specific purpose provided during the keypair generation.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-14 16:12:04 +02:00
Pol Henarejos
871ff69f56
Fix critical bug.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-14 11:46:44 +02:00
Pol Henarejos
32af000435
Upgrading to version 2.4.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-13 19:39:35 +02:00
Pol Henarejos
3afc1964dc
Store in dynamic memory PUK authentication.
When a PUK is authenticated, session PIN is set to true.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-12 18:10:37 +02:00
Pol Henarejos
914020fd36
Added PUK authentication.
Surprisingly, it works from the very beginning.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-12 17:43:50 +02:00
Pol Henarejos
168a8cd5a6
Fix selecting PUK for AUT.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-12 17:42:21 +02:00
Pol Henarejos
eb94ed7806
Separated routines for verifying and parsing CV certificates.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 20:04:48 +02:00
Pol Henarejos
db6b3ec427
Added select MSE for puk AUT.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 20:04:32 +02:00
Pol Henarejos
32d0cdcea7
Save cached challenge length.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 18:58:35 +02:00
Pol Henarejos
332fe8c884
Generated challenges are cached and dev_name (ESTERMXXXXX) based on terminal certificate.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 16:40:51 +02:00
Pol Henarejos
59f0cf7732
Fix CA certificates selection.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 16:33:53 +02:00
Pol Henarejos
b803505287
When a certificate is verified, the corresponding certificate description and the certificate are cached and saved.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 16:30:19 +02:00
Pol Henarejos
3542062ecd
Added function to write the ASN1 certificate description.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 16:29:28 +02:00
Pol Henarejos
824c327a2c
Added function to obtain EC params from root CA cert.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 16:28:55 +02:00
Pol Henarejos
76a41dffa1 Store all verified certificates (INS MSE) into CA_PREFIX files.
When a certificate is sent for verification, it is always cached and saved onto a CA_PREFIX.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 11:59:06 +02:00
Pol Henarejos
65482cad9c Added dynamic public key references.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 11:09:39 +02:00
Pol Henarejos
a17a4c0a3c Finished key public registration.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 11:09:25 +02:00
Pol Henarejos
2437cf09d1 Added EF for PUKs
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-10 11:08:47 +02:00
Pol Henarejos
a4d4f9a944
Fix outer CAR value.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 21:25:17 +02:00
Pol Henarejos
5eb086935e
Added INS_PSO.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 19:02:59 +02:00
Pol Henarejos
83a583a33f
Fix CVC verification.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 19:02:22 +02:00
Pol Henarejos
143c2d279b Added cvc_verify to verify a cvcert with other CA cvcert.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 14:16:17 +02:00
Pol Henarejos
08dd596883 Added cvc_get_pub().
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 14:15:35 +02:00
Pol Henarejos
a4ffcebb0f Added variable puk_store.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 14:15:17 +02:00
Pol Henarejos
39f7b5284a Added OID definitions.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-09 11:53:35 +02:00
Pol Henarejos
4f58cd255b
Adding PUK store.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-08 20:01:37 +02:00
Pol Henarejos
d96d7a533e
Added procedure for verifying CVC (unfinished).
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-08 20:01:23 +02:00
Pol Henarejos
0e59166c64 Added MSE for B6 CRT.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-08 17:35:30 +02:00
Pol Henarejos
6d8161de73 Added functions to retrieve CAR and CHR from certs.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-08 17:34:17 +02:00
Pol Henarejos
d057729675
Fix returning the status of PIN1 when it is not initialized.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-07 19:58:21 +02:00
Pol Henarejos
b14a323ef8
Added INS PUK with status query.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-07 19:44:47 +02:00
Pol Henarejos
f2b66468ec
Adding Public Key Authentication file template.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-07 19:44:33 +02:00
Pol Henarejos
48a05f9afc
Upgrading to version 2.2.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-06 00:13:08 +02:00
Pol Henarejos
4bf5a80a7a
Added key usage counter to decryption operations.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 20:13:18 +02:00
Pol Henarejos
40efcd71c3
Added device option KEY_COUNTER_ALL.
When it is set, it enables the key usage counter for all keys when generated.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 20:10:53 +02:00
Pol Henarejos
aca291da9e
Key usage counter is added for every generated key.
When a key is generated, a key usage counter is added. It starts from 2^32-1 and is decremented for every sign request. Once it reaches 0, it forbids more signatures for this key.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 20:04:14 +02:00
Pol Henarejos
7f6bcdfb11
Addded fast crc32 checksum for DKEK storage.
It is for checking the integrity of the DKEK and thus, the scret keys, as they are encrypted with DKEK.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 15:51:52 +02:00
Pol Henarejos
696110a5b0
Key domain deletion and kek deletion are only allowed when key domain is empty.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 11:36:32 +02:00
Pol Henarejos
73fb61070f
Added kek deletion in a particular key domain.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 11:30:08 +02:00
Pol Henarejos
23da8047bc
Fix deleting key domain.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 11:22:15 +02:00
Pol Henarejos
bf70a08c9f
Added key domain deletion.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 11:16:40 +02:00
Pol Henarejos
ce410dae65
Fix when setup a key domain.
Now the dkek is cleared before imports.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-03 11:01:21 +02:00
Pol Henarejos
94a42c4267
Fix changing PIN with multiple domain.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-02 20:09:43 +02:00
Pol Henarejos
f4cc1fed36
Fix meta parsing.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-06-02 19:30:09 +02:00
Pol Henarejos
7c27be784b Fix parsing meta data on key generation. 2022-06-02 14:12:11 +02:00
Pol Henarejos
7d1b22c337 Added meta information for symmetric keys. 2022-06-02 12:12:12 +02:00
Pol Henarejos
2febbe2795 Fix missing comma. 2022-06-01 12:57:42 +02:00
Pol Henarejos
299516f576 Fix set point A.
mbedtls does not set point A for some curves.
2022-06-01 11:51:33 +02:00
Pol Henarejos
6edeab6f85 Signatures in CVC are in plain format.
Plain format concatenates r||s.
2022-06-01 10:30:20 +02:00
Pol Henarejos
7b79d7ffde Moving CVC procedures to a separate file. 2022-06-01 09:46:23 +02:00
Pol Henarejos
541d5b3c19
Fix CVC signature length.
Since it is variable, it needs to be recomputed every time.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-31 20:38:30 +02:00
Pol Henarejos
d0098015fe
Removing OpenSC dependency.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-31 19:26:00 +02:00
Pol Henarejos
3660a35c2c
Implementing own functions for cvc manipulation.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-31 18:51:43 +02:00
Pol Henarejos
9132dd16f0
Fix decoding asn1 integer.
It caused overflow.
2022-05-31 01:14:09 +02:00
Pol Henarejos
652551269e
Using own asn1 int decoder. 2022-05-31 00:40:29 +02:00
Pol Henarejos
81730f37a9
Removing sc_pkcs1_strip_digest().
It is hard coded here (taken from OpenSC).
2022-05-31 00:25:54 +02:00
Pol Henarejos
4b86e96660
Removing card_context from store_keys().
It does not generate PRKD, as it will be stored by the client.
2022-05-31 00:14:30 +02:00
Pol Henarejos
271240f11c
Fix initializing device. 2022-05-31 00:09:21 +02:00
Pol Henarejos
00e8596a0e
Adding asn1_find_tag() for searching for a tag in a asn1 string. 2022-05-30 23:31:17 +02:00
Pol Henarejos
39ab429c88
Adding key domain to key generation, wrap, unwrap, export and import.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-30 16:13:51 +02:00
Pol Henarejos
4fa8d4ba64
Fix warnings
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-27 20:58:45 +02:00
Pol Henarejos
1ac4402f99
res_APDU SHALL NOT BE moved, only memcpied or memmoved.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-27 00:58:35 +02:00
Pol Henarejos
8554262aaf
Migrating away from tinyUSB.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-27 00:36:33 +02:00
Pol Henarejos
d2766b2225 Using printf instead of TU 2022-05-26 14:16:32 +02:00
Pol Henarejos
f124ee52ce
Do not add FMD in FCI.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 23:31:46 +02:00
Pol Henarejos
2167d28514
Add meta files.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 22:57:59 +02:00
Pol Henarejos
80792dc555
Private/secret keys can be selected.
It returns FCP when a private/secret key is selected but it is not allowed to read them.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 13:06:00 +02:00
Pol Henarejos
080337f847
Added key domain setup
It accepts different dkek shares for each key domain.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 11:08:29 +02:00
Pol Henarejos
5e20c830fd
Return key domain not found only when they are prepared.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 10:48:22 +02:00
Pol Henarejos
b754fdb449
Refactoring initialize command to support no dkek, random dkek, dkek shares and key domains.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 10:44:00 +02:00
Pol Henarejos
a926239613
Returning not initialized key domains.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 09:24:54 +02:00
Pol Henarejos
c80b723112
Using dynamic dkek number and current shares, for each key domain.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 09:18:35 +02:00
Pol Henarejos
a062b92dad
Replacing low level data access to high level routines.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 00:30:42 +02:00
Pol Henarejos
89d40b7c94
Extending DKEK and key storage to key domains.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-24 00:29:19 +02:00
Pol Henarejos
7b5cb48dcc
Added key domains for device initialization and dkek import.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-23 20:06:06 +02:00
Pol Henarejos
7de0121db5
Introducing MANAGE KEY DOMAIN (INS 52)
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-23 14:26:36 +02:00
Pol Henarejos
cb338af8fb
Return SW 6600 when button timeouts.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-05 22:30:07 +02:00
Pol Henarejos
fffe2fb451
Now press-to-confirm button has a timeout of 15 secs.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-05-05 20:56:28 +02:00
Pol Henarejos
5f0b15b5e9
Fix returning wrong pin retries.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-22 19:21:41 +02:00
Pol Henarejos
86298f3421
Upgrading to version 2.0. 2022-04-19 19:24:10 +02:00
Pol Henarejos
302f287967
Moving EAC and crypto to core.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-19 19:16:29 +02:00
Pol Henarejos
522860f736
Splitting the core onto another repo, which can be reused by other smart applications.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-19 18:39:52 +02:00
Pol Henarejos
e2f424d4ab
No more in the repo
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-14 01:06:50 +02:00
Pol Henarejos
69e869852e
Rewritten keypair_gen response (more friendly).
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 19:03:33 +02:00
Pol Henarejos
618966b742
Sanity check for keypair gen.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 18:49:13 +02:00
Pol Henarejos
b68920ff45
Added walker function for TLV parsing.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 16:55:34 +02:00
Pol Henarejos
9dfe0ee7b3
Clear session pin on unload and new session.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 14:25:44 +02:00
Pol Henarejos
da6c578973
Fix tag_len computation for all TLV.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 14:14:06 +02:00
Pol Henarejos
49d9ec7cf9
Session pin is randomized.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-13 14:12:14 +02:00
Pol Henarejos
af07f1d549
Added INS for session pin generation (needs randomization).
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 19:47:43 +02:00
Pol Henarejos
db5f5fd435
When working with SM, wrap() manipulates res_APDU. Thus, we cannot change the pointer of res_APDU anymore. Everything must be memcpy-ed.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 15:11:42 +02:00
Pol Henarejos
7232625bab
Merge branch 'master' into eac 2022-04-11 15:09:33 +02:00
Pol Henarejos
1557a4a039
Fix when generating keypair, which could produce wrong flash save in particular cases of concurrency.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 15:09:20 +02:00
Pol Henarejos
2f1f8e0c90
Fix parsing TLV in signatures.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 01:44:18 +02:00
Pol Henarejos
c4c2bf86ba
Fix response APDU in secure channel.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 01:38:15 +02:00
Pol Henarejos
f26668b81d
Fixed IV computation. IV is computed encrypting macCounter with a initial IV=0x0000.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-11 01:16:20 +02:00
Pol Henarejos
964af6a064
Adding wrap() to encrypt and sign response APDU.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-10 20:58:54 +02:00
Pol Henarejos
c3a93a46ba
Adding unwrap(), to decrypt and verify secure APDU.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-10 20:23:36 +02:00
Pol Henarejos
57d593561a
Moving all SM stuff to EAC.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-10 19:00:52 +02:00
Pol Henarejos
c098d80524
Adding private key of termca. It is the worst thing I can do, but first I need to develop the secure channel, which uses the private key of device. Later, I will figure out how to generate the private key and certificate during initialization, but it will be difficult, as it needs to be signed by the CA.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-10 01:55:57 +02:00
Pol Henarejos
6c892af9f1
Adding authentication command. Not finished. Needs lot of work.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-09 23:44:45 +02:00
Pol Henarejos
b545a1618b
Added Manage Security Environment command.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-09 20:50:00 +02:00
Pol Henarejos
dec3d54ddd
Adding more SW codes.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-09 20:29:13 +02:00
Pol Henarejos
ce4d0bf102
INS 54h is also occupied too... let's try with 64h.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-08 00:38:03 +02:00
Pol Henarejos
4e6bada892
Fix first AID load.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-08 00:29:15 +02:00
Pol Henarejos
98ad2e3d55
Fix returning card data when selected AID.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 23:32:56 +02:00
Pol Henarejos
4a57698173
Moving out INS_EXTRAS from 0x88 (taken by ISO 7816) to 0x54 (presumably free).
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:32:31 +02:00
Pol Henarejos
468051288c
Upgrading to version 1.12.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
565ea12d88
Added dynamic option to enable/disable press to confirm.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
1c7ef50568
Added custom INS (named EXTRAS) to support different extra commands. At this moment:
- 0xA: gets/sets the datetime.
- 0x6: enables/disables press to confirm (BOOTSEL). It allows other dynamic device options. At this moment, only press to confirm option is available.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
878eae9787
Added press button to confirm. Everytime a private/secret key is loaded, the Pico HSM waits for BOOTSEL button press. This mechanism guarantees that no private/secret operations are made without user consent. To confirm the operation, the user must press the BOOTSEL button. In the meanwhile, the device gets into waiting state and no other operation is performed. After release the button, the operation continues normally.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
24b1d6807b
Added support for reading binary data.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
6bc081a1e1
Added support to write arbitrary data EF.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
afb16fff65
Fix with ASN1 encapsulation for keypair generation. It only affects RSA 4096 bits.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
cf81a82645
Added a new custom APDU (88h) for setting and retrieving datetime.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-07 18:18:24 +02:00
Pol Henarejos
d27d8b0c5b
Upgrading to version 1.10
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-04 09:57:19 +02:00
Pol Henarejos
a619527482
Adding P1=0x2 and P1=0x3 for reset retry counter.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-03 20:59:50 +02:00
Pol Henarejos
85ff92c4de
Adding check for device options whether it can reset retry counter with PIN or without.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-03 20:40:16 +02:00
Pol Henarejos
b1121718db
Adding capability to reset retry counter without new PIN
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-03 20:37:16 +02:00
Pol Henarejos
2905dcc8c0
Adding custom command to set datetime.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-04-03 19:57:56 +02:00
Pol Henarejos
c9855f7214
Fix displaying device options.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 19:43:33 +02:00
Pol Henarejos
853b8f29a2
Fix returning kcv when pin is not provided. It always return 0x0
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 19:31:56 +02:00
Pol Henarejos
d5378ffa41
If has_session_pin is true, it returns sw_ok
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 19:31:22 +02:00
Pol Henarejos
4400eba974
Fix returning kcv
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 19:31:02 +02:00
Pol Henarejos
0cc656c6c0
Adding transport PIN option. It does not allow to authenticate and returns sw code 0x6984
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 19:12:56 +02:00
Pol Henarejos
c9b32ab5d0
Fix return pin blocked sw code.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 18:59:54 +02:00
Pol Henarejos
f9ffd39661
Adding EF_DEVOPS to store the device options during the initialization.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 18:56:42 +02:00
Pol Henarejos
bfc12d6856
Renaming files
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 18:27:00 +02:00
Pol Henarejos
33a2222cd8
Revert "PIN remaining tries only returned when user is not logged in. If so, it returns always OK."
This reverts commit 86e38419ac.
2022-03-31 14:30:50 +02:00
Pol Henarejos
923e05a36c
Revert "Also for SOPIN."
This reverts commit ad66170379.
2022-03-31 14:30:50 +02:00
Pol Henarejos
ad66170379
Also for SOPIN.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 13:18:56 +02:00
Pol Henarejos
86e38419ac
PIN remaining tries only returned when user is not logged in. If so, it returns always OK.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 13:17:16 +02:00
Pol Henarejos
7cf166d615
Upgrading to version 1.8
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 11:18:52 +02:00
Pol Henarejos
413c3e0208
Fix update ef when offset is required.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
2022-03-31 01:08:39 +02:00