1 line
8.7 KiB
JSON
1 line
8.7 KiB
JSON
{"ast":null,"code":"// Copyright 2012 Joyent, Inc. All rights reserved.\nvar assert = require('assert-plus');\n\nvar sshpk = require('sshpk');\n\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace) Error.captureStackTrace(this, caller || HttpSignatureError);\n this.message = message;\n this.name = caller.name;\n}\n\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\n\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + 'valid algorithm');\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + 'are not supported');\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + 'supported hash algorithm');\n }\n\n return alg;\n} ///--- API\n\n\nmodule.exports = {\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n var k = sshpk.parseKey(key, 'ssh');\n return k.toString('pem');\n },\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n var k = sshpk.parseKey(key, 'ssh');\n return k.fingerprint('md5').toString('hex');\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof pem, 'typeof pem');\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return k.toString('ssh');\n }\n};","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/http-signature/lib/utils.js"],"names":["assert","require","sshpk","util","HASH_ALGOS","PK_ALGOS","HttpSignatureError","message","caller","Error","captureStackTrace","name","inherits","InvalidAlgorithmError","call","validateAlgorithm","algorithm","alg","toLowerCase","split","length","toUpperCase","module","exports","sshKeyToPEM","key","string","k","parseKey","toString","fingerprint","pemToRsaSSHKey","pem","comment","equal"],"mappings":"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","sourcesContent":["// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar sshpk = require('sshpk');\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\n\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, caller || HttpSignatureError);\n\n this.message = message;\n this.name = caller.name;\n}\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +\n 'valid algorithm'));\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +\n 'are not supported'));\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +\n 'supported hash algorithm'));\n }\n\n return (alg);\n}\n\n///--- API\n\nmodule.exports = {\n\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.toString('pem'));\n },\n\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.fingerprint('md5').toString('hex'));\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof (pem), 'typeof pem');\n\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return (k.toString('ssh'));\n }\n};\n"]},"metadata":{},"sourceType":"script"} |