procedure GetConstructedClaims (
     pADPrincipal : ADDRESS OF DSNAME,
     principalClass : ObjectClass,
     pConstructedClaims : ADDRESS OF CLAIMS_ARRAY)

This procedure is a helper routine that computes constructed claims (section for a given principal from Active Directory by using the Claims Dictionary (section

pADPrincipal: The principal whose Active Directory claims are to be retrieved.

principalClass: The object class of the principal.

pConstructedClaims: The address of a CLAIMS_ARRAY (section structure that is used for the output constructed claims.

Return Values: This procedure does not return a value.

Logical Processing:

 bIssueClaim : boolean;
 claim: CLAIM_ENTRY;
 claimConfigContainer : DSName;
 bIssueClaim := FALSE;
 claim := null;
 pConstructedClaims^ := null;
 claimConfigContainer := DescendantObject( ConfigNC(),
     "CN=Claim Types, CN=Claims Configuration, CN=Services");
   Constructed claims use the CLAIMS_SOURCE_TYPE_AD source type.
 pConstructedClaims^.usClaimsSourceType := CLAIMS_SOURCE_TYPE_AD;
 for (each x in children claimConfigContainer)
     if (x!msDS-ClaimSourceType = "Constructed" &&
        x!msDS-ClaimTypeAppliesToClass in principalClass &&
          bIssueClaim := TRUE;
     if (bIssueClaim)
           Currently only the AuthenticationSilo claim is supported
         if (x.Name = "ad://ext/AuthenticationSilo")
             claim := GetAuthSiloClaim(pADPrincipal)
             if (claim != null)
                 pConstructedClaims^.ulClaimsCount :=
                     pConstructedClaims^.ulClaimsCount + 1;