Submitted by: Peter Sylvester <Peter.Sylvester@edelweb.fr>
Reviewed by: steve

If tagging is universal and SET or SEQUENCE set constructed bit.
diff --git a/crypto/asn1/asn1_gen.c b/crypto/asn1/asn1_gen.c
index 04395d2..ec18cbf 100644
--- a/crypto/asn1/asn1_gen.c
+++ b/crypto/asn1/asn1_gen.c
@@ -245,8 +245,14 @@
 	/* If IMPLICIT, output tag */
 
 	if (asn1_tags.imp_tag != -1)
+		{
+		if (asn1_tags.imp_class == V_ASN1_UNIVERSAL 
+		    && (asn1_tags.imp_tag == V_ASN1_SEQUENCE
+		     || asn1_tags.imp_tag == V_ASN1_SET) )
+			hdr_constructed = V_ASN1_CONSTRUCTED;
 		ASN1_put_object(&p, hdr_constructed, hdr_len,
 					asn1_tags.imp_tag, asn1_tags.imp_class);
+		}
 
 	/* Copy across original encoding */
 	memcpy(p, cpy_start, cpy_len);