public Certificate(DistinguishedName Issuer, DistinguishedName Subject,
     byte[] Signature, byte[] SerialNumber, string NodeAddress,
     RSACryptoServiceProvider PublicKey)
 {
   _issuer = Issuer;
   _subject = Subject;
   _signature = Signature;
   _serial_number = SerialNumber;
   _node_address = NodeAddress;
   _public_key = PublicKey;
 }
 public Certificate(X509Certificate Cert)
 {
   _x509 = Cert;
   _issuer = new DistinguishedName(Cert.IssuerName);
   _subject = new DistinguishedName(Cert.SubjectName);
   _signature = Cert.Signature;
   _serial_number = Cert.SerialNumber;
   _public_key = (RSACryptoServiceProvider) Cert.RSA;
   SubjectAltNameExtension sane = new SubjectAltNameExtension(Cert.Extensions[0]);
   _node_address = sane.UniformResourceIdentifiers[0];
 }
 public CertificateMaker(byte[] RawData) {
   _unsigned_data = RawData;
   Hashtable ht = (Hashtable) AdrConverter.Deserialize(MemBlock.Reference(RawData));
   _subject = new DistinguishedName((string) ht["Country"],
       (string) ht["Organization"], (string) ht["OrganizationalUnit"],
       (string) ht["Name"], (string) ht["Email"]);
   RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
   rsa.ImportCspBlob((byte[]) ht["PublicKey"]);
   _public_key = rsa;
   _node_address = (string) ht["NodeAddress"];
 }
 public CertificateMaker(X509Certificate x509)
 {
   _subject = new DistinguishedName(x509.SubjectName);
   _public_key = (RSACryptoServiceProvider) x509.RSA;
   SubjectAltNameExtension sane = new SubjectAltNameExtension(x509.Extensions[0]);
   _node_address = sane.UniformResourceIdentifiers[0];
 }
 public CertificateMaker(string Country, string Organization,
     string OrganizationalUnit, string Name, string Email,
     RSACryptoServiceProvider PublicKey, string NodeAddress)
 {
   _subject = new DistinguishedName(Country, Organization,
       OrganizationalUnit, Name, Email);
   _public_key = PublicKey;
   _node_address = NodeAddress;
 }