CHOpsP2V3ServerImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Demers.pa at November 26, 1986 11:55:56 am PST
using Sirocco [1.0] of September 25, 1986 3:44:23 am PDT
DIRECTORY
CrRPC,
CHNameP2V0,
AuthenticationP14V2,
BulkDataP0V1,
CHOpsP2V3;
CHOpsP2V3ServerImpl: CEDAR PROGRAM
IMPORTS CrRPC, CHOpsP2V3 ~ {
OPEN CHOpsP2V3;
Server: CrRPC.ServerProc ~ {
[h: Handle, pgm: CARD, pgmVersion: CARDINAL, proc: CARDINAL, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc]
ENABLE {
CHOpsP2V3.ArgumentError => { -- (2)
beginError[h, 2];
CrRPC.PutCARDINAL[h, ORD[problem]];
CrRPC.PutCARDINAL[h, ORD[which]];
GO TO Finished;
};
CHOpsP2V3.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;
};
CHOpsP2V3.CallError => { -- (1)
beginError[h, 1];
CrRPC.PutCARDINAL[h, ORD[problem]];
GO TO Finished;
};
CHOpsP2V3.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;
};
CHOpsP2V3.AuthenticationError => { -- (6)
beginError[h, 6];
CrRPC.PutCARDINAL[h, ORD[problem]];
GO TO Finished;
};
CHOpsP2V3.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 # 3) THEN {
beginReject[h, CrRPC.noSuchVersion];
CrRPC.PutCARDINAL[h, 3]; --low
CrRPC.PutCARDINAL[h, 3]; --high
RETURN
};
SELECT proc FROM
10 => { -- CreateAlias
alias: CHNameP2V0.ThreePartName;
sameAs: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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];
};
1 => { -- ListDomainsServed
domains: CrRPC.BulkDataSink;
agent: CHOpsP2V3.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;
};
[] ← ListDomainsServed[h, domains, agent];
beginReturn[h];
};
22 => { -- DeleteSelf
name: CHNameP2V0.ThreePartName;
property: CARD;
agent: CHOpsP2V3.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: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
value: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
properties: CHOpsP2V3.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;
};
6 => { -- ListDomains
pattern: CHNameP2V0.TwoPartName;
list: CrRPC.BulkDataSink;
agent: CHOpsP2V3.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;
};
[] ← ListDomains[h, pattern, list, agent];
beginReturn[h];
};
18 => { -- RetrieveMembers
pattern: CHNameP2V0.ThreePartName;
property: CARD;
membership: CrRPC.BulkDataSink;
agent: CHOpsP2V3.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];
};
23 => { -- IsMember
memberOf: CHNameP2V0.ThreePartName;
property: CARD;
secondaryProperty: CARD;
name: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.Item;
agent: CHOpsP2V3.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[CHOpsP2V3.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];
};
21 => { -- DeleteMember
name: CHNameP2V0.ThreePartName;
property: CARD;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.Item;
agent: CHOpsP2V3.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[CHOpsP2V3.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: CHOpsP2V3.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: CHOpsP2V3.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~3];
CrRPC.EnsureListener[class~$SPP];
}...