package pnet

import (
	
	
	
	
	
	
)

var (
	pathPSKv1  = []byte("/key/swarm/psk/1.0.0/")
	pathBin    = "/bin/"
	pathBase16 = "/base16/"
	pathBase64 = "/base64/"
)

func readHeader( *bufio.Reader) ([]byte, error) {
	,  := .ReadBytes('\n')
	if  != nil {
		return nil, 
	}

	return bytes.TrimRight(, "\r\n"), nil
}

func expectHeader( *bufio.Reader,  []byte) error {
	,  := readHeader()
	if  != nil {
		return 
	}
	if !bytes.Equal(, ) {
		return fmt.Errorf("expected file header %s, got: %s", , )
	}
	return nil
}

// DecodeV1PSK reads a Multicodec encoded V1 PSK.
func ( io.Reader) (PSK, error) {
	 := bufio.NewReader()
	if  := expectHeader(, pathPSKv1);  != nil {
		return nil, 
	}
	,  := readHeader()
	if  != nil {
		return nil, 
	}

	var  io.Reader
	switch string() {
	case pathBase16:
		 = hex.NewDecoder()
	case pathBase64:
		 = base64.NewDecoder(base64.StdEncoding, )
	case pathBin:
		 = 
	default:
		return nil, fmt.Errorf("unknown encoding: %s", )
	}
	 := make([]byte, 32)
	if _,  = io.ReadFull(, [:]);  != nil {
		return nil, 
	}
	return , nil
}