PHP 8.2.30
Preview: utils-legacy.js Size: 1.19 KB
//proc/thread-self/root/home/byroehnu/.trash/node_modules11/pg/lib/crypto/utils-legacy.js

'use strict'
// This file contains crypto utility functions for versions of Node.js < 15.0.0,
// which does not support the WebCrypto.subtle API.

const nodeCrypto = require('crypto')

function md5(string) {
  return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')
}

// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html
function postgresMd5PasswordHash(user, password, salt) {
  const inner = md5(password + user)
  const outer = md5(Buffer.concat([Buffer.from(inner), salt]))
  return 'md5' + outer
}

function sha256(text) {
  return nodeCrypto.createHash('sha256').update(text).digest()
}

function hashByName(hashName, text) {
  hashName = hashName.replace(/(\D)-/, '$1') // e.g. SHA-256 -> SHA256
  return nodeCrypto.createHash(hashName).update(text).digest()
}

function hmacSha256(key, msg) {
  return nodeCrypto.createHmac('sha256', key).update(msg).digest()
}

async function deriveKey(password, salt, iterations) {
  return nodeCrypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256')
}

module.exports = {
  postgresMd5PasswordHash,
  randomBytes: nodeCrypto.randomBytes,
  deriveKey,
  sha256,
  hashByName,
  hmacSha256,
  md5,
}

Directory Contents

Dirs: 0 × Files: 5

Name Size Perms Modified Actions
4.00 KB lrw-r--r-- 2026-02-03 15:06:14
Edit Download
7.25 KB lrw-r--r-- 2026-02-03 15:06:18
Edit Download
1.19 KB lrw-r--r-- 2026-02-03 15:06:18
Edit Download
2.59 KB lrw-r--r-- 2026-02-03 15:06:18
Edit Download
341 B lrw-r--r-- 2026-02-03 15:06:18
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).