@@ -6,13 +6,13 @@ var jws = require('jws');
6
6
var sign_options_schema = Joi . object ( ) . keys ( {
7
7
expiresIn : [ Joi . number ( ) . integer ( ) , Joi . string ( ) ] ,
8
8
notBefore : [ Joi . number ( ) . integer ( ) , Joi . string ( ) ] ,
9
- audience : [ Joi . string ( ) , Joi . array ( ) ] ,
10
- algorithm : Joi . string ( ) . valid ( 'RS256' , 'RS384' , 'RS512' , 'ES256' , 'ES384' , 'ES512' , 'HS256' , 'HS384' , 'HS512' , 'none' ) ,
11
- header : Joi . object ( ) ,
12
- encoding : Joi . string ( ) ,
13
- issuer : Joi . string ( ) ,
14
- subject : Joi . string ( ) ,
15
- jwtid : Joi . string ( ) ,
9
+ audience : [ Joi . string ( ) , Joi . array ( ) ] ,
10
+ algorithm : Joi . string ( ) . valid ( 'RS256' , 'RS384' , 'RS512' , 'ES256' , 'ES384' , 'ES512' , 'HS256' , 'HS384' , 'HS512' , 'none' ) ,
11
+ header : Joi . object ( ) ,
12
+ encoding : Joi . string ( ) ,
13
+ issuer : Joi . string ( ) ,
14
+ subject : Joi . string ( ) ,
15
+ jwtid : Joi . string ( ) ,
16
16
noTimestamp : Joi . boolean ( )
17
17
} ) ;
18
18
@@ -25,9 +25,9 @@ var registered_claims_schema = Joi.object().keys({
25
25
26
26
var options_to_payload = {
27
27
'audience' : 'aud' ,
28
- 'issuer' : 'iss' ,
29
- 'subject' : 'sub' ,
30
- 'jwtid' : 'jti'
28
+ 'issuer' : 'iss' ,
29
+ 'subject' : 'sub' ,
30
+ 'jwtid' : 'jti'
31
31
} ;
32
32
33
33
var options_for_objects = [
@@ -40,15 +40,15 @@ var options_for_objects = [
40
40
'jwtid' ,
41
41
] ;
42
42
43
- module . exports = function ( payload , secretOrPrivateKey , options , callback ) {
43
+ module . exports = function ( payload , secretOrPrivateKey , options , callback ) {
44
44
options = options || { } ;
45
45
46
46
var header = xtend ( {
47
47
alg : options . algorithm || 'HS256' ,
48
48
typ : typeof payload === 'object' ? 'JWT' : undefined
49
49
} , options . header ) ;
50
50
51
- function failure ( err ) {
51
+ function failure ( err ) {
52
52
if ( callback ) {
53
53
return callback ( err ) ;
54
54
}
@@ -71,7 +71,7 @@ module.exports = function(payload, secretOrPrivateKey, options, callback) {
71
71
} ) ;
72
72
73
73
if ( invalid_options . length > 0 ) {
74
- return failure ( new Error ( 'invalid ' + invalid_options . join ( ',' ) + ' option for ' + ( typeof payload ) + ' payload' ) ) ;
74
+ return failure ( new Error ( 'invalid ' + invalid_options . join ( ',' ) + ' option for ' + ( typeof payload ) + ' payload' ) ) ;
75
75
}
76
76
}
77
77
@@ -86,7 +86,7 @@ module.exports = function(payload, secretOrPrivateKey, options, callback) {
86
86
var validation_result = sign_options_schema . validate ( options ) ;
87
87
88
88
if ( validation_result . error ) {
89
- return failure ( validation_result . error ) ;
89
+ return failure ( validation_result . error ) ;
90
90
}
91
91
92
92
var timestamp = payload . iat || Math . floor ( Date . now ( ) / 1000 ) ;
@@ -105,7 +105,7 @@ module.exports = function(payload, secretOrPrivateKey, options, callback) {
105
105
}
106
106
107
107
if ( typeof options . expiresIn !== 'undefined' && typeof payload === 'object' ) {
108
- payload . exp = timespan ( options . expiresIn ) ;
108
+ payload . exp = timespan ( options . expiresIn , timestamp ) ;
109
109
if ( typeof payload . exp === 'undefined' ) {
110
110
return failure ( new Error ( '"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60' ) ) ;
111
111
}
@@ -123,17 +123,17 @@ module.exports = function(payload, secretOrPrivateKey, options, callback) {
123
123
124
124
var encoding = options . encoding || 'utf8' ;
125
125
126
- if ( typeof callback === 'function' ) {
126
+ if ( typeof callback === 'function' ) {
127
127
jws . createSign ( {
128
128
header : header ,
129
129
privateKey : secretOrPrivateKey ,
130
130
payload : JSON . stringify ( payload ) ,
131
131
encoding : encoding
132
132
} )
133
- . once ( 'error' , callback )
134
- . once ( 'done' , function ( signature ) {
135
- callback ( null , signature ) ;
136
- } ) ;
133
+ . once ( 'error' , callback )
134
+ . once ( 'done' , function ( signature ) {
135
+ callback ( null , signature ) ;
136
+ } ) ;
137
137
} else {
138
138
return jws . sign ( { header : header , payload : payload , secret : secretOrPrivateKey , encoding : encoding } ) ;
139
139
}
0 commit comments