diff options
| author | Andre Heinecke <[email protected]> | 2018-08-23 18:49:26 +0000 | 
|---|---|---|
| committer | Andre Heinecke <[email protected]> | 2018-08-23 18:50:18 +0000 | 
| commit | a5f8dac77d50480a208c99398df323c58ce6dc58 (patch) | |
| tree | f63c8abc1c8b1878f9cd709ac9ddba357d5b409b /src/gpgme-json.c | |
| parent | js: fix syntax inside Keyring methods (diff) | |
| download | gpgme-a5f8dac77d50480a208c99398df323c58ce6dc58.tar.gz gpgme-a5f8dac77d50480a208c99398df323c58ce6dc58.zip  | |
json: Add sender and file name to encrypt
* src/gpgme-json.c (hlp_encrypt, op_encrypt): Support sender
and file_name.
Diffstat (limited to 'src/gpgme-json.c')
| -rw-r--r-- | src/gpgme-json.c | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gpgme-json.c b/src/gpgme-json.c index d636ddbe..93582699 100644 --- a/src/gpgme-json.c +++ b/src/gpgme-json.c @@ -1607,6 +1607,8 @@ static const char hlp_encrypt[] =    "protocol:      Either \"openpgp\" (default) or \"cms\".\n"    "signing_keys:  Similar to the keys parameter for added signing.\n"    "               (openpgp only)" +  "file_name:     The file name associated with the data.\n" +  "sender:        Sender info to embed in a signature.\n"    "\n"    "Optional boolean flags (default is false):\n"    "base64:        Input data is base64 encoded.\n" @@ -1634,12 +1636,14 @@ op_encrypt (cjson_t request, cjson_t result)    char **signing_patterns = NULL;    int opt_mime;    char *keystring = NULL; +  char *file_name = NULL;    gpgme_data_t input = NULL;    gpgme_data_t output = NULL;    int abool;    gpgme_encrypt_flags_t encrypt_flags = 0;    gpgme_ctx_t keylist_ctx = NULL;    gpgme_key_t key = NULL; +  cjson_t j_tmp = NULL;    if ((err = get_protocol (request, &protocol)))      goto leave; @@ -1676,6 +1680,17 @@ op_encrypt (cjson_t request, cjson_t result)    if (abool)      encrypt_flags |= GPGME_ENCRYPT_WANT_ADDRESS; +  j_tmp = cJSON_GetObjectItem (request, "file_name"); +  if (j_tmp && cjson_is_string (j_tmp)) +    { +      file_name = j_tmp->valuestring; +    } + +  j_tmp = cJSON_GetObjectItem (request, "sender"); +  if (j_tmp && cjson_is_string (j_tmp)) +    { +      gpgme_set_sender (ctx, j_tmp->valuestring); +    }    /* Get the keys.  */    err = get_keys (request, "keys", &keystring); @@ -1724,6 +1739,10 @@ op_encrypt (cjson_t request, cjson_t result)    if (opt_mime)      gpgme_data_set_encoding (input, GPGME_DATA_ENCODING_MIME); +  if (file_name) +    { +      gpgme_data_set_file_name (input, file_name); +    }    /* Create an output data object.  */    err = gpgme_data_new (&output); @@ -1765,6 +1784,8 @@ op_encrypt (cjson_t request, cjson_t result)    xfree_array (signing_patterns);    xfree (keystring);    release_onetime_context (keylist_ctx); +  /* Reset sender in case the context is reused */ +  gpgme_set_sender (ctx, NULL);    gpgme_key_unref (key);    gpgme_signers_clear (ctx);    release_context (ctx);  | 
