| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/happymandarin/node_modules/hpkp/ |
Upload File : |
var badArgumentsError = new Error('hpkp must be called with a maxAge and at least two SHA-256s (one actually used and another kept as a backup).')
module.exports = function hpkp (passedOptions) {
var options = parseOptions(passedOptions)
var headerKey = getHeaderKey(options)
var headerValue = getHeaderValue(options)
return function hpkp (req, res, next) {
var setHeader = true
var setIf = options.setIf
if (setIf) {
setHeader = setIf(req, res)
}
if (setHeader) {
res.setHeader(headerKey, headerValue)
}
next()
}
}
function parseOptions (options) {
if (!options) { throw badArgumentsError }
if (options.maxage && options.maxAge) { throw badArgumentsError }
var maxAge = options.maxAge
var sha256s = options.sha256s
var setIf = options.setIf
if (!maxAge || maxAge <= 0) { throw badArgumentsError }
if (!sha256s || sha256s.length < 2) { throw badArgumentsError }
if (setIf && (typeof setIf !== 'function')) {
throw new TypeError('setIf must be a function.')
}
if (options.reportOnly && !options.reportUri) { throw badArgumentsError }
return {
maxAge: maxAge,
sha256s: sha256s,
includeSubDomains: options.includeSubDomains || options.includeSubdomains,
reportUri: options.reportUri,
reportOnly: options.reportOnly,
setIf: setIf
}
}
function getHeaderKey (options) {
var header = 'Public-Key-Pins'
if (options.reportOnly) {
header += '-Report-Only'
}
return header
}
function getHeaderValue (options) {
var result = options.sha256s.map(function (sha) {
return 'pin-sha256="' + sha + '"'
})
result.push('max-age=' + Math.round(options.maxAge / 1000))
if (options.includeSubDomains) {
result.push('includeSubDomains')
}
if (options.reportUri) {
result.push('report-uri="' + options.reportUri + '"')
}
return result.join('; ')
}