diff options
Diffstat (limited to 'gpgme/gpgme.h')
| -rw-r--r-- | gpgme/gpgme.h | 637 | 
1 files changed, 421 insertions, 216 deletions
| diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h index d729ec74..8823a7bb 100644 --- a/gpgme/gpgme.h +++ b/gpgme/gpgme.h @@ -22,7 +22,7 @@  #ifndef GPGME_H  #define GPGME_H -#include <stdio.h> /* for FILE * */ +#include <stdio.h> /* For FILE *.  */  #ifdef _MSC_VER    typedef long off_t;  #else @@ -37,287 +37,492 @@ extern "C" {  #endif -/* - * The version of this header should match the one of the library - * It should not be used by a program because gpgme_check_version(NULL) - * does return the same version.  The purpose of this macro is to - * let autoconf (using the AM_PATH_GPGME macro) check that this - * header matches the installed library. - * Warning: Do not edit the next line.  configure will do that for you! */ +/* The version of this header should match the one of the library.  Do +   not use this symbol in your application, use gpgme_check_version +   instead.  The purpose of this macro is to let autoconf (using the +   AM_PATH_GPGME macro) check that this header matches the installed +   library.  Warning: Do not edit the next line.  configure will do +   that for you!  */  #define GPGME_VERSION "0.3.0a-cvs" +/* The opaque data types used by GPGME.  */ +/* The context holds some global state and configration options as +   well as the results of a crypto operation.  */  struct gpgme_context_s;  typedef struct gpgme_context_s *GpgmeCtx; +/* The data object used by GPGME to exchange arbitrary data.  */  struct gpgme_data_s;  typedef struct gpgme_data_s *GpgmeData; +/* A list of recipients to be used in an encryption operation.  */  struct gpgme_recipients_s;  typedef struct gpgme_recipients_s *GpgmeRecipients; +/* A key from the keyring.  */  struct gpgme_key_s;  typedef struct gpgme_key_s *GpgmeKey; +/* A trust item.  */  struct gpgme_trust_item_s;  typedef struct gpgme_trust_item_s *GpgmeTrustItem; -typedef enum { -    GPGME_EOF = -1, -    GPGME_No_Error = 0, -    GPGME_General_Error = 1, -    GPGME_Out_Of_Core = 2, -    GPGME_Invalid_Value = 3, -    GPGME_Busy = 4, -    GPGME_No_Request = 5, -    GPGME_Exec_Error = 6, -    GPGME_Too_Many_Procs = 7, -    GPGME_Pipe_Error = 8, -    GPGME_No_Recipients = 9, -    GPGME_No_Data = 10, -    GPGME_Conflict = 11, -    GPGME_Not_Implemented = 12, -    GPGME_Read_Error = 13, -    GPGME_Write_Error = 14, -    GPGME_Invalid_Type = 15, -    GPGME_Invalid_Mode = 16, -    GPGME_File_Error = 17,  /* errno is set in this case */ +/* The error numbers used by GPGME.  */ +typedef enum +  { +    GPGME_EOF               = -1, +    GPGME_No_Error          = 0, +    GPGME_General_Error     = 1, +    GPGME_Out_Of_Core       = 2, +    GPGME_Invalid_Value     = 3, +    GPGME_Busy              = 4, +    GPGME_No_Request        = 5, +    GPGME_Exec_Error        = 6, +    GPGME_Too_Many_Procs    = 7, +    GPGME_Pipe_Error        = 8, +    GPGME_No_Recipients     = 9, +    GPGME_No_Data           = 10, +    GPGME_Conflict          = 11, +    GPGME_Not_Implemented   = 12, +    GPGME_Read_Error        = 13, +    GPGME_Write_Error       = 14, +    GPGME_Invalid_Type      = 15, +    GPGME_Invalid_Mode      = 16, +    GPGME_File_Error        = 17,  /* errno is set in this case.  */      GPGME_Decryption_Failed = 18, -    GPGME_No_Passphrase = 19, -    GPGME_Canceled = 20, -    GPGME_Invalid_Key = 21, -    GPGME_Invalid_Engine = 22 -} GpgmeError; - -typedef enum { +    GPGME_No_Passphrase     = 19, +    GPGME_Canceled          = 20, +    GPGME_Invalid_Key       = 21, +    GPGME_Invalid_Engine    = 22 +  } +GpgmeError; + +/* The possible types of GpgmeData objects.  */ +typedef enum +  {      GPGME_DATA_TYPE_NONE = 0,      GPGME_DATA_TYPE_MEM  = 1,      GPGME_DATA_TYPE_FD   = 2,      GPGME_DATA_TYPE_FILE = 3,      GPGME_DATA_TYPE_CB   = 4 -} GpgmeDataType; - -typedef enum { -    GPGME_SIG_STAT_NONE = 0, -    GPGME_SIG_STAT_GOOD = 1, -    GPGME_SIG_STAT_BAD  = 2, +  } +GpgmeDataType; + +/* The possible signature stati.  */ +typedef enum +  { +    GPGME_SIG_STAT_NONE  = 0, +    GPGME_SIG_STAT_GOOD  = 1, +    GPGME_SIG_STAT_BAD   = 2,      GPGME_SIG_STAT_NOKEY = 3,      GPGME_SIG_STAT_NOSIG = 4,      GPGME_SIG_STAT_ERROR = 5,      GPGME_SIG_STAT_DIFF  = 6 -} GpgmeSigStat; +  } +GpgmeSigStat; -typedef enum { +/* The available signature modes.  */ +typedef enum +  {      GPGME_SIG_MODE_NORMAL = 0,      GPGME_SIG_MODE_DETACH = 1, -    GPGME_SIG_MODE_CLEAR = 2 -} GpgmeSigMode; - -typedef enum { -    GPGME_ATTR_KEYID   = 1, -    GPGME_ATTR_FPR     = 2, -    GPGME_ATTR_ALGO    = 3, -    GPGME_ATTR_LEN     = 4, -    GPGME_ATTR_CREATED = 5, -    GPGME_ATTR_EXPIRE  = 6, -    GPGME_ATTR_OTRUST  = 7, -    GPGME_ATTR_USERID  = 8, -    GPGME_ATTR_NAME    = 9, -    GPGME_ATTR_EMAIL   = 10, -    GPGME_ATTR_COMMENT = 11, -    GPGME_ATTR_VALIDITY= 12, -    GPGME_ATTR_LEVEL   = 13, -    GPGME_ATTR_TYPE    = 14, -    GPGME_ATTR_IS_SECRET= 15, -    GPGME_ATTR_KEY_REVOKED = 16, -    GPGME_ATTR_KEY_INVALID = 17, -    GPGME_ATTR_UID_REVOKED = 18, -    GPGME_ATTR_UID_INVALID = 19, -    GPGME_ATTR_KEY_CAPS    = 20, -    GPGME_ATTR_CAN_ENCRYPT = 21, -    GPGME_ATTR_CAN_SIGN    = 22, -    GPGME_ATTR_CAN_CERTIFY = 23, -    GPGME_ATTR_KEY_EXPIRED = 24, -    GPGME_ATTR_KEY_DISABLED= 25 -} GpgmeAttr; - -typedef enum { -    GPGME_VALIDITY_UNKNOWN = 0, +    GPGME_SIG_MODE_CLEAR  = 2 +  } +GpgmeSigMode; + +/* The available key attributes.  */ +typedef enum +  { +    GPGME_ATTR_KEYID        = 1, +    GPGME_ATTR_FPR          = 2, +    GPGME_ATTR_ALGO         = 3, +    GPGME_ATTR_LEN          = 4, +    GPGME_ATTR_CREATED      = 5, +    GPGME_ATTR_EXPIRE       = 6, +    GPGME_ATTR_OTRUST       = 7, +    GPGME_ATTR_USERID       = 8, +    GPGME_ATTR_NAME         = 9, +    GPGME_ATTR_EMAIL        = 10, +    GPGME_ATTR_COMMENT      = 11, +    GPGME_ATTR_VALIDITY     = 12, +    GPGME_ATTR_LEVEL        = 13, +    GPGME_ATTR_TYPE         = 14, +    GPGME_ATTR_IS_SECRET    = 15, +    GPGME_ATTR_KEY_REVOKED  = 16, +    GPGME_ATTR_KEY_INVALID  = 17, +    GPGME_ATTR_UID_REVOKED  = 18, +    GPGME_ATTR_UID_INVALID  = 19, +    GPGME_ATTR_KEY_CAPS     = 20, +    GPGME_ATTR_CAN_ENCRYPT  = 21, +    GPGME_ATTR_CAN_SIGN     = 22, +    GPGME_ATTR_CAN_CERTIFY  = 23, +    GPGME_ATTR_KEY_EXPIRED  = 24, +    GPGME_ATTR_KEY_DISABLED = 25 +  } +GpgmeAttr; + +/* The available validities for a trust item or key.  */ +typedef enum +  { +    GPGME_VALIDITY_UNKNOWN   = 0,      GPGME_VALIDITY_UNDEFINED = 1, -    GPGME_VALIDITY_NEVER = 2, -    GPGME_VALIDITY_MARGINAL = 3, -    GPGME_VALIDITY_FULL = 4, -    GPGME_VALIDITY_ULTIMATE = 5 -} GpgmeValidity; - - -typedef enum { -  GPGME_PROTOCOL_OpenPGP = 0, /* default */ -  GPGME_PROTOCOL_CMS = 1, -  GPGME_PROTOCOL_AUTO = 2 -} GpgmeProtocol; - -typedef const char *(*GpgmePassphraseCb)(void*, -                                         const char *desc, void **r_hd); -typedef void (*GpgmeProgressCb)(void *opaque, -                                const char *what,  -                                int type, int current, int total ); - -/* Context management */ -GpgmeError gpgme_new (GpgmeCtx *r_ctx); -void       gpgme_release (GpgmeCtx c); -void       gpgme_cancel (GpgmeCtx c); -GpgmeCtx   gpgme_wait (GpgmeCtx c, int hang); - -char *gpgme_get_notation (GpgmeCtx c); -GpgmeError gpgme_set_protocol (GpgmeCtx c, GpgmeProtocol prot); -void gpgme_set_armor (GpgmeCtx c, int yes); -int  gpgme_get_armor (GpgmeCtx c); -void gpgme_set_textmode (GpgmeCtx c, int yes); -int  gpgme_get_textmode (GpgmeCtx c); -void gpgme_set_keylist_mode ( GpgmeCtx c, int mode ); -void gpgme_set_passphrase_cb (GpgmeCtx c, -                              GpgmePassphraseCb cb, void *cb_value); -void gpgme_set_progress_cb (GpgmeCtx c, GpgmeProgressCb cb, void *cb_value); - -void       gpgme_signers_clear (GpgmeCtx c); -GpgmeError gpgme_signers_add (GpgmeCtx c, const GpgmeKey key); -GpgmeKey   gpgme_signers_enum (const GpgmeCtx c, int seq); - -const char *gpgme_get_sig_status (GpgmeCtx c, int idx, -                                  GpgmeSigStat *r_stat, time_t *r_created ); -GpgmeError gpgme_get_sig_key (GpgmeCtx c, int idx, GpgmeKey *r_key); -char *gpgme_get_op_info (GpgmeCtx c, int reserved); - - -/* Functions to handle recipients */ -GpgmeError   gpgme_recipients_new (GpgmeRecipients *r_rset); -void         gpgme_recipients_release ( GpgmeRecipients rset); -GpgmeError   gpgme_recipients_add_name (GpgmeRecipients rset, -                                        const char *name); -GpgmeError   gpgme_recipients_add_name_with_validity (GpgmeRecipients rset, -                                                      const char *name, -                                                      GpgmeValidity val ); -unsigned int gpgme_recipients_count ( const GpgmeRecipients rset ); -GpgmeError gpgme_recipients_enum_open (const GpgmeRecipients rset,void **ctx); -const char *gpgme_recipients_enum_read (const GpgmeRecipients rset,void **ctx); -GpgmeError gpgme_recipients_enum_close (const GpgmeRecipients rset,void **ctx); - - -/* Functions to handle data sources */ -GpgmeError    gpgme_data_new ( GpgmeData *r_dh ); -GpgmeError    gpgme_data_new_from_mem ( GpgmeData *r_dh, -                                        const char *buffer, size_t size, -                                        int copy ); -GpgmeError    gpgme_data_new_with_read_cb ( GpgmeData *r_dh, -                              int (*read_cb)(void*,char *,size_t,size_t*), -                              void *read_cb_value ); - -GpgmeError    gpgme_data_new_from_file ( GpgmeData *r_dh, -                                         const char *fname, -                                         int copy ); +    GPGME_VALIDITY_NEVER     = 2, +    GPGME_VALIDITY_MARGINAL  = 3, +    GPGME_VALIDITY_FULL      = 4, +    GPGME_VALIDITY_ULTIMATE  = 5 +  } +GpgmeValidity; + +/* The available protocols.  */ +typedef enum +  { +    GPGME_PROTOCOL_OpenPGP = 0,  /* The default mode.  */ +    GPGME_PROTOCOL_CMS     = 1, +    GPGME_PROTOCOL_AUTO    = 2 +  } +GpgmeProtocol; + + +/* Types for callback functions.  */ + +/* Request a passphrase from the user.  */ +typedef const char *(*GpgmePassphraseCb) (void *hook, const char *desc, +					  void **r_hd); + +/* Inform the user about progress made.  */ +typedef void (*GpgmeProgressCb) (void *opaque, const char *what, +				 int type, int current, int total); + + +/* Context management functions.  */ + +/* Create a new context and return it in CTX.  */ +GpgmeError gpgme_new (GpgmeCtx *ctx); + +/* Release the context CTX.  */ +void gpgme_release (GpgmeCtx ctx); + +/* Retrieve more info about performed signature check.  */ +char *gpgme_get_notation (GpgmeCtx ctx); + +/* Set the protocol to be used by CTX to PROTO.  */ +GpgmeError gpgme_set_protocol (GpgmeCtx ctx, GpgmeProtocol proto); + +/* If YES is non-zero, enable armor mode in CTX, disable it otherwise.  */ +void gpgme_set_armor (GpgmeCtx ctx, int yes); + +/* Return non-zero if armor mode is set in CTX.  */ +int gpgme_get_armor (GpgmeCtx ctx); + +/* If YES is non-zero, enable text mode in CTX, disable it otherwise.  */ +void gpgme_set_textmode (GpgmeCtx ctx, int yes); + +/* Return non-zero if text mode is set in CTX.  */ +int gpgme_get_textmode (GpgmeCtx ctx); + +/* Set keylist mode in CTX to MODE.  */ +void gpgme_set_keylist_mode (GpgmeCtx ctx, int mode); + +/* Set the passphrase callback function in CTX to CB.  HOOK_VALUE is +   passed as first argument to the passphrase callback function.  */ +void gpgme_set_passphrase_cb (GpgmeCtx ctx, +                              GpgmePassphraseCb cb, void *hook_value); + +/* Set the progress callback function in CTX to CB.  HOOK_VALUE is +   passed as first argument to the progress callback function.  */ +void gpgme_set_progress_cb (GpgmeCtx c, GpgmeProgressCb cb, void *hook_value); + +/* Delete all signers from CTX.  */ +void gpgme_signers_clear (GpgmeCtx ctx); + +/* Add KEY to list of signers in CTX.  */ +GpgmeError gpgme_signers_add (GpgmeCtx ctx, const GpgmeKey key); + +/* Return the SEQth signer's key in CTX.  */ +GpgmeKey gpgme_signers_enum (const GpgmeCtx ctx, int seq); + +/* Retrieve the signature status of signature IDX in CTX after a +   successful verify operation in R_STAT (if non-null).  The creation +   time stamp of the signature is returned in R_CREATED (if non-null). +   The function returns a string containing the fingerprint.  */ +const char *gpgme_get_sig_status (GpgmeCtx ctx, int idx, +                                  GpgmeSigStat *r_stat, time_t *r_created); + +/* Get the key used to create signature IDX in CTX and return it in +   R_KEY.  */ +GpgmeError gpgme_get_sig_key (GpgmeCtx ctx, int idx, GpgmeKey *r_key); + +/* Return a string with more info about the last crypto operating in CTX. +   RESERVED should be zero.  The user has to free the string.  */ +char *gpgme_get_op_info (GpgmeCtx ctx, int reserved); + + +/* Run control.  */ + +/* Cancel a pending operation in CTX.  */ +void       gpgme_cancel (GpgmeCtx ctx); + +/* Process the pending operation and, if HANG is non-zero, wait for +   the pending operation to finish.  */ +GpgmeCtx gpgme_wait (GpgmeCtx ctx, int hang); + + +/* Functions to handle recipients.  */ + +/* Create a new recipients set and return it in R_RSET.  */ +GpgmeError gpgme_recipients_new (GpgmeRecipients *r_rset); + +/* Release the recipients set RSET.  */ +void gpgme_recipients_release (GpgmeRecipients rset); + +/* Add NAME to the recipients set RSET.  */ +GpgmeError gpgme_recipients_add_name (GpgmeRecipients rset, const char *name); + +/* Add NAME with validity AL to the recipients set RSET.  */ +GpgmeError gpgme_recipients_add_name_with_validity (GpgmeRecipients rset, +                                                    const char *name, +						    GpgmeValidity val); + +/* Return the number of recipients in RSET.  */ +unsigned int gpgme_recipients_count (const GpgmeRecipients rset); + +/* Create a new enumeration handle for the recipients set RSET and +   return it in ITER.  */ +GpgmeError gpgme_recipients_enum_open (const GpgmeRecipients rset, +				       void **iter); + +/* Return the next recipient from the recipient set RSET in the +   enumerator ITER.  */ +const char *gpgme_recipients_enum_read (const GpgmeRecipients rset, +					void **iter); + +/* Destroy the enumerator ITER for the recipient set RSET.  */ +GpgmeError gpgme_recipients_enum_close (const GpgmeRecipients rset, +					void **iter); + + +/* Functions to handle data objects.  */ + +/* Create a new data buffer and return it in R_DH.  */ +GpgmeError gpgme_data_new (GpgmeData *r_dh); + +/* Create a new data buffer filled with SIZE bytes starting from +   BUFFER.  If COPY is zero, copying is delayed until necessary, and +   the data is taken from the original location when needed.  */ +GpgmeError gpgme_data_new_from_mem (GpgmeData *r_dh, +				    const char *buffer, size_t size, +				    int copy); + +/* Create a new data buffer which retrieves the data from the callback +   function READ_CB.  */ +GpgmeError gpgme_data_new_with_read_cb (GpgmeData *r_dh, +					int (*read_cb) (void*,char *,size_t,size_t*), +					void *read_cb_value); + +/* Create a new data buffer filled with the content of file FNAME. +   COPY must be non-zero (delayed reads are not supported yet).  */ +GpgmeError gpgme_data_new_from_file (GpgmeData *r_dh, +				     const char *fname, +				     int copy); + +/* Create a new data buffer filled with LENGTH bytes starting from +   OFFSET within the file FNAME or stream FP (exactly one must be +   non-zero).  */  GpgmeError gpgme_data_new_from_filepart (GpgmeData *r_dh,  					 const char *fname, FILE *fp,  					 off_t offset, size_t length); -void          gpgme_data_release ( GpgmeData dh ); -char *        gpgme_data_release_and_get_mem ( GpgmeData dh, size_t *r_len ); -GpgmeDataType gpgme_data_get_type ( GpgmeData dh ); -GpgmeError    gpgme_data_rewind ( GpgmeData dh ); -GpgmeError    gpgme_data_read ( GpgmeData dh, -                                char *buffer, size_t length, size_t *nread ); -GpgmeError    gpgme_data_write ( GpgmeData dh, -                                 const char *buffer, size_t length ); +/* Destroy the data buffer DH.  */ +void gpgme_data_release (GpgmeData dh); + +/* Destroy the data buffer DH and return a pointer to its content. +   The memory has be to released with free by the user.  It's size is +   returned in R_LEN.  */ +char *gpgme_data_release_and_get_mem (GpgmeData dh, size_t *r_len); + +/* Return the type of the data buffer DH.  */ +GpgmeDataType gpgme_data_get_type (GpgmeData dh); + +/* Reset the read pointer in DH.  */ +GpgmeError gpgme_data_rewind (GpgmeData dh); + +/* Read LENGTH bytes from the data object DH and store them in the +   memory starting at BUFFER.  The number of bytes actually read is +   returned in NREAD.  */ +GpgmeError gpgme_data_read (GpgmeData dh, char *buffer, +			    size_t length, size_t *nread); + +/* Write LENGTH bytes starting from BUFFER into the data object DH.  */ +GpgmeError gpgme_data_write (GpgmeData dh, const char *buffer, size_t length); + + +/* Key and trust functions.  */ -/* Key and trust functions */ +/* Acquire a reference to KEY.  */  void gpgme_key_ref (GpgmeKey key); -void gpgme_key_unref (GpgmeKey key); -void gpgme_key_release ( GpgmeKey key ); -char *gpgme_key_get_as_xml ( GpgmeKey key ); -const char  *gpgme_key_get_string_attr ( GpgmeKey key, GpgmeAttr what, -                                         const void *reserved, int idx ); -unsigned long gpgme_key_get_ulong_attr ( GpgmeKey key, GpgmeAttr what, -                                         const void *reserved, int idx ); - -void gpgme_trust_item_release ( GpgmeTrustItem item ); -const char *gpgme_trust_item_get_string_attr ( GpgmeTrustItem item, -                                               GpgmeAttr what, -                                               const void *reserved, int idx ); -int gpgme_trust_item_get_int_attr ( GpgmeTrustItem item, GpgmeAttr what, -                                    const void *reserved, int idx ); - - - - -/* Basic GnuPG functions */ -GpgmeError gpgme_op_encrypt_start ( GpgmeCtx c, -                                    GpgmeRecipients recp, -                                    GpgmeData in, GpgmeData out ); -GpgmeError gpgme_op_decrypt_start ( GpgmeCtx c,  -                                    GpgmeData ciph, GpgmeData plain ); -GpgmeError gpgme_op_decrypt_verify_start (GpgmeCtx c,  -					  GpgmeData ciph, GpgmeData plain); -GpgmeError gpgme_op_sign_start ( GpgmeCtx c, -                                 GpgmeData in, GpgmeData out, -                                 GpgmeSigMode mode ); -GpgmeError gpgme_op_verify_start ( GpgmeCtx c, -                                   GpgmeData sig, GpgmeData text ); -GpgmeError gpgme_op_import_start ( GpgmeCtx c, GpgmeData keydata ); -GpgmeError gpgme_op_export_start ( GpgmeCtx c, GpgmeRecipients recp, -                                   GpgmeData keydata ); -GpgmeError gpgme_op_genkey_start ( GpgmeCtx c, const char *parms, -                                   GpgmeData pubkey, GpgmeData seckey ); -GpgmeError gpgme_op_delete_start ( GpgmeCtx c, const GpgmeKey key, -                                   int allow_secret ); +/* Release a reference to KEY.  If this was the last one the key is +   destroyed.  */ +void gpgme_key_unref (GpgmeKey key); +void gpgme_key_release (GpgmeKey key); + +/* Get the data from key KEY in a XML string, which has to be released +   with free by the user.  */ +char *gpgme_key_get_as_xml (GpgmeKey key); + +/* Return the value of the attribute WHAT of KEY, which has to be +   representable by a string.  IDX specifies a running index if the +   attribute appears more than once in the key.  */ +const char *gpgme_key_get_string_attr (GpgmeKey key, GpgmeAttr what, +				       const void *reserved, int idx); + +/* Return the value of the attribute WHAT of KEY, which has to be +   representable by an unsigned integer.  IDX specifies a running +   index if the attribute appears more than once in the key.  */ +unsigned long gpgme_key_get_ulong_attr (GpgmeKey key, GpgmeAttr what, +					const void *reserved, int idx); + +/* Release the trust item ITEM.  */ +void gpgme_trust_item_release (GpgmeTrustItem item); + +/* Return the value of the attribute WHAT of ITEM, which has to be +   representable by a string.  IDX specifies a running index if the +   attribute appears more than once in the key.  */ +const char *gpgme_trust_item_get_string_attr (GpgmeTrustItem item, +					      GpgmeAttr what, +					      const void *reserved, int idx); + +/* Return the value of the attribute WHAT of KEY, which has to be +   representable by an integer.  IDX specifies a running index if the +   attribute appears more than once in the key.  */ +int gpgme_trust_item_get_int_attr (GpgmeTrustItem item, GpgmeAttr what, +				   const void *reserved, int idx); + + +/* Crypto operation function.  */ + +/* Encrypt plaintext PLAIN within CTX for the recipients RECP and +   store the resulting ciphertext in CIPHER.  */ +GpgmeError gpgme_op_encrypt_start (GpgmeCtx ctx, +				   GpgmeRecipients recp, +				   GpgmeData plain, GpgmeData cipher); +GpgmeError gpgme_op_encrypt (GpgmeCtx ctx, +			     GpgmeRecipients recp, +			     GpgmeData plain, GpgmeData cipher); + +/* Decrypt ciphertext CIPHER within CTX and store the resulting +   plaintext in PLAIN.  */ +GpgmeError gpgme_op_decrypt_start (GpgmeCtx ctx, +				   GpgmeData cipher, GpgmeData plain); +GpgmeError gpgme_op_decrypt (GpgmeCtx ctx, +			     GpgmeData cipher, GpgmeData plain); + +/* Decrypt ciphertext CIPHER and make a signature verification within +   CTX and store the resulting plaintext in PLAIN.  */ +GpgmeError gpgme_op_decrypt_verify_start (GpgmeCtx ctx, +					  GpgmeData cipher, GpgmeData plain); +GpgmeError gpgme_op_decrypt_verify (GpgmeCtx ctx, +				    GpgmeData cipher, GpgmeData plain, +				    GpgmeSigStat *r_status); +/* Sign the plaintext PLAIN and store the signature in SIG.  Only +   detached signatures are supported for now.  */ +GpgmeError gpgme_op_sign_start (GpgmeCtx ctx, +				GpgmeData plain, GpgmeData sig, +				GpgmeSigMode mode); +GpgmeError gpgme_op_sign (GpgmeCtx ctx, +			  GpgmeData plain, GpgmeData sig, +			  GpgmeSigMode mode); + +/* Verify within CTX that SIG is a valid signature for TEXT.  */ +GpgmeError gpgme_op_verify_start (GpgmeCtx ctx, +				  GpgmeData sig, GpgmeData text); +GpgmeError gpgme_op_verify (GpgmeCtx ctx, +			    GpgmeData sig, GpgmeData text, +			    GpgmeSigStat *r_status); + +/* Import the key in KEYDATA into the keyring.  */ +GpgmeError gpgme_op_import_start (GpgmeCtx ctx, GpgmeData keydata); +GpgmeError gpgme_op_import (GpgmeCtx ctx, GpgmeData keydata); + +/* Export the keys listed in RECP into KEYDATA.  */ +GpgmeError gpgme_op_export_start (GpgmeCtx ctx, GpgmeRecipients recp, +				  GpgmeData keydata); +GpgmeError gpgme_op_export (GpgmeCtx ctx, GpgmeRecipients recp, +			    GpgmeData keydata); + +/* Generate a new keypair and add it to the keyring.  PUBKEY and +   SECKEY should be null for now.  PARMS specifies what keys should be +   generated.  */ +GpgmeError gpgme_op_genkey_start (GpgmeCtx ctx, const char *parms, +				  GpgmeData pubkey, GpgmeData seckey); +GpgmeError gpgme_op_genkey (GpgmeCtx ctx, const char *parms, +			    GpgmeData pubkey, GpgmeData seckey); + +/* Delete KEY from the keyring.  If ALLOW_SECRET is non-zero, secret +   keys are also deleted.  */ +GpgmeError gpgme_op_delete_start (GpgmeCtx ctx, const GpgmeKey key, +				  int allow_secret); +GpgmeError gpgme_op_delete (GpgmeCtx ctx, const GpgmeKey key, +			    int allow_secret);  /* Key management functions */ + +/* Start a keylist operation within CTX, searching for keys which +   match PATTERN.  If SECRET_ONLY is true, only secret keys are +   returned.  */  GpgmeError gpgme_op_keylist_start (GpgmeCtx ctx,  				   const char *pattern, int secret_only); + +/* Return the next key from the keylist in R_KEY.  */  GpgmeError gpgme_op_keylist_next (GpgmeCtx ctx, GpgmeKey *r_key); + +/* Terminate a pending keylist operation within CTX.  */  GpgmeError gpgme_op_keylist_end (GpgmeCtx ctx); + + +/* Start a trustlist operation within CTX, searching for trust items +   which match PATTERN.  */  GpgmeError gpgme_op_trustlist_start (GpgmeCtx ctx,  				     const char *pattern, int max_level); + +/* Return the next trust item from the trustlist in R_ITEM.  */  GpgmeError gpgme_op_trustlist_next (GpgmeCtx ctx, GpgmeTrustItem *r_item); +/* Terminate a pending trustlist operation within CTX.  */ +GpgmeError gpgme_op_trustlist_end (GpgmeCtx ctx); -/* Convenience functions for normal usage */ -GpgmeError gpgme_op_encrypt ( GpgmeCtx c, GpgmeRecipients recp, -                              GpgmeData in, GpgmeData out ); -GpgmeError gpgme_op_decrypt ( GpgmeCtx c,  -                              GpgmeData in, GpgmeData out ); -GpgmeError gpgme_op_decrypt_verify (GpgmeCtx c,  -				    GpgmeData in, GpgmeData out, -				    GpgmeSigStat *r_status); -GpgmeError gpgme_op_sign ( GpgmeCtx c, GpgmeData in, GpgmeData out, -                           GpgmeSigMode mode); -GpgmeError gpgme_op_verify ( GpgmeCtx c, GpgmeData sig, GpgmeData text, -                             GpgmeSigStat *r_status ); -GpgmeError gpgme_op_import ( GpgmeCtx c, GpgmeData keydata ); -GpgmeError gpgme_op_export ( GpgmeCtx c, GpgmeRecipients recp, -                             GpgmeData keydata ); -GpgmeError gpgme_op_genkey ( GpgmeCtx c, const char *parms, -                             GpgmeData pubkey, GpgmeData seckey ); -GpgmeError gpgme_op_delete ( GpgmeCtx c, const GpgmeKey key, int allow_secret); - - -/* miscellaneous functions */ +/* Various functions.  */ + +/* Check that the library fulfills the version requirement.  */  const char *gpgme_check_version (const char *req_version); + +/* Check that the backend engine is available.  DEPRECATED.  */  GpgmeError  gpgme_check_engine (void); + +/* Retrieve information about the backend engines.  */  const char *gpgme_get_engine_info (void); + +/* Return a string describing ERR.  */  const char *gpgme_strerror (GpgmeError err); +/* Register an idle function.  */  typedef void (*GpgmeIdleFunc)(void);  GpgmeIdleFunc gpgme_register_idle (GpgmeIdleFunc idle); +  /* Engine support functions.  */ + +/* Verify that the engine implementing PROTO is installed and +   available.  */  GpgmeError gpgme_engine_check_version (GpgmeProtocol proto); +  #ifdef __cplusplus  }  #endif | 
