aboutsummaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-06-27 03:27:45 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-06-27 03:27:45 +0200
commit4bed2bc49e310371431ca5f4b55729a6a246a36e (patch)
treeafa82fcd5ed7a3c490c5846ac0c71f6eb2a4f9ca /meta
parentddc7e330e6180db8d17488f67a109a2e3be97eae (diff)
Slice checksum
Diffstat (limited to 'meta')
-rw-r--r--meta/torrent.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/meta/torrent.go b/meta/torrent.go
index b5a4bb2..f5e64b9 100644
--- a/meta/torrent.go
+++ b/meta/torrent.go
@@ -26,6 +26,23 @@ type Info struct {
Private bool `bencode:"private"`
}
+func (i Info) NPieces() int {
+ return len(i.Pieces) / 20
+}
+
+func (i Info) CheckSum(n int) []byte {
+ off := n * 20
+ return i.Pieces[off : off+20]
+}
+
+func (i Info) CheckSums() [][]byte {
+ cs := make([][]byte, i.NPieces())
+ for n := 0; n < i.NPieces(); n++ {
+ cs[n] = i.CheckSum(n)
+ }
+ return cs
+}
+
func (i Info) FullPath(n int) (string, error) {
if i.isSingleFile() {
return i.Name, nil