Dear list, I have the following sample: \startluacode function document.capture(cmd, raw) local f = assert(io.popen(cmd, 'r')) local s = assert(f:read('*a')) f:close() if raw then return s end s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end function document.sha512(file) command_output= document.capture("sha512sum -b " .. file) context(command_output:sub(0,8)) end \stopluacode \def\shafive#1{\ctxlua{document.sha512("#1")}} \doif{\luaversion}{5.3}{\ctxlua{require("util-sha")}} \def\hashfive#1{% \ctxlua{context( utilities.sha2.hash512("#1"):sub(0,8))}} \def\hashfivefile#1{% \ctxlua{context( utilities.sha2.hash512(io.loaddata("#1")):sub(0,8))}} \def\cB{i-context.pdf} \starttext \startTEXpage[offset=2em] \tt i-context.pdf\ss: \doifelse{\luaversion}{5.3} {\hashfivefile{\cB}\\ {\rm text: }\hashfive{\cB}} {\shafive{\cB}} \stopTEXpage \stoptext Just accidentally, I discovered today (using latest beta from 2019.02.26 20:04) that file hashing may be wrong in ConTeXt. For the sake of brevity, I only use the 8 first chars. "sha512sum i-context.pdf" gives c4cc3840. Using luajittex, I get that result. But using Lua 5.3 (and util-sha.lua), I get 44241e9d. I don’t know whether my invocation of io.loaddata is wrong, since the SHA512 for the text "i-context.pdf" is 2ac2778b, which is the same result as https://duckduckgo.com/?q=sha512+i-context.pdf. After discovering that io.loaddata is from l-io.lua, I don’t know what I may be doing wrong. This is an essential feature for me in ConTeXt, since it is the way of showing the integrity of the attached files to a PDF document (mainly digitally signed documents). Could anyone tell me what I am missing here? Many thanks for your help, Pablo -- http://www.ousia.tk