private static Asn1SequenceOf encodeModifications(LdapModification[] mods)
{
// Convert Java-API LdapModification[] to RFC2251 SEQUENCE OF SEQUENCE
Asn1SequenceOf rfcMods = new Asn1SequenceOf(mods.Length);
for (int i = 0; i < mods.Length; i++)
{
LdapAttribute attr = mods[i].Attribute;
// place modification attribute values in Asn1SetOf
Asn1SetOf vals = new Asn1SetOf(attr.size());
if (attr.size() > 0)
{
System.Collections.IEnumerator attrEnum = attr.ByteValues;
while (attrEnum.MoveNext())
{
vals.add(new RfcAttributeValue((sbyte[]) attrEnum.Current));
}
}
// create SEQUENCE containing mod operation and attr type and vals
Asn1Sequence rfcMod = new Asn1Sequence(2);
rfcMod.add(new Asn1Enumerated(mods[i].Op));
rfcMod.add(new RfcAttributeTypeAndValues(new RfcAttributeDescription(attr.Name), vals));
// place SEQUENCE into SEQUENCE OF
rfcMods.add(rfcMod);
}
return rfcMods;
}