Help with new board Blue Pill Plus with gnuk
Frédéric SUEL
frederic.suel at free.fr
Mon Feb 24 09:24:58 CET 2025
Hi,
I made more tests (see below) regards your comments and try to put 448
keys on Gnuk too
Best regards
Le 20/02/2025 à 07:20, NIIBE Yutaka a écrit :
> Hello,
>
> Thank you for your testing.
>
> Frédéric SUEL<frederic.suel at free.fr> wrote:
>> I tried to configure the board first with secp256k1 then with Curve 448
>> and :
>>
>> -- i can select both algorithms, and the result with the list command is ok
>>
>> - but, i can't generate keys with secp256k1, i get "Échec de génération
>> de la clef : Conditions d'utilisation non satisfaites" : fail to
>> generate key : used conditions not satisfied
> This error may mean, you didn't configure KDF-DO, which is required for
> Gnuk 2.2. I wonder if it's the case.
--------
KDF-DO is on and i get the same error
---------------------------------------------------------------
LinuxMint gnupg 2.4.4
gpg --card-edit
can't connect to 'socket:///home/yokosano/.gnupg/log-socket': Aucun
fichier ou dossier de ce nom
Reader ...........: 1209:2440:FSIJ-2.2-43112959:0
Application ID ...: D276000124010200FFFE431129590000
Application type .: OpenPGP
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 43112959
Name of cardholder: [non positionné]
Language prefs ...: [non positionné]
Salutation .......:
URL of public key : [non positionné]
Login data .......: [non positionné]
Signature PIN ....: forcé
Key attributes ...: secp256k1 secp256k1 secp256k1
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
KDF setting ......: on
UIF setting ......: Sign=off Decrypt=off Auth=off
Signature key ....: 24B4 8DE1 A850 0937 AB11 600E 8A17 68BE 0C7A 9021
created ....: 2025-02-18 11:17:54
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]
gpg/carte> admin
Les commandes d'administration sont permises
gpg/carte> generate
Faut-il faire une sauvegarde hors carte de la clef de chiffrement ? (O/n) n
Faut-il remplacer les clefs existantes ? (o/N) o
Veuillez noter que les configurations d'usine des codes personnels sont
code personnel = « 123456 » code personnel d'admin. = « 12345678 ».
Vous devriez les modifier avec la commande --change-pin
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
0 = la clef n'expire pas
<n> = la clef expire dans n jours
<n>w = la clef expire dans n semaines
<n>m = la clef expire dans n mois
<n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 10y
La clef expire le dim. 18 févr. 2035 09:57:37 CET
Est-ce correct ? (o/N) o
GnuPG doit construire une identité pour identifier la clef.
Nom réel : test1
Adresse électronique :
Commentaire :
Vous avez sélectionné cette identité :
« test1 »
Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? O
Échec de génération de la clef : Conditions d'utilisation non
satisfaites : used conditions not satisfied
---------------------------------------------------------------
>> - but, i can't generate keys with Curve 448, i get "Échec de génération
>> de la clef : Erreur de carte" : fail to generate key : board error
> Ah, Curve448 is not covered by the tests/ in Gnuk.
>
> It seems there is bugs around its private key size. Here is a fix (of today).
> Not tested yet.
>
> diff --git a/src/openpgp-do.c b/src/openpgp-do.c
> index 2ad7853..2fc5aea 100644
> --- a/src/openpgp-do.c
> +++ b/src/openpgp-do.c
> @@ -1340,7 +1340,7 @@ gpg_do_write_prvkey (enum kind_of_key kk, const uint8_t *key_data,
> else if (attr == ALGO_X448)
> {
> pubkey_len = prvkey_len;
> - if (prvkey_len != 56)
> + if (prvkey_len != 64)
> return -1;
> }
> else
> @@ -1583,14 +1583,15 @@ proc_key_import (const uint8_t *data, int len)
> }
> else if (attr == ALGO_X448)
> {
> - uint8_t priv[56];
> + uint8_t priv[64];
>
> if (len - 12 != 56)
> return 0; /* Error. */
>
> memcpy (priv, data+12, 56);
> + memset (priv+56, 0, 64-56);
> ecdh_compute_public_x448 (pubkey, priv);
> - r = gpg_do_write_prvkey (kk, priv, 56, keystring_admin, pubkey);
> + r = gpg_do_write_prvkey (kk, priv, 64, keystring_admin, pubkey);
> }
>
> if (r < 0)
> @@ -2287,7 +2288,7 @@ gpg_do_keygen (uint8_t *buf)
> enum kind_of_key kk = kkb_to_kk (kk_byte);
> int attr = gpg_get_algo_attr (kk);;
> int prvkey_len = gpg_get_algo_attr_key_size (kk, GPG_KEY_PRIVATE);
> - const uint8_t *prv;
> + uint8_t *prv;
> const uint8_t *rnd;
> int r = 0;
> #define p_q (&buf[3])
> @@ -2359,6 +2360,8 @@ gpg_do_keygen (uint8_t *buf)
> random_bytes_free (rnd);
> prv = d;
> ed448_compute_public (pubkey, prv);
> + memset (prv+114, 0, 128-114);
> + prvkey_len = 128;
> pubkey[57] = 0;
> }
> else if (attr == ALGO_X448)
> @@ -2369,6 +2372,8 @@ gpg_do_keygen (uint8_t *buf)
> rnd = random_bytes_get ();
> memcpy (d+32, rnd, 24);
> prv = d;
> + prvkey_len = 64;
> + memset (prv+56, 0, 64-56);
> ecdh_compute_public_x448 (pubkey, prv);
> }
> else
---------------------------------------------------------------
I tried your patch and i get a error too : board error
--------
gpg --expert --card-edit
can't connect to 'socket:///home/yokosano/.gnupg/log-socket': Aucun
fichier ou dossier de ce nom
Reader ...........: 1209:2440:FSIJ-2.2-43112959:0
Application ID ...: D276000124010200FFFE431129590000
Application type .: OpenPGP
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 43112959
Name of cardholder: [non positionné]
Language prefs ...: [non positionné]
Salutation .......:
URL of public key : [non positionné]
Login data .......: [non positionné]
Signature PIN ....: forcé
Key attributes ...: ed25519 cv25519 ed25519
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
KDF setting ......: off
UIF setting ......: Sign=off Decrypt=off Auth=off
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]
gpg/carte> admin
Les commandes d'administration sont permises
gpg/carte> key-attr
Changing card key attribute for: Signature key
Sélectionnez le type de clef désiré :
(1) RSA
(2) ECC
Quel est votre choix ? 2
Sélectionnez le type de courbe elliptique désiré :
(1) Curve 25519 *default*
(2) Curve 448
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool P-256
(7) Brainpool P-384
(8) Brainpool P-512
(9) secp256k1
Quel est votre choix ? 2
The card will now be re-configured to generate a key of type: ed448
Note: There is no guarantee that the card supports the requested
key type or size. If the key generation does not succeed,
please check the documentation of your card to see which
key types and sizes are supported.
Changing card key attribute for: Encryption key
Sélectionnez le type de clef désiré :
(1) RSA
(2) ECC
Quel est votre choix ? 2
Sélectionnez le type de courbe elliptique désiré :
(1) Curve 25519 *default*
(2) Curve 448
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool P-256
(7) Brainpool P-384
(8) Brainpool P-512
(9) secp256k1
Quel est votre choix ? 2
The card will now be re-configured to generate a key of type: cv448
Changing card key attribute for: Authentication key
Sélectionnez le type de clef désiré :
(1) RSA
(2) ECC
Quel est votre choix ? 2
Sélectionnez le type de courbe elliptique désiré :
(1) Curve 25519 *default*
(2) Curve 448
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool P-256
(7) Brainpool P-384
(8) Brainpool P-512
(9) secp256k1
Quel est votre choix ? 2
The card will now be re-configured to generate a key of type: ed448
gpg/carte> list
Reader ...........: 1209:2440:FSIJ-2.2-43112959:0
Application ID ...: D276000124010200FFFE431129590000
Application type .: OpenPGP
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 43112959
Name of cardholder: [non positionné]
Language prefs ...: [non positionné]
Salutation .......:
URL of public key : [non positionné]
Login data .......: [non positionné]
Signature PIN ....: forcé
Key attributes ...: ed448 cv448 ed448
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
KDF setting ......: off
UIF setting ......: Sign=off Decrypt=off Auth=off
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]
gpg/carte> generate
Faut-il faire une sauvegarde hors carte de la clef de chiffrement ? (O/n)
Veuillez noter que les configurations d'usine des codes personnels sont
code personnel = « 123456 » code personnel d'admin. = « 12345678 ».
Vous devriez les modifier avec la commande --change-pin
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
0 = la clef n'expire pas
<n> = la clef expire dans n jours
<n>w = la clef expire dans n semaines
<n>m = la clef expire dans n mois
<n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 10y
La clef expire le mer. 21 févr. 2035 17:02:31 CET
Est-ce correct ? (o/N) o
GnuPG doit construire une identité pour identifier la clef.
Nom réel : test1
Adresse électronique :
Commentaire :
Vous avez sélectionné cette identité :
« test1 »
Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? O
Échec de génération de la clef : Erreur de carte : board error
---------------------------------------------------------------
LinuxMint gnupg 2.4.4
I created X448 keys and try to put them on Gnuk
---------------------------------
gpg --list-secret-keys
sec ed448/0xAA988F88C70C3DEE 2025-02-23 [SC] [expire : 2075-02-11]
Empreinte de la clef = AA988 F88C7 0C3DE E74BE DFF48 D127D 4BA4E
CAEB3 685B3 575E7
uid [ ultime ] tmp
ssb cv448/0x406CC6562774BC84 2025-02-23 [E] [expire : 2075-02-11]
ssb ed448/0x02BB1F8E7A2B268A 2025-02-23 [A] [expire : 2075-02-11]
---------------------------------
gpg --expert --edit-key 0xAA988F88C70C3DEE
gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
La clef secrète est disponible.
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
gpg> keytocard
Faut-il vraiment déplacer la clef principale ? (o/N) o
Veuillez sélectionner l'endroit où stocker la clef :
(1) Clef de signature
(3) Clef d'authentification
Quel est votre choix ? 1
Faut-il remplacer la clef existante ? (o/N) o
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
Note: the local copy of the secret key will only be deleted with "save".
gpg> key 1
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb* cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
gpg> keytocard
Veuillez sélectionner l'endroit où stocker la clef :
(2) Clef de chiffrement
Quel est votre choix ? 2
Faut-il remplacer la clef existante ? (o/N) o
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb* cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
Note: the local copy of the secret key will only be deleted with "save".
gpg> key 1
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
gpg> key 2
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb* ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
gpg> keytocard
Veuillez sélectionner l'endroit où stocker la clef :
(3) Clef d'authentification
Quel est votre choix ? 2
Choix incorrect.
Quel est votre choix ? 3
Faut-il remplacer la clef existante ? (o/N) o
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb* ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
Note: the local copy of the secret key will only be deleted with "save".
gpg> key 2
sec ed448/0xAA988F88C70C3DEE
créé : 2025-02-23 expire : 2075-02-11 utilisation : SC
confiance : ultime validité : ultime
ssb cv448/0x406CC6562774BC84
créé : 2025-02-23 expire : 2075-02-11 utilisation : E
ssb ed448/0x02BB1F8E7A2B268A
créé : 2025-02-23 expire : 2075-02-11 utilisation : A
[ ultime ] (1). tmp
gpg> save
---------------------------------
The results is with gpg --list-secret-keys
sec# ed448/0xAA988F88C70C3DEE 2025-02-23 [SC] [expire : 2075-02-11]
Empreinte de la clef = AA988 F88C7 0C3DE E74BE DFF48 D127D 4BA4E
CAEB3 685B3 575E7
uid [ ultime ] tmp
ssb> cv448/0x406CC6562774BC84 2025-02-23 [E] [expire : 2075-02-11]
ssb# ed448/0x02BB1F8E7A2B268A 2025-02-23 [A] [expire : 2075-02-11]
--------
It seems that transfert of SC and A keys failed (# indicator). It
succeed with E key and I can encrypt and decrypt with it.
--------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnuk-users/attachments/20250224/91585add/attachment.html>
More information about the Gnuk-users
mailing list