AuthenticationP14V2ServerImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Demers.pa at November 22, 1986 2:18:31 pm PST
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];
}...