package ssss

/*
package ssss implements Shamir's Secret Sharing Scheme

Usage:
func TestSSSS() {
	secret := make([]byte, 16)
	// (3,5)门限
	shares, err := Split(secret, 3, 5, 0, rand.Reader)
	if err != nil {
		//
	}

	// shares 是5份分片数据

	// 收集至少3份分片数据
	recoveryShares := shares[:3]

	//
	recoveredSecret, err := Restore(recoveryShares)
	if err != nil {
		//
	}

	if bytes.Compare(secret, recoveredSecret) != 0 {
		fmt.Println("recoveredSecret and secret are different")
	}
}

每个分片数据格式定义为:
SharedSlice ::= SEQUENCE {
	Version 	INTEGER DEFAULT 0,-- default 0
	Threshold 	INTEGER, -- 门限值
	Length    	INTEGER, -- 原秘密值字节数
	Degree      INTEGER, -- 拉格朗日多项式系数域在F_2上的扩域次数
	X     		INTEGER, -- x值
	Y     		INTEGER, -- y=f(x)
 	Token    [0]IMPLICIT OCTET STRING OPTINAL --随机字节，同一secret的n个分片应该一致
}

*/
