jamesog/AgeKit

A simple, modern and secure encryption Swift library with small explicit keys, and no config options.

Swift

20

38 commits

updated Jun 16, 2026

See the code

README

The age logo, an wireframe of St. Peters dome in Rome, with the text: age, file encryption

AgeKit: Swift implementation of age

age is a simple, modern and secure file encryption tool and format. It features small explicit keys, no config options, and UNIX-style composability.

AgeKit provides a Swift implementation of the library and format.

The reference Go implementation is available at filippo.io/age.

Implementation Notes

These features of age have been implemented:

  • ✅ X25519 public/private keys
  • ⚠️ Scrypt passphrases: this is implemented but there are issues with the format that have compatibility issues with the Go version of the tool
  • ✅ Armored (PEM) encoding and decoding
  • ❌ SSH keys
    • ❌ GitHub users

AgeKit uses features from CryptoKit and needs at least macOS 11 or iOS 14.

Getting Started

To use AgeKit add the following dependency to Package.swift:

dependencies: [
    .package(url: "https://github.com/jamesog/AgeKit.git", branch: "main"),
]

You can then add the dependency to your target:

dependencies: [
    "AgeKit",
]
age
age-encryption
swift

jamesog/AgeKit

A simple, modern and secure encryption Swift library with small explicit keys, and no config options.

Swift

20

38 commits

updated Jun 16, 2026

See the code

README

The age logo, an wireframe of St. Peters dome in Rome, with the text: age, file encryption

AgeKit: Swift implementation of age

age is a simple, modern and secure file encryption tool and format. It features small explicit keys, no config options, and UNIX-style composability.

AgeKit provides a Swift implementation of the library and format.

The reference Go implementation is available at filippo.io/age.

Implementation Notes

These features of age have been implemented:

  • ✅ X25519 public/private keys
  • ⚠️ Scrypt passphrases: this is implemented but there are issues with the format that have compatibility issues with the Go version of the tool
  • ✅ Armored (PEM) encoding and decoding
  • ❌ SSH keys
    • ❌ GitHub users

AgeKit uses features from CryptoKit and needs at least macOS 11 or iOS 14.

Getting Started

To use AgeKit add the following dependency to Package.swift:

dependencies: [
    .package(url: "https://github.com/jamesog/AgeKit.git", branch: "main"),
]

You can then add the dependency to your target:

dependencies: [
    "AgeKit",
]
age
age-encryption
swift

Significant stargazers

Joshua Peek

2,589 followers · starred Sep 2024

Filippo Valsorda

9,500 followers · starred Apr 2023