<> <> <> <> DIRECTORY Rope USING[ ROPE ], RPC USING [EncryptionKey, MakeKey], Target USING[ Reason ], TargetRpcControl USING[ ExportInterface ], UserCredentials USING[ Get]; TargetImpl: CEDAR PROGRAM IMPORTS RPC, TargetRpcControl, UserCredentials EXPORTS Target = BEGIN user: Rope.ROPE; password: Rope.ROPE; key: RPC.EncryptionKey; Basic: PUBLIC PROC = { NULL }; Simple: PUBLIC PROC[first: INT, second: REF INT] RETURNS[a: Rope.ROPE, b: ATOM] = { RETURN["Hello", $anAtom] }; Exception: PUBLIC ERROR[why: Target.Reason] = CODE; Consultation: PUBLIC SIGNAL = CODE; [user, password] _ UserCredentials.Get[]; key _ RPC.MakeKey[password]; TargetRpcControl.ExportInterface[interfaceName: [instance: user], user: user, password: key]; END.