<> <> <> <> DIRECTORY CrRPC, TimeP15V2, CHNameP2V0, Rope; AuthenticationP14V2: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; SimpleVerifier: TYPE ~ CARD16; ChangeSimpleKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, newKey: CARD16]; ChangeSimpleKey: ChangeSimpleKeyType; Problem: TYPE ~ MACHINE DEPENDENT { credentialsInvalid(0), verifierInvalid(1), verifierExpired(2), verifierReused(3), credentialsExpired(4), inappropriateCredentials(5)}; CreateStrongKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName, key: Block]; CreateStrongKey: CreateStrongKeyType; AuthenticationErrorType: TYPE ~ ERROR [problem: Problem]; AuthenticationError: AuthenticationErrorType; SimpleCredentials: TYPE ~ CHNameP2V0.ThreePartName; StrongVerifier: TYPE ~ RECORD [ timeStamp: CARD32, ticks: CARD32]; SeqWords: TYPE ~ REF SeqWordsObject; SeqWordsObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARD16 ]; Credentials: TYPE ~ RECORD [ type: CredentialsType, value: SeqWords]; DeleteSimpleKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName]; DeleteSimpleKey: DeleteSimpleKeyType; GetStrongCredentialsType: TYPE ~ PROC [h: CrRPC.Handle, initiator: CHNameP2V0.ThreePartName, recipient: CHNameP2V0.ThreePartName, nonce: CARD32] RETURNS [encryptedCredentialsPackage: SeqWords]; GetStrongCredentials: GetStrongCredentialsType; Which: TYPE ~ MACHINE DEPENDENT { notApplicable(0), initiator(1), recipient(2), client(3)}; CredentialsPackage: TYPE ~ RECORD [ credentials: Credentials, nonce: CARD32, recipient: CHNameP2V0.ThreePartName, conversationKey: Block]; Verifier: TYPE ~ SeqWords; Key: TYPE ~ Block; CheckSimpleCredentialsType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords] RETURNS [ok: BOOLEAN]; CheckSimpleCredentials: CheckSimpleCredentialsType; ChangeStrongKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, newKey: Block]; ChangeStrongKey: ChangeStrongKeyType; StrongCredentials: TYPE ~ RECORD [ conversationKey: Block, expirationTime: CARD32, initiator: CHNameP2V0.ThreePartName]; Block: TYPE ~ ARRAY [0..4) OF CARD16; DeleteStrongKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName]; DeleteStrongKey: DeleteStrongKeyType; CallErrorType: TYPE ~ ERROR [problem: CallProblem, whichArg: Which]; CallError: CallErrorType; HashedPassword: TYPE ~ CARD16; CredentialsType: TYPE ~ MACHINE DEPENDENT { simple(0), strong(1)}; CreateSimpleKeyType: TYPE ~ PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName, key: CARD16]; CreateSimpleKey: CreateSimpleKeyType; CallProblem: TYPE ~ MACHINE DEPENDENT { tooBusy(0), accessRightsInsufficient(1), keysUnavailable(2), strongKeyDoesNotExist(3), simpleKeyDoesNotExist(4), strongKeyAlreadyRegistered(5), simpleKeyAlreadyRegistered(6), domainForNewKeyUnavailable(7), domainForNewKeyUnknown(8), badKey(9), badName(10), databaseFull(11), other(12)}; }...