diff -ur openca-0.9/src/scep/src/scep.c openca-0.9-patched-scep/src/scep/src/scep.c
--- openca-0.9/src/scep/src/scep.c	Fri Dec 10 12:40:30 2004
+++ openca-0.9-patched-scep/src/scep/src/scep.c	Wed Oct 26 18:36:38 2005
@@ -1024,7 +1024,8 @@
 		x509_req = SCEP_MSG_decrypt_PKCSREQ( out_msg,
 						pkey,signcert,NULL );
 		if( x509_req ) {
-			if( text ) X509_REQ_print(outbio, x509_req);
+			if( text ) X509_REQ_print_ex(outbio, x509_req, 
+                                                     XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB), X509_FLAG_COMPAT );
 
 			PEM_write_bio_X509_REQ(outbio, x509_req);
 		} else {
@@ -1068,7 +1069,8 @@
 
 		if ( text ) {
 			BIO_printf( outbio, "\nSigner Certificate:\n" );
-			X509_print( outbio, out_msg->signer_cert );
+			X509_print_ex( outbio, out_msg->signer_cert, 
+                                       XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB), X509_FLAG_COMPAT );
 		} 
 		if ( !noout && text ) {
 			dump_cert_text( outbio, out_msg->signer_cert );
@@ -1106,17 +1108,14 @@
 
 int dump_cert_text (BIO *out, X509 *x)
 {
-	char buf[256];
-
-	X509_NAME_oneline(X509_get_subject_name(x),buf,256);
-
-	BIO_puts(out,"subject=");
-	BIO_puts(out,buf);
-	X509_NAME_oneline(X509_get_issuer_name(x),buf,256);
-
-	BIO_puts(out,"\nissuer= ");
-	BIO_puts(out,buf);
-	BIO_puts(out,"\n");
+ 	BIO_puts(out,"subject=");
+        X509_NAME_print_ex (out, X509_get_subject_name(x),  
+                            0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+ 
+ 	BIO_puts(out,"\nissuer= ");
+        X509_NAME_print_ex (out, X509_get_issuer_name(x),  
+                            0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+ 	BIO_puts(out,"\n");
 	return 0;
 }
 
diff -ur openca-0.9/src/scep/src/scep_asn1.h openca-0.9-patched-scep/src/scep/src/scep_asn1.h
--- openca-0.9/src/scep/src/scep_asn1.h	Tue Dec  3 21:34:15 2002
+++ openca-0.9-patched-scep/src/scep/src/scep_asn1.h	Wed Oct 26 19:08:47 2005
@@ -10,13 +10,7 @@
 #include <openssl/bio.h>
 #include <openssl/err.h>
 
-/* DER to Internal Issuer and Subject */
-SCEP_ISSUER_AND_SUBJECT *d2i_SCEP_ISSUER_AND_SUBJECT(
-	SCEP_ISSUER_AND_SUBJECT **a, unsigned char **pp, long length);
-
-/* Internal to DER Issuer and Subject */
-int i2d_SCEP_ISSUER_AND_SUBJECT (SCEP_ISSUER_AND_SUBJECT *a,
-		unsigned char **pp);
+DECLARE_ASN1_FUNCTIONS(SCEP_ISSUER_AND_SUBJECT)
 
 /* New Issuer and Subject structure */
 SCEP_ISSUER_AND_SUBJECT	*SCEP_ISSUER_AND_SUBJECT_new(void);
diff -ur openca-0.9/src/scep/src/scep_bio.c openca-0.9-patched-scep/src/scep/src/scep_bio.c
--- openca-0.9/src/scep/src/scep_bio.c	Fri Jun 13 17:38:04 2003
+++ openca-0.9-patched-scep/src/scep/src/scep_bio.c	Wed Oct 26 18:18:35 2005
@@ -220,11 +220,11 @@
 	rinfo->ias = ri->issuer_and_serial;
 	/*
 	if( rinfo->ias != NULL ) {
-		X509_NAME_oneline(rinfo->ias->issuer, buffer, 
-				sizeof(buffer));
-		BIO_printf(bio_err, "%s:%d: Recip cert issued by %s\n",
-			__FILE__, __LINE__, buffer);
-		BIO_printf(bio_err, "%s:%d: Recip cert serial: %s\n",
+		BIO_printf(bio_err, "%s:%d: Recip cert issued by ",
+			__FILE__, __LINE__);
+                X509_NAME_print_ex (bio_err, rinfo->ias->issuer,  
+                                    0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+		BIO_printf(bio_err, "\n%s:%d: Recip cert serial: %s\n",
 			__FILE__, __LINE__,
 			BN_bn2hex(ASN1_INTEGER_to_BN(rinfo->ias->serial,
 			NULL)));
@@ -235,15 +235,15 @@
 		/* Usually this does not happen to be included in
 		 * the pkcs7env data, but in case we just get it */
 		sk_X509_push( rinfo->sk_recip_certs, ri->cert );
-
+        /*
 		if ( debug ) {
-		
-			X509_NAME_oneline(X509_get_subject_name(ri->cert),
-				buffer, sizeof(buffer));
-
-			// BIO_printf(bio_err, "%s:%d: Recipient cert for %s\n",
-			// 	__FILE__, __LINE__, buffer);
+                        BIO_printf(bio_err, "%s:%d: Recipient cert for ",
+                              __FILE__, __LINE__);
+                        X509_NAME_print_ex (bio_err, X509_get_subject_name(ri->cert),
+                                0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));	
+                        BIO_printf(bio_err, "\n");
 		}
+        */
 	}
 
 	/* perform some consistency checks				*/
@@ -320,11 +320,12 @@
 	BIO_printf( bio, "    Signed Data:\n" );
 	BIO_printf( bio, "        Signer Info:\n" );
 	if (msg->signer_cert == NULL) {
-		X509_NAME_oneline(msg->signer_ias->issuer, buffer, sizeof(buffer));
-
 		BIO_printf(bio, "            Serial Number: %s\n",
 				BN_bn2hex(ASN1_INTEGER_to_BN(msg->signer_ias->serial, NULL)));
-		BIO_printf(bio, "            Issuer: %s\n", buffer);
+		BIO_printf(bio, "            Issuer: ");
+                X509_NAME_print_ex (bio, msg->signer_ias->issuer,  
+                                    0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+		BIO_printf(bio, "\n");
 	} else {
 		X509 *sigcert;
 
@@ -340,14 +341,15 @@
 			BIO_printf(bio, "            Serial Number: %s\n", "0x0 (fake)" );
 		}
 
-		X509_NAME_oneline(X509_get_subject_name(msg->signer_cert), buffer,
-			sizeof(buffer));
-		BIO_printf(bio, "                Subject: %s\n", buffer);
-
-		X509_NAME_oneline(X509_get_issuer_name(msg->signer_cert), buffer,
-			sizeof(buffer));
-		BIO_printf(bio, "                Issuer: %s\n", buffer);
-
+		BIO_printf(bio, "                Subject: ");
+                X509_NAME_print_ex (bio, X509_get_subject_name(msg->signer_cert),  
+                                    0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+		BIO_printf(bio, "\n");
+
+		BIO_printf(bio, "                Issuer: ");
+                X509_NAME_print_ex (bio, X509_get_issuer_name(msg->signer_cert),  
+                                    0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+		BIO_printf(bio, "\n");
 	}
 
 	BIO_printf( bio, "        Signed Attributes:\n" );
@@ -401,15 +403,15 @@
 
 	if( msg->env_data.recip_info.ias ) {
 		BIO_printf( bio, "        Recipient Info:\n" );
-
-		X509_NAME_oneline(msg->env_data.recip_info.ias->issuer, buffer, 
-				sizeof(buffer));
 		BIO_printf(bio, "            Serial Number: 0x%s (%s)\n",
 			BN_bn2hex(ASN1_INTEGER_to_BN(
 				msg->env_data.recip_info.ias->serial, NULL)),
 			BN_bn2dec(ASN1_INTEGER_to_BN(
 				msg->env_data.recip_info.ias->serial, NULL)));
-		BIO_printf(bio, "            Issuer: %s\n", buffer);
+		BIO_printf(bio, "            Issuer: ");
+                X509_NAME_print_ex (bio, msg->env_data.recip_info.ias->issuer,
+                                    0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+		BIO_printf(bio, "\n");
 	}
 
 	if( pkey ) {
@@ -427,13 +429,12 @@
 				case MSG_GETCRL:
 				case MSG_GETCERT:
 					/* Print the issuer 'n serial */
-					X509_NAME_oneline(msg->env_data.content.ias->issuer, buf, 1024);
 					BIO_printf( bio,
 					    "        Issuer and Serial:\n");
-					BIO_printf( bio,
-					    "            Issuer: %s\n", buf);
-					BIO_printf( bio, 
-					    "            Serial: 0x");
+ 					BIO_printf( bio, "            Issuer: ");
+                                        X509_NAME_print_ex (bio, msg->env_data.content.ias->issuer,
+                                                      0, XN_FLAG_RFC2253&(~ASN1_STRFLGS_ESC_MSB));
+					BIO_printf( bio, "\n            Serial: 0x");
 					i2a_ASN1_INTEGER( bio, msg->env_data.content.ias->serial );
 					BIO_printf( bio, "\n");
 					break;
