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