gnome-keyring r1382 - in trunk: . daemon/pkix



Author: nnielsen
Date: Fri Dec 12 00:31:49 2008
New Revision: 1382
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1382&view=rev

Log:
	* daemon/pkix/gkr-pkix-asn1.c:
	* daemon/pkix/gkr-pkix-asn1.h: 
	* daemon/pkix/gkr-pkix-der.c: Only allocate secure memory 
	for secret key MPIs. 


Modified:
   trunk/ChangeLog
   trunk/daemon/pkix/gkr-pkix-asn1.c
   trunk/daemon/pkix/gkr-pkix-asn1.h
   trunk/daemon/pkix/gkr-pkix-der.c

Modified: trunk/daemon/pkix/gkr-pkix-asn1.c
==============================================================================
--- trunk/daemon/pkix/gkr-pkix-asn1.c	(original)
+++ trunk/daemon/pkix/gkr-pkix-asn1.c	Fri Dec 12 00:31:49 2008
@@ -378,6 +378,26 @@
   	gsize sz;
   	guchar *buf;
 
+	buf = gkr_pkix_asn1_read_value (asn, part, &sz, (GkrBufferAllocator)g_realloc);
+	if (!buf)
+		return FALSE;
+	
+	gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_STD, buf, sz, &sz);
+	g_free (buf);
+
+	if (gcry != 0)
+		return FALSE;
+	
+	return TRUE;
+}
+
+gboolean
+gkr_pkix_asn1_read_secure_mpi (ASN1_TYPE asn, const gchar *part, gcry_mpi_t *mpi)
+{
+  	gcry_error_t gcry;
+  	gsize sz;
+  	guchar *buf;
+
 	buf = gkr_pkix_asn1_read_value (asn, part, &sz, gkr_secure_realloc);
 	if (!buf)
 		return FALSE;

Modified: trunk/daemon/pkix/gkr-pkix-asn1.h
==============================================================================
--- trunk/daemon/pkix/gkr-pkix-asn1.h	(original)
+++ trunk/daemon/pkix/gkr-pkix-asn1.h	Fri Dec 12 00:31:49 2008
@@ -67,6 +67,9 @@
 gboolean           gkr_pkix_asn1_read_mpi                      (ASN1_TYPE asn, const gchar *part, 
                                                                 gcry_mpi_t *mpi);
 
+gboolean           gkr_pkix_asn1_read_secure_mpi               (ASN1_TYPE asn, const gchar *part, 
+                                                                gcry_mpi_t *mpi);
+
 gboolean           gkr_pkix_asn1_write_mpi                     (ASN1_TYPE asn, const gchar *part, 
                                                                 gcry_mpi_t mpi);
                                                                 

Modified: trunk/daemon/pkix/gkr-pkix-der.c
==============================================================================
--- trunk/daemon/pkix/gkr-pkix-der.c	(original)
+++ trunk/daemon/pkix/gkr-pkix-der.c	Fri Dec 12 00:31:49 2008
@@ -190,12 +190,12 @@
 		goto done;
 	}
     
-	if (!gkr_pkix_asn1_read_mpi (asn, "modulus", &n) || 
-	    !gkr_pkix_asn1_read_mpi (asn, "publicExponent", &e) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "privateExponent", &d) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "prime1", &p) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "prime2", &q) || 
-	    !gkr_pkix_asn1_read_mpi (asn, "coefficient", &u))
+	if (!gkr_pkix_asn1_read_secure_mpi (asn, "modulus", &n) || 
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "publicExponent", &e) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "privateExponent", &d) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "prime1", &p) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "prime2", &q) || 
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "coefficient", &u))
 		goto done;
 		
 	/* Fix up the incoming key so gcrypt likes it */    	
@@ -360,11 +360,11 @@
 	
 	ret = GKR_PKIX_FAILURE;
     
-	if (!gkr_pkix_asn1_read_mpi (asn, "p", &p) || 
-	    !gkr_pkix_asn1_read_mpi (asn, "q", &q) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "g", &g) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "Y", &y) ||
-	    !gkr_pkix_asn1_read_mpi (asn, "priv", &x))
+	if (!gkr_pkix_asn1_read_secure_mpi (asn, "p", &p) || 
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "q", &q) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "g", &g) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "Y", &y) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn, "priv", &x))
 		goto done;
 		
 	res = gcry_sexp_build (s_key, NULL, SEXP_PRIVATE_DSA, p, q, g, y, x);
@@ -409,12 +409,12 @@
 	
 	ret = GKR_PKIX_FAILURE;
     
-	if (!gkr_pkix_asn1_read_mpi (asn_params, "p", &p) || 
-	    !gkr_pkix_asn1_read_mpi (asn_params, "q", &q) ||
-	    !gkr_pkix_asn1_read_mpi (asn_params, "g", &g))
+	if (!gkr_pkix_asn1_read_secure_mpi (asn_params, "p", &p) || 
+	    !gkr_pkix_asn1_read_secure_mpi (asn_params, "q", &q) ||
+	    !gkr_pkix_asn1_read_secure_mpi (asn_params, "g", &g))
 	    	goto done;
 	    	
-	if (!gkr_pkix_asn1_read_mpi (asn_key, "", &x))
+	if (!gkr_pkix_asn1_read_secure_mpi (asn_key, "", &x))
 		goto done;
 
 	/* Now we calculate y */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]