aboutsummaryrefslogtreecommitdiffstats
path: root/sm
Commit message (Collapse)AuthorAgeFilesLines
* Silence the compiler and add OIDs to gpgsm.Werner Koch12 days1-0/+14
| | | | | * sm/keylist.c (oidtranstbl): Add some algos. * tools/gpgconf.c: Silence compiler warning.
* gpgsm: Support creation of verification of ML-DSA signatures.Werner Koch13 days4-7/+46
| | | | | | | | | | | | | | | | | | | * common/sexputil.c (get_pk_algo_from_key): Enlarge buffer for algo name so that "dilithium3" can be detected. * agent/pksign.c (do_encode_mldsa): New. (agent_pksign_do): Call it. * sm/certcheck.c (pk_algo_from_sexp): Detected ML-DSA. (gpgsm_check_cms_signature): Support ML-DSA. Also rework error cleanup. * sm/sign.c (gpgsm_sign): Support ML-DSA. * sm/verify.c (gpgsm_verify): Fix a comment. -- Libgcrypt 1.12.5 and libksba 1.9.0 are required to work properly. GnuPG-bug-id: 8517
* gpgsm: Basic support for ML-DSA certificatesWerner Koch13 days2-1/+22
| | | | | | | | | | | * common/sexputil.c (pubkey_algo_string): Support GCRY_PK_MLDSA. * sm/certcheck.c (gpgsm_check_cert_sig): Ditto. * sm/keylist.c (oidtranstbl): Add 2 OIDs for ML-DSA. -- Libgcrypt 1.12.5 is required to work properly. GnuPG-bug-id: 8517
* gpgsm: Change signing fallback hash from SHA1 to SHA256.Werner Koch13 days1-3/+3
| | | | * sm/sign.c (gpgsm_sign): Change fallback algorithm
* gpg,sm: Do not use the partial fileguard for /dev/null.Werner Koch2026-10-011-4/+11
| | | | | | | | | | | | | | | * g10/plaintext.c (get_output_file): Take care of /dev/null et al. * sm/gpgsm.c (main): Ditto. Also fix regression if no-partial-file-guard is used -- We consider all files below /dev/ as special and don't use the part thing. The regresion was that with no-partial-file-guard the output would be send to stdout. GnuPG-bug-id: 7873
* agent,dirmngr,g13,kbx,scd,gpgsm,tools: Fix help/usage strings.NIIBE Yutaka2026-09-291-2/+2
| | | | | | | | | | | | | | | | | * agent/command.c (hlp_get_passphrase, hlp_scd, hlp_putval): Fix. * dirmngr/server.c (hlp_checkcrl, hlp_ad_query, hlp_getinfo): Fix. * g13/server.c (hlp_create): Likewise. * kbx/kbxserver.c (hlp_delete, hlp_getinfo): Likewise. * scd/command.c (hlp_learn, hlp_getattr, hlp_setattr): Likewise. (hlp_writekey, hlp_getinfo, hlp_restart, hlp_apdu): Likewise. (hlp_keyinfo): Likewise. * sm/server.c (hlp_encrypt, hlp_export): Likewise. * tools/gpg-auth.c (my_strusage): Likewise. * tools/gpg-card.c (cmd_yubikey): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Fix typo for debug output.NIIBE Yutaka2026-09-151-1/+1
| | | | | | | | | * sm/certcheck.c (gpgsm_check_cert_sig): Use log_printhex. -- Fixes-commit: b1694987bb6484405d41d34046a5290176feadd0 Signed-off-by: NIIBE Yutaka <[email protected]>
* Merge branch 'wk/rfc9980'Werner Koch2026-09-112-7/+18
|\ | | | | | | | | | | | | | | | | | | -- After 25 years the NSA could even convince GnuPG that their idea of using complex algorithm is better for someones(tm) security. But fortunately there is no need to enable it. Thus all guards of pretty good and gnu privacy won't enable --compliance=fips|de-vs or use the option --allow-9980.
| * gpg: Implement generation of ietf25 v6 keys.Werner Koch2026-08-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * common/kem.c (gnupg_ecc_kem_kdf): Replace arg is_pgp by kdf_algo and adjust callers. * agent/pkdecrypt.c (ecc_kem_decrypt): Replace is_pgp by kemid. Extract a new kdf_variant from the sexp and setup kdf_algo from it. Add dedicated code path for the rfc9580 variant. (agent_kem_decrypt): Directly pass the kemid instead of the is_pgp flag. * common/compliance.c (gnupg_pk_is_compliant) (gnupg_pk_is_allowed): Add X25519. * common/openpgpdefs.h (pubkey_algo_t): Ditto. * kbx/keybox-openpgp.c (keygrip_from_keyparm): Support X25519. (parse_key): Ditto. * g10/parse-packet.c (parse_pubkeyenc, parse_key): Ditto. * g10/build-packet.c (do_key, do_pubkey_enc_v6): Ditto. * g10/call-agent.c (agent_pkdecrypt): Ditto. * g10/ecdh.c (ecc_build_kdf_params): Don't segv when called with wrong algo. * g10/keyid.c (pubkey_string): Map X25519 to "ietf25". (keygrip_from_pk): Support X25519. * g10/misc.c (openpgp_pk_test_algo2): Ditto. (openpgp_pk_algo_usage, openpgp_pk_algo_name) (pubkey_get_npkey, pubkey_get_nskey): Ditto. * g10/encrypt.c (use_rfc9980_seipdv2, write_pubkey_enc): Ditto. * g10/pkglue.c (get_mpi_from_sexp_strip_0x40): New. (do_encrypt_kem): Support X25519. (pk_encrypt): Ditto. * g10/seskey.c (encode_session_key): Ditto. * g10/pubkey-enc.c (get_session_key): Ditto. (get_it): Ditto. Move the special algo setup to the top. * g10/import.c (build_mode1003_sexp): Support X25519. (internal_skey_object_to_sexp): Ditto. * g10/keygen.c (ecckey_from_sexp): Add support for the MLK algos. (do_create_from_keygrip): Support ED25519. (common_gen): Support X25519 and the MLK algos. (gen_ecc): Support X25519. (gen_kyber): Support the MLK variants. (do_create): Support ED25519 and the MLK algos. (parse_key_parameter_part): Add parameter "ietf25".
| * gpg,gpgsm,agent: New option --debug-no-libgcryptWerner Koch2026-07-311-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * g10/gpg.c (oDebugNoLibgcrypt): New. (opts): Add --debug-no-libgcrypt (mopt): Add field no_libgcrypt_debug. (set_debug): Act upon it. (main): Set option. * agent/gpg-agent.c: Implement in the same way as above. * sm/gpgsm: Ditto. (cipher_algo_option_seen): Move to the new mopt struct. -- This option is useful to not clutter the "--debug crypto" or "--debug mpi" output with thge often verbose debug output from Libgcrypt. It is a simple option and not a debug flag for backward compatibility and to ave some space in the debug flags. As with all --debug options, that option is not part of the stable API.
* | gpgsm: Fix condition for de-vs compliance status line.Philip Le2026-08-261-1/+1
| | | | | | | | | | | | | | | | | | | | * sm/decrypt.c (gpgsm_decrypt): Also check other conditions for de-vs compliance before emitting status line. -- Also check DFPARM.IS_DE_VS which helps to track de-vs compliance state. Updates-commit: 4a8f177f390b270df9a86ea47d8eced85420d7d4
* | gpgsm: Check keyboxd usage in keydb_get_flags.Philip Le2026-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | * sm/keydb.c (keydb_get_flags): Add condition that keyboxd is not used. -- The KEYDB_HANDLE variables FOUND and USED are only valid if the keyboxd is not used. Therefore USE_KEYBOXD has to be checked too. GnuPG-bug-id: 8048 Updates-commit: 766e9773cbc2a03d0392c2a2c94d0fe237741c5b
* | gpgsm: Emit issuer and serial no. when the certificate is not found.Philip Le2026-07-301-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/DETAILS: Update NO_PUBKEY for X.509 certificates. * sm/verify.c (gpgsm_verify): Print the issuer and serial no. of the signer's certificate when the certificate is not found. -- In case we cannot find the certificate of the signer, we should still print issuer and serial no. of the signer's certificate. This info is contained in the signature. GnuPG-bug-id: 8363 Co-authored-by: Werner Koch <[email protected]>
* | gpgsm: Emit signing time as status output for bad signatures.Philip Le2026-07-301-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * common/status.h (enum): Add new STATUS_SIGINFO. * doc/DETAILS: Add description for new STATUS_SIGINFO. * sm/verify.c (gpgsm_verify): Add signature creation time with STATUS_SIGINFO for bad signatures. -- Add the signature creation time with the new STATUS_SIGINFO. For now this status line is only emitted after a BADSIG status line. GnuPG-bug-id: 8364 Co-authored-by: Werner Koch <[email protected]>
* | gpgsm: Fix keydb_get_flags with keyboxd.NIIBE Yutaka2026-07-211-8/+24
| | | | | | | | | | | | | | | | | | | | | | * sm/keydb.c (struct keydb_handle): Add new field of last_is_revoked. (keydb_get_flag): Support keyboxd. (search_status_cb): Fill last_is_revoked field. -- GnuPG-bug-id: 8048 Signed-off-by: NIIBE Yutaka <[email protected]>
* | gpgsm: Check args for special file names and dashes.Philip Le2026-07-201-68/+7
| | | | | | | | | | | | | | | | | | | | | | | | * sm/gpgsm.c (main): Use open_es_fread to check input args for special file names and dashes. -- Reading input args with open_es_fread includes a check for '-' (stdin) and a check for special file names. Updates-commit: 95d97615097255a1db1b71eec4df18c171e88df1 GnuPG-bug-id: 8347
* | gpgsm: Return 0 if decryption of multi recipient file succeeeds.Philip Le2026-07-161-0/+9
|/ | | | | | | | | | | | | * sm/gpgsm.c (main): Reset error count when decryption succeeds. -- When failing to decrypt for one of multiple recipients gpgsm increases the error count by emitting a message with log_error. If the decryption still succeeds with another key the error count should be reset. And gpgsm should return without error. GnuPG-bug-id: 8340
* gpgsm: Only display de-vs compliance status in de-vs compliance mode.Philip Le2026-07-091-18/+26
| | | | | | | | | | | * sm/decrypt.c (gpgsm_decrypt): Check cert chain only in de-vs compliance mode. -- We need to check the certificate chain for validity and the de-vs flag only in de-vs compliance mode. GnuPG-bug-id: 8333
* gpgsm: Require a minimum tag length for GCM decryption.Werner Koch2026-06-181-1/+8
| | | | | | | | | * sm/decrypt.c (gpgsm_decrypt): Require a minimum authtaglen. -- Reported-by: Thai Duong <[email protected]> This is similar to OpenSSL's CVE-id: CVE-2026-34182
* gpg: Use partial file on decryption, remove on failure.NIIBE Yutaka2026-06-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | * g10/options.h (COMPAT_NO_PARTIALFILEGUARD): New. * g10/gpg.c (compatibility_flags_s compatibility_flags): Add COMPAT_NO_PARTIALFILEGUARD. * sm/gpgsm.c (compatibility_flags_s compatibility_flags): Fix the option name. * g10/packet.h (struct pfg, pfg_open_file, pfg_close_file): New. * g10/decrypt-data.c (decrypt_data): Use pfg_open_file, pfg_close_file, instead of get_output_file. Add log_error for MDC failure just like AEAD failure. * g10/plaintext.c (get_output_file): Mofify using PFG. (pfg_open_file, pfg_close_file): New. (handle_plaintext): Use PFG. Add iobuf_error check to ensure aead filter failure is detected correctly. -- GnuPG-bug-id: 7873 Co-authored-by: Philip Le <[email protected]> Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Use partial file on decryption, remove on failure.NIIBE Yutaka2026-06-022-6/+36
| | | | | | | | | | | * sm/gpgsm.c (main): Prepare .part file and rename on success, remove on failure. * sm/gpgsm.h (COMPAT_NO_PARTIALFILEGUARD): New. -- GnuPG-bug-id: 7873 Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Fix regression in gpgsm_verify with expired certificates.Philip Le2026-05-291-34/+34
| | | | | | | | | | | | * sm/verify.c (gpgsm_verify): Display information about signers with expired certificate. -- The loop over signers skipped the parsing of the current signer's information if the certificate is expired. GnuPG-bug-id: 8188 Fixes-commit: fa1ac5c23d167dde6899536d6d80d9391737d21e
* gpgsm: Support unsigned attributes.Werner Koch2026-05-121-13/+16
| | | | | | | | | | * sm/sign.c (add_signed_system_attribute): Rename to ... (add_system_attribute): this. Prepare for unsigned attributes. (add_signed_attribute): Rename to ... (add_attribute): this. Support unsigned attributes. -- GnuPG-bug-id: 4537
* gpgsm: Introduce system defined attribute _signingCertificateV2Werner Koch2026-05-111-10/+93
| | | | | | | | | | * sm/sign.c (add_signed_system_attribute): New. (add_signed_attribute): Add args cert and signer and divert some calls to new function. (gpgsm_sign): Allow setting attributes to selected signers. -- GnuPG-bug-id: 4537
* gpgsm: Fix an uninitialized use of a callbback parameter.Werner Koch2026-05-111-1/+1
| | | | | | | | * sm/certchain.c (find_up_dirmngr): Initialize all fields of find_up_store_certs_parm. -- Found while valgrinding new code.
* gpgsm: New server command SETATTR.Werner Koch2026-05-074-14/+83
| | | | | | | | | | | | | | | | * sm/gpgsm.h (opt): Move 'attributes' to ... (struct server_control_s): ... here. * sm/gpgsm.c (opt_attributes): New. (main): Store value for --attribute in new var. (gpgsm_init_default_ctrl): Set new member attribute from opt_attributes. (gpgsm_deinit_default_ctrl): Free new member. * sm/server.c (cmd_setattr): New. * sm/sign.c (gpgsm_sign): Use ctrl->attributes instead of the fomer opt.attribute. -- GnuPG-bug-id: 4537
* gpgsm: The option --attribute is now working.Werner Koch2026-05-061-1/+1
| | | | | | | | | | * sm/sign.c (add_signed_attribute): Enable the long existing --attribute option with a recent libksba. -- Updates-commit: 5f3864fb647237f862bbe7e26763dffa0e945202 See also GnuPG-bug-id: 4537
* gpgsm: Silence a compiler warning.Werner Koch2026-05-051-0/+2
| | | | * sm/keydb.c (keydb_set_cert_flags): Flag EPHEMERAL arg as unused.
* gpgsm: Use AES256-GCM by default in de-vs mode.Werner Koch2026-05-031-5/+15
| | | | | | * sm/gpgsm.c (DEFAULT_CIPHER_ALGO_DE_VS): New. (cipher_algo_option_seen): New. (main): Switch default cipher algo.
* gpgsm: Implement GCM encryption.Werner Koch2026-05-031-23/+51
| | | | | | | | | | | | | | | | | | * sm/encrypt.c (struct dek_s): Add field 'mode'. (init_dek): Take the mode from DEK. (gpgsm_encrypt): Allocate the DEK earlier and set the mode from the cipher-algo option. Set content-type depending on the mode. Adjust compliance check. Handle the KSBA_SR_NEED_SIG event by setting the authtag. -- This is the second part to implement GCM encryption. Note that GCM decryption works since 2.3.2 (nearly 5 years ago). Note that libksba 1.7.0 is required for proper functioning; earlier versions will return an error during encryption.. GnuPG-bug-id: 3979 See-commit: 047d699aa40c6cd3f35c337091951b62adf32493
* gpgsm: Fix regression in password encrypted GCM data.Werner Koch2026-04-301-44/+44
| | | | | | | | * sm/decrypt.c (gpgsm_decrypt): Run the chain validation only if we have a certificate. -- Fixes-commit: 56a1e5f3dda36b396874035c313fb2e6dd972c2f
* gpgsm: Avoid a final FAILURE status line w/o unsing --status-fdWerner Koch2026-04-302-2/+14
| | | | | | * sm/gpgsm.c (no_final_failure_status): New. (main): Set it. (gpgsm_exit): Use it.
* gpgsm: Make --with-ephemeral work correct with the keyboxd.Werner Koch2026-04-301-2/+2
| | | | | | | | | * sm/keydb.c (kbx_client_set_ephemeral): Revert logic * kbx/kbxserver.c (cmd_setephemeral): Document option --set which can be used for better readability. -- Fixes-commit: 7428463a9db3c0586b30fe6cff884bcb35972d1e
* gpgsm:keydb: Use SETEPHEMERAL and PUTKEYFLAG command.NIIBE Yutaka2026-04-271-55/+136
| | | | | | | | | | | | | | * sm/keydb.c (kbx_client_set_ephemeral): New. (keydb_set_ephemeral): Implement the keyboxd use case. (set_cert_flags): Rename from keydb_set_cert_flags for the case of local keybox access. (keydb_set_cert_flags): Implement the keyboxd use case. (keydb_clear_some_cert_flags): Implement the keyboxd use case. -- GnuPG-bug-id: 8048 Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Fix possible double free in the CMS parser.Werner Koch2026-04-262-6/+7
| | | | | | | | | | | | | | | | | | | * sm/decrypt.c (gpgsm_decrypt): Init issuer and serial in the recp loop to avoid a double free in case of an error from ksba_cms_get_issuer_serial. Also clar enc_val to be safe for future code modifications. * sm/verify.c (gpgsm_verify): Init serial. Not really needed, though. -- A common pattern in GnuPG and related software for functions returning allocated objects is to always init them in the called function to NULL. Unfortunately this is not always the case in libksba and it should have been done by the caller. Changing this in libksba would be possible but has a minor regression risk. The allocation is done by libksba and not user-controlled; thus the severity is low. Reported-by: Ciwan Öztopal GnuPG-bug-id: 8240
* gpgsm: Emit more details when failing to check a crlDP.Philip Le2026-04-162-0/+15
| | | | | | | | | | | | | | | | | | * dirmngr/crlcache.c (crl_cache_reload_crl): Print status messages on errors. * dirmngr/ks-engine-http.c (ks_http_fetch): Print a status message on error. * sm/call-dirmngr.c (warning_and_note_printer): Add new warning messages. * sm/certchain.c (is_cert_still_valid): Log an error message when failing to retrieve a crlDP. -- Let the dirmngr emit status messages on errors regarding checking a CRL. These messages are then read by gpgsm and a warning is printed. This commit adds warnings for http errors, fetching CRL errors and inserting CRLs into cache errors. GnuPG-bug-id: 8221
* gpgsm: Show rsaPSS certificates as de-vs compliant in listings.Werner Koch2026-04-143-28/+77
| | | | | | | | | | | | | | | | | | | * sm/certcheck.c (extract_pss_params): Add arg 'silent'. (gpgsm_check_cert_sig): Factor some code out to ... (get_sig_val_from_cert): new function. (gpgsm_pss_hash_algo_from_cert): New. * sm/keylist.c (print_compliance_flags): Handle rsaPSS. -- RSA-PSS certificates were not shown in key listings as de-vs compliant. However verification showed tha they are compliant. This patch fixes this. Gotcha: When testing remember that the de-vs flag is only considered in the global trustlist. GnuPG-bug-id: T8222
* gpgsm: Add a certificate chain check for de-vs compliancePhilip Le2026-04-074-37/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * sm/certchain.c (do_validate_chain): Fix typo * sm/decrypt.c (gpgsm_decrypt): Check the certifacte chain for de-vs compliance * sm/verify.c (gpgsm_verify): Check the certificate chain for de-vs compliance * sm/certchain.c (do_validate_chain): Set the is_de_vs user data and flag. * sm/keylist.c (cert_has_de_vs_flag): New. (print_compliance_flags): Print compliance string only if the flag is set. -- The gpgsm status for CO_DE_VS compliance should only be set if the certificate chain is also checked and compliant (besides the pk algo, the message digest and cipher which were already checked before). GnuPG-bug-id: 8188 Cherry-picked-from: fa1ac5c23d167dde6899536d6d80d9391737d21e (2.2) Some extra changes had to be picked from See-commit: 14383ff052ff5013ba40b6d53b91a1525b5ae2d8 (2.2) which was not yet ported to master. This is in particular setting the is_de_vs user data for the cert in certchain.c and printing the compliance flag only if it is compliant in keylist.c . Thus in de-vs compliance mode we now look at the de-vs flag from the trustlist.txt and print a certificate as VS-NfD compliant only if this flag is set. Obviously this now requires that --with-validation has been used. The advantage of this behaviour (as already avaulabel in 2.2) is that also non-compliant certificates can be entered into the trustlist.txt and such certs can be used with the usual warning that the cert is not VS-NfD compliant. GnuPG-bug-id: 7593
* gpgsm: Allow cipher mode as part of the algo for --cipher-algo.Werner Koch2026-04-074-27/+77
| | | | | | | | | | | | | | | | | | | | | | | | * common/miscellaneous.c (gnupg_cipher_mode_name): New. * common/audit.c (proc_type_encrypt): Print the encryption mode. * sm/misc.c (gpgsm_map_cipher_name_to_oid): New. * sm/gpgsm.c (DEFAULT_CIPHER_ALGO): Change to AES256-CBC for consistent error messages. (main): Replace the alias name mapping using if-else by a call to the new function. * g10/misc.c (openpgp_aead_algo_name): Use gnupg_cipher_mode_name for consistency. -- Note that DEFAULT_CIPHER_ALGO may now also be used to make GCM the default. GnuPG-bug-id: 3979 Take care: This is the first patch to implement GCM encryption. The actual encryption part is not yet ready and instead a debug message will be printed.
* gpgsm: Make GCM fully compliant for de-vsWerner Koch2026-04-021-1/+1
| | | | | | * common/compliance.c (gnupg_cipher_is_compliant): Allow GCM for gpgsm. (gnupg_cipher_is_allowed): Allow GCM for gpgsm also in producer mode.
* gpgsm: Announce that we can handle GCM encrypted data.Werner Koch2026-04-021-1/+7
| | | | | | | * sm/sign.c (gpgsm_sign): Add GCM capabilities. -- GnuPG-bug-id: 3979
* gpgsm: Fix bug so that a cert can be signed by a different algo.Werner Koch2026-03-311-1/+1
| | | | | | | | | | | * sm/certreqgen.c (create_request): Take the algo from the sigkey instead of the to-be-signed public key. -- The bug was that a certificate could only be signed by a signing key using the same algo. Reported-by: Youfu Zhang <[email protected]>
* gpgsm: Make sure initializing TMP_CERT.NIIBE Yutaka2026-03-251-1/+1
| | | | | | | | | | | * sm/certchain.c (do_validate_chain): Initialize TMP_CERT. -- When keydb_get_cert raises an error, it was possible that ksba_cert_release was called with bogus value. Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Skip the optional PKCS#12 PBES2 keyLength parameterWerner Koch2026-03-101-0/+16
| | | | | | | | | | | * sm/minip12.c (parse_bag_encrypted_data): Parse and ignore the optional keyLength. (parse_shrouded_key_bag): Ditto. -- We have noticed newer German Telekom issued certificates which for the first time include this optional parameter. This patch allows to properly parse them. See RFC-2898, A2 for the specs.
* gpgsm: New option --assert-validsig.Werner Koch2026-02-203-2/+33
| | | | | | | | | | | | | | * sm/gpgsm.c (oAssertValidsig, oAssertKeyusage): New. (opts): Add options --assert0validsig and --assert-keyusage. (assert_validsig_true): New global var. (main): Set options. (gpgsm_exit): Implement --assert-validsig. * sm/gpgsm.h (opt): Add fields assert_validsig and assert_keyusage. * sm/verify.c (gpgsm_verify): Set assert_validsig_true. -- This option will be used by internal use of gpgsm. Note that --assert-keyusage is not yet implemented.
* gpgsm: Make multiple search patterns work with keyboxd.Werner Koch2026-01-121-85/+119
| | | | | | | * sm/keydb.c (keydb_search): Loop over all descriptions. -- GnuPG-bug-id: 8026
* gpgsm: Fix output of card serial number in colon listing.Ingo Klöcker2025-11-161-0/+1
| | | | | | | * sm/call-agent.c (keyinfo_status_cb): Set S back. -- GnuPG-bug-id: 7914
* gpg,gpgsm: Serialize write access to keybox/keyring to protect.NIIBE Yutaka2025-10-223-33/+32
| | | | | | | | | | | | | | | | | | | | | | * g10/keydb.c (internal_keydb_update_keyblock): Caller should lock the resource by keydb_lock, before use of this routine. (internal_keydb_insert_keyblock): Likewise. (internal_keydb_delete_keyblock): Likewise. * g10/delkey.c (do_delete_key): Serialize the access to the resource. * g10/import.c (import_revoke_cert): Likewise. * g10/keyedit.c (quick_find_keyblock): Likewise. * g10/keygen.c (quick_find_keyblock): Likewise. * sm/delete.c (delete_one): Lock earlier to protect the resource correctly. * sm/keydb.c (do_set_flags): Rename from keydb_set_flags. (keydb_set_cert_flags): Follow the change. (keydb_update_cert): Require locked by caller. * sm/keydb.h (keydb_set_flags): Remove. -- GnuPG-bug-id: 7855 Signed-off-by: NIIBE Yutaka <[email protected]>
* gpgsm: Fix delete and store certificate locking glitches.NIIBE Yutaka2025-10-221-8/+4
| | | | | | | | | | | | | * sm/keydb.c (do_insert_cert): Rename from keydb_insert_cert. Don't call unlock_all. (keydb_delete): Don't call unlock_all. (keydb_store_cert): Use keydb_lock, instead of internal lock_all directly. Follow the name change of do_insert_cert. -- GnuPG-bug-id: 7855 Signed-off-by: NIIBE Yutaka <[email protected]>
* kbx,gpg,gpgsm: Add FP-close method for keydb to close before unlock.NIIBE Yutaka2025-10-221-6/+20
| | | | | | | | | | | | | | | | | | | | | | * kbx/keybox.h (keybox_fp_close): New. * kbx/keybox-init.c (keybox_fp_close): New. (keybox_release): Don't close FP here. * kbx/keybox-update.c (keybox_compress_when_no_other_users): Use keybox_fp_close. * kbx/backend-kbx.c (be_kbx_release_kbx_hd): Follow the change. * g10/keyring.h (keyring_fp_close): New. * g10/keyring.c (keyring_fp_close): New. (keyring_release): Don't close IOBUF here. (keyring_rebuild_cache): Use keyring_fp_close. * g10/keydb.c (do_fp_close): New. (unlock_all): Close FP before unlocking. * sm/keydb.c (do_fp_close): New. (unlock_all): Close FP before unlocking. -- GnuPG-bug-id: 7855 Signed-off-by: NIIBE Yutaka <[email protected]>