浏览代码

Update Encrypt.c

Fixed RSA bits wrong calculation for certain x509 certificate
Zulyandri Zardi 8 年之前
父节点
当前提交
a3db7b2e3d
共有 1 个文件被更改,包括 11 次插入3 次删除
  1. 11 3
      src/Mayaqua/Encrypt.c

+ 11 - 3
src/Mayaqua/Encrypt.c

@@ -4011,14 +4011,22 @@ X *X509ToX(X509 *x509)
 	type = k->pkey->type;
 
 	FreeBuf(b);
-
+	
+	//Fixed to get actual RSA key bits
+	x->bits = EVP_PKEY_bits(k->pkey);
+	
 	FreeK(k);
 
 	if (type == EVP_PKEY_RSA)
 	{
 		x->is_compatible_bit = true;
 
-		switch (size)
+		if(x->bits != 1024 && x->bits != 1536 && x->bits != 2048 && x->bits != 3072 && x->bits != 4096)
+			x->is_compatible_bit = false;
+		else
+			x->is_compatible_bit = true;
+		
+		/*switch (size)
 		{
 		case 162:
 			x->bits = 1024;
@@ -4043,7 +4051,7 @@ X *X509ToX(X509 *x509)
 		default:
 			x->is_compatible_bit = false;
 			break;
-		}
+		}*/
 	}
 
 	return x;