@@ -48,6 +48,68 @@ describe('CAT', () => {
4848 } ) ;
4949 } ) ;
5050
51+ test ( 'can generate a token from a JSON object and verify it' , async ( ) => {
52+ const generator = new CAT ( {
53+ keys : {
54+ Symmetric256 : Buffer . from (
55+ '403697de87af64611c1d32a05dab0fe1fcb715a86ab435f1ec99192d79569388' ,
56+ 'hex'
57+ )
58+ }
59+ } ) ;
60+ const base64encoded = await generator . generateFromJson (
61+ {
62+ iss : 'coap://as.example.com' ,
63+ exp : Math . floor ( Date . now ( ) / 1000 ) + 60 ,
64+ catr : {
65+ type : 'header' ,
66+ 'header-name' : 'cta-common-access-token' ,
67+ expadd : 120 ,
68+ deadline : 60
69+ } ,
70+ catu : {
71+ scheme : {
72+ 'exact-match' : 'https'
73+ }
74+ }
75+ } ,
76+ {
77+ type : 'mac' ,
78+ alg : 'HS256' ,
79+ kid : 'Symmetric256'
80+ }
81+ ) ;
82+ const validator = new CAT ( {
83+ keys : {
84+ Symmetric256 : Buffer . from (
85+ '403697de87af64611c1d32a05dab0fe1fcb715a86ab435f1ec99192d79569388' ,
86+ 'hex'
87+ )
88+ }
89+ } ) ;
90+ const result = await validator . validate ( base64encoded ! , 'mac' , {
91+ issuer : 'coap://as.example.com' ,
92+ url : new URL ( 'https://example.com' )
93+ } ) ;
94+ expect ( result . error ) . not . toBeDefined ( ) ;
95+ expect ( result . cat ) . toBeDefined ( ) ;
96+ expect ( result . cat ! . claims ) . toEqual ( {
97+ iss : 'coap://as.example.com' ,
98+ catr : {
99+ deadline : 60 ,
100+ expadd : 120 ,
101+ 'header-name' : 'cta-common-access-token' ,
102+ type : 'header'
103+ } ,
104+ catu : {
105+ scheme : {
106+ 'exact-match' : 'https'
107+ }
108+ } ,
109+ exp : expect . any ( Number )
110+ } ) ;
111+ } ) ;
112+
51113 test ( 'can validate a MAC:ed token with standard claims' , async ( ) => {
52114 const base64encoded =
53115 '0YRDoQEFoQRMU3ltbWV0cmljMjU2eDZkOTAxMDNhMTAxNzU2MzZmNjE3MDNhMmYyZjYxNzMyZTY1Nzg2MTZkNzA2YzY1MmU2MzZmNmRYIDL8dIteq8pMXXX9oL4eo2NX1kQUaselV6p/JHSEVXWX' ;
0 commit comments