diff options
Diffstat (limited to '')
| -rw-r--r-- | NEWS | 8 | ||||
| -rw-r--r-- | doc/ChangeLog | 6 | ||||
| -rw-r--r-- | doc/gpgme.texi | 8 | ||||
| -rw-r--r-- | gpgme/ChangeLog | 14 | ||||
| -rw-r--r-- | gpgme/decrypt.c | 8 | ||||
| -rw-r--r-- | gpgme/gpgme.h | 10 | ||||
| -rw-r--r-- | gpgme/op-support.c | 46 | ||||
| -rw-r--r-- | gpgme/ops.h | 5 | ||||
| -rw-r--r-- | gpgme/verify.c | 8 | 
9 files changed, 112 insertions, 1 deletions
@@ -16,6 +16,11 @@ Noteworthy changes in version 1.1.0 (unreleased)   * Information about the recipients of an encrypted text is now     available at decryption time. + * New status GPGME_STATUS_PLAINTEXT.  This is analyzed by the decrypt +   and verify handlers, the information about the plaintext filename, +   if available is made available in the new field plaintext_filename +   of the respective result structure. +  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  gpgme_set_engine_info		NEW  gpgme_ctx_get_engine_info	NEW @@ -31,6 +36,9 @@ GPGME_STATUS_SC_OP_FAILURE	NEW  GPGME_STATUS_SC_OP_SUCCESS	NEW  GPGME_STATUS_CARDCTRL		NEW  GPGME_STATUS_BACKUP_KEY_CREATED	NEW +gpgme_decrypt_result_t		EXTENDED: New field plaintext_filename. +gpgme_verify_result_t		EXTENDED: New field plaintext_filename. +GPGME_STATUS_PLAINTEXT		NEW  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/ChangeLog b/doc/ChangeLog index 1525f8bf..f8995c88 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,9 @@ +2005-07-27  Marcus Brinkmann  <[email protected]> + +	* gpgme.texi (Decrypt): Add plaintext_filename to +	gpgme_decrypt_result_t. +	(Verify): Likewise for gpgme_verify_result_t. +  2005-06-03  Marcus Brinkmann  <[email protected]>  	* gpgme.texi (Verify): Add information about new fields in diff --git a/doc/gpgme.texi b/doc/gpgme.texi index d5c14de4..61d56b71 100644 --- a/doc/gpgme.texi +++ b/doc/gpgme.texi @@ -3668,6 +3668,10 @@ This is true if the key was not used according to its policy.  @item gpgme_recipient_t recipient  This is a linked list of recipients to which this message was encrypted. + +@item char *plaintext_filename +This is the filename of the original plaintext message file if it is +known, otherwise this is a null pointer.  @end table  @end deftp @@ -3880,6 +3884,10 @@ a @code{NULL} pointer.  The structure contains the following member:  @item gpgme_signature_t signatures  A linked list with information about all signatures for which a  verification was attempted. + +@item char *plaintext_filename +This is the filename of the original plaintext message file if it is +known, otherwise this is a null pointer.  @end table  @end deftp diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index b59c04fd..bd25f51b 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,17 @@ +2005-07-27  Marcus Brinkmann  <[email protected]> + +	* gpgme.h (gpgme_status_code_t): Add GPGME_STATUS_PLAINTEXT. +	(struct _gpgme_op_decrypt_result): New member plaintext_filename. +	(struct _gpgme_op_verify_result): Likewise. +	* ops.h (_gpgme_parse_plaintext): Add prototype. +	* op-support.c (_gpgme_parse_plaintext): New function. +	* decrypt.c (release_op_data): Release +	OPD->result.plaintext_filename. +	(_gpgme_decrypt_status_handler): Handle GPGME_STATUS_PLAINTEXT. +	* verify.c (release_op_data): Release +	OPD->result.plaintext_filename. +	(_gpgme_verify_status_handler): Handle GPGME_STATUS_PLAINTEXT. +  2005-07-26  Marcus Brinkmann  <[email protected]>  	* keylist.c (gpgme_get_key): Allow key IDs. diff --git a/gpgme/decrypt.c b/gpgme/decrypt.c index 0f805495..91e6c305 100644 --- a/gpgme/decrypt.c +++ b/gpgme/decrypt.c @@ -53,6 +53,9 @@ release_op_data (void *hook)    if (opd->result.unsupported_algorithm)      free (opd->result.unsupported_algorithm); + +  if (opd->result.plaintext_filename) +    free (opd->result.plaintext_filename);  } @@ -238,6 +241,11 @@ _gpgme_decrypt_status_handler (void *priv, gpgme_status_code_t code,        }        break; +    case GPGME_STATUS_PLAINTEXT: +      err = _gpgme_parse_plaintext (args, &opd->result.plaintext_filename); +      if (err) +	return err; +            default:        break;      } diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h index 18bd9830..08930962 100644 --- a/gpgme/gpgme.h +++ b/gpgme/gpgme.h @@ -403,7 +403,9 @@ typedef enum      GPGME_STATUS_SC_OP_FAILURE,      GPGME_STATUS_SC_OP_SUCCESS,      GPGME_STATUS_CARDCTRL, -    GPGME_STATUS_BACKUP_KEY_CREATED +    GPGME_STATUS_BACKUP_KEY_CREATED, + +    GPGME_STATUS_PLAINTEXT    }  gpgme_status_code_t; @@ -1110,6 +1112,9 @@ struct _gpgme_op_decrypt_result    int _unused : 31;    gpgme_recipient_t recipients; + +  /* The original filename of the plaintext message, if available.  */ +  char *plaintext_filename;  };  typedef struct _gpgme_op_decrypt_result *gpgme_decrypt_result_t; @@ -1259,6 +1264,9 @@ typedef struct _gpgme_signature *gpgme_signature_t;  struct _gpgme_op_verify_result  {    gpgme_signature_t signatures; + +  /* The original filename of the plaintext message, if available.  */ +  char *plaintext_filename;  };  typedef struct _gpgme_op_verify_result *gpgme_verify_result_t; diff --git a/gpgme/op-support.c b/gpgme/op-support.c index ba220a3b..68ff77d0 100644 --- a/gpgme/op-support.c +++ b/gpgme/op-support.c @@ -123,6 +123,8 @@ _gpgme_op_reset (gpgme_ctx_t ctx, int type)  } +/* Parse the INV_RECP status line in ARGS and return the result in +   KEY.  */  gpgme_error_t  _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)  { @@ -209,3 +211,47 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key)    *key = inv_key;    return 0;  } + + +/* Parse the PLAINTEXT status line in ARGS and return the result in +   FILENAMEP.  */ +gpgme_error_t +_gpgme_parse_plaintext (char *args, char **filenamep) +{ +  char *tail; + +  while (*args == ' ') +    args++; +  if (*args == '\0') +    return 0; + +  /* First argument is file type.  */ +  while (*args != ' ' && *args != '\0') +    args++; +  while (*args == ' ') +    args++; +  if (*args == '\0') +    return 0; + +  /* Second argument is the timestamp.  */ +  while (*args != ' ' && *args != '\0') +    args++; +  while (*args == ' ') +    args++; +  if (*args == '\0') +    return 0; + +  tail = args; +  while (*tail != ' ' && *tail != '\0') +    tail++; +  *tail = '\0'; +  if (filenamep && *args != '\0') +    { +      char *filename = strdup (args); +      if (!filename) +	return gpg_error_from_errno (errno); + +      *filenamep = filename; +    } +  return 0; +} diff --git a/gpgme/ops.h b/gpgme/ops.h index 3b4c2cde..1877caab 100644 --- a/gpgme/ops.h +++ b/gpgme/ops.h @@ -54,6 +54,11 @@ gpgme_error_t _gpgme_op_reset (gpgme_ctx_t ctx, int synchronous);     KEY.  */  gpgme_error_t _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key); +/* Parse the PLAINTEXT status line in ARGS and return the result in +   FILENAMEP.  */ +gpgme_error_t _gpgme_parse_plaintext (char *args, char **filenamep); + +  /* From verify.c.  */  gpgme_error_t _gpgme_op_verify_init_result (gpgme_ctx_t ctx); diff --git a/gpgme/verify.c b/gpgme/verify.c index b7fd147d..52f700b2 100644 --- a/gpgme/verify.c +++ b/gpgme/verify.c @@ -70,6 +70,9 @@ release_op_data (void *hook)        free (sig);        sig = next;      } + +  if (opd->result.plaintext_filename) +    free (opd->result.plaintext_filename);  } @@ -695,6 +698,11 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)        opd->only_newsig_seen = 0;        break; +    case GPGME_STATUS_PLAINTEXT: +      err = _gpgme_parse_plaintext (args, &opd->result.plaintext_filename); +      if (err) +	return err; +      default:        break;      }  | 
