]> git.saurik.com Git - apple/security.git/blobdiff - SecurityASN1/c++/pkcs10.cpp
Security-54.tar.gz
[apple/security.git] / SecurityASN1 / c++ / pkcs10.cpp
diff --git a/SecurityASN1/c++/pkcs10.cpp b/SecurityASN1/c++/pkcs10.cpp
new file mode 100644 (file)
index 0000000..dbc3a9b
--- /dev/null
@@ -0,0 +1,738 @@
+//   NOTE: this is a machine generated file--editing not recommended
+//
+// pkcs10.cpp - class member functions for ASN.1 module PKCS5
+//
+//   This file was generated by snacc on Mon Apr 22 22:34:19 2002
+//   UBC snacc written by Mike Sample
+//   A couple of enhancements made by IBM European Networking Center
+
+
+#include "asn-incl.h"
+#include "sm_vdatypes.h"
+#include "sm_x501ud.h"
+#include "sm_x411ub.h"
+#include "sm_x411mtsas.h"
+#include "sm_x501if.h"
+#include "sm_x520sa.h"
+#include "sm_x509cmn.h"
+#include "sm_x509af.h"
+#include "sm_x509ce.h"
+#include "pkcs1oids.h"
+#include "pkcs9oids.h"
+#include "sm_cms.h"
+#include "sm_ess.h"
+#include "pkcs7.h"
+#include "pkcs8.h"
+#include "appleoids.h"
+#include "pkcs10.h"
+
+//------------------------------------------------------------------------------
+// value defs
+
+
+//------------------------------------------------------------------------------
+// class member definitions:
+
+CertificationRequestInfo::CertificationRequestInfo()
+{
+#if TCL
+  subject = new Name;
+#else
+  subject = NULL; // incomplete initialization of mandatory element!
+#endif // TCL
+#if TCL
+  subjectPublicKeyInfo = new SubjectPublicKeyInfo;
+#else
+  subjectPublicKeyInfo = NULL; // incomplete initialization of mandatory element!
+#endif // TCL
+}
+
+CertificationRequestInfo::CertificationRequestInfo (const CertificationRequestInfo &)
+{
+  Asn1Error << "use of incompletely defined CertificationRequestInfo::CertificationRequestInfo (const CertificationRequestInfo &)" << endl;
+  abort();
+}
+
+CertificationRequestInfo::~CertificationRequestInfo()
+{
+  delete subject;
+  delete subjectPublicKeyInfo;
+}
+
+AsnType *CertificationRequestInfo::Clone() const
+{
+  return new CertificationRequestInfo;
+}
+
+AsnType *CertificationRequestInfo::Copy() const
+{
+  return new CertificationRequestInfo (*this);
+}
+
+#if SNACC_DEEP_COPY
+CertificationRequestInfo &CertificationRequestInfo::operator = (const CertificationRequestInfo &that)
+#else // SNACC_DEEP_COPY
+CertificationRequestInfo &CertificationRequestInfo::operator = (const CertificationRequestInfo &)
+#endif // SNACC_DEEP_COPY
+{
+#if SNACC_DEEP_COPY
+  if (this != &that)
+  {
+    version = that.version;
+    if (that.subject)
+    {
+      if (!subject)
+        subject = new Name;
+      *subject = *that.subject;
+    }
+    else
+    {
+      delete subject;
+      subject = NULL;
+    }
+    if (that.subjectPublicKeyInfo)
+    {
+      if (!subjectPublicKeyInfo)
+        subjectPublicKeyInfo = new SubjectPublicKeyInfo;
+      *subjectPublicKeyInfo = *that.subjectPublicKeyInfo;
+    }
+    else
+    {
+      delete subjectPublicKeyInfo;
+      subjectPublicKeyInfo = NULL;
+    }
+    attributes = that.attributes;
+  }
+
+  return *this;
+#else // SNACC_DEEP_COPY
+  Asn1Error << "use of incompletely defined CertificationRequestInfo &CertificationRequestInfo::operator = (const CertificationRequestInfo &)" << endl;
+  abort();
+  // if your compiler complains here, check the -novolat option
+#endif // SNACC_DEEP_COPY
+}
+
+AsnLen
+CertificationRequestInfo::BEncContent (BUF_TYPE b)
+{
+  AsnLen totalLen = 0;
+  AsnLen l;
+
+      BEncEocIfNec (b);
+    l = attributes.BEncContent (b);
+    l += BEncConsLen (b, l);
+
+    l += BEncTag1 (b, CNTX, CONS, 0);
+    totalLen += l;
+
+      BEncEocIfNec (b);
+    l = subjectPublicKeyInfo->BEncContent (b);
+    l += BEncConsLen (b, l);
+
+    l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+    totalLen += l;
+
+    l = subject->BEncContent (b);
+    totalLen += l;
+
+    l = version.BEncContent (b);
+    BEncDefLenTo127 (b, l);
+    l++;
+
+    l += BEncTag1 (b, UNIV, PRIM, INTEGER_TAG_CODE);
+    totalLen += l;
+
+  return totalLen;
+} // CertificationRequestInfo::BEncContent
+
+
+void CertificationRequestInfo::BDecContent (BUF_TYPE b, AsnTag /*tag0*/, AsnLen elmtLen0, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag1;
+  AsnLen seqBytesDecoded = 0;
+  AsnLen elmtLen1;
+  tag1 = BDecTag (b, seqBytesDecoded, env);
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, INTEGER_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    version.BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-100);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    subject = new Name;
+    subject->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-101);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    subjectPublicKeyInfo = new SubjectPublicKeyInfo;
+    subjectPublicKeyInfo->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-102);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (CNTX, CONS, 0)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    attributes.BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-103);
+  }
+
+  bytesDecoded += seqBytesDecoded;
+  if (elmtLen0 == INDEFINITE_LEN)
+  {
+    BDecEoc (b, bytesDecoded, env);
+    return;
+  }
+  else if (seqBytesDecoded != elmtLen0)
+  {
+    Asn1Error << "ERROR - Length discrepancy on sequence." << endl;
+    SnaccExcep::throwMe(-104);
+  }
+  else
+    return;
+} // CertificationRequestInfo::BDecContent
+
+AsnLen CertificationRequestInfo::BEnc (BUF_TYPE b)
+{
+  AsnLen l;
+  l = BEncContent (b);
+  l += BEncConsLen (b, l);
+  l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+  return l;
+}
+
+void CertificationRequestInfo::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag;
+  AsnLen elmtLen1;
+
+  if ((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE))
+  {
+    Asn1Error << "CertificationRequestInfo::BDec: ERROR - wrong tag" << endl;
+    SnaccExcep::throwMe(-105);
+  }
+  elmtLen1 = BDecLen (b, bytesDecoded, env);
+  BDecContent (b, tag, elmtLen1, bytesDecoded, env);
+}
+
+void CertificationRequestInfo::Print (ostream &os) const
+{
+#ifndef NDEBUG
+  os << "{ -- SEQUENCE --" << endl;
+  indentG += stdIndentG;
+
+  {
+    Indent (os, indentG);
+    os << "version ";
+    os << version;
+    os << "," << endl;
+  }
+
+  if (NOT_NULL (subject))
+  {
+    Indent (os, indentG);
+    os << "subject ";
+    os << *subject;
+  }
+  else
+  {
+    Indent (os, indentG);
+    os << "subject ";
+    os << "-- void --";
+    os << "," << endl;
+  }
+
+  if (NOT_NULL (subjectPublicKeyInfo))
+  {
+    Indent (os, indentG);
+    os << "subjectPublicKeyInfo ";
+    os << *subjectPublicKeyInfo;
+  }
+  else
+  {
+    Indent (os, indentG);
+    os << "subjectPublicKeyInfo ";
+    os << "-- void --";
+    os << "," << endl;
+  }
+
+  {
+    Indent (os, indentG);
+    os << "attributes ";
+    os << attributes;
+  }
+
+  os << endl;
+  indentG -= stdIndentG;
+  Indent (os, indentG);
+  os << "}";
+#endif /* NDEBUG */
+} // CertificationRequestInfo::Print
+
+
+CertificationRequest::CertificationRequest()
+{
+#if TCL
+  certificationRequestInfo = new CertificationRequestInfo;
+#else
+  certificationRequestInfo = NULL; // incomplete initialization of mandatory element!
+#endif // TCL
+#if TCL
+  signatureAlgorithm = new SignatureAlgorithmIdentifier;
+#else
+  signatureAlgorithm = NULL; // incomplete initialization of mandatory element!
+#endif // TCL
+}
+
+CertificationRequest::CertificationRequest (const CertificationRequest &)
+{
+  Asn1Error << "use of incompletely defined CertificationRequest::CertificationRequest (const CertificationRequest &)" << endl;
+  abort();
+}
+
+CertificationRequest::~CertificationRequest()
+{
+  delete certificationRequestInfo;
+  delete signatureAlgorithm;
+}
+
+AsnType *CertificationRequest::Clone() const
+{
+  return new CertificationRequest;
+}
+
+AsnType *CertificationRequest::Copy() const
+{
+  return new CertificationRequest (*this);
+}
+
+#if SNACC_DEEP_COPY
+CertificationRequest &CertificationRequest::operator = (const CertificationRequest &that)
+#else // SNACC_DEEP_COPY
+CertificationRequest &CertificationRequest::operator = (const CertificationRequest &)
+#endif // SNACC_DEEP_COPY
+{
+#if SNACC_DEEP_COPY
+  if (this != &that)
+  {
+    if (that.certificationRequestInfo)
+    {
+      if (!certificationRequestInfo)
+        certificationRequestInfo = new CertificationRequestInfo;
+      *certificationRequestInfo = *that.certificationRequestInfo;
+    }
+    else
+    {
+      delete certificationRequestInfo;
+      certificationRequestInfo = NULL;
+    }
+    if (that.signatureAlgorithm)
+    {
+      if (!signatureAlgorithm)
+        signatureAlgorithm = new SignatureAlgorithmIdentifier;
+      *signatureAlgorithm = *that.signatureAlgorithm;
+    }
+    else
+    {
+      delete signatureAlgorithm;
+      signatureAlgorithm = NULL;
+    }
+    signature = that.signature;
+  }
+
+  return *this;
+#else // SNACC_DEEP_COPY
+  Asn1Error << "use of incompletely defined CertificationRequest &CertificationRequest::operator = (const CertificationRequest &)" << endl;
+  abort();
+  // if your compiler complains here, check the -novolat option
+#endif // SNACC_DEEP_COPY
+}
+
+AsnLen
+CertificationRequest::BEncContent (BUF_TYPE b)
+{
+  AsnLen totalLen = 0;
+  AsnLen l;
+
+    l = signature.BEncContent (b);
+    l += BEncDefLen (b, l);
+
+    l += BEncTag1 (b, UNIV, PRIM, BITSTRING_TAG_CODE);
+    totalLen += l;
+
+      BEncEocIfNec (b);
+    l = signatureAlgorithm->BEncContent (b);
+    l += BEncConsLen (b, l);
+
+    l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+    totalLen += l;
+
+      BEncEocIfNec (b);
+    l = certificationRequestInfo->BEncContent (b);
+    l += BEncConsLen (b, l);
+
+    l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+    totalLen += l;
+
+  return totalLen;
+} // CertificationRequest::BEncContent
+
+
+void CertificationRequest::BDecContent (BUF_TYPE b, AsnTag /*tag0*/, AsnLen elmtLen0, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag1;
+  AsnLen seqBytesDecoded = 0;
+  AsnLen elmtLen1;
+  tag1 = BDecTag (b, seqBytesDecoded, env);
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    certificationRequestInfo = new CertificationRequestInfo;
+    certificationRequestInfo->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-106);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    signatureAlgorithm = new SignatureAlgorithmIdentifier;
+    signatureAlgorithm->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-107);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, BITSTRING_TAG_CODE))
+    || (tag1 == MAKE_TAG_ID (UNIV, CONS, BITSTRING_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    signature.BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-108);
+  }
+
+  bytesDecoded += seqBytesDecoded;
+  if (elmtLen0 == INDEFINITE_LEN)
+  {
+    BDecEoc (b, bytesDecoded, env);
+    return;
+  }
+  else if (seqBytesDecoded != elmtLen0)
+  {
+    Asn1Error << "ERROR - Length discrepancy on sequence." << endl;
+    SnaccExcep::throwMe(-109);
+  }
+  else
+    return;
+} // CertificationRequest::BDecContent
+
+AsnLen CertificationRequest::BEnc (BUF_TYPE b)
+{
+  AsnLen l;
+  l = BEncContent (b);
+  l += BEncConsLen (b, l);
+  l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+  return l;
+}
+
+void CertificationRequest::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag;
+  AsnLen elmtLen1;
+
+  if ((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE))
+  {
+    Asn1Error << "CertificationRequest::BDec: ERROR - wrong tag" << endl;
+    SnaccExcep::throwMe(-110);
+  }
+  elmtLen1 = BDecLen (b, bytesDecoded, env);
+  BDecContent (b, tag, elmtLen1, bytesDecoded, env);
+}
+
+void CertificationRequest::Print (ostream &os) const
+{
+#ifndef NDEBUG
+  os << "{ -- SEQUENCE --" << endl;
+  indentG += stdIndentG;
+
+  if (NOT_NULL (certificationRequestInfo))
+  {
+    Indent (os, indentG);
+    os << "certificationRequestInfo ";
+    os << *certificationRequestInfo;
+  }
+  else
+  {
+    Indent (os, indentG);
+    os << "certificationRequestInfo ";
+    os << "-- void --";
+    os << "," << endl;
+  }
+
+  if (NOT_NULL (signatureAlgorithm))
+  {
+    Indent (os, indentG);
+    os << "signatureAlgorithm ";
+    os << *signatureAlgorithm;
+  }
+  else
+  {
+    Indent (os, indentG);
+    os << "signatureAlgorithm ";
+    os << "-- void --";
+    os << "," << endl;
+  }
+
+  {
+    Indent (os, indentG);
+    os << "signature ";
+    os << signature;
+  }
+
+  os << endl;
+  indentG -= stdIndentG;
+  Indent (os, indentG);
+  os << "}";
+#endif /* NDEBUG */
+} // CertificationRequest::Print
+
+
+CertificationRequestSigned::CertificationRequestSigned()
+{
+#if TCL
+  signatureAlgorithm = new SignatureAlgorithmIdentifier;
+#else
+  signatureAlgorithm = NULL; // incomplete initialization of mandatory element!
+#endif // TCL
+}
+
+CertificationRequestSigned::CertificationRequestSigned (const CertificationRequestSigned &)
+{
+  Asn1Error << "use of incompletely defined CertificationRequestSigned::CertificationRequestSigned (const CertificationRequestSigned &)" << endl;
+  abort();
+}
+
+CertificationRequestSigned::~CertificationRequestSigned()
+{
+  delete signatureAlgorithm;
+}
+
+AsnType *CertificationRequestSigned::Clone() const
+{
+  return new CertificationRequestSigned;
+}
+
+AsnType *CertificationRequestSigned::Copy() const
+{
+  return new CertificationRequestSigned (*this);
+}
+
+#if SNACC_DEEP_COPY
+CertificationRequestSigned &CertificationRequestSigned::operator = (const CertificationRequestSigned &that)
+#else // SNACC_DEEP_COPY
+CertificationRequestSigned &CertificationRequestSigned::operator = (const CertificationRequestSigned &)
+#endif // SNACC_DEEP_COPY
+{
+#if SNACC_DEEP_COPY
+  if (this != &that)
+  {
+    certificationRequestInfo = that.certificationRequestInfo;
+    if (that.signatureAlgorithm)
+    {
+      if (!signatureAlgorithm)
+        signatureAlgorithm = new SignatureAlgorithmIdentifier;
+      *signatureAlgorithm = *that.signatureAlgorithm;
+    }
+    else
+    {
+      delete signatureAlgorithm;
+      signatureAlgorithm = NULL;
+    }
+    signature = that.signature;
+  }
+
+  return *this;
+#else // SNACC_DEEP_COPY
+  Asn1Error << "use of incompletely defined CertificationRequestSigned &CertificationRequestSigned::operator = (const CertificationRequestSigned &)" << endl;
+  abort();
+  // if your compiler complains here, check the -novolat option
+#endif // SNACC_DEEP_COPY
+}
+
+AsnLen
+CertificationRequestSigned::BEncContent (BUF_TYPE b)
+{
+  AsnLen totalLen = 0;
+  AsnLen l;
+
+    l = signature.BEncContent (b);
+    l += BEncDefLen (b, l);
+
+    l += BEncTag1 (b, UNIV, PRIM, BITSTRING_TAG_CODE);
+    totalLen += l;
+
+      BEncEocIfNec (b);
+    l = signatureAlgorithm->BEncContent (b);
+    l += BEncConsLen (b, l);
+
+    l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+    totalLen += l;
+
+        ENC_LOAD_ANYBUF(&certificationRequestInfo, b, l);
+    totalLen += l;
+
+  return totalLen;
+} // CertificationRequestSigned::BEncContent
+
+
+void CertificationRequestSigned::BDecContent (BUF_TYPE b, AsnTag /*tag0*/, AsnLen elmtLen0, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag1;
+  AsnLen seqBytesDecoded = 0;
+  AsnLen elmtLen1;
+  // ANY type
+        DEC_LOAD_ANYBUF(&certificationRequestInfo, b, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    signatureAlgorithm = new SignatureAlgorithmIdentifier;
+    signatureAlgorithm->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+    tag1 = BDecTag (b, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-111);
+  }
+
+  if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, BITSTRING_TAG_CODE))
+    || (tag1 == MAKE_TAG_ID (UNIV, CONS, BITSTRING_TAG_CODE)))
+  {
+    elmtLen1 = BDecLen (b, seqBytesDecoded, env);
+    signature.BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
+  }
+  else
+  {
+    Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
+    SnaccExcep::throwMe(-112);
+  }
+
+  bytesDecoded += seqBytesDecoded;
+  if (elmtLen0 == INDEFINITE_LEN)
+  {
+    BDecEoc (b, bytesDecoded, env);
+    return;
+  }
+  else if (seqBytesDecoded != elmtLen0)
+  {
+    Asn1Error << "ERROR - Length discrepancy on sequence." << endl;
+    SnaccExcep::throwMe(-113);
+  }
+  else
+    return;
+} // CertificationRequestSigned::BDecContent
+
+AsnLen CertificationRequestSigned::BEnc (BUF_TYPE b)
+{
+  AsnLen l;
+  l = BEncContent (b);
+  l += BEncConsLen (b, l);
+  l += BEncTag1 (b, UNIV, CONS, SEQ_TAG_CODE);
+  return l;
+}
+
+void CertificationRequestSigned::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
+{
+  AsnTag tag;
+  AsnLen elmtLen1;
+
+  if ((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, CONS, SEQ_TAG_CODE))
+  {
+    Asn1Error << "CertificationRequestSigned::BDec: ERROR - wrong tag" << endl;
+    SnaccExcep::throwMe(-114);
+  }
+  elmtLen1 = BDecLen (b, bytesDecoded, env);
+  BDecContent (b, tag, elmtLen1, bytesDecoded, env);
+}
+
+void CertificationRequestSigned::Print (ostream &os) const
+{
+#ifndef NDEBUG
+  os << "{ -- SEQUENCE --" << endl;
+  indentG += stdIndentG;
+
+  {
+    Indent (os, indentG);
+    os << "certificationRequestInfo ";
+    os << certificationRequestInfo;
+    os << "," << endl;
+  }
+
+  if (NOT_NULL (signatureAlgorithm))
+  {
+    Indent (os, indentG);
+    os << "signatureAlgorithm ";
+    os << *signatureAlgorithm;
+  }
+  else
+  {
+    Indent (os, indentG);
+    os << "signatureAlgorithm ";
+    os << "-- void --";
+    os << "," << endl;
+  }
+
+  {
+    Indent (os, indentG);
+    os << "signature ";
+    os << signature;
+  }
+
+  os << endl;
+  indentG -= stdIndentG;
+  Indent (os, indentG);
+  os << "}";
+#endif /* NDEBUG */
+} // CertificationRequestSigned::Print
+
+