toASN1 method
ASN1Object
toASN1()
Convert a Filter expression to an ASN1 Object This may be called recursively
Implementation
ASN1Object toASN1() {
switch (filterType) {
case Filter.TYPE_EQUALITY:
case Filter.TYPE_GREATER_OR_EQUAL:
case Filter.TYPE_LESS_OR_EQUAL:
case Filter.TYPE_APPROXIMATE_MATCH:
var seq = ASN1Sequence(tag: filterType);
seq.add(ASN1OctetString(attributeName));
seq.add(ASN1OctetString(LdapUtil.escapeString(assertionValue!)));
return seq;
case Filter.TYPE_AND:
case Filter.TYPE_OR:
assert(subFilters.isNotEmpty);
var aset = ASN1Set(tag: filterType);
for (var subf in subFilters) {
aset.add(subf.toASN1());
}
return aset;
case Filter.TYPE_PRESENCE:
return ASN1OctetString(attributeName, tag: filterType);
case Filter.TYPE_NOT:
// like AND/OR but with only one subFilter.
assert(subFilters.isNotEmpty);
var notObj = ASN1Set(tag: filterType);
notObj.add(subFilters[0].toASN1());
return notObj;
case Filter.TYPE_EXTENSIBLE_MATCH:
throw 'Not Done yet. Fix me!!';
default:
throw LdapUsageException(
'Unexpected filter type = $filterType. This should never happen');
}
}