[OpenPGP:SDK svn] r349 - openpgpsdk/trunk/src

Subversion ben at algroup.co.uk
Tue Jan 31 12:17:07 GMT 2006


Author: ben
Date: 2006-01-31 12:17:07 +0000 (Tue, 31 Jan 2006)
New Revision: 349

Modified:
   openpgpsdk/trunk/src/packet-parse.c
Log:
Handle incorrect passphrase properly.


Modified: openpgpsdk/trunk/src/packet-parse.c
===================================================================
--- openpgpsdk/trunk/src/packet-parse.c	2006-01-31 12:11:22 UTC (rev 348)
+++ openpgpsdk/trunk/src/packet-parse.c	2006-01-31 12:17:07 UTC (rev 349)
@@ -1982,29 +1982,30 @@
 	assert(0);
 	}
 
-    if(ret)
+    if(C.secret_key.s2k_usage == OPS_S2KU_ENCRYPTED_AND_HASHED)
 	{
-	// XXX: check the checksum
+	unsigned char hash[20];
 
-	if(C.secret_key.s2k_usage == OPS_S2KU_ENCRYPTED_AND_HASHED)
+	ops_reader_pop_hash(parse_info);
+	checkhash.finish(&checkhash,hash);
+	    
+	if(ret)
 	    {
-	    unsigned char hash[20];
-
-	    ops_reader_pop_hash(parse_info);
-	    checkhash.finish(&checkhash,hash);
-	    
 	    if(!limited_read(C.secret_key.checkhash,20,region,parse_info))
 		return 0;
 
 	    if(memcmp(hash,C.secret_key.checkhash,20))
 		ERRP(parse_info,"Hash mismatch in secret key");
 	    }
-	else
-	    {
-	    unsigned short sum;
+	}
+    else
+	{
+	unsigned short sum;
 
-	    sum=ops_reader_pop_sum16(parse_info);
+	sum=ops_reader_pop_sum16(parse_info);
 
+	if(ret)
+	    {
 	    if(!limited_read_scalar(&C.secret_key.checksum,2,region,
 				    parse_info))
 		return 0;
@@ -2018,7 +2019,7 @@
        || C.secret_key.s2k_usage == OPS_S2KU_ENCRYPTED_AND_HASHED)
 	{
 	ops_reader_pop_decrypt(parse_info);
-	assert(region->length_read == region->length);
+	assert(!ret || region->length_read == region->length);
 	}
 
     if(!ret)



More information about the OpenPGPsdk-svn mailing list