package crypto

import "io"

// KeyManager defines the contract for loading and generating recipient keys.
type KeyManager interface {
	LoadPub(
		path string,
		schemeID uint16,
	) (
		RecipientPub,
		error,
	)
	LoadPriv(
		path string,
		schemeID uint16,
	) (
		RecipientPriv,
		error,
	)
	Generate(
		schemeID uint16,
		pubOut io.Writer,
		privOut io.Writer,
		rand io.Reader,
	) error
}
