DIRECTORY CrRPC, CHNameP2V0, AuthenticationP14V2, BulkDataP0V1, ClearinghouseP2V2; ClearinghouseP2V2ServerImpl: CEDAR PROGRAM IMPORTS CrRPC, ClearinghouseP2V2 ~ { OPEN ClearinghouseP2V2; Server: CrRPC.ServerProc ~ { ENABLE { ClearinghouseP2V2.ArgumentError => { -- (2) beginError[h, 2]; CrRPC.PutCARDINAL[h, ORD[problem]]; CrRPC.PutCARDINAL[h, ORD[which]]; GO TO Finished; }; ClearinghouseP2V2.PropertyError => { -- (3) beginError[h, 3]; CrRPC.PutCARDINAL[h, ORD[problem]]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; GO TO Finished; }; ClearinghouseP2V2.CallError => { -- (1) beginError[h, 1]; CrRPC.PutCARDINAL[h, ORD[problem]]; GO TO Finished; }; ClearinghouseP2V2.UpdateError => { -- (4) beginError[h, 4]; CrRPC.PutCARDINAL[h, ORD[problem]]; CrRPC.PutBOOL[h, found]; CrRPC.PutCARDINAL[h, ORD[which]]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; GO TO Finished; }; ClearinghouseP2V2.AuthenticationError => { -- (6) beginError[h, 6]; CrRPC.PutCARDINAL[h, ORD[problem]]; GO TO Finished; }; ClearinghouseP2V2.WrongServer => { -- (5) beginError[h, 5]; CrRPC.PutROPE[h, hint.organization]; CrRPC.PutROPE[h, hint.domain]; CrRPC.PutROPE[h, hint.object]; GO TO Finished; }; }; IF (pgmVersion # 2) THEN { beginReject[h, CrRPC.noSuchVersion]; CrRPC.PutCARDINAL[h, 2]; --low CrRPC.PutCARDINAL[h, 2]; --high RETURN }; SELECT proc FROM 10 => { -- CreateAlias alias: CHNameP2V0.ThreePartName; sameAs: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; alias.organization _ CrRPC.GetROPE[h]; alias.domain _ CrRPC.GetROPE[h]; alias.object _ CrRPC.GetROPE[h]; sameAs.organization _ CrRPC.GetROPE[h]; sameAs.domain _ CrRPC.GetROPE[h]; sameAs.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ CreateAlias[h, alias, sameAs, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 14 => { -- DeleteProperty name: CHNameP2V0.ThreePartName; property: CARD; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ DeleteProperty[h, name, property, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 2 => { -- CreateObject name: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ CreateObject[h, name, agent]; beginReturn[h]; }; 8 => { -- ListAliases pattern: CHNameP2V0.ThreePartName; list: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; TRUSTED { list _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ ListAliases[h, pattern, list, agent]; beginReturn[h]; }; 22 => { -- DeleteSelf name: CHNameP2V0.ThreePartName; property: CARD; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ DeleteSelf[h, name, property, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 16 => { -- RetrieveItem pattern: CHNameP2V0.ThreePartName; property: CARD; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; value: ClearinghouseP2V2.Item; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject, value] _ RetrieveItem[h, pattern, property, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; CrRPC.PutCARDINAL[h, value.length]; FOR i0: CARDINAL IN [0..value.length) DO CrRPC.PutCARDINAL[h, value.body[i0]]; ENDLOOP; }; 5 => { -- ListOrganizations pattern: ROPE; list: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; pattern _ CrRPC.GetROPE[h]; TRUSTED { list _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ ListOrganizations[h, pattern, list, agent]; beginReturn[h]; }; 15 => { -- ListProperties pattern: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; properties: ClearinghouseP2V2.Properties; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject, properties] _ ListProperties[h, pattern, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; CrRPC.PutCARDINAL[h, properties.length]; FOR i0: CARDINAL IN [0..properties.length) DO CrRPC.PutCARD[h, properties.body[i0]]; ENDLOOP; }; 18 => { -- RetrieveMembers pattern: CHNameP2V0.ThreePartName; property: CARD; membership: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; TRUSTED { membership _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ RetrieveMembers[h, pattern, property, membership, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 1 => { -- ListDomainServed domains: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; TRUSTED { domains _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ ListDomainServed[h, domains, agent]; beginReturn[h]; }; 23 => { -- IsMember memberOf: CHNameP2V0.ThreePartName; property: CARD; secondaryProperty: CARD; name: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; isMember: BOOLEAN; distinguishedObject: CHNameP2V0.ThreePartName; memberOf.organization _ CrRPC.GetROPE[h]; memberOf.domain _ CrRPC.GetROPE[h]; memberOf.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; secondaryProperty _ CrRPC.GetCARD[h]; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [isMember, distinguishedObject] _ IsMember[h, memberOf, property, secondaryProperty, name, agent]; beginReturn[h]; CrRPC.PutBOOL[h, isMember]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 9 => { -- ListAliasesOf pattern: CHNameP2V0.ThreePartName; list: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; TRUSTED { list _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ ListAliasesOf[h, pattern, list, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 17 => { -- ChangeItem name: CHNameP2V0.ThreePartName; property: CARD; newValue: ClearinghouseP2V2.Item; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; newValue _ NEW[ClearinghouseP2V2.ItemObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO newValue.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ ChangeItem[h, name, property, newValue, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 6 => { -- ListDomain pattern: CHNameP2V0.TwoPartName; list: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; TRUSTED { list _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ ListDomain[h, pattern, list, agent]; beginReturn[h]; }; 21 => { -- DeleteMember name: CHNameP2V0.ThreePartName; property: CARD; member: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; member.organization _ CrRPC.GetROPE[h]; member.domain _ CrRPC.GetROPE[h]; member.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ DeleteMember[h, name, property, member, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 20 => { -- AddSelf name: CHNameP2V0.ThreePartName; property: CARD; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ AddSelf[h, name, property, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 0 => { -- RetrieveAddresses address: ClearinghouseP2V2.NetworkAddressList; [address] _ RetrieveAddresses[h]; beginReturn[h]; CrRPC.PutCARDINAL[h, address.length]; FOR i0: CARDINAL IN [0..address.length) DO FOR i1: CARDINAL IN [0..2) DO CrRPC.PutCARDINAL[h, address.body[i0].network[i1]]; ENDLOOP; FOR i1: CARDINAL IN [0..3) DO CrRPC.PutCARDINAL[h, address.body[i0].host[i1]]; ENDLOOP; CrRPC.PutCARDINAL[h, address.body[i0].socket]; ENDLOOP; }; 11 => { -- DeleteAlias alias: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; alias.organization _ CrRPC.GetROPE[h]; alias.domain _ CrRPC.GetROPE[h]; alias.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ DeleteAlias[h, alias, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 4 => { -- LookupObject name: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ LookupObject[h, name, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 12 => { -- AddGroupProperty name: CHNameP2V0.ThreePartName; newProperty: CARD; membership: CrRPC.BulkDataSource; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; newProperty _ CrRPC.GetCARD[h]; TRUSTED { membership _ CrRPC.GetBulkDataSource[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ AddGroupProperty[h, name, newProperty, membership, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 3 => { -- DeleteObject name: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ DeleteObject[h, name, agent]; beginReturn[h]; }; 13 => { -- AddItemProperty name: CHNameP2V0.ThreePartName; newProperty: CARD; value: ClearinghouseP2V2.Item; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; newProperty _ CrRPC.GetCARD[h]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; value _ NEW[ClearinghouseP2V2.ItemObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ AddItemProperty[h, name, newProperty, value, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 19 => { -- AddMember name: CHNameP2V0.ThreePartName; property: CARD; newMember: CHNameP2V0.ThreePartName; agent: ClearinghouseP2V2.Authenticator; distinguishedObject: CHNameP2V0.ThreePartName; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; newMember.organization _ CrRPC.GetROPE[h]; newMember.domain _ CrRPC.GetROPE[h]; newMember.object _ CrRPC.GetROPE[h]; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [distinguishedObject] _ AddMember[h, name, property, newMember, agent]; beginReturn[h]; CrRPC.PutROPE[h, distinguishedObject.organization]; CrRPC.PutROPE[h, distinguishedObject.domain]; CrRPC.PutROPE[h, distinguishedObject.object]; }; 7 => { -- ListObjects pattern: CHNameP2V0.ThreePartName; property: CARD; list: CrRPC.BulkDataSink; agent: ClearinghouseP2V2.Authenticator; pattern.organization _ CrRPC.GetROPE[h]; pattern.domain _ CrRPC.GetROPE[h]; pattern.object _ CrRPC.GetROPE[h]; property _ CrRPC.GetCARD[h]; TRUSTED { list _ CrRPC.GetBulkDataSink[h]; }; agent.credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; agent.verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO agent.verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [] _ ListObjects[h, pattern, property, list, agent]; beginReturn[h]; }; ENDCASE => { beginReject[h, CrRPC.noSuchProcedure]; }; EXITS Finished => { NULL }; }; CrRPC.RegisterServerProc[pgm~2, serverProc~Server, pgmVersion~2]; CrRPC.EnsureListener[class~$SPP]; }... pClearinghouseP2V2ServerImpl.Mesa Copyright (C) 1986 by Xerox Corporation. All rights reserved. Generated by BJackson.pa at October 9, 1986 4:40:03 am PDT using Sirocco [1.0] of September 25, 1986 3:44:23 am PDT [h: Handle, pgm: CARD, pgmVersion: CARDINAL, proc: CARDINAL, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc] ÊÔ˜šœ ™ Jšœ>™>Jšœ:™:Jšœ8™8J˜—šÏk ˜ J˜J˜ J˜J˜ J˜—J˜šÏnœœ˜*Jšœ˜$Jšœ˜—J˜šžœ˜Jšœ”™”J˜šœ˜šœ%Ïc˜+J˜Jšœœ ˜#Jšœœ ˜!Jšœœ ˜J˜—šœ%Ÿ˜+J˜Jšœœ ˜#J˜3J˜-J˜-Jšœœ ˜J˜—šœ!Ÿ˜'J˜Jšœœ ˜#Jšœœ ˜J˜—šœ#Ÿ˜)J˜Jšœœ ˜#J˜Jšœœ ˜!J˜3J˜-J˜-Jšœœ ˜J˜—šœ+Ÿ˜1J˜Jšœœ ˜#Jšœœ ˜J˜—šœ#Ÿ˜)J˜J˜$J˜J˜Jšœœ ˜J˜—J˜—J˜šœœ˜J˜$JšœŸ˜JšœŸ˜Jš˜J˜—J˜šœ˜šœŸ˜J˜ J˜!J˜'J˜.J˜J˜&J˜ J˜ J˜'J˜!J˜!Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜=J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜Jšœ œ˜J˜'J˜.J˜J˜%J˜J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜AJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜J˜'J˜J˜%J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜"J˜J˜J˜J˜—šœŸ˜J˜"J˜J˜'J˜J˜(J˜"J˜"šœ˜ J˜ J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜*J˜J˜J˜J˜—šœŸ ˜J˜Jšœ œ˜J˜'J˜.J˜J˜%J˜J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜=J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜"Jšœ œ˜J˜'J˜.J˜J˜J˜(J˜"J˜"J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜IJ˜J˜J˜J˜3J˜-J˜-J˜#šœœœ˜(J˜%Jšœ˜—J˜—šœŸ˜Jšœ œ˜J˜J˜'J˜J˜šœ˜ J˜ J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜0J˜J˜J˜J˜—šœŸ˜J˜"J˜'J˜.J˜)J˜J˜(J˜"J˜"Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜FJ˜J˜J˜J˜3J˜-J˜-J˜(šœœœ˜-J˜&Jšœ˜—J˜—šœŸ˜J˜"Jšœ œ˜J˜J˜'J˜.J˜J˜(J˜"J˜"J˜šœ˜ J˜&J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜QJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜J˜'J˜šœ˜ J˜#J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜)J˜J˜J˜J˜—šœŸ ˜J˜#Jšœ œ˜Jšœœ˜J˜J˜'Jšœ œ˜J˜.J˜J˜)J˜#J˜#J˜J˜%J˜%J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜bJ˜J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜"J˜J˜'J˜.J˜J˜(J˜"J˜"šœ˜ J˜ J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜?J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ ˜J˜Jšœ œ˜J˜!J˜'J˜.J˜J˜%J˜J˜J˜˜Jšœ œ˜)Jšœ œ(˜7šœœœ˜#J˜)Jšœ˜—J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜GJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ ˜J˜ J˜J˜'J˜J˜(J˜"šœ˜ J˜ J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜)J˜J˜J˜J˜—šœŸ˜J˜Jšœ œ˜J˜!J˜'J˜.J˜J˜%J˜J˜J˜J˜'J˜!J˜!Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜GJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ ˜J˜Jšœ œ˜J˜'J˜.J˜J˜%J˜J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜:J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜.J˜J˜J˜!J˜J˜J˜J˜%šœœœ˜*šœœœ˜J˜3Jšœ˜—šœœœ˜J˜0Jšœ˜—J˜.Jšœ˜—J˜—šœŸ˜J˜ J˜'J˜.J˜J˜&J˜ J˜ Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜5J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜J˜'J˜.J˜J˜%J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜5J˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜Jšœ œ˜J˜!J˜'J˜.J˜J˜%J˜J˜J˜šœ˜ J˜(J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜RJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜J˜'J˜J˜%J˜J˜Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜"J˜J˜J˜J˜—šœŸ˜J˜Jšœ œ˜J˜J˜'J˜.J˜J˜%J˜J˜J˜˜Jšœ œ˜)Jšœ œ(˜4šœœœ˜#J˜&Jšœ˜—J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜LJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ ˜J˜Jšœ œ˜J˜$J˜'J˜.J˜J˜%J˜J˜J˜J˜*J˜$J˜$Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜GJ˜J˜J˜J˜3J˜-J˜-J˜—šœŸ˜J˜"Jšœ œ˜J˜J˜'J˜J˜(J˜"J˜"J˜šœ˜ J˜ J˜—Jšœœ˜3˜Jšœ œ˜)Jšœœ.˜Lšœœœ˜#J˜8Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ.˜Cšœœœ˜#J˜/Jšœ˜—J˜—J˜J˜4J˜J˜J˜J˜—šœ˜ J˜&J˜——J˜š˜Jšœœ˜—J˜—˜J˜AJ˜!—J˜J˜—…—cz\