-- AuthenticationP14V2ServerImpl.Mesa -- Copyright (C) 1986 by Xerox Corporation. All rights reserved. -- Generated by demers.pa at October 7, 1986 9:23:33 am PDT -- using Sirocco [1.0] of September 25, 1986 3:44:23 am PDT DIRECTORY CrRPC, TimeP15V2, CHNameP2V0, AuthenticationP14V2; AuthenticationP14V2ServerImpl: CEDAR PROGRAM IMPORTS CrRPC, AuthenticationP14V2 ~ { OPEN AuthenticationP14V2; Server: CrRPC.ServerProc ~ { -- [h: Handle, pgm: CARD, pgmVersion: CARDINAL, proc: CARDINAL, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc] ENABLE { AuthenticationP14V2.CallError => { -- (1) beginError[h, 1]; CrRPC.PutCARDINAL[h, ORD[problem]]; CrRPC.PutCARDINAL[h, ORD[whichArg]]; GO TO Finished; }; AuthenticationP14V2.AuthenticationError => { -- (2) beginError[h, 2]; CrRPC.PutCARDINAL[h, ORD[problem]]; 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 2 => { -- CheckSimpleCredentials credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; ok: BOOLEAN; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; [ok] _ CheckSimpleCredentials[h, credentials, verifier]; beginReturn[h]; CrRPC.PutBOOL[h, ok]; }; 4 => { -- ChangeStrongKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; newKey: AuthenticationP14V2.Block; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; FOR i0: CARDINAL IN [0..4) DO newKey[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; [] _ ChangeStrongKey[h, credentials, verifier, newKey]; beginReturn[h]; }; 5 => { -- DeleteStrongKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; name: CHNameP2V0.ThreePartName; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; [] _ DeleteStrongKey[h, credentials, verifier, name]; beginReturn[h]; }; 3 => { -- CreateStrongKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; name: CHNameP2V0.ThreePartName; key: AuthenticationP14V2.Block; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; FOR i0: CARDINAL IN [0..4) DO key[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; [] _ CreateStrongKey[h, credentials, verifier, name, key]; beginReturn[h]; }; 7 => { -- ChangeSimpleKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; newKey: CARDINAL; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; newKey _ CrRPC.GetCARDINAL[h]; [] _ ChangeSimpleKey[h, credentials, verifier, newKey]; beginReturn[h]; }; 8 => { -- DeleteSimpleKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; name: CHNameP2V0.ThreePartName; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; [] _ DeleteSimpleKey[h, credentials, verifier, name]; beginReturn[h]; }; 6 => { -- CreateSimpleKey credentials: AuthenticationP14V2.Credentials; verifier: AuthenticationP14V2.SeqWords; name: CHNameP2V0.ThreePartName; key: CARDINAL; credentials.type _ VAL[CrRPC.GetCARDINAL[h]]; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; credentials.value _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO credentials.value.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; verifier _ NEW[AuthenticationP14V2.SeqWordsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO verifier.body[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; }; name.organization _ CrRPC.GetROPE[h]; name.domain _ CrRPC.GetROPE[h]; name.object _ CrRPC.GetROPE[h]; key _ CrRPC.GetCARDINAL[h]; [] _ CreateSimpleKey[h, credentials, verifier, name, key]; beginReturn[h]; }; 1 => { -- GetStrongCredentials initiator: CHNameP2V0.ThreePartName; recipient: CHNameP2V0.ThreePartName; nonce: CARD; encryptedCredentialsPackage: AuthenticationP14V2.SeqWords; initiator.organization _ CrRPC.GetROPE[h]; initiator.domain _ CrRPC.GetROPE[h]; initiator.object _ CrRPC.GetROPE[h]; recipient.organization _ CrRPC.GetROPE[h]; recipient.domain _ CrRPC.GetROPE[h]; recipient.object _ CrRPC.GetROPE[h]; nonce _ CrRPC.GetCARD[h]; [encryptedCredentialsPackage] _ GetStrongCredentials[h, initiator, recipient, nonce]; beginReturn[h]; CrRPC.PutCARDINAL[h, encryptedCredentialsPackage.length]; FOR i0: CARDINAL IN [0..encryptedCredentialsPackage.length) DO CrRPC.PutCARDINAL[h, encryptedCredentialsPackage.body[i0]]; ENDLOOP; }; ENDCASE => { beginReject[h, CrRPC.noSuchProcedure]; }; EXITS Finished => { NULL }; }; CrRPC.RegisterServerProc[pgm~14, serverProc~Server, pgmVersion~2]; CrRPC.EnsureListener[class~$SPP]; }...