4.1.10.5.9 UpdateRevealedList
-
procedure UpdateRevealedList( rodcDSA: DSName, revealedObject: DSName, attribute: ATTRTYP)
Informative summary of behavior: The UpdateRevealedList procedure adds or updates an entry for the attribute attribute of the object revealedObject on the msDS-RevealedUsers attribute of the computer object that corresponds to the nTDSDSA object rodcDSA. The msDS-RevealedUsers attribute is of type DNBinary. The binary portion of the attribute value contains a PROPERTY_META_DATA structure in its binary form. The DN portion of attribute value contains revealedObject.
-
serverObj: DSName computerObj: DSName attrSchemaObj: DSName revealedObjectsNew: set of DNBinary obj: DNBinary propMetadata: PROPERTY_META_DATA propMetadataCurrent: PROPERTY_META_DATA newRevealedObjectVal: DNBinary /* Revealed list has entries only for secret attributes */ if not IsSecretAttribute(attribute) then return endif /* Get the computer object corresponding to nTDSDSA object rodcDSA */ serverObj := rodcDSA!parent computerObj := serverObj!serverReference /* filter superseded entries from the msDS-RevealedUsers set */ revealedObjectsNew := {} foreach obj in computerObj!msDS-RevealedUsers propMetadata := loophole(obj.binary, PROPERTY_META_DATA) if (obj.object_dn ≠ revealedObject) or (propMetaData.attrType ≠ attribute) or (StampCompare(propMetaData.propMetadataExt, AttrStamp(revealedObject, attribute) > 0) then revealedObjectsNew := revealedObjectsNew + { obj } endif endfor /* add the new entry to the set */ propMetadataCurrent.attrType := attribute propMetadataCurrent.propMetadataExt := AttrStamp(revealedObject, attribute) propMetadataCurrent.llUnused := An implementation-specific value that is of no significance to the protocol. newRevealedObjectVal.binary := loophole(propMetadataCurrent, sequence of byte) newRevealedObjectVal.object_dn:= revealedObject revealedObjectsNew := revealedObjectsNew + { newRevealedObjectVal } /* set attribute value to new set */ computerObj!msDS-RevealedUsers := revealedObjectsNew