---
title: HPKE.Ciphersuite
framework: cryptokit
role: symbol
role_heading: Structure
path: cryptokit/hpke/ciphersuite
---

# HPKE.Ciphersuite

Cipher suites to use in hybrid public key encryption (HPKE).

## Declaration

```swift
struct Ciphersuite
```

## Overview

Overview HPKE cipher suites identify the authenticated encryption with additional data (AEAD) algorithm for encrypting and decrypting messages, the key derivation function (KDF) for deriving the shared key, and the key encapsulation mechanism (KEM) for sharing the symmetric key. The sender and recipient of encrypted messages need to use the same cipher suite.

## Topics

### Using post-quantum cipher suites

- [XWingMLKEM768X25519_SHA256_AES_GCM_256](cryptokit/hpke/ciphersuite/xwingmlkem768x25519_sha256_aes_gcm_256.md)

### Using elliptic curve cipher suites

- [Curve25519_SHA256_ChachaPoly](cryptokit/hpke/ciphersuite/curve25519_sha256_chachapoly.md)
- [P256_SHA256_AES_GCM_256](cryptokit/hpke/ciphersuite/p256_sha256_aes_gcm_256.md)
- [P384_SHA384_AES_GCM_256](cryptokit/hpke/ciphersuite/p384_sha384_aes_gcm_256.md)
- [P521_SHA512_AES_GCM_256](cryptokit/hpke/ciphersuite/p521_sha512_aes_gcm_256.md)

### Creating a cipher suite

- [init(kem:kdf:aead:)](cryptokit/hpke/ciphersuite/init(kem:kdf:aead:).md)

### Inspecting a cipher suite

- [aead](cryptokit/hpke/ciphersuite/aead.md)
- [kdf](cryptokit/hpke/ciphersuite/kdf.md)
- [kem](cryptokit/hpke/ciphersuite/kem.md)

## Relationships

### Conforms To

- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Choosing cryptographic algorithms

- [HPKE.AEAD](cryptokit/hpke/aead.md)
- [HPKE.KDF](cryptokit/hpke/kdf.md)
- [HPKE.KEM](cryptokit/hpke/kem.md)
- [HPKE.DHKEM](cryptokit/hpke/dhkem.md)
