(1) usertype TimeStamp,Data,Request,Key; |
(2) hashfunction H; |
(3) macro hash1=H(Req,T1); % hash the request and time stamp 1 |
(4) macro hashofdata=H(OR); % hash the result |
(5) macro hashoftime=H(T2); % hash the request and time stamp 2 |
(6) protocol MyProtocol(Owner, ServiceProvider) |
(7) role Owner fresh kir:Key; % generate session key |
(8) fresh T1:TimeStamp; % generate time stamp 1 |
(9) var T2:TimeStamp; % prepare variable to receive time stamp 2 |
(10) const Req:Request; % generate request |
(11) var OR:Data; % prepare variable to receive result |
(12) , |
(13) ,; |
(14) , |
(15) ; |
(16) ; % generate hash of received result |
(17) ; % generate hash of received timestamp |
(18) ; % compare hashes |
(19) ; |
(20) ; |
(21) ; % test Claims |
(22) ; |
(23) ; |
(24) ; |
(25) ; |
(26) ; |
(27) ; |
(28) ; |
(29) |
(30) role ServiceProvider |
(31) fresh OR:Data; % generate result |
(32) var kir:Key; % prepare variable to receive session key |
(33) fresh T2:TimeStamp; % generate time stamp 2 |
(34) var T1:TimeStamp; % prepare variable to receive time stamp 1 |
(35) var Req:Request; % prepare variable to receive request |
(36) , |
(37) , ; |
(38) macro h2=H(Req,T1); % generate hash of received request and time stamp 1 |
(39) match (hash1,h2); % compare hashes |
(40) , |
(41) , ; |
(42) ; % test claims |
(43) ; |
(44) ; |
(45) ; |
(46) ; |
(47) ; |
(48) ; |
(49) ; |
(50) |