whatever whenever
^D
http://paster.example.com/4KEOLWCZY5CBVWDNT5TA.txt
-SHA512/2: 28d95ef0e8d6a4f4222d0e7eb2a23777aa99efb0794e535a0f4a55490705438f
+BLAKE3-256: e5f9c87b75b2060895e95b69d8d845fc46f3ec7b89f0641519c930005c694077
@end example
@item With overriden file extension
@example
$ paster webp < some-image.webp
http://paster.example.com/KO5O7SJTUGBORVGOZBSA.webp
-SHA512/2: 7f53424fe50f1d70fa32763cde31335dc82fd63c975e8ab95f0bb4a6cd94fb1c
+BLAKE3-256: 7f53424fe50f1d70fa32763cde31335dc82fd63c975e8ab95f0bb4a6cd94fb1c
@end example
@item With file extension taken from the specified path. Daemon is run
http://paster.example.com/O6D2O3N5HPH63ZFIYF4A.webp
https://paster.example.com/O6D2O3N5HPH63ZFIYF4A.webp
ftp://paster.example.com/pub/pastes/O6D2O3N5HPH63ZFIYF4A.webp
-SHA512/2: 2ffe10846ec637d29ab9145b98c3699653c01910bb6d9e00e41f7fe02c5882a8
+BLAKE3-256: 2ffe10846ec637d29ab9145b98c3699653c01910bb6d9e00e41f7fe02c5882a8
@end example
@item
@example
$ paster path/to/ascii.cast
http://paster.example.com/ST4LOKGUISMACAAFC4CA.cast
-SHA512/2: 171e39f35b58b39f0bc2f3def59955d6573756374584d5443afa16d31032fdf3
+BLAKE3-256: 171e39f35b58b39f0bc2f3def59955d6573756374584d5443afa16d31032fdf3
http://paster.example.com/ST4LOKGUISMACAAFC4CA.cast.html
@end example
@item Newline is appended for @file{.txt}/@file{.url} pastes, if it is missing
-@item SHA512/2 checksum is sent back to you, for integrity checking
+@item BLAKE3-256 checksum is sent back to you, for integrity checking
@item Intended to be run as a @url{https://cr.yp.to/ucspi-tcp.html, UCSPI-TCP}
service @url{http://cr.yp.to/daemontools.html, daemontools}-like supervisor
go 1.17
-require go.cypherpunks.ru/netstring/v2 v2.4.0
+require (
+ go.cypherpunks.ru/netstring/v2 v2.4.0
+ lukechampine.com/blake3 v1.1.7
+)
+
+require (
+ github.com/klauspost/cpuid/v2 v2.2.4 // indirect
+ golang.org/x/sys v0.7.0 // indirect
+)
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
+github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
go.cypherpunks.ru/netstring/v2 v2.4.0 h1:qBOtHJj1hoCUpYkouuTurXl20R1IKnEkh+q7/J0TgZ4=
go.cypherpunks.ru/netstring/v2 v2.4.0/go.mod h1:6YDx4gW414SmHdvSBMKbHaB2/7w9WZ04NQb7XIUV/pA=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0=
+lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
"bufio"
"bytes"
"crypto/rand"
- "crypto/sha512"
_ "embed"
"encoding/base32"
"encoding/hex"
"os"
"go.cypherpunks.ru/netstring/v2"
+ "lukechampine.com/blake3"
)
const MaxExtLen = 9
if err != nil {
fatal(err.Error())
}
- h := sha512.New()
+ h := blake3.New(32, nil)
bfd := bufio.NewWriter(fd)
mw := io.MultiWriter(bfd, h)
buf := make([]byte, 1)
for _, u := range flag.Args() {
fmt.Println(u + fn[1:])
}
- fmt.Println("SHA512/2:", hex.EncodeToString(h.Sum(nil)[:sha512.Size/2]))
+ fmt.Println("BLAKE3-256:", hex.EncodeToString(h.Sum(nil)))
if ext == ".cast" && *asciicastPath != "" {
if err = asciicastHTML(*asciicastPath, fn[1:]); err != nil {
goto Failed