{ "version": 3, "sources": ["../../../server/verifier.ts"], "sourcesContent": ["/**\r\n * Verifier process\r\n * Pokemon Showdown - http://pokemonshowdown.com/\r\n *\r\n * This is just an asynchronous implementation of a verifier for a\r\n * signed key, because Node.js's crypto functions are synchronous,\r\n * strangely, considering how everything else is asynchronous.\r\n *\r\n * I wrote this one day hoping it would help with performance, but\r\n * I don't think it had any noticeable effect.\r\n *\r\n * @license MIT\r\n */\r\nimport * as crypto from 'crypto';\r\n\r\nimport {QueryProcessManager} from '../lib/process-manager';\r\n\r\nexport const PM = new QueryProcessManager<{data: string, signature: string}, boolean>(module, ({data, signature}) => {\r\n\tconst verifier = crypto.createVerify(Config.loginserverkeyalgo);\r\n\tverifier.update(data);\r\n\tlet success = false;\r\n\ttry {\r\n\t\tsuccess = verifier.verify(Config.loginserverpublickey, signature, 'hex');\r\n\t} catch {}\r\n\r\n\treturn success;\r\n});\r\n\r\nexport function verify(data: string, signature: string): Promise {\r\n\treturn PM.query({data, signature});\r\n}\r\n\r\nif (!PM.isParentProcess) {\r\n\t// This is a child process!\r\n\tglobal.Config = require('./config-loader').Config;\r\n\r\n\tconst Repl = require('../lib/repl').Repl;\r\n\t// eslint-disable-next-line no-eval\r\n\tRepl.start('verifier', (cmd: string) => eval(cmd));\r\n} else {\r\n\tPM.spawn(global.Config ? Config.verifierprocesses : 1);\r\n}\r\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,aAAwB;AAExB,6BAAkC;AAflC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,MAAM,KAAK,IAAI,2CAAgE,QAAQ,CAAC,EAAC,MAAM,UAAS,MAAM;AACpH,QAAM,WAAW,OAAO,aAAa,OAAO,kBAAkB;AAC9D,WAAS,OAAO,IAAI;AACpB,MAAI,UAAU;AACd,MAAI;AACH,cAAU,SAAS,OAAO,OAAO,sBAAsB,WAAW,KAAK;AAAA,EACxE,QAAE;AAAA,EAAO;AAET,SAAO;AACR,CAAC;AAEM,SAAS,OAAO,MAAc,WAAqC;AACzE,SAAO,GAAG,MAAM,EAAC,MAAM,UAAS,CAAC;AAClC;AAEA,IAAI,CAAC,GAAG,iBAAiB;AAExB,SAAO,SAAS,QAAQ,iBAAiB,EAAE;AAE3C,QAAM,OAAO,QAAQ,aAAa,EAAE;AAEpC,OAAK,MAAM,YAAY,CAAC,QAAgB,KAAK,GAAG,CAAC;AAClD,OAAO;AACN,KAAG,MAAM,OAAO,SAAS,OAAO,oBAAoB,CAAC;AACtD;", "names": [] }