<> <> <> <> DIRECTORY CrRPC, TimeP15V2, CHNameP2V0, Rope; AuthenticationP14V2: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; SimpleVerifier: TYPE ~ CARDINAL; ChangeSimpleKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, newKey: CARDINAL]; Problem: TYPE ~ MACHINE DEPENDENT { credentialsInvalid(0), verifierInvalid(1), verifierExpired(2), verifierReused(3), credentialsExpired(4), inappropriateCredentials(5) }; CreateStrongKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName, key: Block]; AuthenticationError: ERROR [problem: Problem]; SimpleCredentials: TYPE ~ RECORD [ organization: ROPE, domain: ROPE, object: ROPE ]; StrongVerifier: TYPE ~ RECORD [ timeStamp: CARD, ticks: CARD ]; SeqWords: TYPE ~ REF SeqWordsObject; SeqWordsObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARDINAL ]; Credentials: TYPE ~ RECORD [ type: CredentialsType, value: SeqWords ]; DeleteSimpleKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName]; GetStrongCredentials: PROC [h: CrRPC.Handle, initiator: CHNameP2V0.ThreePartName, recipient: CHNameP2V0.ThreePartName, nonce: CARD] RETURNS [encryptedCredentialsPackage: SeqWords]; Which: TYPE ~ MACHINE DEPENDENT { notApplicable(0), initiator(1), recipient(2), client(3) }; CredentialsPackage: TYPE ~ RECORD [ credentials: Credentials, nonce: CARD, recipient: CHNameP2V0.ThreePartName, conversationKey: Block ]; Verifier: TYPE ~ SeqWords; Key: TYPE ~ Block; CheckSimpleCredentials: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords] RETURNS [ok: BOOLEAN]; ChangeStrongKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, newKey: Block]; StrongCredentials: TYPE ~ RECORD [ conversationKey: Block, expirationTime: CARD, initiator: CHNameP2V0.ThreePartName ]; Block: TYPE ~ ARRAY [0..4) OF CARDINAL; DeleteStrongKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName]; CallError: ERROR [problem: CallProblem, whichArg: Which]; HashedPassword: TYPE ~ CARDINAL; CredentialsType: TYPE ~ MACHINE DEPENDENT { simple(0), strong(1) }; CreateSimpleKey: PROC [h: CrRPC.Handle, credentials: Credentials, verifier: SeqWords, name: CHNameP2V0.ThreePartName, key: CARDINAL]; 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) }; }...