aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-03-29json: Build only a dummy if libgpg-error is < 1.28Werner Koch1-0/+5
Signed-off-by: Werner Koch <[email protected]>
2018-03-28json: Remove the "message" object thingy again.Werner Koch1-21/+9
* src/gpgme-json.c (process_request): Remove 'nm_mode'. -- This was an error in the javascript testing code. Thus the Mozilla specs are correct that the request is send verbatim. Signed-off-by: Werner Koch <[email protected]>
2018-03-28json: Make native messaging work.Werner Koch1-13/+64
* src/gpgme-json.c (opt_debug): New. (process_request): Add optional arg nm_mode. In this mode take the request from a "message" object. (native_messaging_repl): Add debug output and call process_request in NM_MODE. (main): Add option --debug. Parse envvar GPGME_JSON_DEBUG as an alternative way to enable this. Use a default log file. -- Note that the default log file is ~/.gnupg/S.gpgme-json.log . Thus to debug a javascript application you should start watchgnupg --time-only --force ~/.gnupg/S.gpgme-json.log in a separate tty and then use GPGME_JSON_DEBUG=1 firefox & to run firefox. Signed-off-by: Werner Koch <[email protected]>
2018-03-27core: Initialize key return value in gpgme_get_keyAndre Heinecke1-0/+2
* src/keylist.c (gpgme_get_key): Set r_key to NULL. -- The c++ bindings and others assumed that r_key is set to NULL on error. This is the behavior gpgme_op_keylist_next also has. Even if it is not specified what happens to r_key on error setting it to NULL should not hurt and is more expected behavior. This directly fixes an uninitialized memory access error in the c++ bindings / Kleopatra: GnuPG-Bug-Id: T3865 And will fix some additional random crashes in Kleopatra and GpgOL.
2018-03-23core: Need to increase an array in the gpg engine.Werner Koch1-1/+1
* src/engine-gpg.c (build_argv): Allcate one slot more for ARGV. -- Fixes-commit: b9000bc293164ff62efa7e91e5cf6d5fc19d482f
2018-03-23json: Use a request origin of "browser".Werner Koch1-0/+1
* src/gpgme-json.c (_create_new_context): Set flag. Signed-off-by: Werner Koch <[email protected]>
2018-03-23core: New gpgme_set_ctx_flag "request-origin".Werner Koch13-7/+149
* src/context.h (gpgme_context): Add 'request_origin'. * src/gpgme.c (gpgme_release): Free that field. (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "request-origin". * src/engine-backend.h (engine_ops): Add 'set_engine_ops' func ptr and adjust all users. * src/engine.c (_gpgme_engine_set_engine_flags): New. * src/op-support.c (_gpgme_op_reset): Call that func. * src/engine-gpg.c (struct engine_gpg): Add 'request_origin'. (gpg_set_engine_flags): New. (_gpgme_engine_ops_gpg): Hook it. (build_argv): Use command line option --request-origin. * src/engine-gpgsm.c (struct engine_gpgsm): Add 'request_origin'. (gpgsm_set_engine_flags): New. (_gpgme_engine_ops_gpgsm): Hook it. (start): Send OPTION "request-origin". * src/engine-assuan.c (struct engine_llass): Add 'request_origin'. (gpgsm_set_engine_flags): New. (_gpgme_engine_ops_assuan): Hook it. (start): Send OPTION "pretend-request-origin". Signed-off-by: Werner Koch <[email protected]>
2018-03-23build: Allow building with released libgpg-error.Werner Koch1-0/+4
* src/gpgme-json.c (add_base64_to_object): Return an error if building with an older libgpg-error. Signed-off-by: Werner Koch <[email protected]>
2018-03-23json: Finish op:encrypt.Werner Koch1-12/+171
* src/gpgme-json.c (add_base64_to_object): New. (data_from_base64_string): New. (op_encrypt): Employ them. (process_request): Print unformated json. -- Signed-off-by: Werner Koch <[email protected]>
2018-03-23json: Add a new function to cJSON.Werner Koch2-0/+13
* src/cJSON.c (cJSON_CreateStringConvey): New.
2018-03-21json: Use gpgrt_argparse instead of argsparse.cWerner Koch2-10/+21
* src/gpgme-json.c: Remove header argparse.h. Define GPGRT_ENABLE_ARGPARSE_MACROS. (interactive_repl): Replace strusage by gpgrt_strusage. (my_strusage): Add SPDX level. (main): Switch to gpgrt_argparse stuff but keep very limited functionality when building with an older libgpg-error. Signed-off-by: Werner Koch <[email protected]>
2018-03-20json: Implement op:encryptWerner Koch1-61/+393
Signed-off-by: Werner Koch <[email protected]>
2018-03-20core: Do not clobber R_KEY in gpgme_get_key on error.Werner Koch1-5/+7
* src/keylist.c (gpgme_get_key): Assign a value to the return parameter only on success. -- This problem could be triggered by an ambiguous key. The problem is that the key returned in that case is for one not expected and worse it has not been ref-ed. Signed-off-by: Werner Koch <[email protected]>
2018-03-20core: Fix ABI regression in recent commit.Werner Koch1-3/+3
* src/gpgme.h.in (_gpgme_op_import_result): Move new field 'skipped_v3_keys' to the end. -- The ABI break has not made it into a release. Also document the new field. Fixes-commit: a630a1e3e74c926163864b013cb164b4cd1866fc Signed-off-by: Werner Koch <[email protected]>
2018-03-16json: Add framework for the gpgme-json toolWerner Koch2-2/+832
* src/gpgme-json.c: New. * src/Makefile.am (bin_PROGRAMS): Add gpgme-json. (gpgme_json_SOURCES, gpgme_json_LDADD): New. Signed-off-by: Werner Koch <[email protected]>
2018-03-16core: Adjust cJSON code for use in GPGME.Werner Koch2-36/+150
* src/cJSON.c: Remove util.h. Use gpgrt alloc functions. (cJSON_Delete): Do not clobber ERRNO. (cJSON_AddItemToObject): Return OBJECT or NULL. (cJSON_AddNullToObject): New. (cJSON_AddTrueToObject): New. (cJSON_AddFalseToObject): New. (cJSON_AddBoolToObject): New. (cJSON_AddNumberToObject): New. (cJSON_AddStringToObject): New. * src/cJSON.h (cJSON__h): Replace macro by cJSON_h for C compliance. (cJSON_AddNullToObject): Remove macro. (cJSON_AddTrueToObject): Remove macro. (cJSON_AddFalseToObject): Remove macro. (cJSON_AddBoolToObject): Remove macro. (cJSON_AddNumberToObject): Remove macro. (cJSON_AddStringToObject): Remove macro. -- The gpgrt malloc functions are used so that we can easily mix memory returned by gpgrt (e.g. es_read_line) with memory returned from the JSON function. In general that is not needed but on Windows it makes a difference if the gpgme DLL is linked to a different C runtime than the application. The macros have been replaced to allow error checking (i.e out of core) for these functions. More error checking should be implemented instead of silently creating objects which are not as requested. Signed-off-by: Werner Koch <[email protected]>
2018-03-15core: Parse skipped_v3_keysAndre Heinecke2-2/+10
* src/gpgme.h.in (gpgme_import_result_t): Extend with skipped_v3_keys. * src/import.c (gpgme_op_import_result): Extend debug with new field. (parse_import_res): Parse skipped_v3_keys. * tests/gpg/t-support.h, tests/run-support.h (print_import_result): Print skipped_v3_keys. -- This makes it possible to handle this in a GUI in a future version. GnuPG-Bug-Id: T3776
2018-03-14core: Import cJSON code from the payproc project.Werner Koch3-0/+1734
* src/cJSON.c: New. * src/cJSON.h: New. * src/cJSON.readme: New. -- This is a copy of the code from the payproc commit af5d6b4f820ee19e246a2cab6f56465fe91f1233. The code was originally added to payproc with the commit below. Signed-off-by: Werner Koch <[email protected]> =============================================== commit 7ae7ef29bc5ec19e005e6a5a739233d655f3f05f Author: Werner Koch <[email protected]> AuthorDate: Wed Apr 2 09:01:42 2014 +0200 Commit: Werner Koch <[email protected]> CommitDate: Wed Apr 2 09:12:02 2014 +0200 Simplify cJSON and add new macros. * src/cJSON.h: Re-indented. (cjson_t): New. (cjson_is_): New macros. * src/cJSON.c: Re-indented. Include errno.h and our util.h. (ep): Remove global var. (cJSON_GetErrorPtr): Remove. (cJSON_strcasecmp): Cast args for use with tolower. (cJSON_malloc, cJSON_free): Remove. Change callers to use xtrymalloc and xfree. (cJSON_InitHooks): Remove. (cJSON_strdup): Remove. Change callers to use xtrystrdup. (cJSON_New_Item): Simplify. (cJSON_ParseWithOpts, cJSON_Parse): Add arg R_ERROFF. (parse_string, parse_value, parse_array, parse_object): Add arg EP. -- cJSON has been taken from cjson-code-58.zip. The README file has been renamed to cJSON.readme and the files have been changed to GNU coding standards. Because that parser is small enough to be source copied it does not make sense to treat it as a library and I changed the memory allocation functions to the usual xmalloc ones. The only external dependency now is out util.h which declares those functions. The lowercase cjson_t better fits into our coding style as well as the new macros. Thanks to Dave Gamble for this nice parser. ===============================================
2018-03-04IDENTIFYBen McGinnes1-1/+1
* Fixed sp error in docstring.
2018-02-27core: Support non-thread-safe getenv.NIIBE Yutaka1-20/+36
* src/get-env.c (_gpgme_getenv): Use gpgrt_lock_lock and gpgrt_lock_unlock to protect call of getnev. Signed-off-by: NIIBE Yutaka <[email protected]>
2018-02-09core, w32: Enable spawning GUI applicationsAndre Heinecke4-4/+6
* src/engine-spawn.c (engspawn_start): Translate spawn flag to IOSPAWN flag. * src/gpgme-w32spawn.c (my_spawn): Handle the new flag. * src/gpgme.h.in (GPGME_SPAWN_SHOW_WINDOW): New. * src/priv-io.h (IOSPAWN_FLAG_SHOW_WINDOW): New. -- Used by GpgOL
2018-02-09core, w32: Fix flags passing to gpgme-w32-spawnAndre Heinecke1-2/+2
* src/w32-io.c (_gpgme_io_spawn): Don't hardcode flags value. -- IOSPAWN_FLAG_ALLOW_SET_FG is 2 and was translated to 1. This might fix the pinentry foreground handling pass through.
2018-01-29Fix compile error message.NIIBE Yutaka1-2/+1
* src/get-env.c (_gpgme_getenv): Fix error message. Signed-off-by: NIIBE Yutaka <[email protected]>
2018-01-29core: Implement _gpgme_getenv for NetBSD.NIIBE Yutaka1-1/+40
* src/get-env.c [HAVE_GETENV_R] (_gpgme_getenv): New. -- GnuPG-bug-id: 3056 Signed-off-by: NIIBE Yutaka <[email protected]>
2017-12-12Require libgpg-error 1.24 and libassuan 2.4.2Werner Koch1-4/+0
* src/util.h (GPG_ERR_FALSE): Remove due to newer libgpg-error. -- We require these over one year old versions to better allign with GnuPG's demand. Note that the required libassuan is acgtually 2 years old. Signed-off-by: Werner Koch <[email protected]>
2017-12-11core,w32: Fix popping up of console windows due to gpgconf.Werner Koch1-1/+0
* src/gpgme-w32spawn.c (my_spawn): Create w/o DETACHED_PROCESS. -- The spawn helper is actually called with DETACHED_PROCESS and should not need to do a DETACHED_PROCESS of its own. Interestingly this patch removes the popups. See Andre's report GnuPG-bug-id: 3515 Signed-off-by: Werner Koch <[email protected]>
2017-12-08Spelling fixes for comments and docAndre Heinecke5-5/+5
-- Patch provided by ka7 in dev.gnupg.org Differential D423
2017-12-04core: Also check for a failed selftest in gpgm_data_new.Werner Koch1-0/+4
* src/data.c (_gpgme_data_new): Check for failed selftest. * tests/run-support.h (make_filename): Print a message on mallooc failure. (init_gpgme_basic): New. * tests/run-identify.c (main): Call init_gpgme_basic becuase we do not need to setup a protocol. * tests/t-data.c: Define PGM and include run-support.h. (make_filename): Remove. (main): Call init_gpgme_basic. -- Note: This patch may break applications which used gpgme_data but no gpgme_new without having called the required gpgme_check_version. GPGME can be used without a protocol for example to work with the data object abstraction. Thus a call to gpgme_data_new also needs to check the result of the core selftests - including on whether gpgme_check_version has been called. Signed-off-by: Werner Koch <[email protected]>
2017-12-01Fix uid parsing for ldap keyserverAndre Heinecke1-3/+14
* src/engine-gpg.c (gpg_keylist_preprocess): Check field count for uid and add fallback. -- This fixes accessing unintialized memory and resulting crashes in gpgrt_asprintf. GnuPG-Bug-Id: T3550
2017-10-12core: use getdents64 syscall on linux instead of getdents.Daniel Kahn Gillmor1-7/+8
* src/posix-io.c (get_max_fds): use getdents64 instead of getdents. -- getdents64 was introduced in linux 2.4, so it should be widely available. some Linux architectures which post-date 2.4 (e.g. arm64) appear to not have getdents at all, so it's probably better to use the more modern interface. Signed-off-by: Daniel Kahn Gillmor <[email protected]>
2017-10-04core: Allow disabling the use of SYS_getdents for Linux.Werner Koch1-6/+8
* configure.ac (USE_LINUX_GETDENTS): New ac_define. Add option --disable-linux-getdents. * src/posix-io.c: Make use of USE_LINUX_GETDENTS. Signed-off-by: Werner Koch <[email protected]>
2017-10-04core: Restore get_max_fds optimization on LinuxColin Watson1-33/+66
* src/posix-io.c (get_max_fds): Restore Linux optimization, this time using open/getdents/close rather than opendir/readdir/closedir. -- opendir/readdir/closedir may allocate/free memory, and aren't required to do so in an async-signal-safe way. On the other hand, opening /proc/self/fd directly and iterating over it using getdents is safe. (getdents is not strictly speaking documented to be async-signal-safe because it's not in POSIX. However, the Linux implementation is essentially just a souped-up read. Python >= 3.2.3 makes the same assumption.) Signed-off-by: Colin Watson <[email protected]>
2017-08-24core: New context flag "auto-key-retrieve"Werner Koch10-9/+40
* src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag "auto-key-retrieve". * src/context.h (gpgme_context): New field auto_key_retrieve. * src/engine-backend.h (struct engine_ops): Add arg auto_key_retrieve to field 'decrypt'. * src/engine-gpg.c (gpg_decrypt): Add arg auto_key_retrieve and pass option --auto-key-retrieve to gpg. Adjust all callers. (gpg_verify): Ditto. * src/engine-gpgsm.c (gpgsm_decrypt): Add dummy arg auto_key_retrieve. * src/engine-uiserver.c (uiserver_decrypt): Ditto. * tests/run-verify.c (main): Add option --auto-key-retrieve. -- This makes the --auto-key-retrieve option available in the GPGME API. Test plan: Run GPGME_DEBUG=9:out tests/run-verify SIGNEDFILE with and without its new option --auto-key-retrieve and check in the trace stored in "out" whether --auto-key-retrieve was passed to gpg. Signed-off-by: Werner Koch <[email protected]>
2017-08-24Set next version to 1.10.0Werner Koch1-1/+1
--
2017-08-24core: New public enum gpgme_keyorg_t.Werner Koch2-3/+37
* src/gpgme.h.in (gpgme_keyorg_t): New. * src/keylist.c (parse_keyorg): New. (keylist_colon_handler): Set key->ORIGIN. -- This finally set the key origin value form data supplied by recent gpg versions. Signed-off-by: Werner Koch <[email protected]>
2017-08-24gpgconf: Add more comments.Marcus Brinkmann1-1/+7
* src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir): Add comments. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 3018
2017-08-23Fix a couple of bugs pointed out by clang compiler warnings.Marcus Brinkmann2-2/+2
* src/engine-gpgconf.c (gpgconf_config_dir_cb): Fix cast. * src/key.c (_gpgme_key_add_sig): Fix pointer reference. Signed-off-by: Marcus Brinkmann <[email protected]>
2017-08-15gpgconf: Fix some warnings.Marcus Brinkmann1-9/+15
* tests/gpg/t-gpgconf.c (main): Fix warnings. * src/engine-gpgconf.c (struct gpgconf_config_dir_s): New struct. (gpgconf_config_dir_cb, gpgconf_conf_dir) Use it to fix warning. Signed-off-by: Marcus Brinkmann <[email protected]>
2017-08-15gpgconf: Fix symbol export.Marcus Brinkmann1-1/+1
* gpgme.def: Fix last change. (gpgme_op_conf_save): Replace duplicate from c&p ... (gpgme_op_conf_dir): ... with this. Signed-off-by: Marcus Brinkmann <[email protected]> Fixes-commit: 9cd2b58dfb2c21cce64520cf4c726859b583d14e
2017-08-15gpgconf: Add access to --list-dirs for non-default engine.Marcus Brinkmann14-0/+94
* src/engine-assuan.c (_gpgme_engine_ops_assuan): Add conf_dir. * src/engine-g13.c (_gpgme_engine_ops_g13): Likewise. * src/engine-gpg.c (_gpgme_engine_ops_gpg): Likewise. * src/engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Likewise. * src/engine-spawn.c (_gpgme_engine_ops_spawn): Likewise. * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Likewise. * src/engine-backend.h (struct engine_ops): Likewise. * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir): New functions. (struct engine_ops): Add gpgconf_conf_dir. * src/engine.c (_gpgme_engine_op_conf_dir): New function. * src/engine.h (_gpgme_engine_op_conf_dir): New prototype. * src/gpgconf.c (gpgme_op_conf_dir): New function. * src/gpgme.def (gpgme_op_conf_save): New symbol. * src/gpgme.h.in (gpgme_op_conf_dir): New prototype. * src/libgpgme.vers (gpgme_op_conf_dir): New symbol. * tests/gpg/t-gpgconf.c (main): Test gpgme_op_conf_dir. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 3018
2017-08-11g10: Add new delete operations that allow more flags.Marcus Brinkmann9-15/+78
* NEWS: Document new interfaces. * doc/gpgme.texi: Document new interfaces. * src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE, gpgme_op_delete_ext_start, gpgme_op_delete_ext): New. * src/delete.c (delete_start): Change allow_secret argument to flags. (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions. * src/engine-backend.h (delete): Change allow_secret argument to flags. * src/engine.c (_gpgme_engine_op_delete): Likewise. * src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype). * src/engine-gpgsm.c (gpgsm_delete): Likewise. * src/engine-gpg.c (gpg_delete): Likewise. Implement GPGME_DELETE_FORCE. * src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New. * src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 2916
2017-08-10doc: Clarify import keys operation.Marcus Brinkmann1-7/+6
* doc/gpgme.texi (gpgme_op_import_start): Fix grammar. (gpgme_op_import_keys): Clarify some wording and fix result. * src/import.c (gpgme_op_import_keys): Clarify comment. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 3215
2017-07-27core: Fix status parsing for decrypt + verifyAndre Heinecke1-3/+15
* src/decrypt.c (parse_status_error): Don't modify args. -- Otherwise chained status handlers will not see the full args which resulted in a parse error in the verify status handler. GnuPG-Bug-Id: T3310
2017-07-12core: Return NO_SECKEY error code on decryptionWerner Koch1-2/+11
* src/decrypt.c (op_data_t): Add flag any_no_seckey. (_gpgme_decrypt_status_handler): Consult that flag. (_gpgme_decrypt_status_handler): Set that flag. -- The NO_SECKEY is emitted instead of an "S ERROR pkdecrypt_failed" if gpg knowns that a key has been encrypted to that key (cf. "S ENC_TO"). it is not fool proffof but in the majority of cases we can provide a better error message than just DECRYPTION_FAILED. GnuPG-bug-id: 3270 Signed-off-by: Werner Koch <[email protected]>
2017-07-12core: Return CANCELED and BAD_PASSPHRASE error code on decryption.Werner Koch1-1/+32
* src/decrypt.c (op_data_t): Add field pkdecrypt_failed. (_gpgme_decrypt_status_handler): Consult new field. (parse_status_error): Handle some error codes. -- The idea is to return only a limited set of error codes because a user won't be able to understand the more esoteric codes. GnuPG-bug-id: 3270 Signed-off-by: Werner Koch <[email protected]>
2017-07-12core: Simplify parsing of STATUS_ERROR in decrypt.cWerner Koch2-42/+40
* src/decrypt.c (_gpgme_decrypt_status_handler): Factor some code out to ... (parse_status_error): new. Modernize parsing. Signed-off-by: Werner Koch <[email protected]>
2017-06-01Add flag 'is_de_vs' to decryption results and signatures.Justus Winter6-22/+46
* NEWS: Update. * lang/cpp/src/decryptionresult.cpp (DecryptionResult::isDeVs): New function. * lang/cpp/src/decryptionresult.h (DecryptionResult::isDeVs): New prototype. * lang/cpp/src/verificationresult.cpp (Signature::isDeVs): New function. * lang/cpp/src/verificationresult.h (Signature::isDeVs): New prototype. * lang/python/src/results.py (DecryptResult): Turn field 'is_de_vs' into a boolean. (Signature): Likewise. * src/decrypt.c (_gpgme_decrypt_status_handler): Handle the new compliance status line. * src/verify.c (_gpgme_verify_status_handler): Likewise. * src/gpgme.h.in (gpgme_status_code_t): Add new status codes for the new status lines. * src/keylist.c (parse_pub_field18): Move function to 'util.h'. (keylist_colon_handler): Adapt callsites. * src/status-table.c (status_table): Add new status lines. * src/util.h (PARSE_COMPLIANCE_FLAGS): New macro. This used to be 'parse_pub_field18', but turned into a macro to make it polymorphic. -- When decrypting data and verifying signatures, report whether the operations are in compliance with the criteria for data classified as VS-NfD. This information can the be presented to the user. GnuPG-bug-id: 3059 Signed-off-by: Justus Winter <[email protected]>
2017-05-30core: Sort the status table.Justus Winter1-10/+10
-- Signed-off-by: Justus Winter <[email protected]>
2017-05-03core: Don't split gpgconf strings on commaAndre Heinecke1-2/+3
* src/engine-gpgconf.c (gpgconf_parse_option): Don't split strings on comma. -- This only affects values where the main type is string. Values with the alt_type string but another main type are still split to keep lists (e.g. groups) working.
2017-04-03FreeBSD's closefrom(2) does not return errorsPietro Cerutti1-2/+2