Remove long deprecated functions.

* src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): Remove.  This was a
left-over from an experiment.
(gpgme_attr_t,_gpgme_attr_t) Remove.  Deprecated sinze 2003.
(gpgme_get_sig_ulong_attr): Ditto.
(gpgme_get_sig_string_attr): Ditto.
(gpgme_key_get_string_attr): Ditto.
(gpgme_key_get_ulong_attr): Ditto.
(gpgme_key_sig_get_string_attr): Ditto.
(gpgme_key_sig_get_ulong_attr): Ditto.
(gpgme_trust_item_get_string_attr): Ditto.
(gpgme_trust_item_get_int_attr): Ditto.
* src/gpgme.def: Remove them here too.
* src/libgpgme.vers: Ditto.
* src/trust-item.c: Remove corresponding implementations.
* src/verify.c: Ditto.
* src/key.c: Ditto.
This commit is contained in:
Werner Koch 2025-02-21 10:28:46 +01:00
parent baa174e5d6
commit d54d6eaa64
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
8 changed files with 18 additions and 879 deletions

18
NEWS
View File

@ -1,6 +1,24 @@
Noteworthy changes in version 2.0.0 (unreleased)
------------------------------------------------
* Removed types and functions deprecated since 2003 or which had only
experimental use.
* Interface changes relative to the 1.24 branch:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gpgme_attr_t REMOVED.
gpgme_get_sig_ulong_attr REMOVED.
gpgme_get_sig_string_attr REMOVED.
gpgme_key_get_string_attr REMOVED.
gpgme_key_get_ulong_attr REMOVED.
gpgme_key_sig_get_string_attr REMOVED.
gpgme_key_sig_get_ulong_attr REMOVED.
gpgme_trust_item_get_string_attr REMOVED.
gpgme_trust_item_get_int_attr REMOVED.
GPGME_EXPORT_MODE_NOUID REMOVED.
Noteworthy changes in version 1.24.1 (2024-12-04)
-------------------------------------------------

View File

@ -8335,154 +8335,6 @@ The function @code{gpgme_data_rewind} is equivalent to:
@end deftypefun
@deftp {Data type} gpgme_attr_t
The @code{gpgme_attr_t} type is used to specify a key or trust item
attribute. The following attributes are defined:
@table @code
@item GPGME_ATTR_KEYID
This is the key ID of a sub key. It is representable as a string.
@item GPGME_ATTR_FPR
This is the fingerprint of a sub key. It is representable as a
string.
@item GPGME_ATTR_ALGO
This is the crypto algorithm for which the sub key can be used. It
is representable as a string and as a number. The numbers correspond
to the @code{enum gcry_pk_algos} values in the gcrypt library.
@item GPGME_ATTR_LEN
This is the key length of a sub key. It is representable as a
number.
@item GPGME_ATTR_CREATED
This is the timestamp at creation time of a sub key. It is
representable as a number.
@item GPGME_ATTR_EXPIRE
This is the expiration time of a sub key. It is representable as a
number.
@item GPGME_ATTR_USERID
This is a user ID. There can be more than one user IDs in a
@var{gpgme_key_t} object. The first one (with index 0) is the primary
user ID. The user ID is representable as a number.
@item GPGME_ATTR_NAME
This is the name belonging to a user ID. It is representable as a string.
@item GPGME_ATTR_EMAIL
This is the email address belonging to a user ID. It is representable
as a string.
@item GPGME_ATTR_COMMENT
This is the comment belonging to a user ID. It is representable as a
string.
@item GPGME_ATTR_VALIDITY
This is the validity belonging to a user ID. It is representable as a
string and as a number. See below for a list of available validities.
@item GPGME_ATTR_UID_REVOKED
This specifies if a user ID is revoked. It is representable as a
number, and is @code{1} if the user ID is revoked, and @code{0}
otherwise.
@item GPGME_ATTR_UID_INVALID
This specifies if a user ID is invalid. It is representable as a
number, and is @code{1} if the user ID is invalid, and @code{0}
otherwise.
@item GPGME_ATTR_TYPE
This returns information about the type of key. For the string function
this will eother be "PGP" or "X.509". The integer function returns 0
for PGP and 1 for X.509.
@item GPGME_ATTR_IS_SECRET
This specifies if the key is a secret key. It is representable as a
number, and is @code{1} if the key is revoked, and @code{0} otherwise.
@item GPGME_ATTR_KEY_REVOKED
This specifies if a sub key is revoked. It is representable as a
number, and is @code{1} if the key is revoked, and @code{0} otherwise.
@item GPGME_ATTR_KEY_INVALID
This specifies if a sub key is invalid. It is representable as a
number, and is @code{1} if the key is invalid, and @code{0} otherwise.
@item GPGME_ATTR_KEY_EXPIRED
This specifies if a sub key is expired. It is representable as a
number, and is @code{1} if the key is expired, and @code{0} otherwise.
@item GPGME_ATTR_KEY_DISABLED
This specifies if a sub key is disabled. It is representable as a
number, and is @code{1} if the key is disabled, and @code{0} otherwise.
@item GPGME_ATTR_KEY_CAPS
This is a description of the capabilities of a sub key. It is
representable as a string. The string contains the letter ``e'' if
the key can be used for encryption, ``s'' if the key can be used for
signatures, and ``c'' if the key can be used for certifications.
@item GPGME_ATTR_CAN_ENCRYPT
This specifies if a sub key can be used for encryption. It is
representable as a number, and is @code{1} if the sub key can be used
for encryption, and @code{0} otherwise.
@item GPGME_ATTR_CAN_SIGN
This specifies if a sub key can be used to create data signatures. It
is representable as a number, and is @code{1} if the sub key can be
used for signatures, and @code{0} otherwise.
@item GPGME_ATTR_CAN_CERTIFY
This specifies if a sub key can be used to create key certificates.
It is representable as a number, and is @code{1} if the sub key can be
used for certifications, and @code{0} otherwise.
@item GPGME_ATTR_SERIAL
The X.509 issuer serial attribute of the key. It is representable as
a string.
@item GPGME_ATTR_ISSUE
The X.509 issuer name attribute of the key. It is representable as a
string.
@item GPGME_ATTR_CHAINID
The X.509 chain ID can be used to build the certification chain. It
is representable as a string.
@end table
@end deftp
@deftypefun {const char *} gpgme_key_get_string_attr (@w{gpgme_key_t @var{key}}, @w{gpgme_attr_t @var{what}}, @w{const void *@var{reserved}}, @w{int @var{idx}})
The function @code{gpgme_key_get_string_attr} returns the value of the
string-representable attribute @var{what} of key @var{key}. If the
attribute is an attribute of a sub key or an user ID, @var{idx}
specifies the sub key or user ID of which the attribute value is
returned. The argument @var{reserved} is reserved for later use and
should be @code{NULL}.
The string returned is only valid as long as the key is valid.
The function returns @code{0} if an attribute can't be returned as a
string, @var{key} is not a valid pointer, @var{idx} out of range,
or @var{reserved} not @code{NULL}.
@end deftypefun
@deftypefun {unsigned long} gpgme_key_get_ulong_attr (@w{gpgme_key_t @var{key}}, @w{gpgme_attr_t @var{what}}, @w{const void *@var{reserved}}, @w{int @var{idx}})
The function @code{gpgme_key_get_ulong_attr} returns the value of the
number-representable attribute @var{what} of key @var{key}. If the
attribute is an attribute of a sub key or an user ID, @var{idx}
specifies the sub key or user ID of which the attribute value is
returned. The argument @var{reserved} is reserved for later use and
should be @code{NULL}.
The function returns @code{0} if the attribute can't be returned as a
number, @var{key} is not a valid pointer, @var{idx} out of range, or
@var{reserved} not @code{NULL}.
@end deftypefun
@c
@c Key Signatures
@c
@ -8495,94 +8347,6 @@ key, you have to make sure that the key was listed with signatures
enabled. One convenient, but blocking, way to do this is to use the
function @code{gpgme_get_key}.
@deftp {Data type} gpgme_attr_t
The @code{gpgme_attr_t} type is used to specify a key signature
attribute. The following attributes are defined:
@table @code
@item GPGME_ATTR_KEYID
This is the key ID of the key which was used for the signature. It is
representable as a string.
@item GPGME_ATTR_ALGO
This is the crypto algorithm used to create the signature. It is
representable as a string and as a number. The numbers correspond to
the @code{enum gcry_pk_algos} values in the gcrypt library.
@item GPGME_ATTR_CREATED
This is the timestamp at creation time of the signature. It is
representable as a number.
@item GPGME_ATTR_EXPIRE
This is the expiration time of the signature. It is representable as
a number.
@item GPGME_ATTR_USERID
This is the user ID associated with the signing key. The user ID is
representable as a number.
@item GPGME_ATTR_NAME
This is the name belonging to a user ID. It is representable as a string.
@item GPGME_ATTR_EMAIL
This is the email address belonging to a user ID. It is representable
as a string.
@item GPGME_ATTR_COMMENT
This is the comment belonging to a user ID. It is representable as a
string.
@item GPGME_ATTR_KEY_REVOKED
This specifies if a key signature is a revocation signature. It is
representable as a number, and is @code{1} if the key is revoked, and
@code{0} otherwise.
@c @item GPGME_ATTR_KEY_EXPIRED
@c This specifies if a key signature is expired. It is representable as
@c a number, and is @code{1} if the key is revoked, and @code{0}
@c otherwise.
@c
@item GPGME_ATTR_SIG_CLASS
This specifies the signature class of a key signature. It is
representable as a number. The meaning is specific to the crypto
engine.
@item GPGME_ATTR_SIG_CLASS
This specifies the signature class of a key signature. It is
representable as a number. The meaning is specific to the crypto
engine.
@item GPGME_ATTR_SIG_STATUS
This is the same value as returned by @code{gpgme_get_sig_status}.
@end table
@end deftp
@deftypefun {const char *} gpgme_key_sig_get_string_attr (@w{gpgme_key_t @var{key}}, @w{int @var{uid_idx}}, @w{gpgme_attr_t @var{what}}, @w{const void *@var{reserved}}, @w{int @var{idx}})
The function @code{gpgme_key_sig_get_string_attr} returns the value of
the string-representable attribute @var{what} of the signature
@var{idx} on the user ID @var{uid_idx} in the key @var{key}. The
argument @var{reserved} is reserved for later use and should be
@code{NULL}.
The string returned is only valid as long as the key is valid.
The function returns @code{0} if an attribute can't be returned as a
string, @var{key} is not a valid pointer, @var{uid_idx} or @var{idx}
out of range, or @var{reserved} not @code{NULL}.
@end deftypefun
@deftypefun {unsigned long} gpgme_key_sig_get_ulong_attr (@w{gpgme_key_t @var{key}}, @w{int @var{uid_idx}}, @w{gpgme_attr_t @var{what}}, @w{const void *@var{reserved}}, @w{int @var{idx}})
The function @code{gpgme_key_sig_get_ulong_attr} returns the value of
the number-representable attribute @var{what} of the signature
@var{idx} on the user ID @var{uid_idx} in the key @var{key}. The
argument @var{reserved} is reserved for later use and should be
@code{NULL}.
The function returns @code{0} if an attribute can't be returned as a
string, @var{key} is not a valid pointer, @var{uid_idx} or @var{idx}
out of range, or @var{reserved} not @code{NULL}.
@end deftypefun
@deftp {Data type} {enum gpgme_sig_stat_t}
@tindex gpgme_sig_stat_t
@ -8689,105 +8453,6 @@ The function @code{gpgme_get_sig_status} is equivalent to:
@end example
@end deftypefun
@deftypefun {const char *} gpgme_get_sig_string_attr (@w{gpgme_ctx_t @var{ctx}}, @w{int @var{idx}}, @w{gpgme_attr_t @var{what}}, @w{int @var{whatidx}})
The function @code{gpgme_get_sig_string_attr} is equivalent to:
@example
gpgme_verify_result_t result;
gpgme_signature_t sig;
result = gpgme_op_verify_result (ctx);
sig = result->signatures;
while (sig && idx)
@{
sig = sig->next;
idx--;
@}
if (!sig || idx)
return NULL;
switch (what)
@{
case GPGME_ATTR_FPR:
return sig->fpr;
case GPGME_ATTR_ERRTOK:
if (whatidx == 1)
return sig->wrong_key_usage ? "Wrong_Key_Usage" : "";
else
return "";
default:
break;
@}
return NULL;
@end example
@end deftypefun
@deftypefun {const char *} gpgme_get_sig_ulong_attr (@w{gpgme_ctx_t @var{ctx}}, @w{int @var{idx}}, @w{gpgme_attr_t @var{what}}, @w{int @var{whatidx}})
The function @code{gpgme_get_sig_ulong_attr} is equivalent to:
@example
gpgme_verify_result_t result;
gpgme_signature_t sig;
result = gpgme_op_verify_result (ctx);
sig = result->signatures;
while (sig && idx)
@{
sig = sig->next;
idx--;
@}
if (!sig || idx)
return 0;
switch (what)
@{
case GPGME_ATTR_CREATED:
return sig->timestamp;
case GPGME_ATTR_EXPIRE:
return sig->exp_timestamp;
case GPGME_ATTR_VALIDITY:
return (unsigned long) sig->validity;
case GPGME_ATTR_SIG_STATUS:
switch (sig->status)
@{
case GPG_ERR_NO_ERROR:
return GPGME_SIG_STAT_GOOD;
case GPG_ERR_BAD_SIGNATURE:
return GPGME_SIG_STAT_BAD;
case GPG_ERR_NO_PUBKEY:
return GPGME_SIG_STAT_NOKEY;
case GPG_ERR_NO_DATA:
return GPGME_SIG_STAT_NOSIG;
case GPG_ERR_SIG_EXPIRED:
return GPGME_SIG_STAT_GOOD_EXP;
case GPG_ERR_KEY_EXPIRED:
return GPGME_SIG_STAT_GOOD_EXPKEY;
default:
return GPGME_SIG_STAT_ERROR;
@}
case GPGME_ATTR_SIG_SUMMARY:
return sig->summary;
default:
break;
@}
return 0;
@end example
@end deftypefun
@deftypefun {const char *} gpgme_get_sig_key (@w{gpgme_ctx_t @var{ctx}}, @w{int @var{idx}}, @w{gpgme_key_t *@var{r_key}})
The function @code{gpgme_get_sig_key} is equivalent to:
@ -8812,9 +8477,6 @@ The function @code{gpgme_get_sig_key} is equivalent to:
@end deftypefun
@include lesser.texi
@include gpl.texi

View File

@ -127,16 +127,8 @@ EXPORTS
gpgme_data_new_with_read_cb @98
gpgme_data_rewind @99
gpgme_get_sig_status @100
gpgme_get_sig_string_attr @101
gpgme_get_sig_ulong_attr @102
gpgme_get_sig_key @103
gpgme_key_get_string_attr @104
gpgme_key_get_ulong_attr @105
gpgme_key_sig_get_string_attr @106
gpgme_key_sig_get_ulong_attr @107
gpgme_op_import_ext @108
gpgme_trust_item_get_int_attr @109
gpgme_trust_item_get_string_attr @110
gpgme_trust_item_release @111
gpgme_set_engine_info @112
@ -289,4 +281,3 @@ EXPORTS
gpgme_op_setownertrust @213
gpgme_op_setownertrust_start @214
; END

View File

@ -2576,10 +2576,6 @@ char *gpgme_addrspec_from_uid (const char *uid);
* Deprecated types, constants and functions.
*/
/* This is a former experimental only features. The constant is
* provided to not break existing code in the compiler phase. */
#define GPGME_EXPORT_MODE_NOUID 128 /* Do not use! */
/* The possible stati for gpgme_op_edit. The use of that function and
* these status codes are deprecated in favor of gpgme_op_interact. */
@ -2737,45 +2733,6 @@ typedef enum
_gpgme_sig_stat_t;
typedef _gpgme_sig_stat_t gpgme_sig_stat_t _GPGME_DEPRECATED(0,4);
/* The available key and signature attributes. Deprecated, use the
* individual result structures instead. */
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,
GPGME_ATTR_SERIAL = 26,
GPGME_ATTR_ISSUER = 27,
GPGME_ATTR_CHAINID = 28,
GPGME_ATTR_SIG_STATUS = 29,
GPGME_ATTR_ERRTOK = 30,
GPGME_ATTR_SIG_SUMMARY = 31,
GPGME_ATTR_SIG_CLASS = 32
}
_gpgme_attr_t;
typedef _gpgme_attr_t gpgme_attr_t _GPGME_DEPRECATED(0,4);
/* Retrieve the signature status of signature IDX in CTX after a
* successful verify operation in R_STAT (if non-null). The creation
@ -2786,17 +2743,6 @@ const char *gpgme_get_sig_status (gpgme_ctx_t ctx, int idx,
_gpgme_sig_stat_t *r_stat,
time_t *r_created) _GPGME_DEPRECATED(0,4);
/* Retrieve certain attributes of a signature. IDX is the index
* number of the signature after a successful verify operation. WHAT
* is an attribute where GPGME_ATTR_EXPIRE is probably the most useful
* one. WHATIDX is to be passed as 0 for most attributes . */
unsigned long gpgme_get_sig_ulong_attr (gpgme_ctx_t c, int idx,
_gpgme_attr_t what, int whatidx)
_GPGME_DEPRECATED(0,4);
const char *gpgme_get_sig_string_attr (gpgme_ctx_t c, int idx,
_gpgme_attr_t what, int whatidx)
_GPGME_DEPRECATED(0,4);
/* Get the key used to create signature IDX in CTX and return it in
* R_KEY. */
@ -2812,40 +2758,6 @@ gpgme_error_t gpgme_data_new_with_read_cb (gpgme_data_t *r_dh,
void *read_cb_value)
_GPGME_DEPRECATED(0,4);
/* Return the value of the attribute WHAT of KEY, which has to be
* representable by a string. IDX specifies the sub key or user ID
* for attributes related to sub keys or user IDs. Deprecated, use
* key structure directly instead. */
const char *gpgme_key_get_string_attr (gpgme_key_t key, _gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
/* Return the value of the attribute WHAT of KEY, which has to be
* representable by an unsigned integer. IDX specifies the sub key or
* user ID for attributes related to sub keys or user IDs.
* Deprecated, use key structure directly instead. */
unsigned long gpgme_key_get_ulong_attr (gpgme_key_t key, _gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
/* Return the value of the attribute WHAT of a signature on user ID
* UID_IDX in KEY, which has to be representable by a string. IDX
* specifies the signature. Deprecated, use key structure directly
* instead. */
const char *gpgme_key_sig_get_string_attr (gpgme_key_t key, int uid_idx,
_gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
/* Return the value of the attribute WHAT of a signature on user ID
* UID_IDX in KEY, which has to be representable by an unsigned
* integer string. IDX specifies the signature. Deprecated, use key
* structure directly instead. */
unsigned long gpgme_key_sig_get_ulong_attr (gpgme_key_t key, int uid_idx,
_gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
gpgme_error_t gpgme_op_import_ext (gpgme_ctx_t ctx, gpgme_data_t keydata,
int *nr) _GPGME_DEPRECATED(0,4);
@ -2853,16 +2765,6 @@ gpgme_error_t gpgme_op_import_ext (gpgme_ctx_t ctx, gpgme_data_t keydata,
/* DO NOT USE. */
void gpgme_trust_item_release (gpgme_trust_item_t item) _GPGME_DEPRECATED(0,4);
/* DO NOT USE. */
const char *gpgme_trust_item_get_string_attr (gpgme_trust_item_t item,
_gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
/* DO NOT USE. */
int gpgme_trust_item_get_int_attr (gpgme_trust_item_t item, _gpgme_attr_t what,
const void *reserved, int idx)
_GPGME_DEPRECATED(0,4);
/* Compat.
* This structure shall be considered read-only and an application
@ -2900,7 +2802,6 @@ typedef gpgme_pubkey_algo_t GpgmePubKeyAlgo _GPGME_DEPRECATED(0,4);
typedef gpgme_hash_algo_t GpgmeHashAlgo _GPGME_DEPRECATED(0,4);
typedef gpgme_sig_stat_t GpgmeSigStat _GPGME_DEPRECATED(0,4);
typedef gpgme_sig_mode_t GpgmeSigMode _GPGME_DEPRECATED(0,4);
typedef gpgme_attr_t GpgmeAttr _GPGME_DEPRECATED(0,4);
typedef gpgme_validity_t GpgmeValidity _GPGME_DEPRECATED(0,4);
typedef gpgme_protocol_t GpgmeProtocol _GPGME_DEPRECATED(0,4);
typedef gpgme_engine_info_t GpgmeEngineInfo _GPGME_DEPRECATED(0,4);

248
src/key.c
View File

@ -557,177 +557,6 @@ capabilities_to_string (gpgme_subkey_t subkey)
}
/* Return the value of the attribute WHAT of ITEM, which has to be
representable by a string. */
const char *
gpgme_key_get_string_attr (gpgme_key_t key, _gpgme_attr_t what,
const void *reserved, int idx)
{
gpgme_subkey_t subkey;
gpgme_user_id_t uid;
int i;
if (!key || reserved || idx < 0)
return NULL;
/* Select IDXth subkey. */
subkey = key->subkeys;
for (i = 0; i < idx; i++)
{
subkey = subkey->next;
if (!subkey)
break;
}
/* Select the IDXth user ID. */
uid = key->uids;
for (i = 0; i < idx; i++)
{
uid = uid->next;
if (!uid)
break;
}
switch (what)
{
case GPGME_ATTR_KEYID:
return subkey ? subkey->keyid : NULL;
case GPGME_ATTR_FPR:
return subkey ? subkey->fpr : NULL;
case GPGME_ATTR_ALGO:
return subkey ? gpgme_pubkey_algo_name (subkey->pubkey_algo) : NULL;
case GPGME_ATTR_TYPE:
return key->protocol == GPGME_PROTOCOL_CMS ? "X.509" : "PGP";
case GPGME_ATTR_OTRUST:
return otrust_to_string (key->owner_trust);
case GPGME_ATTR_USERID:
return uid ? uid->uid : NULL;
case GPGME_ATTR_NAME:
return uid ? uid->name : NULL;
case GPGME_ATTR_EMAIL:
return uid ? uid->email : NULL;
case GPGME_ATTR_COMMENT:
return uid ? uid->comment : NULL;
case GPGME_ATTR_VALIDITY:
return uid ? validity_to_string (uid->validity) : NULL;
case GPGME_ATTR_KEY_CAPS:
return subkey ? capabilities_to_string (subkey) : NULL;
case GPGME_ATTR_SERIAL:
return key->issuer_serial;
case GPGME_ATTR_ISSUER:
return idx ? NULL : key->issuer_name;
case GPGME_ATTR_CHAINID:
return key->chain_id;
default:
return NULL;
}
}
unsigned long
gpgme_key_get_ulong_attr (gpgme_key_t key, _gpgme_attr_t what,
const void *reserved, int idx)
{
gpgme_subkey_t subkey;
gpgme_user_id_t uid;
int i;
if (!key || reserved || idx < 0)
return 0;
/* Select IDXth subkey. */
subkey = key->subkeys;
for (i = 0; i < idx; i++)
{
subkey = subkey->next;
if (!subkey)
break;
}
/* Select the IDXth user ID. */
uid = key->uids;
for (i = 0; i < idx; i++)
{
uid = uid->next;
if (!uid)
break;
}
switch (what)
{
case GPGME_ATTR_ALGO:
return subkey ? (unsigned long) subkey->pubkey_algo : 0;
case GPGME_ATTR_LEN:
return subkey ? (unsigned long) subkey->length : 0;
case GPGME_ATTR_TYPE:
return key->protocol == GPGME_PROTOCOL_CMS ? 1 : 0;
case GPGME_ATTR_CREATED:
return (subkey && subkey->timestamp >= 0)
? (unsigned long) subkey->timestamp : 0;
case GPGME_ATTR_EXPIRE:
return (subkey && subkey->expires >= 0)
? (unsigned long) subkey->expires : 0;
case GPGME_ATTR_VALIDITY:
return uid ? uid->validity : 0;
case GPGME_ATTR_OTRUST:
return key->owner_trust;
case GPGME_ATTR_IS_SECRET:
return !!key->secret;
case GPGME_ATTR_KEY_REVOKED:
return subkey ? subkey->revoked : 0;
case GPGME_ATTR_KEY_INVALID:
return subkey ? subkey->invalid : 0;
case GPGME_ATTR_KEY_EXPIRED:
return subkey ? subkey->expired : 0;
case GPGME_ATTR_KEY_DISABLED:
return subkey ? subkey->disabled : 0;
case GPGME_ATTR_UID_REVOKED:
return uid ? uid->revoked : 0;
case GPGME_ATTR_UID_INVALID:
return uid ? uid->invalid : 0;
case GPGME_ATTR_CAN_ENCRYPT:
return key->can_encrypt;
case GPGME_ATTR_CAN_SIGN:
return key->can_sign;
case GPGME_ATTR_CAN_CERTIFY:
return key->can_certify;
default:
return 0;
}
}
static gpgme_key_sig_t
get_keysig (gpgme_key_t key, int uid_idx, int idx)
{
@ -754,80 +583,3 @@ get_keysig (gpgme_key_t key, int uid_idx, int idx)
}
return sig;
}
const char *
gpgme_key_sig_get_string_attr (gpgme_key_t key, int uid_idx,
_gpgme_attr_t what,
const void *reserved, int idx)
{
gpgme_key_sig_t certsig = get_keysig (key, uid_idx, idx);
if (!certsig || reserved)
return NULL;
switch (what)
{
case GPGME_ATTR_KEYID:
return certsig->keyid;
case GPGME_ATTR_ALGO:
return gpgme_pubkey_algo_name (certsig->pubkey_algo);
case GPGME_ATTR_USERID:
return certsig->uid;
case GPGME_ATTR_NAME:
return certsig->name;
case GPGME_ATTR_EMAIL:
return certsig->email;
case GPGME_ATTR_COMMENT:
return certsig->comment;
default:
return NULL;
}
}
unsigned long
gpgme_key_sig_get_ulong_attr (gpgme_key_t key, int uid_idx, _gpgme_attr_t what,
const void *reserved, int idx)
{
gpgme_key_sig_t certsig = get_keysig (key, uid_idx, idx);
if (!certsig || reserved)
return 0;
switch (what)
{
case GPGME_ATTR_ALGO:
return (unsigned long) certsig->pubkey_algo;
case GPGME_ATTR_CREATED:
return certsig->timestamp < 0 ? 0L : (unsigned long) certsig->timestamp;
case GPGME_ATTR_EXPIRE:
return certsig->expires < 0 ? 0L : (unsigned long) certsig->expires;
case GPGME_ATTR_KEY_REVOKED:
return certsig->revoked;
case GPGME_ATTR_KEY_INVALID:
return certsig->invalid;
case GPGME_ATTR_KEY_EXPIRED:
return certsig->expired;
case GPGME_ATTR_SIG_CLASS:
return certsig->sig_class;
case GPGME_ATTR_SIG_STATUS:
return certsig->status;
default:
return 0;
}
}

View File

@ -258,16 +258,8 @@ GPGME_1.0 {
gpgme_data_new_with_read_cb;
gpgme_data_rewind;
gpgme_get_sig_status;
gpgme_get_sig_string_attr;
gpgme_get_sig_ulong_attr;
gpgme_get_sig_key;
gpgme_key_get_string_attr;
gpgme_key_get_ulong_attr;
gpgme_key_sig_get_string_attr;
gpgme_key_sig_get_ulong_attr;
gpgme_op_import_ext;
gpgme_trust_item_get_int_attr;
gpgme_trust_item_get_string_attr;
gpgme_trust_item_release;
gpgme_err_code_from_syserror;

View File

@ -99,74 +99,3 @@ gpgme_trust_item_release (gpgme_trust_item_t item)
{
gpgme_trust_item_unref (item);
}
/* Return the value of the attribute WHAT of ITEM, which has to be
representable by a string. */
const char *gpgme_trust_item_get_string_attr (gpgme_trust_item_t item,
_gpgme_attr_t what,
const void *reserved, int idx)
{
const char *val = NULL;
if (!item)
return NULL;
if (reserved)
return NULL;
if (idx)
return NULL;
switch (what)
{
case GPGME_ATTR_KEYID:
val = item->keyid;
break;
case GPGME_ATTR_OTRUST:
val = item->owner_trust;
break;
case GPGME_ATTR_VALIDITY:
val = item->validity;
break;
case GPGME_ATTR_USERID:
val = item->name;
break;
default:
break;
}
return val;
}
/* 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 (gpgme_trust_item_t item, _gpgme_attr_t what,
const void *reserved, int idx)
{
int val = 0;
if (!item)
return 0;
if (reserved)
return 0;
if (idx)
return 0;
switch (what)
{
case GPGME_ATTR_LEVEL:
val = item->level;
break;
case GPGME_ATTR_TYPE:
val = item->type;
break;
default:
break;
}
return val;
}

View File

@ -1309,109 +1309,3 @@ gpgme_get_sig_status (gpgme_ctx_t ctx, int idx,
*r_created = sig->timestamp;
return sig->fpr;
}
/* Retrieve certain attributes of a signature. IDX is the index
number of the signature after a successful verify operation. WHAT
is an attribute where GPGME_ATTR_EXPIRE is probably the most useful
one. WHATIDX is to be passed as 0 for most attributes . */
unsigned long
gpgme_get_sig_ulong_attr (gpgme_ctx_t ctx, int idx,
_gpgme_attr_t what, int whatidx)
{
gpgme_verify_result_t result;
gpgme_signature_t sig;
(void)whatidx;
result = gpgme_op_verify_result (ctx);
sig = result->signatures;
while (sig && idx)
{
sig = sig->next;
idx--;
}
if (!sig || idx)
return 0;
switch (what)
{
case GPGME_ATTR_CREATED:
return sig->timestamp;
case GPGME_ATTR_EXPIRE:
return sig->exp_timestamp;
case GPGME_ATTR_VALIDITY:
return (unsigned long) sig->validity;
case GPGME_ATTR_SIG_STATUS:
switch (gpg_err_code (sig->status))
{
case GPG_ERR_NO_ERROR:
return GPGME_SIG_STAT_GOOD;
case GPG_ERR_BAD_SIGNATURE:
return GPGME_SIG_STAT_BAD;
case GPG_ERR_NO_PUBKEY:
return GPGME_SIG_STAT_NOKEY;
case GPG_ERR_NO_DATA:
return GPGME_SIG_STAT_NOSIG;
case GPG_ERR_SIG_EXPIRED:
return GPGME_SIG_STAT_GOOD_EXP;
case GPG_ERR_KEY_EXPIRED:
return GPGME_SIG_STAT_GOOD_EXPKEY;
default:
return GPGME_SIG_STAT_ERROR;
}
case GPGME_ATTR_SIG_SUMMARY:
return sig->summary;
default:
break;
}
return 0;
}
const char *
gpgme_get_sig_string_attr (gpgme_ctx_t ctx, int idx,
_gpgme_attr_t what, int whatidx)
{
gpgme_verify_result_t result;
gpgme_signature_t sig;
result = gpgme_op_verify_result (ctx);
sig = result->signatures;
while (sig && idx)
{
sig = sig->next;
idx--;
}
if (!sig || idx)
return NULL;
switch (what)
{
case GPGME_ATTR_FPR:
return sig->fpr;
case GPGME_ATTR_ERRTOK:
if (whatidx == 1)
return sig->wrong_key_usage ? "Wrong_Key_Usage" : "";
else
return "";
default:
break;
}
return NULL;
}