func()

in client/internal/secret_sharing/internal/field/gf32/gf32.go [242:273]


func (e *Field) DecodeElements(s []byte) []field.Element {
	var bitsDone = 0
	var bitsPerSub = 31

	n := divideRoundUp(len(s)*8, bitsPerSub)
	parts := make([]uint32, n, n)

	currSub := len(parts) - 1

	for i := len(s) - 1; i >= 0; i-- {
		currByte := uint8(s[i])
		if bitsPerSub-bitsDone > 8 {
			parts[currSub] |= uint32(currByte) << bitsDone
			bitsDone += 8
			continue
		}

		currByteRight := currByte & (0xFF >> (8 - (bitsPerSub - bitsDone)))
		parts[currSub] |= uint32(currByteRight) << bitsDone

		if !(i == 0 && bitsDone+8 == bitsPerSub) {
			bitsDone = (bitsDone + 8) % bitsPerSub
			currSub--
			parts[currSub] |= uint32(currByte) >> (8 - bitsDone)
		}
	}
	out := []field.Element{}
	for _, p := range parts {
		out = append(out, newElement(p))
	}
	return out
}