// generateAffineMasks creates the random external masks for the construction. func generateAffineMasks(rs *random.Source) (inputMask, outputMask encoding.BlockAffine) { var inputLinear, outputLinear matrix.Matrix common.GenerateMasks(rs, common.IndependentMasks{common.RandomMask, common.RandomMask}, &inputLinear, &outputLinear) reader := rs.Stream(make([]byte, 16)) var inputConstant, outputConstant [16]byte reader.Read(inputConstant[:]) reader.Read(outputConstant[:]) inputMask = encoding.NewBlockAffine(inputLinear, inputConstant) outputMask = encoding.NewBlockAffine(outputLinear, outputConstant) return }
// generateAffineMasks creates the random external masks for the construction. func generateAffineMasks(rs *random.Source) (inputMask, outputMask *blockAffine) { var inputLinear, outputLinear matrix.Matrix common.GenerateMasks(rs, common.IndependentMasks{common.RandomMask, common.RandomMask}, &inputLinear, &outputLinear) reader := rs.Stream(make([]byte, 16)) inputConstant, outputConstant := matrix.NewRow(128), matrix.NewRow(128) reader.Read(inputConstant[:]) reader.Read(outputConstant[:]) inputMask = &blockAffine{linear: inputLinear, constant: inputConstant} outputMask = &blockAffine{linear: outputLinear, constant: outputConstant} return }