diff options
Diffstat (limited to 'gpgme/gpgme.h')
-rw-r--r-- | gpgme/gpgme.h | 86 |
1 files changed, 82 insertions, 4 deletions
diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h index 7334bfce..9fa2af01 100644 --- a/gpgme/gpgme.h +++ b/gpgme/gpgme.h @@ -138,6 +138,41 @@ typedef enum } GpgmeDataEncoding; + +/* Public key algorithms from libgcrypt. */ +typedef enum + { + GPGME_PK_RSA = 1, + GPGME_PK_RSA_E = 2, + GPGME_PK_RSA_S = 3, + GPGME_PK_ELG_E = 16, + GPGME_PK_DSA = 17, + GPGME_PK_ELG = 20 + } +GpgmePubKeyAlgo; + + +/* Hash algorithms from libgcrypt. */ +typedef enum + { + GPGME_MD_NONE = 0, + GPGME_MD_MD5 = 1, + GPGME_MD_SHA1 = 2, + GPGME_MD_RMD160 = 3, + GPGME_MD_MD2 = 5, + GPGME_MD_TIGER = 6, /* TIGER/192. */ + GPGME_MD_HAVAL = 7, /* HAVAL, 5 pass, 160 bit. */ + GPGME_MD_SHA256 = 8, + GPGME_MD_SHA384 = 9, + GPGME_MD_SHA512 = 10, + GPGME_MD_MD4 = 301, + GPGME_MD_CRC32 = 302, + GPGME_MD_CRC32_RFC1510 = 303, + GPGME_MD_CRC24_RFC2440 = 304 + } +GpgmeHashAlgo; + + /* The possible signature stati. */ typedef enum { @@ -426,6 +461,16 @@ void gpgme_set_progress_cb (GpgmeCtx c, GpgmeProgressCb cb, void *hook_value); void gpgme_get_progress_cb (GpgmeCtx ctx, GpgmeProgressCb *cb, void **hook_value); + +/* Return a statically allocated string with the name of the public + key algorithm ALGO, or NULL if that name is not known. */ +const char *gpgme_pubkey_algo_name (GpgmePubKeyAlgo algo); + +/* Return a statically allocated string with the name of the hash + algorithm ALGO, or NULL if that name is not known. */ +const char *gpgme_hash_algo_name (GpgmeHashAlgo algo); + + /* Delete all signers from CTX. */ void gpgme_signers_clear (GpgmeCtx ctx); @@ -710,10 +755,18 @@ const char *gpgme_trust_item_get_string_attr (GpgmeTrustItem item, 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 Operations. */ +struct _gpgme_invalid_user_id +{ + struct _gpgme_invalid_user_id *next; + char *id; + GpgmeError reason; +}; +typedef struct _gpgme_invalid_user_id *GpgmeInvalidUserID; -/* 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, @@ -747,8 +800,32 @@ GpgmeError gpgme_op_decrypt_verify_start (GpgmeCtx ctx, GpgmeError gpgme_op_decrypt_verify (GpgmeCtx ctx, GpgmeData cipher, GpgmeData plain); -/* Sign the plaintext PLAIN and store the signature in SIG. Only - detached signatures are supported for now. */ + +/* Signing. */ +struct _gpgme_new_signature +{ + struct _gpgme_new_signature *next; + GpgmeSigMode type; + GpgmePubKeyAlgo pubkey_algo; + GpgmeHashAlgo hash_algo; + unsigned long class; + long int created; + char *fpr; +}; +typedef struct _gpgme_new_signature *GpgmeNewSignature; + +struct _gpgme_op_sign_result +{ + /* The list of invalid signers. */ + GpgmeInvalidUserID invalid_signers; + GpgmeNewSignature signatures; +}; +typedef struct _gpgme_op_sign_result *GpgmeSignResult; + +/* Retrieve a pointer to the result of the signing operation. */ +GpgmeSignResult gpgme_op_sign_result (GpgmeCtx ctx); + +/* Sign the plaintext PLAIN and store the signature in SIG. */ GpgmeError gpgme_op_sign_start (GpgmeCtx ctx, GpgmeData plain, GpgmeData sig, GpgmeSigMode mode); @@ -756,6 +833,7 @@ 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 signed_text, GpgmeData plaintext); |