Files
Dec2017-Script-Dump/Mono.Security/Security/X509/X509CertificateBuilder.cs
T
2026-06-04 11:42:34 +02:00

279 lines
6.7 KiB
C#

using System;
using System.Security.Cryptography;
namespace Mono.Security.X509
{
// Token: 0x02000046 RID: 70
public class X509CertificateBuilder : X509Builder
{
// Token: 0x0600031A RID: 794 RVA: 0x000164A0 File Offset: 0x000146A0
public X509CertificateBuilder()
: this(3)
{
}
// Token: 0x0600031B RID: 795 RVA: 0x000164AC File Offset: 0x000146AC
public X509CertificateBuilder(byte version)
{
if (version > 3)
{
throw new ArgumentException("Invalid certificate version");
}
this.version = version;
this.extensions = new X509ExtensionCollection();
}
// Token: 0x170000A1 RID: 161
// (get) Token: 0x0600031C RID: 796 RVA: 0x000164E4 File Offset: 0x000146E4
// (set) Token: 0x0600031D RID: 797 RVA: 0x000164EC File Offset: 0x000146EC
public byte Version
{
get
{
return this.version;
}
set
{
this.version = value;
}
}
// Token: 0x170000A2 RID: 162
// (get) Token: 0x0600031E RID: 798 RVA: 0x000164F8 File Offset: 0x000146F8
// (set) Token: 0x0600031F RID: 799 RVA: 0x00016500 File Offset: 0x00014700
public byte[] SerialNumber
{
get
{
return this.sn;
}
set
{
this.sn = value;
}
}
// Token: 0x170000A3 RID: 163
// (get) Token: 0x06000320 RID: 800 RVA: 0x0001650C File Offset: 0x0001470C
// (set) Token: 0x06000321 RID: 801 RVA: 0x00016514 File Offset: 0x00014714
public string IssuerName
{
get
{
return this.issuer;
}
set
{
this.issuer = value;
}
}
// Token: 0x170000A4 RID: 164
// (get) Token: 0x06000322 RID: 802 RVA: 0x00016520 File Offset: 0x00014720
// (set) Token: 0x06000323 RID: 803 RVA: 0x00016528 File Offset: 0x00014728
public DateTime NotBefore
{
get
{
return this.notBefore;
}
set
{
this.notBefore = value;
}
}
// Token: 0x170000A5 RID: 165
// (get) Token: 0x06000324 RID: 804 RVA: 0x00016534 File Offset: 0x00014734
// (set) Token: 0x06000325 RID: 805 RVA: 0x0001653C File Offset: 0x0001473C
public DateTime NotAfter
{
get
{
return this.notAfter;
}
set
{
this.notAfter = value;
}
}
// Token: 0x170000A6 RID: 166
// (get) Token: 0x06000326 RID: 806 RVA: 0x00016548 File Offset: 0x00014748
// (set) Token: 0x06000327 RID: 807 RVA: 0x00016550 File Offset: 0x00014750
public string SubjectName
{
get
{
return this.subject;
}
set
{
this.subject = value;
}
}
// Token: 0x170000A7 RID: 167
// (get) Token: 0x06000328 RID: 808 RVA: 0x0001655C File Offset: 0x0001475C
// (set) Token: 0x06000329 RID: 809 RVA: 0x00016564 File Offset: 0x00014764
public AsymmetricAlgorithm SubjectPublicKey
{
get
{
return this.aa;
}
set
{
this.aa = value;
}
}
// Token: 0x170000A8 RID: 168
// (get) Token: 0x0600032A RID: 810 RVA: 0x00016570 File Offset: 0x00014770
// (set) Token: 0x0600032B RID: 811 RVA: 0x00016578 File Offset: 0x00014778
public byte[] IssuerUniqueId
{
get
{
return this.issuerUniqueID;
}
set
{
this.issuerUniqueID = value;
}
}
// Token: 0x170000A9 RID: 169
// (get) Token: 0x0600032C RID: 812 RVA: 0x00016584 File Offset: 0x00014784
// (set) Token: 0x0600032D RID: 813 RVA: 0x0001658C File Offset: 0x0001478C
public byte[] SubjectUniqueId
{
get
{
return this.subjectUniqueID;
}
set
{
this.subjectUniqueID = value;
}
}
// Token: 0x170000AA RID: 170
// (get) Token: 0x0600032E RID: 814 RVA: 0x00016598 File Offset: 0x00014798
public X509ExtensionCollection Extensions
{
get
{
return this.extensions;
}
}
// Token: 0x0600032F RID: 815 RVA: 0x000165A0 File Offset: 0x000147A0
private ASN1 SubjectPublicKeyInfo()
{
ASN1 asn = new ASN1(48);
if (this.aa is RSA)
{
asn.Add(PKCS7.AlgorithmIdentifier("1.2.840.113549.1.1.1"));
RSAParameters rsaparameters = (this.aa as RSA).ExportParameters(false);
ASN1 asn2 = new ASN1(48);
asn2.Add(ASN1Convert.FromUnsignedBigInteger(rsaparameters.Modulus));
asn2.Add(ASN1Convert.FromUnsignedBigInteger(rsaparameters.Exponent));
asn.Add(new ASN1(this.UniqueIdentifier(asn2.GetBytes())));
}
else
{
if (!(this.aa is DSA))
{
throw new NotSupportedException("Unknown Asymmetric Algorithm " + this.aa.ToString());
}
DSAParameters dsaparameters = (this.aa as DSA).ExportParameters(false);
ASN1 asn3 = new ASN1(48);
asn3.Add(ASN1Convert.FromUnsignedBigInteger(dsaparameters.P));
asn3.Add(ASN1Convert.FromUnsignedBigInteger(dsaparameters.Q));
asn3.Add(ASN1Convert.FromUnsignedBigInteger(dsaparameters.G));
asn.Add(PKCS7.AlgorithmIdentifier("1.2.840.10040.4.1", asn3));
ASN1 asn4 = asn.Add(new ASN1(3));
asn4.Add(ASN1Convert.FromUnsignedBigInteger(dsaparameters.Y));
}
return asn;
}
// Token: 0x06000330 RID: 816 RVA: 0x000166F0 File Offset: 0x000148F0
private byte[] UniqueIdentifier(byte[] id)
{
ASN1 asn = new ASN1(3);
byte[] array = new byte[id.Length + 1];
Buffer.BlockCopy(id, 0, array, 1, id.Length);
asn.Value = array;
return asn.GetBytes();
}
// Token: 0x06000331 RID: 817 RVA: 0x00016728 File Offset: 0x00014928
protected override ASN1 ToBeSigned(string oid)
{
ASN1 asn = new ASN1(48);
if (this.version > 1)
{
byte[] array = new byte[] { this.version - 1 };
ASN1 asn2 = asn.Add(new ASN1(160));
asn2.Add(new ASN1(2, array));
}
asn.Add(new ASN1(2, this.sn));
asn.Add(PKCS7.AlgorithmIdentifier(oid));
asn.Add(X501.FromString(this.issuer));
ASN1 asn3 = asn.Add(new ASN1(48));
asn3.Add(ASN1Convert.FromDateTime(this.notBefore));
asn3.Add(ASN1Convert.FromDateTime(this.notAfter));
asn.Add(X501.FromString(this.subject));
asn.Add(this.SubjectPublicKeyInfo());
if (this.version > 1)
{
if (this.issuerUniqueID != null)
{
asn.Add(new ASN1(161, this.UniqueIdentifier(this.issuerUniqueID)));
}
if (this.subjectUniqueID != null)
{
asn.Add(new ASN1(161, this.UniqueIdentifier(this.subjectUniqueID)));
}
if (this.version > 2 && this.extensions.Count > 0)
{
asn.Add(new ASN1(163, this.extensions.GetBytes()));
}
}
return asn;
}
// Token: 0x04000179 RID: 377
private byte version;
// Token: 0x0400017A RID: 378
private byte[] sn;
// Token: 0x0400017B RID: 379
private string issuer;
// Token: 0x0400017C RID: 380
private DateTime notBefore;
// Token: 0x0400017D RID: 381
private DateTime notAfter;
// Token: 0x0400017E RID: 382
private string subject;
// Token: 0x0400017F RID: 383
private AsymmetricAlgorithm aa;
// Token: 0x04000180 RID: 384
private byte[] issuerUniqueID;
// Token: 0x04000181 RID: 385
private byte[] subjectUniqueID;
// Token: 0x04000182 RID: 386
private X509ExtensionCollection extensions;
}
}