/// <summary> /// Note: criticality is only added if true, as per RFC 2251 sec 5.1 part /// (4): If a value of a type is its default value, it MUST be /// absent. /// </summary> public RfcControl(RfcLdapOID controlType, Asn1Boolean criticality, Asn1OctetString controlValue) : base(3) { add(controlType); if (criticality.booleanValue() == true) { add(criticality); } if (controlValue != null) { add(controlValue); } }
/// <summary> /// Creates a MatchingRuleAssertion. /// The value null may be passed for an optional value that is not used. /// </summary> /// <param name="matchValue"> /// The assertion value. /// </param> /// <param name="matchingRule"> /// Optional matching rule. /// </param> /// <param name="type"> /// Optional attribute description. /// </param> /// <param name="dnAttributes"> /// Asn1Boolean value. (default false) /// </param> public RfcMatchingRuleAssertion(RfcMatchingRuleId matchingRule, RfcAttributeDescription type, RfcAssertionValue matchValue, Asn1Boolean dnAttributes) : base(4) { if (matchingRule != null) { add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 1), matchingRule, false)); } if (type != null) { add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 2), type, false)); } add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 3), matchValue, false)); // if dnAttributes if false, that is the default value and we must not // encode it. (See RFC 2251 5.1 number 4) if (dnAttributes != null && dnAttributes.booleanValue()) { add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 4), dnAttributes, false)); } }