/** * gnutls_certificate_set_openpgp_keyring_mem - Add keyring data for OpenPGP * @c: A certificate credentials structure * @data: buffer with keyring data. * @dlen: length of data buffer. * @format: the format of the keyring * * The function is used to set keyrings that will be used internally * by various OpenPGP functions. For example to find a key when it * is needed for an operations. The keyring will also be used at the * verification functions. * * Returns: On success, %GNUTLS_E_SUCCESS is returned, otherwise a * negative error value. **/ int gnutls_certificate_set_openpgp_keyring_mem (gnutls_certificate_credentials_t c, const opaque * data, size_t dlen, gnutls_openpgp_crt_fmt_t format) { gnutls_datum ddata; int rc; ddata.data = (void *) data; ddata.size = dlen; if (!c || !data || !dlen) { gnutls_assert (); return GNUTLS_E_INVALID_REQUEST; } rc = gnutls_openpgp_keyring_init (&c->keyring); if (rc < 0) { gnutls_assert (); return rc; } rc = gnutls_openpgp_keyring_import (c->keyring, &ddata, format); if (rc < 0) { gnutls_assert (); gnutls_openpgp_keyring_deinit (c->keyring); return rc; } return 0; }
/** * gnutls_certificate_free_credentials: * @sc: is a #gnutls_certificate_credentials_t structure. * * This structure is complex enough to manipulate directly thus this * helper function is provided in order to free (deallocate) it. * * This function does not free any temporary parameters associated * with this structure (ie RSA and DH parameters are not freed by this * function). **/ void gnutls_certificate_free_credentials (gnutls_certificate_credentials_t sc) { gnutls_x509_trust_list_deinit(sc->tlist, 1); gnutls_certificate_free_keys (sc); gnutls_certificate_free_ca_names (sc); #ifdef ENABLE_OPENPGP gnutls_openpgp_keyring_deinit (sc->keyring); #endif gnutls_free (sc); }
/** * gnutls_certificate_free_credentials: * @sc: is a #gnutls_certificate_credentials_t structure. * * This structure is complex enough to manipulate directly thus this * helper function is provided in order to free (deallocate) it. * * This function does not free any temporary parameters associated * with this structure (ie RSA and DH parameters are not freed by this * function). **/ void gnutls_certificate_free_credentials (gnutls_certificate_credentials_t sc) { gnutls_x509_trust_list_deinit(sc->tlist, 1); gnutls_certificate_free_keys (sc); gnutls_certificate_free_ca_names (sc); gnutls_free(sc->ocsp_response_file); memset(sc->pin_tmp, 0, sizeof(sc->pin_tmp)); #ifdef ENABLE_OPENPGP gnutls_openpgp_keyring_deinit (sc->keyring); #endif gnutls_free (sc); }
void doit (void) { gnutls_openpgp_keyring_t keyring; gnutls_datum_t data; int ret; ret = gnutls_global_init (); if (ret < 0) fail ("init %d\n", ret); gnutls_global_set_log_function (tls_log_func); if (debug) gnutls_global_set_log_level (2); ret = gnutls_global_init_extra (); if (ret < 0) fail ("extra-init %d\n", ret); ret = gnutls_openpgp_keyring_init (&keyring); if (ret < 0) fail ("keyring-init %d\n", ret); data.data = raw_keyring; data.size = sizeof (raw_keyring) / sizeof (raw_keyring[0]); ret = gnutls_openpgp_keyring_import (keyring, &data, GNUTLS_OPENPGP_FMT_RAW); if (ret < 0) fail ("keyring-import %d\n", ret); ret = gnutls_openpgp_keyring_check_id (keyring, id_not_in_keyring, 0); if (ret == 0) fail ("keyring-check-id (not-in-keyring) %d\n", ret); ret = gnutls_openpgp_keyring_check_id (keyring, id_in_keyring, 0); if (ret != 0) fail ("keyring-check-id first key %d\n", ret); ret = gnutls_openpgp_keyring_check_id (keyring, id2_in_keyring, 0); if (ret != 0) fail ("keyring-check-id second key %d\n", ret); if (debug) success ("done\n"); gnutls_openpgp_keyring_deinit (keyring); gnutls_global_deinit (); }