Files
ipsw/pkg/aea/id.go

36 lines
594 B
Go

package aea
import (
"crypto/sha256"
"encoding/binary"
"io"
"os"
)
func ID(in string) ([32]byte, error) {
f, err := os.Open(in)
if err != nil {
return [32]byte{}, err
}
defer f.Close()
var header Header
if err := binary.Read(f, binary.LittleEndian, &header); err != nil {
return [32]byte{}, err
}
f.Seek(0, io.SeekStart) // rewind
data := make([]byte,
binary.Size(header)+
int(header.AuthDataLength)+
int(32)+ // main salt
binary.Size(encRootHeader{}),
)
if _, err := f.Read(data); err != nil {
return [32]byte{}, err
}
return sha256.Sum256(data), nil
}