From: Nikos Date: Mon, 18 Feb 2008 19:46:28 +0000 (+0200) Subject: pgp_keyid_t is now compatible with the 2.2 key id. X-Git-Tag: gnutls_2_3_1~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26f09c012128dbb17b50ed60f79e32d50328d783;p=thirdparty%2Fgnutls.git pgp_keyid_t is now compatible with the 2.2 key id. --- diff --git a/doc/examples/ex-serv-pgp.c b/doc/examples/ex-serv-pgp.c index b10de8111a..c98b5aaf99 100644 --- a/doc/examples/ex-serv-pgp.c +++ b/doc/examples/ex-serv-pgp.c @@ -19,9 +19,7 @@ #include #include #include -/* Must be linked against gnutls-extra. - */ -#include +#include #define KEYFILE "secret.asc" #define CERTFILE "public.asc" diff --git a/includes/gnutls/gnutls.h.in b/includes/gnutls/gnutls.h.in index 3595ef29a2..9ae7b38430 100644 --- a/includes/gnutls/gnutls.h.in +++ b/includes/gnutls/gnutls.h.in @@ -1150,6 +1150,9 @@ extern "C" void gnutls_psk_set_params_function (gnutls_psk_server_credentials_t res, gnutls_params_function * func); + int gnutls_hex2bin (const char * hex_data, int hex_size, void * bin_data, + size_t * bin_size); + /* Gnutls error codes. The mapping to a TLS alert is also shown in * comments. */ diff --git a/includes/gnutls/openpgp.h b/includes/gnutls/openpgp.h index 2f124c5c64..7366c865d2 100644 --- a/includes/gnutls/openpgp.h +++ b/includes/gnutls/openpgp.h @@ -44,10 +44,7 @@ extern "C" GNUTLS_OPENPGP_FMT_BASE64 } gnutls_openpgp_crt_fmt_t; - typedef struct - { - unsigned char keyid[8]; - } gnutls_openpgp_keyid_t; + typedef unsigned char gnutls_openpgp_keyid_t[8]; /* gnutls_openpgp_cert_t should be defined in gnutls.h */ @@ -90,7 +87,7 @@ extern "C" time_t gnutls_openpgp_crt_get_expiration_time (gnutls_openpgp_crt_t key); int gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, - gnutls_openpgp_keyid_t* keyid); + gnutls_openpgp_keyid_t keyid); int gnutls_openpgp_crt_get_id (gnutls_openpgp_crt_t key, unsigned char keyid[8]); @@ -101,13 +98,13 @@ extern "C" int gnutls_openpgp_crt_get_revoked_status (gnutls_openpgp_crt_t key); int gnutls_openpgp_crt_get_subkey_count (gnutls_openpgp_crt_t key); - int gnutls_openpgp_crt_get_subkey_idx (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid); + int gnutls_openpgp_crt_get_subkey_idx (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid); int gnutls_openpgp_crt_get_subkey_revoked_status (gnutls_openpgp_crt_t key, unsigned int idx); gnutls_pk_algorithm_t gnutls_openpgp_crt_get_subkey_pk_algorithm (gnutls_openpgp_crt_t key, unsigned int idx, unsigned int *bits); time_t gnutls_openpgp_crt_get_subkey_creation_time (gnutls_openpgp_crt_t key, unsigned int idx); time_t gnutls_openpgp_crt_get_subkey_expiration_time (gnutls_openpgp_crt_t key, unsigned int idx); - int gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t* keyid); + int gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid); int gnutls_openpgp_crt_get_subkey_usage (gnutls_openpgp_crt_t key, unsigned int idx, unsigned int *key_usage); @@ -122,8 +119,8 @@ extern "C" int gnutls_openpgp_crt_get_pk_rsa_raw (gnutls_openpgp_crt_t crt, gnutls_datum_t * m, gnutls_datum_t * e); - int gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t* keyid); - int gnutls_openpgp_crt_set_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid); + int gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid); + int gnutls_openpgp_crt_set_preferred_key_id (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid); /* privkey stuff. */ @@ -141,9 +138,9 @@ extern "C" gnutls_datum_t * signature); int gnutls_openpgp_privkey_get_fingerprint (gnutls_openpgp_privkey_t key, void *fpr, size_t * fprlen); - int gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t* keyid); + int gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid); int gnutls_openpgp_privkey_get_subkey_count (gnutls_openpgp_privkey_t key); - int gnutls_openpgp_privkey_get_subkey_idx (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid); + int gnutls_openpgp_privkey_get_subkey_idx (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid); int gnutls_openpgp_privkey_get_subkey_revoked_status (gnutls_openpgp_privkey_t key, unsigned int idx); @@ -154,7 +151,7 @@ extern "C" time_t gnutls_openpgp_privkey_get_subkey_expiration_time (gnutls_openpgp_privkey_t key, unsigned int idx); - int gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, unsigned int idx, gnutls_openpgp_keyid_t* keyid); + int gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid); time_t gnutls_openpgp_privkey_get_subkey_creation_time (gnutls_openpgp_privkey_t key, unsigned int idx); @@ -181,10 +178,10 @@ extern "C" const char* password, unsigned int flags, void *output_data, size_t * output_data_size); - int gnutls_openpgp_privkey_set_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid); - int gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t* keyid); + int gnutls_openpgp_privkey_set_preferred_key_id (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid); + int gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid); - int gnutls_openpgp_crt_get_auth_subkey( gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t* keyid); + int gnutls_openpgp_crt_get_auth_subkey( gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid); /* Keyring stuff. */ @@ -199,7 +196,7 @@ extern "C" gnutls_openpgp_crt_fmt_t format); int gnutls_openpgp_keyring_check_id (gnutls_openpgp_keyring_t ring, - gnutls_openpgp_keyid_t keyid, + const gnutls_openpgp_keyid_t keyid, unsigned int flags); diff --git a/lib/auth_cert.c b/lib/auth_cert.c index 626ccddf80..4d63f3b95a 100644 --- a/lib/auth_cert.c +++ b/lib/auth_cert.c @@ -109,7 +109,7 @@ _gnutls_copy_certificate_auth_info (cert_auth_info_t info, if (cert[0].cert_type == GNUTLS_CRT_OPENPGP) { info->use_subkey = cert[0].use_subkey; - info->subkey_id = cert[0].subkey_id; + memcpy( info->subkey_id, cert[0].subkey_id, sizeof(info->subkey_id)); } #endif @@ -728,7 +728,7 @@ _gnutls_gen_openpgp_certificate (gnutls_session_t session, opaque ** data) if (apr_cert_list_length > 0) { if (apr_cert_list[0].use_subkey != 0) - ret += 1 + sizeof(apr_cert_list[0].subkey_id.keyid); /* for the keyid */ + ret += 1 + sizeof(apr_cert_list[0].subkey_id); /* for the keyid */ ret += apr_cert_list[0].raw.size; } @@ -752,10 +752,10 @@ _gnutls_gen_openpgp_certificate (gnutls_session_t session, opaque ** data) { *pdata = PGP_KEY_SUBKEY; pdata++; - *pdata = sizeof(apr_cert_list[0].subkey_id.keyid); + *pdata = sizeof(apr_cert_list[0].subkey_id); pdata++; - memcpy( pdata, apr_cert_list[0].subkey_id.keyid, sizeof(apr_cert_list[0].subkey_id.keyid)); - pdata += sizeof(apr_cert_list[0].subkey_id.keyid); + memcpy( pdata, apr_cert_list[0].subkey_id, sizeof(apr_cert_list[0].subkey_id)); + pdata += sizeof(apr_cert_list[0].subkey_id); } else { @@ -798,7 +798,7 @@ _gnutls_gen_openpgp_certificate_fpr (gnutls_session_t session, opaque ** data) packet_size = 3 + 1; if (apr_cert_list[0].use_subkey) - packet_size += 1 + sizeof(apr_cert_list[0].subkey_id.keyid); /* for the keyid */ + packet_size += 1 + sizeof(apr_cert_list[0].subkey_id); /* for the keyid */ /* Only v4 fingerprints are sent */ @@ -823,10 +823,10 @@ _gnutls_gen_openpgp_certificate_fpr (gnutls_session_t session, opaque ** data) { *pdata = PGP_KEY_FINGERPRINT_SUBKEY; pdata++; - *pdata = sizeof(apr_cert_list[0].subkey_id.keyid); + *pdata = sizeof(apr_cert_list[0].subkey_id); pdata++; - memcpy( pdata, apr_cert_list[0].subkey_id.keyid, sizeof(apr_cert_list[0].subkey_id.keyid)); - pdata += sizeof(apr_cert_list[0].subkey_id.keyid); + memcpy( pdata, apr_cert_list[0].subkey_id, sizeof(apr_cert_list[0].subkey_id)); + pdata += sizeof(apr_cert_list[0].subkey_id); } else { @@ -1051,7 +1051,7 @@ _gnutls_proc_openpgp_server_certificate (gnutls_session_t session, int peer_certificate_list_size = 0; gnutls_datum_t tmp, akey = { NULL, 0 }; gnutls_openpgp_keyid_t subkey_id; - gnutls_openpgp_keyid_t* selected_subkey = NULL; + void* selected_subkey = NULL; cred = (gnutls_certificate_credentials_t) _gnutls_get_cred (session->key, GNUTLS_CRD_CERTIFICATE, NULL); @@ -1098,17 +1098,17 @@ _gnutls_proc_openpgp_server_certificate (gnutls_session_t session, if (key_type == PGP_KEY_FINGERPRINT_SUBKEY || key_type == PGP_KEY_SUBKEY) { /* check size */ - if (*p != sizeof( subkey_id.keyid)) + if (*p != sizeof( subkey_id)) { gnutls_assert(); return GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE; } p++; DECR_LEN (dsize, 1); - memcpy( subkey_id.keyid, p, sizeof( subkey_id.keyid)); + memcpy( subkey_id, p, sizeof( subkey_id)); - p+= sizeof( subkey_id.keyid); - DECR_LEN (dsize, sizeof( subkey_id.keyid)); + p+= sizeof( subkey_id); + DECR_LEN (dsize, sizeof( subkey_id)); selected_subkey = &subkey_id; } @@ -1696,7 +1696,7 @@ alloc_and_load_pgp_certs (gnutls_openpgp_crt_t cert) return NULL; } - ret = gnutls_openpgp_crt_get_preferred_key_id( cert, &local_certs->subkey_id); + ret = gnutls_openpgp_crt_get_preferred_key_id( cert, local_certs->subkey_id); if (ret < 0) local_certs->use_subkey = 0; else diff --git a/lib/gnutls_cert.c b/lib/gnutls_cert.c index c864a74d95..e6dfadbeef 100644 --- a/lib/gnutls_cert.c +++ b/lib/gnutls_cert.c @@ -694,7 +694,7 @@ _gnutls_get_auth_info_gcert (gnutls_cert * gcert, #ifdef ENABLE_OPENPGP case GNUTLS_CRT_OPENPGP: if (info->use_subkey) - return _gnutls_openpgp_raw_crt_to_gcert (gcert, &info->raw_certificate_list[0], &info->subkey_id); + return _gnutls_openpgp_raw_crt_to_gcert (gcert, &info->raw_certificate_list[0], info->subkey_id); else return _gnutls_openpgp_raw_crt_to_gcert (gcert, &info->raw_certificate_list[0], NULL); #endif diff --git a/lib/gnutls_openpgp.c b/lib/gnutls_openpgp.c index 153be992ce..9a910e8993 100644 --- a/lib/gnutls_openpgp.c +++ b/lib/gnutls_openpgp.c @@ -91,7 +91,7 @@ _gnutls_map_cdk_rc (int rc) -*/ int _gnutls_openpgp_raw_crt_to_gcert (gnutls_cert * gcert, - const gnutls_datum_t * raw, const gnutls_openpgp_keyid_t* keyid) + const gnutls_datum_t * raw, const gnutls_openpgp_keyid_t *keyid) { gnutls_openpgp_crt_t pcrt; int ret; @@ -358,9 +358,9 @@ gnutls_certificate_set_openpgp_key_file (gnutls_certificate_credentials_t return gnutls_certificate_set_openpgp_key_file2( res, certfile, keyfile, NULL, format); } -static int get_keyid( gnutls_openpgp_keyid_t* keyid, const char* str) +static int get_keyid( gnutls_openpgp_keyid_t keyid, const char* str) { - size_t keyid_size = sizeof(keyid->keyid); + size_t keyid_size = sizeof(keyid); if (strlen(str) != 16) { @@ -368,7 +368,7 @@ static int get_keyid( gnutls_openpgp_keyid_t* keyid, const char* str) return GNUTLS_E_INVALID_REQUEST; } - if (_gnutls_hex2bin (str, strlen(str), keyid->keyid, &keyid_size) < 0) + if (_gnutls_hex2bin (str, strlen(str), keyid, &keyid_size) < 0) { _gnutls_debug_log("Error converting hex string: %s.\n", str); return GNUTLS_E_INVALID_REQUEST; @@ -438,9 +438,9 @@ gnutls_certificate_set_openpgp_key_mem2 (gnutls_certificate_credentials_t gnutls_openpgp_keyid_t keyid; if (strcasecmp( subkey_id, "auto")==0) - ret = gnutls_openpgp_crt_get_auth_subkey( cert, &keyid); + ret = gnutls_openpgp_crt_get_auth_subkey( cert, keyid); else - ret = get_keyid( &keyid, subkey_id); + ret = get_keyid( keyid, subkey_id); if (ret >= 0) { @@ -759,7 +759,7 @@ _gnutls_openpgp_privkey_to_gkey (gnutls_privkey * dest, dest->params_size = MAX_PRIV_PARAMS_SIZE; - ret = gnutls_openpgp_privkey_get_preferred_key_id( src, &keyid); + ret = gnutls_openpgp_privkey_get_preferred_key_id( src, keyid); if (ret == 0) { @@ -767,7 +767,7 @@ _gnutls_openpgp_privkey_to_gkey (gnutls_privkey * dest, uint32_t kid32[2]; _gnutls_debug_log("Importing Openpgp key and using openpgp sub key: %s\n", - _gnutls_bin2hex( keyid.keyid, sizeof(keyid.keyid), err_buf, sizeof(err_buf))); + _gnutls_bin2hex( keyid, sizeof(keyid), err_buf, sizeof(err_buf))); KEYID_IMPORT(kid32, keyid); @@ -815,7 +815,7 @@ _gnutls_openpgp_crt_to_gcert (gnutls_cert * gcert, gnutls_openpgp_crt_t cert) gcert->version = gnutls_openpgp_crt_get_version( cert); gcert->params_size = MAX_PUBLIC_PARAMS_SIZE; - ret = gnutls_openpgp_crt_get_preferred_key_id( cert, &keyid); + ret = gnutls_openpgp_crt_get_preferred_key_id( cert, keyid); if (ret == 0) { @@ -823,7 +823,7 @@ _gnutls_openpgp_crt_to_gcert (gnutls_cert * gcert, gnutls_openpgp_crt_t cert) uint32_t kid32[2]; _gnutls_debug_log("Importing Openpgp cert and using openpgp sub key: %s\n", - _gnutls_bin2hex( keyid.keyid, sizeof(keyid.keyid), err_buf, sizeof(err_buf))); + _gnutls_bin2hex( keyid, sizeof(keyid), err_buf, sizeof(err_buf))); KEYID_IMPORT(kid32, keyid); @@ -838,7 +838,8 @@ _gnutls_openpgp_crt_to_gcert (gnutls_cert * gcert, gnutls_openpgp_crt_t cert) gnutls_openpgp_crt_get_subkey_usage( cert, idx, &gcert->key_usage); gcert->use_subkey = 1; - gcert->subkey_id = keyid; + + memcpy(gcert->subkey_id, keyid, sizeof(keyid)); ret = _gnutls_openpgp_crt_get_mpis( cert, kid32, gcert->params, &gcert->params_size); } @@ -941,7 +942,7 @@ gnutls_openpgp_keyid_t keyid; return GNUTLS_E_INVALID_REQUEST; } - result = gnutls_openpgp_privkey_get_preferred_key_id( key, &keyid); + result = gnutls_openpgp_privkey_get_preferred_key_id( key, keyid); if (result == 0) { uint32_t kid[2]; diff --git a/lib/openpgp/extras.c b/lib/openpgp/extras.c index 2b99452007..4cfab0f3c4 100644 --- a/lib/openpgp/extras.c +++ b/lib/openpgp/extras.c @@ -88,14 +88,14 @@ gnutls_openpgp_keyring_deinit (gnutls_openpgp_keyring_t keyring) **/ int gnutls_openpgp_keyring_check_id (gnutls_openpgp_keyring_t ring, - gnutls_openpgp_keyid_t keyid, + const gnutls_openpgp_keyid_t keyid, unsigned int flags) { cdk_pkt_pubkey_t pk; uint32_t id[2]; - id[0] = _gnutls_read_uint32 (keyid.keyid); - id[1] = _gnutls_read_uint32 (&keyid.keyid[4]); + id[0] = _gnutls_read_uint32 (keyid); + id[1] = _gnutls_read_uint32 (&keyid[4]); if (!cdk_keydb_get_pk (ring->db, id, &pk)) { diff --git a/lib/openpgp/gnutls_openpgp.h b/lib/openpgp/gnutls_openpgp.h index 6343780994..1b8f2b8722 100644 --- a/lib/openpgp/gnutls_openpgp.h +++ b/lib/openpgp/gnutls_openpgp.h @@ -8,19 +8,6 @@ #include #include -typedef struct -{ - int type; - size_t size; - uint8_t *data; -} keybox_blob; - -typedef enum -{ - KBX_BLOB_FILE = 0x00, - KBX_BLOB_DATA = 0x01 -} keyring_blob_types; - /* OpenCDK compatible */ typedef enum { @@ -92,8 +79,6 @@ gnutls_openpgp_privkey_import (gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, const char *pass, unsigned int flags); -int _gnutls_openpgp_find_valid_subkey( gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t* keyid); - #endif /*GNUTLS_OPENPGP_LOCAL_H */ #endif /*ENABLE_OPENPGP */ diff --git a/lib/openpgp/openpgp.h b/lib/openpgp/openpgp.h index bf4f5b5ebc..e32db26333 100644 --- a/lib/openpgp/openpgp.h +++ b/lib/openpgp/openpgp.h @@ -11,12 +11,8 @@ #include #define KEYID_IMPORT(dst, src) \ - dst[0] = _gnutls_read_uint32( src.keyid); \ - dst[1] = _gnutls_read_uint32( src.keyid+4) - -#define KEYID_IMPORT2(dst, src) \ - dst[0] = _gnutls_read_uint32( src->keyid); \ - dst[1] = _gnutls_read_uint32( src->keyid+4) + dst[0] = _gnutls_read_uint32( src); \ + dst[1] = _gnutls_read_uint32( src+4) /* Internal context to store the OpenPGP key. */ typedef struct gnutls_openpgp_crt_int diff --git a/lib/openpgp/output.c b/lib/openpgp/output.c index 9cf82997c1..dbd25f863c 100644 --- a/lib/openpgp/output.c +++ b/lib/openpgp/output.c @@ -129,16 +129,16 @@ print_key_id (gnutls_string * str, gnutls_openpgp_crt_t cert, int idx) int err; if (idx < 0) - err = gnutls_openpgp_crt_get_key_id (cert, &id); + err = gnutls_openpgp_crt_get_key_id (cert, id); else - err = gnutls_openpgp_crt_get_subkey_id( cert, idx, &id); + err = gnutls_openpgp_crt_get_subkey_id( cert, idx, id); if (err < 0) addf (str, "error: get_key_id: %s\n", gnutls_strerror (err)); else { addf (str, _("\tID (hex): ")); - hexprint (str, id.keyid, sizeof(id.keyid)); + hexprint (str, id, sizeof(id)); addf (str, "\n"); } } diff --git a/lib/openpgp/pgp.c b/lib/openpgp/pgp.c index 38c8bc9111..2796253676 100644 --- a/lib/openpgp/pgp.c +++ b/lib/openpgp/pgp.c @@ -449,7 +449,7 @@ gnutls_openpgp_crt_get_expiration_time (gnutls_openpgp_crt_t key) * Returns the 64-bit keyID of the OpenPGP key. **/ int -gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; uint32_t kid[2]; @@ -465,13 +465,13 @@ gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t* return GNUTLS_E_OPENPGP_GETKEY_FAILED; cdk_pk_get_keyid (pkt->pkt.public_key, kid); - _gnutls_write_uint32( kid[0], keyid->keyid); - _gnutls_write_uint32( kid[1], keyid->keyid+4); + _gnutls_write_uint32( kid[0], keyid); + _gnutls_write_uint32( kid[1], keyid+4); return 0; } -/** +/*- * gnutls_openpgp_crt_get_id - Gets the keyID * @key: the structure that contains the OpenPGP public key. * @keyid: the buffer to save the keyid. @@ -479,14 +479,11 @@ gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t* * Returns the 64-bit keyID of the OpenPGP key. * * Deprecated: Use gnutls_openpgp_crt_get_key_id() instead. - **/ + -*/ int gnutls_openpgp_crt_get_id (gnutls_openpgp_crt_t key, unsigned char keyid[8]) { - gnutls_openpgp_keyid_t tmp; - int ret = gnutls_openpgp_crt_get_key_id (key, &tmp); - memcpy (keyid, tmp.keyid, sizeof (tmp.keyid)); - return ret; + return gnutls_openpgp_crt_get_key_id( key, keyid); } /** @@ -876,7 +873,7 @@ gnutls_openpgp_crt_get_subkey_expiration_time (gnutls_openpgp_crt_t key, unsigne * Returns the 64-bit keyID of the OpenPGP key. **/ int -gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; uint32_t kid[2]; @@ -892,8 +889,8 @@ gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gn return GNUTLS_E_OPENPGP_GETKEY_FAILED; cdk_pk_get_keyid (pkt->pkt.public_key, kid); - _gnutls_write_uint32( kid[0], keyid->keyid); - _gnutls_write_uint32( kid[1], keyid->keyid+4); + _gnutls_write_uint32( kid[0], keyid); + _gnutls_write_uint32( kid[1], keyid+4); return 0; } @@ -907,7 +904,7 @@ gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, unsigned int idx, gn * **/ int -gnutls_openpgp_crt_get_subkey_idx (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) +gnutls_openpgp_crt_get_subkey_idx (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; int ret; @@ -1280,7 +1277,7 @@ gnutls_openpgp_crt_get_pk_rsa_raw (gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_crt_get_key_id( crt, &keyid); + ret = gnutls_openpgp_crt_get_key_id( crt, keyid); if (ret < 0) { gnutls_assert (); @@ -1312,7 +1309,7 @@ gnutls_openpgp_crt_get_pk_dsa_raw (gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_crt_get_key_id( crt, &keyid); + ret = gnutls_openpgp_crt_get_key_id( crt, keyid); if (ret < 0) { gnutls_assert (); @@ -1342,7 +1339,7 @@ gnutls_openpgp_crt_get_subkey_pk_rsa_raw (gnutls_openpgp_crt_t crt, unsigned int gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_crt_get_subkey_id( crt, idx, &keyid); + ret = gnutls_openpgp_crt_get_subkey_id( crt, idx, keyid); if (ret < 0) { gnutls_assert (); @@ -1375,7 +1372,7 @@ gnutls_openpgp_crt_get_subkey_pk_dsa_raw (gnutls_openpgp_crt_t crt, unsigned int gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_crt_get_subkey_id( crt, idx, &keyid); + ret = gnutls_openpgp_crt_get_subkey_id( crt, idx, keyid); if (ret < 0) { gnutls_assert (); @@ -1394,7 +1391,7 @@ int ret; * been set it returns GNUTLS_E_INVALID_REQUEST. **/ int -gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) { if (!key || !keyid || !key->preferred_set) { @@ -1402,7 +1399,7 @@ gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpg return GNUTLS_E_INVALID_REQUEST; } - memcpy( keyid->keyid, key->preferred_keyid.keyid, sizeof(keyid->keyid)); + memcpy( keyid, key->preferred_keyid, sizeof(keyid)); return 0; } @@ -1417,7 +1414,7 @@ gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpg * **/ int -gnutls_openpgp_crt_set_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) +gnutls_openpgp_crt_set_preferred_key_id (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid) { int ret; @@ -1437,7 +1434,7 @@ int ret; } key->preferred_set = 1; - memcpy( key->preferred_keyid.keyid, keyid.keyid, sizeof(keyid.keyid)); + memcpy( key->preferred_keyid, keyid, sizeof(keyid)); return 0; } @@ -1451,7 +1448,7 @@ int ret; * * Returns zero on success. **/ -int gnutls_openpgp_crt_get_auth_subkey( gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t* keyid) +int gnutls_openpgp_crt_get_auth_subkey( gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid) { int ret, subkeys, i; unsigned int usage; diff --git a/lib/openpgp/pgpverify.c b/lib/openpgp/pgpverify.c index d0d1d360e0..1ac09c273b 100644 --- a/lib/openpgp/pgpverify.c +++ b/lib/openpgp/pgpverify.c @@ -95,7 +95,7 @@ gnutls_openpgp_crt_verify_ring (gnutls_openpgp_crt_t key, /* Check if the key is included in the ring. */ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_SAME)) { - rc = gnutls_openpgp_crt_get_key_id (key, &id); + rc = gnutls_openpgp_crt_get_key_id (key, id); if (rc < 0) { gnutls_assert (); diff --git a/lib/openpgp/privkey.c b/lib/openpgp/privkey.c index 99bc60910e..8d61c719c5 100644 --- a/lib/openpgp/privkey.c +++ b/lib/openpgp/privkey.c @@ -279,7 +279,7 @@ gnutls_openpgp_privkey_get_fingerprint (gnutls_openpgp_privkey_t key, * Returns the 64-bit keyID of the OpenPGP key. **/ int -gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; uint32_t kid[2]; @@ -295,8 +295,8 @@ gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_ return GNUTLS_E_OPENPGP_GETKEY_FAILED; cdk_sk_get_keyid (pkt->pkt.secret_key, kid); - _gnutls_write_uint32( kid[0], keyid->keyid); - _gnutls_write_uint32( kid[1], keyid->keyid+4); + _gnutls_write_uint32( kid[0], keyid); + _gnutls_write_uint32( kid[1], keyid+4); return 0; } @@ -439,7 +439,7 @@ gnutls_openpgp_privkey_get_subkey_pk_algorithm (gnutls_openpgp_privkey_t key, * **/ int -gnutls_openpgp_privkey_get_subkey_idx (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) +gnutls_openpgp_privkey_get_subkey_idx (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; int ret; @@ -522,7 +522,7 @@ gnutls_openpgp_privkey_get_subkey_expiration_time (gnutls_openpgp_privkey_t key, * Returns the 64-bit keyID of the OpenPGP key. **/ int -gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, unsigned int idx, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid) { cdk_packet_t pkt; uint32_t kid[2]; @@ -538,8 +538,8 @@ gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, unsigned int return GNUTLS_E_OPENPGP_GETKEY_FAILED; cdk_sk_get_keyid (pkt->pkt.secret_key, kid); - _gnutls_write_uint32( kid[0], keyid->keyid); - _gnutls_write_uint32( kid[1], keyid->keyid+4); + _gnutls_write_uint32( kid[0], keyid); + _gnutls_write_uint32( kid[1], keyid+4); return 0; } @@ -851,7 +851,7 @@ gnutls_openpgp_privkey_export_rsa_raw (gnutls_openpgp_privkey_t pkey, gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_privkey_get_key_id( pkey, &keyid); + ret = gnutls_openpgp_privkey_get_key_id( pkey, keyid); if (ret < 0) { gnutls_assert (); @@ -885,7 +885,7 @@ gnutls_openpgp_privkey_export_dsa_raw (gnutls_openpgp_privkey_t pkey, gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_privkey_get_key_id( pkey, &keyid); + ret = gnutls_openpgp_privkey_get_key_id( pkey, keyid); if (ret < 0) { gnutls_assert (); @@ -921,7 +921,7 @@ gnutls_openpgp_privkey_export_subkey_rsa_raw (gnutls_openpgp_privkey_t pkey, uns gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_privkey_get_subkey_id( pkey, idx, &keyid); + ret = gnutls_openpgp_privkey_get_subkey_id( pkey, idx, keyid); if (ret < 0) { gnutls_assert (); @@ -956,7 +956,7 @@ gnutls_openpgp_privkey_export_subkey_dsa_raw (gnutls_openpgp_privkey_t pkey, uns gnutls_openpgp_keyid_t keyid; int ret; - ret = gnutls_openpgp_privkey_get_subkey_id( pkey, idx, &keyid); + ret = gnutls_openpgp_privkey_get_subkey_id( pkey, idx, keyid); if (ret < 0) { gnutls_assert (); @@ -975,7 +975,7 @@ int ret; * been set it returns GNUTLS_E_INVALID_REQUEST. **/ int -gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t* keyid) +gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) { if (!key || !keyid || !key->preferred_set) { @@ -983,7 +983,7 @@ gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutl return GNUTLS_E_INVALID_REQUEST; } - memcpy( keyid->keyid, key->preferred_keyid.keyid, sizeof(keyid->keyid)); + memcpy( keyid, key->preferred_keyid, sizeof(keyid)); return 0; } @@ -998,7 +998,8 @@ gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutl * **/ int -gnutls_openpgp_privkey_set_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) +gnutls_openpgp_privkey_set_preferred_key_id (gnutls_openpgp_privkey_t key, + const gnutls_openpgp_keyid_t keyid) { int ret; @@ -1018,7 +1019,7 @@ int ret; } key->preferred_set = 1; - memcpy( key->preferred_keyid.keyid, keyid.keyid, sizeof(keyid.keyid)); + memcpy( key->preferred_keyid, keyid, sizeof(keyid)); return 0; } diff --git a/src/certtool.c b/src/certtool.c index f2d58b93c8..b1253b0be6 100644 --- a/src/certtool.c +++ b/src/certtool.c @@ -1177,9 +1177,9 @@ pgp_privkey_info (void) size = sizeof (buffer); if (i == -1) - ret = gnutls_openpgp_privkey_get_key_id (key, &keyid); + ret = gnutls_openpgp_privkey_get_key_id (key, keyid); else - ret = gnutls_openpgp_privkey_get_subkey_id (key, i, &keyid); + ret = gnutls_openpgp_privkey_get_subkey_id (key, i, keyid); if (ret < 0) { @@ -1189,7 +1189,7 @@ pgp_privkey_info (void) else { fprintf (outfile, "Public Key ID: %s\n", - raw_to_string (keyid.keyid, 8)); + raw_to_string (keyid, 8)); } } diff --git a/src/cli-gaa.c b/src/cli-gaa.c index 3834f79bc1..46b9c32e2a 100644 --- a/src/cli-gaa.c +++ b/src/cli-gaa.c @@ -149,7 +149,7 @@ void gaa_help(void) __gaa_helpsingle(0, "pgpkeyfile", "FILE ", "PGP Key file to use."); __gaa_helpsingle(0, "pgpkeyring", "FILE ", "PGP Key ring file to use."); __gaa_helpsingle(0, "pgpcertfile", "FILE ", "PGP Public Key (certificate) file to use."); - __gaa_helpsingle(0, "pgpsubkey", "HEX ", "PGP subkey to use."); + __gaa_helpsingle(0, "pgpsubkey", "HEX|auto ", "PGP subkey to use."); __gaa_helpsingle(0, "x509keyfile", "FILE ", "X.509 key file to use."); __gaa_helpsingle(0, "x509certfile", "FILE ", "X.509 Certificate file to use."); __gaa_helpsingle(0, "srpusername", "NAME ", "SRP username to use."); diff --git a/src/cli.c b/src/cli.c index 365e4442cb..19bb7061af 100644 --- a/src/cli.c +++ b/src/cli.c @@ -170,7 +170,7 @@ static gnutls_openpgp_privkey_t pgp_key = NULL; static void get_keyid( gnutls_openpgp_keyid_t* keyid, const char* str) { - size_t keyid_size = sizeof(keyid->keyid); + size_t keyid_size = sizeof(keyid); if (strlen(str) != 16) { @@ -178,7 +178,7 @@ static void get_keyid( gnutls_openpgp_keyid_t* keyid, const char* str) exit(1); } - if (gnutls_hex2bin (str, strlen(str), keyid->keyid, &keyid_size) < 0) + if (gnutls_hex2bin (str, strlen(str), keyid, &keyid_size) < 0) { fprintf(stderr, "Error converting hex string: %s.\n", str); exit(1); diff --git a/src/serv-gaa.c b/src/serv-gaa.c index a31c31eddc..c2c4f13388 100644 --- a/src/serv-gaa.c +++ b/src/serv-gaa.c @@ -139,7 +139,7 @@ void gaa_help(void) __gaa_helpsingle(0, "pgpkeyring", "FILE ", "PGP Key ring file to use."); __gaa_helpsingle(0, "pgpkeyfile", "FILE ", "PGP Key file to use."); __gaa_helpsingle(0, "pgpcertfile", "FILE ", "PGP Public Key (certificate) file to use."); - __gaa_helpsingle(0, "pgpsubkey", "HEX ", "PGP subkey to use."); + __gaa_helpsingle(0, "pgpsubkey", "HEX|auto ", "PGP subkey to use."); __gaa_helpsingle(0, "x509keyfile", "FILE ", "X.509 key file to use."); __gaa_helpsingle(0, "x509certfile", "FILE ", "X.509 Certificate file to use."); __gaa_helpsingle(0, "x509dsakeyfile", "FILE ", "Alternative X.509 key file to use."); diff --git a/tests/openpgp/keyring.c b/tests/openpgp/keyring.c index 9453d3f78e..d56a3cd930 100644 --- a/tests/openpgp/keyring.c +++ b/tests/openpgp/keyring.c @@ -164,17 +164,17 @@ static unsigned char raw_keyring[] = { /* The ID of a key known to be in the above keyring. */ static const gnutls_openpgp_keyid_t id_in_keyring = /* "Dr. Who", first key in the keyring */ - { { 0x35, 0x14, 0x5c, 0xea, - 0xa7, 0xd9, 0x3c, 0x3f } }; + { 0x35, 0x14, 0x5c, 0xea, + 0xa7, 0xd9, 0x3c, 0x3f }; static const gnutls_openpgp_keyid_t id2_in_keyring = /* OpenCDK test key, second key in the keyring */ - { { 0xbd, 0x57, 0x2c, 0xdc, - 0xcc, 0xc0, 0x7c, 0x35 } }; + { 0xbd, 0x57, 0x2c, 0xdc, + 0xcc, 0xc0, 0x7c, 0x35 }; static const gnutls_openpgp_keyid_t id_not_in_keyring = - { { 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } }; + { 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; void