func (e Aes256CtsHmacSha384192) DeriveKey(protocolKey, usage []byte) ([]byte, error) {
	return rfc8009.DeriveKey(protocolKey, usage, e), nil
}
DeriveKey derives a key from the protocol key based on the usage value.
package crypto
import (
	"crypto/aes"
	"crypto/hmac"
	"crypto/sha512"
	"hash"
	"github.com/jcmturner/gokrb5/v8/crypto/common"
	"github.com/jcmturner/gokrb5/v8/crypto/rfc8009"
	"github.com/jcmturner/gokrb5/v8/iana/chksumtype"
	"github.com/jcmturner/gokrb5/v8/iana/etypeID"
)
type Aes256CtsHmacSha384192 struct {
}
func (e Aes256CtsHmacSha384192) GetETypeID() int32 {
	return etypeID.AES256_CTS_HMAC_SHA384_192
}
func (e Aes256CtsHmacSha384192) GetHashID() int32 {
	return chksumtype.HMAC_SHA384_192_AES256
}
func (e Aes256CtsHmacSha384192) GetKeyByteSize() int {
	return 192 / 8
}
func (e Aes256CtsHmacSha384192) GetKeySeedBitLength() int {
	return e.GetKeyByteSize() * 8
}
func (e Aes256CtsHmacSha384192) GetHashFunc() func() hash.Hash {
	return sha512.New384
}
func (e Aes256CtsHmacSha384192) GetMessageBlockByteSize() int {
	return 1
}
func (e Aes256CtsHmacSha384192) GetDefaultStringToKeyParams() string {
	return "00008000"
}
func (e Aes256CtsHmacSha384192) GetConfounderByteSize() int {
	return aes.BlockSize
}
func (e Aes256CtsHmacSha384192) GetHMACBitLength() int {
	return 192
}
func (e Aes256CtsHmacSha384192) GetCypherBlockBitLength() int {
	return aes.BlockSize * 8
}
func (e Aes256CtsHmacSha384192) StringToKey(secret string, salt string, s2kparams string) ([]byte, error) {
	saltp := rfc8009.GetSaltP(salt, "aes256-cts-hmac-sha384-192")
	return rfc8009.StringToKey(secret, saltp, s2kparams, e)
}
func (e Aes256CtsHmacSha384192) RandomToKey(b []byte) []byte {
	return rfc8009.RandomToKey(b)
}
func (e Aes256CtsHmacSha384192) EncryptData(key, data []byte) ([]byte, []byte, error) {
	return rfc8009.EncryptData(key, data, e)
}
func (e Aes256CtsHmacSha384192) EncryptMessage(key, message []byte, usage uint32) ([]byte, []byte, error) {
	return rfc8009.EncryptMessage(key, message, usage, e)
}
func (e Aes256CtsHmacSha384192) DecryptData(key, data []byte) ([]byte, error) {
	return rfc8009.DecryptData(key, data, e)
}
func (e Aes256CtsHmacSha384192) DecryptMessage(key, ciphertext []byte, usage uint32) ([]byte, error) {
	return rfc8009.DecryptMessage(key, ciphertext, usage, e)
}