/** * create a sequence containing a vector of objects. */ public DerSequence( Asn1EncodableVector v) : base(v.Count) { foreach (Asn1Encodable ae in v) { AddObject(ae); } }
public static Asn1EncodableVector FromEnumerable( IEnumerable e) { Asn1EncodableVector v = new Asn1EncodableVector(); foreach (Asn1Encodable obj in e) { v.Add(obj); } return v; }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * RevokedInfo ::= Sequence { * revocationTime GeneralizedTime, * revocationReason [0] EXPLICIT CRLReason OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(revocationTime); if (revocationReason != null) { v.Add(new DerTaggedObject(true, 0, revocationReason)); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * IDEA-CBCPar ::= Sequence { * iv OCTET STRING OPTIONAL -- exactly 8 octets * } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(); if (iv != null) { v.Add(iv); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * ContentInfo ::= Sequence { * contentType ContentType, * content * [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(contentType); if (content != null) { v.Add(new BerTaggedObject(0, content)); } return new BerSequence(v); }
/** * <pre> * CommitmentTypeIndication ::= SEQUENCE { * commitmentTypeId CommitmentTypeIdentifier, * commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF * CommitmentTypeQualifier OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(commitmentTypeId); if (commitmentTypeQualifier != null) { v.Add(commitmentTypeQualifier); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * OcspResponse ::= Sequence { * responseStatus OcspResponseStatus, * responseBytes [0] EXPLICIT ResponseBytes OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(responseStatus); if (responseBytes != null) { v.Add(new DerTaggedObject(true, 0, responseBytes)); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * ServiceLocator ::= Sequence { * issuer Name, * locator AuthorityInfoAccessSyntax OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(issuer); if (locator != null) { v.Add(locator); } return new DerSequence(v); }
public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(p, g); if (this.l != null) { v.Add(l); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * Request ::= Sequence { * reqCert CertID, * singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(reqCert); if (singleRequestExtensions != null) { v.Add(new DerTaggedObject(true, 0, singleRequestExtensions)); } return new DerSequence(v); }
/** * <pre> * MacData ::= SEQUENCE { * mac DigestInfo, * macSalt OCTET STRING, * iterations INTEGER DEFAULT 1 * -- Note: The default is for historic reasons and its use is deprecated. A * -- higher value, like 1024 is recommended. * </pre> * @return the basic DERObject construction. */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(digInfo, new DerOctetString(salt)); if (!iterationCount.Equals(BigInteger.One)) { v.Add(new DerInteger(iterationCount)); } return new DerSequence(v); }
public AttributeTable( Asn1EncodableVector v) { this.attributes = Platform.CreateHashtable(v.Count); foreach (Asn1Encodable o in v) { Attribute a = Attribute.GetInstance(o); AddAttribute(a); } }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * EncryptedContentInfo ::= Sequence { * contentType ContentType, * contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, * encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL * } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector( contentType, contentEncryptionAlgorithm); if (encryptedContent != null) { v.Add(new BerTaggedObject(false, 0, encryptedContent)); } return new BerSequence(v); }
public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector( bagID, new DerTaggedObject(0, bagValue)); if (bagAttributes != null) { v.Add(bagAttributes); } return new DerSequence(v); }
public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector( new DerInteger(3), contentInfo); if (macData != null) { v.Add(macData); } return new BerSequence(v); }
public AttributeTable( Asn1EncodableVector v) { this.attributes = Platform.CreateHashtable(v.Count); for (int i = 0; i != v.Count; i++) { AttributeX509 a = AttributeX509.GetInstance(v[i]); attributes.Add(a.AttrType, a); } }
internal DerSet( Asn1EncodableVector v, bool needsSorting) : base(v.Count) { foreach (Asn1Encodable o in v) { AddObject(o); } if (needsSorting) { Sort(); } }
public DerExternal( Asn1EncodableVector vector) { int offset = 0; Asn1Object enc = GetObjFromVector(vector, offset); if (enc is DerObjectIdentifier) { directReference = (DerObjectIdentifier)enc; offset++; enc = GetObjFromVector(vector, offset); } if (enc is DerInteger) { indirectReference = (DerInteger) enc; offset++; enc = GetObjFromVector(vector, offset); } if (!(enc is DerTaggedObject)) { dataValueDescriptor = (Asn1Object) enc; offset++; enc = GetObjFromVector(vector, offset); } if (!(enc is DerTaggedObject)) { throw new InvalidOperationException( "No tagged object found in vector. Structure doesn't seem to be of type External"); } if (vector.Count != offset + 1) throw new ArgumentException("input vector too large", "vector"); if (!(enc is DerTaggedObject)) throw new ArgumentException("No tagged object found in vector. Structure doesn't seem to be of type External", "vector"); DerTaggedObject obj = (DerTaggedObject)enc; // Use property accessor to include check on value Encoding = obj.TagNo; if (encoding < 0 || encoding > 2) throw new InvalidOperationException("invalid encoding value"); externalContent = obj.GetObject(); }
public DerApplicationSpecific( int tagNo, Asn1EncodableVector vec) { this.tag = tagNo; this.isConstructed = true; MemoryStream bOut = new MemoryStream(); for (int i = 0; i != vec.Count; i++) { try { byte[] bs = vec[i].GetDerEncoded(); bOut.Write(bs, 0, bs.Length); } catch (IOException e) { throw new InvalidOperationException("malformed object", e); } } this.octets = bOut.ToArray(); }
public ECPrivateKeyStructure( BigInteger key, DerBitString publicKey, Asn1Encodable parameters) { if (key == null) throw new ArgumentNullException("key"); Asn1EncodableVector v = new Asn1EncodableVector( new DerInteger(1), new DerOctetString(key.ToByteArrayUnsigned())); if (parameters != null) { v.Add(new DerTaggedObject(true, 0, parameters)); } if (publicKey != null) { v.Add(new DerTaggedObject(true, 1, publicKey)); } this.seq = new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * BasicConstraints := Sequence { * cA Boolean DEFAULT FALSE, * pathLenConstraint Integer (0..MAX) OPTIONAL * } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(); if (cA != null) { v.Add(cA); } if (pathLenConstraint != null) // yes some people actually do this when cA is false... { v.Add(pathLenConstraint); } return new DerSequence(v); }
public static DerSequence FromVector( Asn1EncodableVector v) { return(v.Count < 1 ? Empty : new DerSequence(v)); }
public virtual int GenerateBytes(byte[] outBytes, int outOff, int len) { if ((outBytes.Length - len) < outOff) { throw new DataLengthException("output buffer too small"); } long oBytes = len; int outLen = digest.GetDigestSize(); // // this is at odds with the standard implementation, the // maximum value should be hBits * (2^32 - 1) where hBits // is the digest output size in bits. We can't have an // array with a long index at the moment... // if (oBytes > ((2L << 32) - 1)) { throw new ArgumentException("Output length too large"); } int cThreshold = (int)((oBytes + outLen - 1) / outLen); byte[] dig = new byte[digest.GetDigestSize()]; uint counter = 1; for (int i = 0; i < cThreshold; i++) { digest.BlockUpdate(z, 0, z.Length); // KeySpecificInfo DerSequence keyInfo = new DerSequence( algorithm, new DerOctetString(Pack.UInt32_To_BE(counter))); // OtherInfo Asn1EncodableVector v1 = new Asn1EncodableVector(keyInfo); if (partyAInfo != null) { v1.Add(new DerTaggedObject(true, 0, new DerOctetString(partyAInfo))); } v1.Add(new DerTaggedObject(true, 2, new DerOctetString(Pack.UInt32_To_BE((uint)keySize)))); byte[] other = new DerSequence(v1).GetDerEncoded(); digest.BlockUpdate(other, 0, other.Length); digest.DoFinal(dig, 0); if (len > outLen) { Array.Copy(dig, 0, outBytes, outOff, outLen); outOff += outLen; len -= outLen; } else { Array.Copy(dig, 0, outBytes, outOff, len); } counter++; } digest.Reset(); return (int)oBytes; }
private static Asn1Object GetObjFromVector(Asn1EncodableVector v, int index) { if (v.Count <= index) throw new ArgumentException("too few objects in input vector", "v"); return v[index].ToAsn1Object(); }
public override Asn1Object ToAsn1Object() { DerSequence hashSeq = new DerSequence(datagroupHash); Asn1EncodableVector v = new Asn1EncodableVector(version, digestAlgorithmIdentifier, hashSeq); if (versionInfo != null) { v.Add(versionInfo); } return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * PasswordRecipientInfo ::= Sequence { * version CMSVersion, -- Always set to 0 * keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier * OPTIONAL, * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, * encryptedKey EncryptedKey } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(version); if (keyDerivationAlgorithm != null) { v.Add(new DerTaggedObject(false, 0, keyDerivationAlgorithm)); } v.Add(keyEncryptionAlgorithm, encryptedKey); return new DerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * SignedData ::= Sequence { * version Version, * digestAlgorithms DigestAlgorithmIdentifiers, * contentInfo ContentInfo, * certificates * [0] IMPLICIT ExtendedCertificatesAndCertificates * OPTIONAL, * crls * [1] IMPLICIT CertificateRevocationLists OPTIONAL, * signerInfos SignerInfos } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector( version, digestAlgorithms, contentInfo); if (certificates != null) { v.Add(new DerTaggedObject(false, 0, certificates)); } if (crls != null) { v.Add(new DerTaggedObject(false, 1, crls)); } v.Add(signerInfos); return new BerSequence(v); }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * SingleResponse ::= Sequence { * certID CertID, * certStatus CertStatus, * thisUpdate GeneralizedTime, * nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL, * singleExtensions [1] EXPLICIT Extensions OPTIONAL } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector( certID, certStatus, thisUpdate); if (nextUpdate != null) { v.Add(new DerTaggedObject(true, 0, nextUpdate)); } if (singleExtensions != null) { v.Add(new DerTaggedObject(true, 1, singleExtensions)); } return new DerSequence(v); }
internal Asn1EncodableVector ReadVector() { Asn1EncodableVector v = new Asn1EncodableVector(); IAsn1Convertible obj; while ((obj = ReadObject()) != null) { v.Add(obj.ToAsn1Object()); } return v; }
internal Asn1EncodableVector BuildEncodableVector() { Asn1EncodableVector v = new Asn1EncodableVector(); Asn1Object o; while ((o = ReadObject()) != null) { v.Add(o); } return v; }
/** * Produce an object suitable for an Asn1OutputStream. * <pre> * EnvelopedData ::= Sequence { * version CMSVersion, * originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, * recipientInfos RecipientInfos, * encryptedContentInfo EncryptedContentInfo, * unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL * } * </pre> */ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(version); if (originatorInfo != null) { v.Add(new DerTaggedObject(false, 0, originatorInfo)); } v.Add(recipientInfos, encryptedContentInfo); if (unprotectedAttrs != null) { v.Add(new DerTaggedObject(false, 1, unprotectedAttrs)); } return new BerSequence(v); }