// Code generated by go generate. DO NOT EDIT.

//go:generate rm pkg.go
//go:generate go run ../../gen/gen.go

package sha256

import (
	"cuelang.org/go/internal/core/adt"
	"cuelang.org/go/pkg/internal"
)

func init() {
	internal.Register("crypto/sha256", pkg)
}

var _ = adt.TopKind // in case the adt package isn't used

var pkg = &internal.Package{
	Native: []*internal.Builtin{{
		Name:  "Size",
		Const: "32",
	}, {
		Name:  "Size224",
		Const: "28",
	}, {
		Name:  "BlockSize",
		Const: "64",
	}, {
		Name:   "Sum256",
		Params: []adt.Kind{adt.BytesKind | adt.StringKind},
		Result: adt.BytesKind | adt.StringKind,
		Func: func(c *internal.CallCtxt) {
			data := c.Bytes(0)
			if c.Do() {
				c.Ret = Sum256(data)
			}
		},
	}, {
		Name:   "Sum224",
		Params: []adt.Kind{adt.BytesKind | adt.StringKind},
		Result: adt.BytesKind | adt.StringKind,
		Func: func(c *internal.CallCtxt) {
			data := c.Bytes(0)
			if c.Do() {
				c.Ret = Sum224(data)
			}
		},
	}},
}
