diff options
author | Stef Walter <stefw@collabora.co.uk> | 2011-04-09 08:54:50 +0200 |
---|---|---|
committer | Stef Walter <stefw@collabora.co.uk> | 2011-05-13 23:25:36 +0200 |
commit | 6df0c53e32acbc42f1658a28e65f62cd28aeeff4 (patch) | |
tree | 54119fb0128f7af2e61e2da268b6fda8ccbedff6 /gcr/gcr-fingerprint.c | |
parent | 4c6ddeeb70eb1ac0ac0bab06a3cd57937c52e95e (diff) | |
download | gcr-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.c | 15 |
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; } |