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)
};
}...