コード例 #1
0
        public override byte[] GetBytes()
        {
            var asn1 = new ASN1Integer(Y);

            using (var ms = new MemoryStream())
            {
                new DERWriter(ms).Write(asn1);

                return(ms.ToArray());
            }
        }
コード例 #2
0
ファイル: X509Writer.cs プロジェクト: will14smith/crypto-core
        private ASN1Object GetASN1(X509Certificate cert)
        {
            var taggedVersion        = cert.Version.HasValue ? new ASN1Tagged(0, new[] { new ASN1Integer(cert.Version.Value - 1) }) : null;
            var serialNumber         = new ASN1Integer(cert.SerialNumber);
            var signatureAlgo        = GetAlgorithmIdentifier(cert.SignatureAlgorithm);
            var issuer               = GetName(cert.Issuer);
            var validity             = GetValidity(cert.Validity);
            var subject              = GetName(cert.Subject);
            var subjectPublicKeyInfo = new ASN1Sequence(new[]
            {
                GetAlgorithmIdentifier(cert.SubjectPublicKeyAlgorithm),
                new ASN1BitString(cert.SubjectPublicKey.GetBytes())
            });

            var tbs = new List <ASN1Object>();

            if (taggedVersion != null)
            {
                tbs.Add(taggedVersion);
            }

            tbs.Add(serialNumber);
            tbs.Add(signatureAlgo);
            tbs.Add(issuer);
            tbs.Add(validity);
            tbs.Add(subject);
            tbs.Add(subjectPublicKeyInfo);

            if (cert.Version >= 2)
            {
                //TODO issuerUniqueID
                //TODO subjectUniqueID
            }

            if (cert.Version >= 3)
            {
                var extensions       = GetExtensions(cert.Extensions);
                var taggedExtensions = new ASN1Tagged(3, new[] { extensions });
                tbs.Add(taggedExtensions);
            }

            return(new ASN1Sequence(new List <ASN1Object>
            {
                new ASN1Sequence(tbs),
                signatureAlgo,
                new ASN1BitString(cert.Signature)
            }));
        }
コード例 #3
0
 public ASN1IntegerMetadata(ASN1Integer annotation)
     : this(annotation.Name)
 {
 }
コード例 #4
0
ファイル: ASN1IntegerMetadata.cs プロジェクト: rmc00/gsf
 public ASN1IntegerMetadata(ASN1Integer annotation)
     : this(annotation.Name)
 {
 }