Exemplo n.º 1
0
// This function seeds the queue from a web request
func seedQueue(hkidhex string) (err error) {
	h, hexerr := objects.HcidFromHex(hkidhex)
	if hexerr == nil {
		err = crawlList(objects.HCID(h.Bytes()))
		if err != nil {
			log.Println("seed was not a List")
		}
		err = crawlBlob(objects.HCID(h.Bytes()))
		if err != nil {
			log.Println("seed was not a Blob")
		}
		err = crawlCommit(objects.HKID(h.Bytes()))
		if err != nil {
			log.Println("seed was not a Commit")
		}
		err = crawlhcidCommit(objects.HCID(h.Bytes()))
		if err != nil {
			log.Println("seed was not a Commit's hcid")
		}
		err = crawlhcidTag(objects.HCID(h.Bytes()))
		if err != nil {
			log.Println("seed was not a Tag's hcid")
		}
	} else {
		log.Println(hexerr)
	}
	return hexerr
}
Exemplo n.º 2
0
//GetPublicKeyForHkid uses the lookup services to get a public key for an hkid
func GetPublicKeyForHkid(hkid objects.HKID) objects.PublicKey {
	marshaledKey, err := GetBlob(objects.HCID(hkid))
	if err != nil {
		return objects.PublicKey{}
	}
	curve := elliptic.P521()
	x, y := elliptic.Unmarshal(elliptic.P521(), marshaledKey)
	pubKey := ecdsa.PublicKey{
		Curve: curve, //elliptic.Curve
		X:     x,     //X *big.Int
		Y:     y}     //Y *big.Int
	return objects.PublicKey(pubKey)
}
Exemplo n.º 3
0
func post(h objects.HID, path string, nextPathSegmentType string,
	postBytes objects.Byteser, postType string) (hid objects.HID, err error) {
	//log.Printf(
	//	"\n\th: %v\n\tpath: %v\n\tnext_path_segment_type: %v\n\tpost_bytes: %s\n\tpost_type: %v\n",
	//	h, path, next_path_segment_type, post_bytes, post_type)
	if path == "" {
		//log.Printf("post_type: %s", post_type)
		err := PostBlob(postBytes.(objects.Blob))
		return objects.HCID(postBytes.(objects.Blob).Hash()), err
	}

	nameSegments := strings.SplitN(path, "/", 2)
	nextPathSegment := nameSegments[0]
	restOfPath := ""
	if len(nameSegments) > 1 {
		restOfPath = nameSegments[1]
	}
	switch nextPathSegmentType {
	default:
		return nil, fmt.Errorf(fmt.Sprintf("Invalid type %T", nextPathSegmentType))
	case "blob":
		return nil, fmt.Errorf(fmt.Sprintf("only \"\" path can be blob"))
	case "list":
		postedListHash, err := listHelper(h, nextPathSegment, restOfPath,
			postBytes, postType)
		return postedListHash, err
	case "commit":
		postedCommitHash, err := commitHelper(h.Bytes(), path, postBytes,
			postType)
		return postedCommitHash, err
	case "tag":
		postedTagHash, err := tagHelper(h, nextPathSegment, restOfPath,
			postBytes, postType)
		return postedTagHash, err
	}
}