// Copyright 2017 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

package linux

import (
	"math/rand"

	"github.com/google/syzkaller/prog"
)

func (arch *arch) generateSockaddrAlg(g *prog.Gen, typ0 prog.Type, old prog.Arg) (
	arg prog.Arg, calls []*prog.Call) {
	typ := typ0.(*prog.StructType)
	family := g.GenerateArg(typ.Fields[0], &calls)
	// There is very little point in generating feat/mask,
	// because that can only fail otherwise correct bind.
	feat := prog.MakeConstArg(typ.Fields[2], 0)
	mask := prog.MakeConstArg(typ.Fields[3], 0)
	if g.NOutOf(1, 1000) {
		feat = g.GenerateArg(typ.Fields[2], &calls).(*prog.ConstArg)
		mask = g.GenerateArg(typ.Fields[3], &calls).(*prog.ConstArg)
	}
	algType, algName := generateAlgName(g.Rand())
	// Extend/truncate type/name to their fixed sizes.
	algTypeData := fixedSizeData(algType, typ.Fields[1].Size())
	algNameData := fixedSizeData(algName, typ.Fields[4].Size())
	arg = prog.MakeGroupArg(typ, []prog.Arg{
		family,
		prog.MakeDataArg(typ.Fields[1], algTypeData),
		feat,
		mask,
		prog.MakeDataArg(typ.Fields[4], algNameData),
	})
	return
}

func (arch *arch) generateAlgName(g *prog.Gen, typ prog.Type, old prog.Arg) (
	arg prog.Arg, calls []*prog.Call) {
	return generateAlgNameStruct(g, typ, allTypes[g.Rand().Intn(len(allTypes))].typ)
}

func (arch *arch) generateAlgAeadName(g *prog.Gen, typ prog.Type, old prog.Arg) (
	arg prog.Arg, calls []*prog.Call) {
	return generateAlgNameStruct(g, typ, ALG_AEAD)
}

func (arch *arch) generateAlgHashName(g *prog.Gen, typ prog.Type, old prog.Arg) (
	arg prog.Arg, calls []*prog.Call) {
	return generateAlgNameStruct(g, typ, ALG_HASH)
}

func (arch *arch) generateAlgBlkcipherhName(g *prog.Gen, typ prog.Type, old prog.Arg) (
	arg prog.Arg, calls []*prog.Call) {
	return generateAlgNameStruct(g, typ, ALG_BLKCIPHER)
}

func generateAlgNameStruct(g *prog.Gen, typ0 prog.Type, algTyp int) (arg prog.Arg, calls []*prog.Call) {
	typ := typ0.(*prog.StructType)
	algName := generateAlg(g.Rand(), algTyp)
	algNameData := fixedSizeData(algName, typ.Fields[0].Size())
	arg = prog.MakeGroupArg(typ, []prog.Arg{
		prog.MakeDataArg(typ.Fields[0], algNameData),
	})
	return
}

func generateAlgName(rnd *rand.Rand) (string, string) {
	typ := allTypes[rnd.Intn(len(allTypes))]
	name := generateAlg(rnd, typ.typ)
	return typ.name, name
}

func generateAlg(rnd *rand.Rand, typ int) string {
	algs := allAlgs[typ]
	alg := algs[rnd.Intn(len(algs))]
	return generateAlgImpl(rnd, alg)
}

func generateAlgImpl(rnd *rand.Rand, alg algDesc) string {
	args := ""
	if len(alg.args) != 0 {
		args += "("
		for i, a := range alg.args {
			if i != 0 {
				args += ","
			}
			args += generateAlg(rnd, a)
		}
		args += ")"
	}
	return alg.name + args
}

func fixedSizeData(str string, sz uint64) []byte {
	return append([]byte(str), make([]byte, sz)...)[:sz]
}

type algType struct {
	name string
	typ  int
}

type algDesc struct {
	name string
	args []int
}

const (
	ALG_CIPHER = iota
	ALG_BLKCIPHER
	ALG_AEAD
	ALG_HASH
	ALG_RNG
)

var allTypes = []algType{
	{"aead", ALG_AEAD},
	{"skcipher", ALG_BLKCIPHER},
	{"hash", ALG_HASH},
	{"rng", ALG_RNG},
}

var allAlgs = map[int][]algDesc{
	ALG_AEAD: {
		// templates:
		{"authenc", []int{ALG_HASH, ALG_BLKCIPHER}},
		{"authencesn", []int{ALG_HASH, ALG_BLKCIPHER}},
		{"ccm", []int{ALG_CIPHER}},
		{"ccm_base", []int{ALG_BLKCIPHER, ALG_HASH}},
		{"echainiv", []int{ALG_AEAD}},
		{"essiv", []int{ALG_AEAD, ALG_HASH}},
		{"gcm", []int{ALG_CIPHER}},
		{"gcm_base", []int{ALG_BLKCIPHER, ALG_HASH}},
		{"pcrypt", []int{ALG_AEAD}},
		{"rfc4106", []int{ALG_AEAD}},
		{"rfc4309", []int{ALG_AEAD}},
		{"rfc4543", []int{ALG_AEAD}},
		{"rfc7539", []int{ALG_BLKCIPHER, ALG_HASH}},
		{"rfc7539esp", []int{ALG_BLKCIPHER, ALG_HASH}},
		{"seqiv", []int{ALG_AEAD}},

		// algorithms:
		{"aegis128", nil},
		{"aegis128-aesni", nil},
		{"aegis128-generic", nil},
		{"aegis128l", nil},
		{"aegis128l-aesni", nil},
		{"aegis128l-generic", nil},
		{"aegis256", nil},
		{"aegis256-aesni", nil},
		{"aegis256-generic", nil},
		{"ccm-aes-ce", nil},
		{"gcm(aes)", nil},
		{"gcm-aes-ce", nil},
		{"gcm_base(ctr(aes-aesni),ghash-generic)", nil},
		{"generic-gcm-aesni", nil},
		{"morus1280", nil},
		{"morus1280-avx2", nil},
		{"morus1280-generic", nil},
		{"morus1280-sse2", nil},
		{"morus640", nil},
		{"morus640-generic", nil},
		{"morus640-sse2", nil},
		{"rfc4106(gcm(aes))", nil},
		{"rfc4106-gcm-aesni", nil},
	},
	ALG_BLKCIPHER: {
		// templates:
		{"adiantum", []int{ALG_BLKCIPHER, ALG_CIPHER, ALG_HASH}},
		{"adiantum", []int{ALG_BLKCIPHER, ALG_CIPHER}},
		{"cbc", []int{ALG_CIPHER}},
		{"cfb", []int{ALG_CIPHER}},
		{"cryptd", []int{ALG_BLKCIPHER}},
		{"ctr", []int{ALG_CIPHER}},
		{"cts", []int{ALG_BLKCIPHER}},
		{"ecb", []int{ALG_CIPHER}},
		{"essiv", []int{ALG_BLKCIPHER, ALG_HASH}},
		{"fpu", []int{ALG_BLKCIPHER}},
		{"kw", []int{ALG_CIPHER}},
		{"lrw", []int{ALG_BLKCIPHER}},
		{"lrw", []int{ALG_CIPHER}},
		{"ofb", []int{ALG_CIPHER}},
		{"pcbc", []int{ALG_CIPHER}},
		{"rfc3686", []int{ALG_BLKCIPHER}},
		{"xts", []int{ALG_BLKCIPHER}},
		{"xts", []int{ALG_CIPHER}},

		// algorithms:
		{"cbc(aes)", nil},
		{"cbc(aes-aesni)", nil},
		{"cbc(blowfish)", nil},
		{"cbc(camellia)", nil},
		{"cbc(cast5)", nil},
		{"cbc(cast6)", nil},
		{"cbc(des3_ede)", nil},
		{"cbc(serpent)", nil},
		{"cbc(twofish)", nil},
		{"cbc-aes-aesni", nil},
		{"cbc-aes-ce", nil},
		{"cbc-aes-neon", nil},
		{"cbc-blowfish-asm", nil},
		{"cbc-camellia-aesni", nil},
		{"cbc-camellia-aesni-avx2", nil},
		{"cbc-camellia-asm", nil},
		{"cbc-cast5-avx", nil},
		{"cbc-cast6-avx", nil},
		{"cbc-des3_ede-asm", nil},
		{"cbc-serpent-avx", nil},
		{"cbc-serpent-avx2", nil},
		{"cbc-serpent-sse2", nil},
		{"cbc-twofish-3way", nil},
		{"cbc-twofish-avx", nil},
		{"chacha20", nil},
		{"chacha20-generic", nil},
		{"chacha20-neon", nil},
		{"chacha20-simd", nil},
		{"ctr(aes)", nil},
		{"ctr(aes-aesni)", nil},
		{"ctr(blowfish)", nil},
		{"ctr(camellia)", nil},
		{"ctr(cast5)", nil},
		{"ctr(cast6)", nil},
		{"ctr(des3_ede)", nil},
		{"ctr(serpent)", nil},
		{"ctr(twofish)", nil},
		{"ctr-aes-aesni", nil},
		{"ctr-aes-ce", nil},
		{"ctr-aes-neon", nil},
		{"ctr-aes-neonbs", nil},
		{"ctr-blowfish-asm", nil},
		{"ctr-camellia-aesni", nil},
		{"ctr-camellia-aesni-avx2", nil},
		{"ctr-camellia-asm", nil},
		{"ctr-cast5-avx", nil},
		{"ctr-cast6-avx", nil},
		{"ctr-des3_ede-asm", nil},
		{"ctr-serpent-avx", nil},
		{"ctr-serpent-avx2", nil},
		{"ctr-serpent-sse2", nil},
		{"ctr-twofish-3way", nil},
		{"ctr-twofish-avx", nil},
		{"ecb(aes)", nil},
		{"ecb(arc4)", nil},
		{"ecb(arc4)-generic", nil},
		{"ecb(blowfish)", nil},
		{"ecb(camellia)", nil},
		{"ecb(cast5)", nil},
		{"ecb(cast6)", nil},
		{"ecb(cipher_null)", nil},
		{"ecb(des3_ede)", nil},
		{"ecb(serpent)", nil},
		{"ecb(twofish)", nil},
		{"ecb-aes-aesni", nil},
		{"ecb-aes-ce", nil},
		{"ecb-aes-neon", nil},
		{"ecb-blowfish-asm", nil},
		{"ecb-camellia-aesni", nil},
		{"ecb-camellia-aesni-avx2", nil},
		{"ecb-camellia-asm", nil},
		{"ecb-cast5-avx", nil},
		{"ecb-cast6-avx", nil},
		{"ecb-cipher_null", nil},
		{"ecb-des3_ede-asm", nil},
		{"ecb-serpent-avx", nil},
		{"ecb-serpent-avx2", nil},
		{"ecb-serpent-sse2", nil},
		{"ecb-twofish-3way", nil},
		{"ecb-twofish-avx", nil},
		{"fpu(pcbc(aes))", nil},
		{"fpu(pcbc(aes-aesni))", nil},
		{"lrw(camellia)", nil},
		{"lrw(cast6)", nil},
		{"lrw(serpent)", nil},
		{"lrw(twofish)", nil},
		{"lrw-camellia-aesni", nil},
		{"lrw-camellia-aesni-avx2", nil},
		{"lrw-camellia-asm", nil},
		{"lrw-cast6-avx", nil},
		{"lrw-serpent-avx", nil},
		{"lrw-serpent-avx2", nil},
		{"lrw-serpent-sse2", nil},
		{"lrw-twofish-3way", nil},
		{"lrw-twofish-avx", nil},
		{"pcbc(aes)", nil},
		{"pcbc(aes-aesni)", nil},
		{"pcbc-aes-aesni", nil},
		{"salsa20", nil},
		{"salsa20-asm", nil},
		{"salsa20-generic", nil},
		{"xchacha12", nil},
		{"xchacha12-generic", nil},
		{"xchacha12-neon", nil},
		{"xchacha12-simd", nil},
		{"xchacha20", nil},
		{"xchacha20-generic", nil},
		{"xchacha20-neon", nil},
		{"xchacha20-simd", nil},
		{"xts(aes)", nil},
		{"xts(camellia)", nil},
		{"xts(cast6)", nil},
		{"xts(serpent)", nil},
		{"xts(twofish)", nil},
		{"xts-aes-aesni", nil},
		{"xts-aes-ce", nil},
		{"xts-aes-neon", nil},
		{"xts-camellia-aesni", nil},
		{"xts-camellia-aesni-avx2", nil},
		{"xts-camellia-asm", nil},
		{"xts-cast6-avx", nil},
		{"xts-serpent-avx", nil},
		{"xts-serpent-avx2", nil},
		{"xts-serpent-sse2", nil},
		{"xts-twofish-3way", nil},
		{"xts-twofish-avx", nil},
	},
	ALG_CIPHER: {
		{"aes", nil},
		{"aes-aesni", nil},
		{"aes-arm64", nil},
		{"aes-asm", nil},
		{"aes-ce", nil},
		{"aes-fixed-time", nil},
		{"aes-generic", nil},
		{"anubis", nil},
		{"anubis-generic", nil},
		{"arc4", nil},
		{"arc4-generic", nil},
		{"blowfish", nil},
		{"blowfish-asm", nil},
		{"blowfish-generic", nil},
		{"camellia", nil},
		{"camellia-asm", nil},
		{"camellia-generic", nil},
		{"cast5", nil},
		{"cast5-generic", nil},
		{"cast6", nil},
		{"cast6-generic", nil},
		{"cipher_null", nil},
		{"cipher_null-generic", nil},
		{"des", nil},
		{"des-generic", nil},
		{"des3_ede", nil},
		{"des3_ede-asm", nil},
		{"des3_ede-generic", nil},
		{"fcrypt", nil},
		{"fcrypt-generic", nil},
		{"khazad", nil},
		{"khazad-generic", nil},
		{"seed", nil},
		{"seed-generic", nil},
		{"serpent", nil},
		{"serpent-generic", nil},
		{"sm4", nil},
		{"sm4-ce", nil},
		{"sm4-generic", nil},
		{"tea", nil},
		{"tea-generic", nil},
		{"tnepres", nil},
		{"tnepres-generic", nil},
		{"twofish", nil},
		{"twofish-asm", nil},
		{"twofish-generic", nil},
		{"xeta", nil},
		{"xeta-generic", nil},
		{"xtea", nil},
		{"xtea-generic", nil},
	},
	ALG_HASH: {
		// templates:
		{"cbcmac", []int{ALG_CIPHER}},
		{"cmac", []int{ALG_CIPHER}},
		{"cryptd", []int{ALG_HASH}},
		{"hmac", []int{ALG_HASH}},
		{"mcryptd", []int{ALG_HASH}},
		{"vmac", []int{ALG_CIPHER}},
		{"vmac64", []int{ALG_CIPHER}},
		{"xcbc", []int{ALG_CIPHER}},

		// algorithms:
		{"cbcmac-aes-ce", nil},
		{"cbcmac-aes-neon", nil},
		{"cmac-aes-ce", nil},
		{"cmac-aes-neon", nil},
		{"crc32", nil},
		{"crc32-generic", nil},
		{"crc32-pclmul", nil},
		{"crc32c", nil},
		{"crc32c-generic", nil},
		{"crc32c-intel", nil},
		{"crct10dif", nil},
		{"crct10dif-arm64-ce", nil},
		{"crct10dif-generic", nil},
		{"crct10dif-pclmul", nil},
		{"digest_null", nil},
		{"digest_null-generic", nil},
		{"ghash", nil},
		{"ghash-ce", nil},
		{"ghash-clmulni", nil},
		{"ghash-generic", nil},
		{"md4", nil},
		{"md4-generic", nil},
		{"md5", nil},
		{"md5-generic", nil},
		{"michael_mic", nil},
		{"michael_mic-generic", nil},
		{"nhpoly1305", nil},
		{"nhpoly1305-avx2", nil},
		{"nhpoly1305-generic", nil},
		{"nhpoly1305-neon", nil},
		{"nhpoly1305-sse2", nil},
		{"poly1305", nil},
		{"poly1305-generic", nil},
		{"poly1305-simd", nil},
		{"rmd128", nil},
		{"rmd128-generic", nil},
		{"rmd160", nil},
		{"rmd160-generic", nil},
		{"rmd256", nil},
		{"rmd256-generic", nil},
		{"rmd320", nil},
		{"rmd320-generic", nil},
		{"sha1", nil},
		{"sha1-avx", nil},
		{"sha1-avx2", nil},
		{"sha1-ce", nil},
		{"sha1-generic", nil},
		{"sha1-ni", nil},
		{"sha1-ssse3", nil},
		{"sha1_mb", nil},
		{"sha224", nil},
		{"sha224-arm64", nil},
		{"sha224-arm64-neon", nil},
		{"sha224-avx", nil},
		{"sha224-avx2", nil},
		{"sha224-ce", nil},
		{"sha224-generic", nil},
		{"sha224-ni", nil},
		{"sha224-ssse3", nil},
		{"sha256", nil},
		{"sha256-arm64", nil},
		{"sha256-arm64-neon", nil},
		{"sha256-avx", nil},
		{"sha256-avx2", nil},
		{"sha256-ce", nil},
		{"sha256-generic", nil},
		{"sha256-ni", nil},
		{"sha256-ssse3", nil},
		{"sha256_mb", nil},
		{"sha3-224", nil},
		{"sha3-224-ce", nil},
		{"sha3-224-generic", nil},
		{"sha3-256", nil},
		{"sha3-256-ce", nil},
		{"sha3-256-generic", nil},
		{"sha3-384", nil},
		{"sha3-384-ce", nil},
		{"sha3-384-generic", nil},
		{"sha3-512", nil},
		{"sha3-512-ce", nil},
		{"sha3-512-generic", nil},
		{"sha384", nil},
		{"sha384-arm64", nil},
		{"sha384-avx", nil},
		{"sha384-avx2", nil},
		{"sha384-ce", nil},
		{"sha384-generic", nil},
		{"sha384-ssse3", nil},
		{"sha512", nil},
		{"sha512-arm64", nil},
		{"sha512-avx", nil},
		{"sha512-avx2", nil},
		{"sha512-ce", nil},
		{"sha512-generic", nil},
		{"sha512-ssse3", nil},
		{"sha512_mb", nil},
		{"sm3", nil},
		{"sm3-ce", nil},
		{"sm3-generic", nil},
		{"streebog256", nil},
		{"streebog256-generic", nil},
		{"streebog512", nil},
		{"streebog512-generic", nil},
		{"tgr128", nil},
		{"tgr128-generic", nil},
		{"tgr160", nil},
		{"tgr160-generic", nil},
		{"tgr192", nil},
		{"tgr192-generic", nil},
		{"wp256", nil},
		{"wp256-generic", nil},
		{"wp384", nil},
		{"wp384-generic", nil},
		{"wp512", nil},
		{"wp512-generic", nil},
		{"xcbc-aes-ce", nil},
		{"xcbc-aes-neon", nil},
		{"xxhash64", nil},
		{"xxhash64-generic", nil},
	},
	ALG_RNG: {
		{"ansi_cprng", nil},
		{"drbg_nopr_ctr_aes128", nil},
		{"drbg_nopr_ctr_aes192", nil},
		{"drbg_nopr_ctr_aes256", nil},
		{"drbg_nopr_hmac_sha1", nil},
		{"drbg_nopr_hmac_sha256", nil},
		{"drbg_nopr_hmac_sha384", nil},
		{"drbg_nopr_hmac_sha512", nil},
		{"drbg_nopr_sha1", nil},
		{"drbg_nopr_sha256", nil},
		{"drbg_nopr_sha384", nil},
		{"drbg_nopr_sha512", nil},
		{"drbg_pr_ctr_aes128", nil},
		{"drbg_pr_ctr_aes192", nil},
		{"drbg_pr_ctr_aes256", nil},
		{"drbg_pr_hmac_sha1", nil},
		{"drbg_pr_hmac_sha256", nil},
		{"drbg_pr_hmac_sha384", nil},
		{"drbg_pr_hmac_sha512", nil},
		{"drbg_pr_sha1", nil},
		{"drbg_pr_sha256", nil},
		{"drbg_pr_sha384", nil},
		{"drbg_pr_sha512", nil},
		{"jitterentropy_rng", nil},
		{"stdrng", nil},
	},
}
