/// <summary> /// Decode the name constraints and clone them if not null. /// </summary> private void setNameConstraints( byte[] bytes) { if (bytes == null) { ncBytes = null; nc = null; } else { ncBytes = (byte[])bytes.Clone(); // validate DER encoding //nc = new NameConstraintsExtension(Boolean.FALSE, bytes); nc = NameConstraints.GetInstance(Asn1Object.FromByteArray(bytes)); } }
/// <summary> /// Create NameConstraints extension from an X509Extension /// </summary> /// <param name="Extension">X509Extension</param> /// <remarks> /// Sub classses must provide an implementation to decode their values /// </remarks> public nameConstraints(X509Extension Extension) : base(Extension) { base.oid = X509Extensions.NameConstraints; base.name = "NameConstraints"; base.displayName = "Name Constraints"; NameConstraints nc = NameConstraints.GetInstance(Extension); // Permitted names Asn1Sequence perm = Asn1Sequence.GetInstance(nc.PermittedSubtrees); foreach (var item in perm) { permitted.Add(new OSCAGeneralName(GeneralName.GetInstance(item))); } // Excluded names Asn1Sequence exc = Asn1Sequence.GetInstance(nc.ExcludedSubtrees); foreach (var item in exc) { excluded.Add(new OSCAGeneralName(GeneralName.GetInstance(item))); } }