---
title: Curve25519.KeyAgreement.PublicKey
framework: cryptokit
role: symbol
role_heading: Structure
path: cryptokit/curve25519/keyagreement/publickey
---

# Curve25519.KeyAgreement.PublicKey

A Curve25519 public key used for key agreement.

## Declaration

```swift
struct PublicKey
```

## Topics

### Creating a public key

- [init(rawRepresentation:)](cryptokit/curve25519/keyagreement/publickey/init(rawrepresentation:).md)

### Representing the key

- [rawRepresentation](cryptokit/curve25519/keyagreement/publickey/rawrepresentation.md)

### Type Aliases

- [Curve25519.KeyAgreement.PublicKey.HPKEEphemeralPrivateKey](cryptokit/curve25519/keyagreement/publickey/hpkeephemeralprivatekey.md)

### Default Implementations

- [HPKEDiffieHellmanPublicKey Implementations](cryptokit/curve25519/keyagreement/publickey/hpkediffiehellmanpublickey-implementations.md)
- [HPKEPublicKeySerialization Implementations](cryptokit/curve25519/keyagreement/publickey/hpkepublickeyserialization-implementations.md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Escapable](swift/escapable.md)
- [HPKEDiffieHellmanPublicKey](cryptokit/hpkediffiehellmanpublickey.md)
- [HPKEPublicKeySerialization](cryptokit/hpkepublickeyserialization.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Using keys

- [Curve25519.KeyAgreement.PrivateKey](cryptokit/curve25519/keyagreement/privatekey.md)
