コード例 #1
0
void __certificate_properties_fill_signatureValue (GtkTreeStore *store, GtkTreeIter *parent, gnutls_x509_crt_t *certificate)
{
    GtkTreeIter i;
    gint result;
    gchar *buffer = NULL;
    gsize buffer_size = 0;
    gchar *hex_buffer = NULL;

    gtk_tree_store_append(store, &i, parent);

    result = gnutls_x509_crt_get_signature(*certificate, 0, &buffer_size);
    if (result != GNUTLS_E_SHORT_MEMORY_BUFFER) {
        fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result));
        return;
    }

    buffer = g_new0 (gchar, buffer_size);

    result = gnutls_x509_crt_get_signature(*certificate, buffer, &buffer_size);
    if (result < 0) {
        fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result));
        return;
    }

    hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size);

    gtk_tree_store_set(store, &i, CERTIFICATE_PROPERTIES_COL_NAME, _("Signature"),
                       CERTIFICATE_PROPERTIES_COL_VALUE, hex_buffer, -1);

    g_free(hex_buffer);
}
コード例 #2
0
ファイル: tlscert-gnu.c プロジェクト: toddr/exim
uschar *
tls_cert_signature(void * cert, uschar * mod)
{
    uschar * cp1 = NULL;
    uschar * cp2;
    uschar * cp3;
    size_t len = 0;
    int ret;

    if ((ret = gnutls_x509_crt_get_signature((gnutls_x509_crt_t)cert, cp1, &len))
            != GNUTLS_E_SHORT_MEMORY_BUFFER)
        return g_err("gs0", __FUNCTION__, ret);

    cp1 = store_get(len*4+1);
    if (gnutls_x509_crt_get_signature((gnutls_x509_crt_t)cert, cp1, &len) != 0)
        return g_err("gs1", __FUNCTION__, ret);

    for(cp3 = cp2 = cp1+len; cp1 < cp2; cp3 += 3, cp1++)
        sprintf(cp3, "%.2x ", *cp1);
    cp3[-1]= '\0';

    return cp2;
}