summaryrefslogtreecommitdiff
path: root/gcr/gcr-fingerprint.c
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2011-04-09 08:54:50 +0200
committerStef Walter <stefw@collabora.co.uk>2011-05-13 23:25:36 +0200
commit6df0c53e32acbc42f1658a28e65f62cd28aeeff4 (patch)
tree54119fb0128f7af2e61e2da268b6fda8ccbedff6 /gcr/gcr-fingerprint.c
parent4c6ddeeb70eb1ac0ac0bab06a3cd57937c52e95e (diff)
downloadgcr-6df0c53e32acbc42f1658a28e65f62cd28aeeff4.tar.gz
gcr: Fix creation of fingerprints, make tests pass.
* Fix encoding of test files. * Always encode NULL in RSA keys as the parameter.
Diffstat (limited to 'gcr/gcr-fingerprint.c')
-rw-r--r--gcr/gcr-fingerprint.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gcr/gcr-fingerprint.c b/gcr/gcr-fingerprint.c
index 47dc3da..4f93d61 100644
--- a/gcr/gcr-fingerprint.c
+++ b/gcr/gcr-fingerprint.c
@@ -83,14 +83,18 @@ rsa_subject_public_key_from_attributes (GckAttributes *attrs, GNode *info_asn)
{
GckAttribute *attr;
GNode *key_asn;
- gpointer key;
- gsize n_key;
+ GNode *params_asn;
+ gpointer key, params;
+ gsize n_key, n_params;
init_quarks ();
key_asn = egg_asn1x_create (pk_asn1_tab, "RSAPublicKey");
g_return_val_if_fail (key_asn, FALSE);
+ params_asn = egg_asn1x_create (pk_asn1_tab, "RSAParameters");
+ g_return_val_if_fail (params_asn, FALSE);
+
attr = gck_attributes_find (attrs, CKA_MODULUS);
g_return_val_if_fail (attr, FALSE);
egg_asn1x_set_integer_as_raw (egg_asn1x_node (key_asn, "modulus", NULL),
@@ -104,10 +108,17 @@ rsa_subject_public_key_from_attributes (GckAttributes *attrs, GNode *info_asn)
key = egg_asn1x_encode (key_asn, g_realloc, &n_key);
egg_asn1x_destroy (key_asn);
+ egg_asn1x_set_null (params_asn);
+
+ params = egg_asn1x_encode (params_asn, g_realloc, &n_params);
+ egg_asn1x_destroy (params_asn);
+
egg_asn1x_set_bits_as_raw (egg_asn1x_node (info_asn, "subjectPublicKey", NULL),
key, n_key * 8, g_free);
egg_asn1x_set_oid_as_quark (egg_asn1x_node (info_asn, "algorithm", "algorithm", NULL), OID_PKIX1_RSA);
+ egg_asn1x_set_raw_element (egg_asn1x_node (info_asn, "algorithm", "parameters", NULL),
+ params, n_params, g_free);
return TRUE;
}