<> <> DIRECTORY AuthenticationP14V2 USING [CallProblem, Credentials, CredentialsType, HashedPassword, Key, Problem, Verifier, Which], BasicTime USING [GMT], CHNameP2V0 USING [Name], Rope USING [ROPE], XNS USING [Host, unknownHost] ; XNSAuth: CEDAR DEFINITIONS ~ { OPEN Auth: AuthenticationP14V2, CHName: CHNameP2V0; <> <> <> ROPE: TYPE ~ Rope.ROPE; GMT: TYPE ~ BasicTime.GMT; Name: TYPE ~ CHName.Name; HostNumber: TYPE ~ XNS.Host; CredentialsType: TYPE ~ Auth.CredentialsType; Credentials: TYPE ~ Auth.Credentials; Verifier: TYPE ~ Auth.Verifier; HashedPassword: TYPE ~ Auth.HashedPassword; Key: TYPE ~ Auth.Key; <> AuthenticationError: VAR ERROR [problem: Auth.Problem]; <<~ Auth.AuthenticationError;>> CallError: VAR ERROR[problem: Auth.CallProblem, whichArg: Auth.Which]; <<~ Auth.CallError;>> Problem: TYPE ~ Auth.Problem; CallProblem: TYPE ~ Auth.CallProblem; Which: TYPE ~ Auth.Which; BadIdentity: ERROR; BadConversation: ERROR; <> Identity: TYPE ~ REF; MakeIdentity: PROC[name: Name, password: ROPE, credentialsType: CredentialsType _ strong, check: BOOL _ TRUE] RETURNS [identity: Identity]; MakeStrongIdentityUsingKey: PROC[name: Name, key: Key, check: BOOL _ TRUE] RETURNS [identity: Identity]; <> Conversation: TYPE ~ REF; Initiate: PROC [identity: Identity, recipientName: Name] RETURNS [conversation: Conversation]; Refresh: PROC [conversation: Conversation]; Terminate: PROC [conversation: Conversation]; GetCredentials: PROC [conversation: Conversation] RETURNS [credentials: Credentials]; SetRecipientHostNumber: PROC [conversation: Conversation, recipientHostNumber: HostNumber _ XNS.unknownHost]; GetNextVerifier: PROC [conversation: Conversation] RETURNS [verifier: Verifier]; ReplyVerifierChecks: PROC [conversation: Conversation, verifier: Verifier] RETURNS [ok: BOOL]; <> Authenticate: PROC [myIdentity: Identity, hisCredentials: Credentials, hisVerifier: Verifier] RETURNS [hisName: Name]; AuthenticateWithExpiredCredentials: PROC [myIdentity: Identity, hisCredentials: Credentials, hisVerifier: Verifier] RETURNS [hisName: Name]; AuthenticateAndReply: PROC [myIdentity: Identity, hisCredentials: Credentials, hisVerifier: Verifier] RETURNS [hisName: Name, replyVerifier: Verifier]; <> ChangeMyPasswords: PROC [identity: Identity, newPassword: ROPE, changeStrong: BOOL _ TRUE, changeSimple: BOOL _ TRUE]; CreateStrongKey: PROC [identity: Identity, name: Name, newKey: Key]; ChangeMyStrongKey: PROC [identity: Identity, newKey: Key]; DeleteStrongKey: PROC [identity: Identity, name: Name]; CreateSimpleKey: PROC [identity: Identity, name: Name, newKey: HashedPassword]; ChangeMySimpleKey: PROC [identity: Identity, newKey: HashedPassword]; DeleteSimpleKey: PROC [identity: Identity, name: Name]; <> StrongKeyFromPassword: PROC [password: ROPE] RETURNS [key: Key]; GetRandomStrongKey: PROC RETURNS [key: Key]; SimpleKeyFromPassword: PROC [password: ROPE] RETURNS [HashedPassword]; GetCredentialsType: PROC [credentials: Credentials] RETURNS [CredentialsType]; GetConversationDetails: PROC [conversation: Conversation] RETURNS [ recipientName: Name, recipientHostNumber: HostNumber, credentials: Credentials, conversationKey: Key, owner: Identity]; GetIdentityDetails: PROC [identity: Identity] RETURNS [ name: Name, password: ROPE, credentialsType: CredentialsType]; GetCredentialsDetails: PROC [myKey: Key, hisCredentials: Credentials] RETURNS [ ok: BOOL, credentialsType: CredentialsType, conversationKey: Key, expirationTime: GMT, hisName: Name]; }.