mirror of https://github.com/v2ray/v2ray-core
32 lines
592 B
Go
32 lines
592 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"crypto/sha1"
|
||
|
"encoding/hex"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
)
|
||
|
|
||
|
func CalcMetadata(file string, writer io.Writer) error {
|
||
|
fileReader, err := os.Open(file)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer fileReader.Close()
|
||
|
|
||
|
hasher := sha1.New()
|
||
|
nBytes, err := io.Copy(hasher, fileReader)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
sha1sum := hasher.Sum(nil)
|
||
|
filename := filepath.Base(file)
|
||
|
fmt.Fprintf(writer, "File: %s\n", filename)
|
||
|
fmt.Fprintf(writer, "Size: %d\n", nBytes)
|
||
|
fmt.Fprintf(writer, "SHA1: %s\n", hex.EncodeToString(sha1sum))
|
||
|
fmt.Fprintln(writer)
|
||
|
return nil
|
||
|
}
|