<> <> <> <> DIRECTORY Convert, Rope, AuthenticationP14V2, AuthenticationP14V2Aux, CHNameP2V0Aux; AuthenticationP14V2AuxImpl: CEDAR PROGRAM IMPORTS Convert, Rope, CHNameP2V0Aux EXPORTS AuthenticationP14V2Aux ~ { OPEN AuthenticationP14V2, AuthenticationP14V2Aux; ROPE: TYPE ~ Rope.ROPE; ExposeSeqWords: PUBLIC PROC [arg: SeqWords, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; FOR i: CARDINAL IN [0..arg.length) DO res _ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg.body[i]]]; ENDLOOP; res _ Rope.Concat[res, "]"]; }; ExposeBlock: PUBLIC PROC [arg: Block, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; FOR i: CARDINAL IN [0..4) DO res _ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg[i]]]; ENDLOOP; res _ Rope.Concat[res, "]"]; }; ExposeCredentialsPackage: PUBLIC PROC [arg: CredentialsPackage, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; res _ Rope.Cat[res, "credentials~", ExposeCredentials[arg.credentials, (level+1)], ", "]; res _ Rope.Cat[res, "nonce~", Convert.RopeFromCard[arg.nonce], ", "]; res _ Rope.Cat[res, "recipient~", CHNameP2V0Aux.ExposeThreePartName[arg.recipient, (level+1)], ", "]; res _ Rope.Cat[res, "conversationKey~", ExposeBlock[arg.conversationKey, (level+1)], "]"]; }; ExposeStrongVerifier: PUBLIC PROC [arg: StrongVerifier, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; res _ Rope.Cat[res, "timeStamp~", Convert.RopeFromCard[arg.timeStamp], ", "]; res _ Rope.Cat[res, "ticks~", Convert.RopeFromCard[arg.ticks], "]"]; }; ExposeCredentialsType: PUBLIC PROC [arg: CredentialsType, level: NAT] RETURNS [res: ROPE] ~ { SELECT arg FROM simple => res _ "simple"; strong => res _ "strong"; ENDCASE => ERROR }; ExposeCallProblem: PUBLIC PROC [arg: CallProblem, level: NAT] RETURNS [res: ROPE] ~ { SELECT arg FROM tooBusy => res _ "tooBusy"; accessRightsInsufficient => res _ "accessRightsInsufficient"; keysUnavailable => res _ "keysUnavailable"; strongKeyDoesNotExist => res _ "strongKeyDoesNotExist"; simpleKeyDoesNotExist => res _ "simpleKeyDoesNotExist"; strongKeyAlreadyRegistered => res _ "strongKeyAlreadyRegistered"; simpleKeyAlreadyRegistered => res _ "simpleKeyAlreadyRegistered"; domainForNewKeyUnavailable => res _ "domainForNewKeyUnavailable"; domainForNewKeyUnknown => res _ "domainForNewKeyUnknown"; badKey => res _ "badKey"; badName => res _ "badName"; databaseFull => res _ "databaseFull"; other => res _ "other"; ENDCASE => ERROR }; ExposeStrongCredentials: PUBLIC PROC [arg: StrongCredentials, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; res _ Rope.Cat[res, "conversationKey~", ExposeBlock[arg.conversationKey, (level+1)], ", "]; res _ Rope.Cat[res, "expirationTime~", Convert.RopeFromCard[arg.expirationTime], ", "]; res _ Rope.Cat[res, "initiator~", CHNameP2V0Aux.ExposeThreePartName[arg.initiator, (level+1)], "]"]; }; ExposeWhich: PUBLIC PROC [arg: Which, level: NAT] RETURNS [res: ROPE] ~ { SELECT arg FROM notApplicable => res _ "notApplicable"; initiator => res _ "initiator"; recipient => res _ "recipient"; client => res _ "client"; ENDCASE => ERROR }; ExposeCredentials: PUBLIC PROC [arg: Credentials, level: NAT] RETURNS [res: ROPE] ~ { res _ "["; res _ Rope.Cat[res, "type~", ExposeCredentialsType[arg.type, (level+1)], ", "]; res _ Rope.Cat[res, "value~", ExposeSeqWords[arg.value, (level+1)], "]"]; }; ExposeProblem: PUBLIC PROC [arg: Problem, level: NAT] RETURNS [res: ROPE] ~ { SELECT arg FROM credentialsInvalid => res _ "credentialsInvalid"; verifierInvalid => res _ "verifierInvalid"; verifierExpired => res _ "verifierExpired"; verifierReused => res _ "verifierReused"; credentialsExpired => res _ "credentialsExpired"; inappropriateCredentials => res _ "inappropriateCredentials"; ENDCASE => ERROR }; }...