XNSAuth.mesa
Demers, October 3, 1986 1:20:02 pm PDT
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;
Introduction
This interface is copied almost verbatim from Services 8.0. Refer to the Services 8.0 Prograammer's Guide for details.
Copied Types
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;
Errors
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;
Identities
Identity: TYPE ~ REF;
MakeIdentity: PROC[name: Name, password: ROPE,
credentialsType: CredentialsType ← strong, check: BOOLTRUE]
RETURNS [identity: Identity];
MakeStrongIdentityUsingKey: PROC[name: Name, key: Key, check: BOOLTRUE]
RETURNS [identity: Identity];
Initiator
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];
Recipient
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];
Key and password administration
ChangeMyPasswords: PROC [identity: Identity, newPassword: ROPE,
changeStrong: BOOLTRUE, changeSimple: BOOLTRUE];
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];
Utilities
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];
}.