You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.0 KiB
113 lines
3.0 KiB
8 months ago
|
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
|
||
|
#pragma warning disable
|
||
|
using System;
|
||
|
|
||
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509
|
||
|
{
|
||
|
/**
|
||
|
* Generator for Version 1 TbsCertificateStructures.
|
||
|
* <pre>
|
||
|
* TbsCertificate ::= Sequence {
|
||
|
* version [ 0 ] Version DEFAULT v1(0),
|
||
|
* serialNumber CertificateSerialNumber,
|
||
|
* signature AlgorithmIdentifier,
|
||
|
* issuer Name,
|
||
|
* validity Validity,
|
||
|
* subject Name,
|
||
|
* subjectPublicKeyInfo SubjectPublicKeyInfo,
|
||
|
* }
|
||
|
* </pre>
|
||
|
*
|
||
|
*/
|
||
|
public class V1TbsCertificateGenerator
|
||
|
{
|
||
|
internal DerTaggedObject version = new DerTaggedObject(0, new DerInteger(0));
|
||
|
internal DerInteger serialNumber;
|
||
|
internal AlgorithmIdentifier signature;
|
||
|
internal X509Name issuer;
|
||
|
internal Time startDate, endDate;
|
||
|
internal X509Name subject;
|
||
|
internal SubjectPublicKeyInfo subjectPublicKeyInfo;
|
||
|
|
||
|
public V1TbsCertificateGenerator()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public void SetSerialNumber(
|
||
|
DerInteger serialNumber)
|
||
|
{
|
||
|
this.serialNumber = serialNumber;
|
||
|
}
|
||
|
|
||
|
public void SetSignature(
|
||
|
AlgorithmIdentifier signature)
|
||
|
{
|
||
|
this.signature = signature;
|
||
|
}
|
||
|
|
||
|
public void SetIssuer(
|
||
|
X509Name issuer)
|
||
|
{
|
||
|
this.issuer = issuer;
|
||
|
}
|
||
|
|
||
|
public void SetStartDate(
|
||
|
Time startDate)
|
||
|
{
|
||
|
this.startDate = startDate;
|
||
|
}
|
||
|
|
||
|
public void SetStartDate(
|
||
|
DerUtcTime startDate)
|
||
|
{
|
||
|
this.startDate = new Time(startDate);
|
||
|
}
|
||
|
|
||
|
public void SetEndDate(
|
||
|
Time endDate)
|
||
|
{
|
||
|
this.endDate = endDate;
|
||
|
}
|
||
|
|
||
|
public void SetEndDate(
|
||
|
DerUtcTime endDate)
|
||
|
{
|
||
|
this.endDate = new Time(endDate);
|
||
|
}
|
||
|
|
||
|
public void SetSubject(
|
||
|
X509Name subject)
|
||
|
{
|
||
|
this.subject = subject;
|
||
|
}
|
||
|
|
||
|
public void SetSubjectPublicKeyInfo(
|
||
|
SubjectPublicKeyInfo pubKeyInfo)
|
||
|
{
|
||
|
this.subjectPublicKeyInfo = pubKeyInfo;
|
||
|
}
|
||
|
|
||
|
public TbsCertificateStructure GenerateTbsCertificate()
|
||
|
{
|
||
|
if ((serialNumber == null) || (signature == null)
|
||
|
|| (issuer == null) || (startDate == null) || (endDate == null)
|
||
|
|| (subject == null) || (subjectPublicKeyInfo == null))
|
||
|
{
|
||
|
throw new InvalidOperationException("not all mandatory fields set in V1 TBScertificate generator");
|
||
|
}
|
||
|
|
||
|
return new TbsCertificateStructure(
|
||
|
new DerSequence(
|
||
|
//version, - not required as default value
|
||
|
serialNumber,
|
||
|
signature,
|
||
|
issuer,
|
||
|
new DerSequence(startDate, endDate), // before and after dates
|
||
|
subject,
|
||
|
subjectPublicKeyInfo));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#pragma warning restore
|
||
|
#endif
|