Steps to Reproduce:
$ gpgsm --version gpgsm (GnuPG) 2.4.5 libgcrypt 1.10.3 libksba 1.6.6
$ openssl pkcs12 -info -nokeys -noout -in credential_private_encrypted_Ida_E.p12 Enter Import Password: (password) MAC: sha1, Iteration 2048 MAC length: 20, salt length: 8 PKCS7 Encrypted data: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048 Certificate bag Certificate bag PKCS7 Data Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
I am testing encryption for different types of keys and noticed that gpgsm/Kleopatra supports CMS encryption with X25519 keys. Certificate import works. However, when I want to import the private key (.p12), I get an error:
$ gpgsm --import -v --batch credential_private_encrypted_Ida_E.p12 gpgsm: enabled compatibility flags: gpgsm: processing bag.encryptedData gpgsm: 1656 bytes of 3DES encrypted text gpgsm: processing certBag gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: brak działającego dirmngr - uruchamianie „C:\\Program Files (x86)\\Gpg4win\\..\\GnuPG\\bin\\dirmngr.exe” gpgsm: oczekiwanie na uruchomienie procesu dirmngr... (5s) gpgsm: ustanowiono połączenie z procesem dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate {BA8A10CFCE8D1426B2A0B52059C9A884D4770F022DEB1E785D17D482B3A63072} not found using authorityKeyIdentifier gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate (#/CN=TEST CMS/SMIME root CA) not found gpgsm: certificate imported gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate {BA8A10CFCE8D1426B2A0B52059C9A884D4770F022DEB1E785D17D482B3A63072} not found using authorityKeyIdentifier gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: skipping bag.attribute_set gpgsm: processing certBag gpgsm: certificate imported gpgsm: processing bag data gpgsm: processing shrouded_key_bag gpgsm: 56 bytes of 3DES encrypted text gpgsm: DBG: key format OID: 2b656e gpgsm: parse_shrouded_key_bag(shrouded_key_bag.decrypted-text): lvl=2 (tlv_expect_object_id): Sukces - Nie zaimplementowane gpgsm: parse_bag_data(data.oid): lvl=12 (tlv_expect_octet_string): Sukces - Nie zaimplementowane gpgsm: p12_parse(bag.data): @1896 lvl=12 tlv_expect_octet_string: Sukces - Nie zaimplementowane gpgsm: error parsing or decrypting the PKCS#12 file gpgsm: całkowita liczba przetworzonych: 2 gpgsm: dołączono do zbioru: 2
Keys, certificates and dumps can be found in this repo.
I am mainly interested in x25519 and ed25519 that is such files:
private_key_material/private/credentials/ Ida x25519 :: credential_private_encrypted_Ida_E.p12 Ida ed25519 :: credential_private_encrypted_Ida_S.p12 Kilo x25519 :: credential_private_encrypted_Kilo_E.p12 Kilo ed25519 :: credential_private_encrypted_Kilo_S.p12
btw. do you plan to introduce support for X448 and ED448 keys in S/MIME?
The screenshot shows the private keys that I failed to import (thin font).
I also got an error when importing rsa4096 key encrypted with 3DES in a .p12 file. Danielle rsa4096. However, when I change encryption of the .p12 file to AES256, import works smoothly. This is the error:
$ gpgsm --import -v --batch credential_private_encrypted_Danielle.p12 gpgsm: enabled compatibility flags: gpgsm: processing bag.encryptedData gpgsm: 2176 bytes of 3DES encrypted text gpgsm: processing certBag gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: brak działającego dirmngr - uruchamianie „C:\\Program Files (x86)\\Gpg4win\\..\\GnuPG\\bin\\dirmngr.exe” gpgsm: oczekiwanie na uruchomienie procesu dirmngr... (5s) gpgsm: ustanowiono połączenie z procesem dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate {BA8A10CFCE8D1426B2A0B52059C9A884D4770F022DEB1E785D17D482B3A63072} not found using authorityKeyIdentifier gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate (#/CN=TEST CMS/SMIME root CA) not found gpgsm: certificate imported gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: issuer certificate {BA8A10CFCE8D1426B2A0B52059C9A884D4770F022DEB1E785D17D482B3A63072} not found using authorityKeyIdentifier gpgsm: poszukiwanie wystawcy w pamięci podręcznej Dirmngr gpgsm: liczba pasujących certyfikatów: 0 gpgsm: wyszukiwanie klucza tylko w pamięci podręcznej dirmngr nie powiodło się: Brak danych gpgsm: skipping bag.attribute_set gpgsm: processing certBag gpgsm: certificate imported gpgsm: processing bag data gpgsm: processing shrouded_key_bag gpgsm: 2376 bytes of 3DES encrypted text gpgsm: decryption failed; trying charset 'ISO-8859-1' gpgsm: decryption failed; trying charset 'ISO-8859-15' gpgsm: decryption failed; trying charset 'ISO-8859-2' gpgsm: decryption failed; trying charset 'ISO-8859-3' gpgsm: decryption failed; trying charset 'ISO-8859-4' gpgsm: decryption failed; trying charset 'ISO-8859-5' gpgsm: decryption failed; trying charset 'ISO-8859-6' gpgsm: decryption failed; trying charset 'ISO-8859-7' gpgsm: decryption failed; trying charset 'ISO-8859-8' gpgsm: decryption failed; trying charset 'ISO-8859-9' gpgsm: decryption failed; trying charset 'KOI8-R' gpgsm: decryption failed; trying charset 'IBM437' gpgsm: decryption failed; trying charset 'IBM850' gpgsm: decryption failed; trying charset 'BIG5' gpgsm: parse_shrouded_key_bag(shrouded_key_bag.3desoraes-ciphertext): lvl=12 (tlv_expect_octet_string): Sukces - Odszyfrowywanie nie powiodło się gpgsm: parse_bag_data(data.oid): lvl=12 (tlv_expect_octet_string): Sukces - Odszyfrowywanie nie powiodło się gpgsm: p12_parse(bag.data): @4747 lvl=12 tlv_expect_octet_string: Sukces - Odszyfrowywanie nie powiodło się gpgsm: error parsing or decrypting the PKCS#12 file gpgsm: całkowita liczba przetworzonych: 2 gpgsm: dołączono do zbioru: 2
similar:
https://dev.gnupg.org/T6940
https://dev.gnupg.org/T5464 (gpg)
https://dev.gnupg.org/T4896