private ResponseObject(
                CertificateID certId,
                CertificateStatus certStatus,
                DerGeneralizedTime thisUpdate,
                DerGeneralizedTime nextUpdate,
                X509Extensions extensions)
            {
                this.certId = certId;

                if (certStatus == null)
                {
                    this.certStatus = new CertStatus();
                }
                else if (certStatus is UnknownStatus)
                {
                    this.certStatus = new CertStatus(2, DerNull.Instance);
                }
                else
                {
                    RevokedStatus rs = (RevokedStatus)certStatus;
                    CrlReason     revocationReason = rs.HasRevocationReason
                                                ?       new CrlReason(rs.RevocationReason)
                                                :       null;

                    this.certStatus = new CertStatus(
                        new RevokedInfo(new DerGeneralizedTime(rs.RevocationTime), revocationReason));
                }

                this.thisUpdate = thisUpdate;
                this.nextUpdate = nextUpdate;

                this.extensions = extensions;
            }