Update gitignore (sorry)
This commit is contained in:
parent
a8f8c4d7ad
commit
cca8b02fea
6604 changed files with 1219661 additions and 4 deletions
62
electron/node_modules/asar/lib/integrity.js
generated
vendored
Normal file
62
electron/node_modules/asar/lib/integrity.js
generated
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
const crypto = require('crypto')
|
||||
const fs = require('fs')
|
||||
const stream = require('stream')
|
||||
const { promisify } = require('util')
|
||||
|
||||
const ALGORITHM = 'SHA256'
|
||||
// 4MB default block size
|
||||
const BLOCK_SIZE = 4 * 1024 * 1024
|
||||
|
||||
const pipeline = promisify(stream.pipeline)
|
||||
|
||||
function hashBlock (block) {
|
||||
return crypto.createHash(ALGORITHM).update(block).digest('hex')
|
||||
}
|
||||
|
||||
async function getFileIntegrity (path) {
|
||||
const fileHash = crypto.createHash(ALGORITHM)
|
||||
|
||||
const blocks = []
|
||||
let currentBlockSize = 0
|
||||
let currentBlock = []
|
||||
|
||||
await pipeline(
|
||||
fs.createReadStream(path),
|
||||
new stream.PassThrough({
|
||||
decodeStrings: false,
|
||||
transform (_chunk, encoding, callback) {
|
||||
fileHash.update(_chunk)
|
||||
|
||||
function handleChunk (chunk) {
|
||||
const diffToSlice = Math.min(BLOCK_SIZE - currentBlockSize, chunk.byteLength)
|
||||
currentBlockSize += diffToSlice
|
||||
currentBlock.push(chunk.slice(0, diffToSlice))
|
||||
if (currentBlockSize === BLOCK_SIZE) {
|
||||
blocks.push(hashBlock(Buffer.concat(currentBlock)))
|
||||
currentBlock = []
|
||||
currentBlockSize = 0
|
||||
}
|
||||
if (diffToSlice < chunk.byteLength) {
|
||||
handleChunk(chunk.slice(diffToSlice))
|
||||
}
|
||||
}
|
||||
handleChunk(_chunk)
|
||||
callback()
|
||||
},
|
||||
flush (callback) {
|
||||
blocks.push(hashBlock(Buffer.concat(currentBlock)))
|
||||
currentBlock = []
|
||||
callback()
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
return {
|
||||
algorithm: ALGORITHM,
|
||||
hash: fileHash.digest('hex'),
|
||||
blockSize: BLOCK_SIZE,
|
||||
blocks: blocks
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = getFileIntegrity
|
||||
Loading…
Add table
Add a link
Reference in a new issue