ed25199 implementation by pure swift
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CommonCrypto
Ed25519.xcodeproj
Ed25519.xcworkspace
Ed25519iOS
Ed25519iOSTests
Ed25519macOS
Ed25519macOSTests
Ed25519ref
Ed25519refTests
tool
.gitignore
LICENSE
Podfile
README.md
ed25519swift.podspec

README.md

Ed25519

Ed25519 by pure swift

ed25519

License

Ed25519 can be used, distributed and modified user the zlib license.

Requirements

Ed25519 requires Swift 4.

macOS, iOS

Install

CocoaPods

pod 'ed25519swift'

Dependency

CryptoSwift for sha512

BigInt for reference implementation that is not included main Ed25519 library.

How to use

Key pair creation

import Ed25519macOS // direct
or
import ed25519swift // pods

static func crypto_sign_keypair() -> (pk:[UInt8], sk:[UInt8])

Signing

static func crypto_sign(_ sm:inout [UInt8], _ m:[UInt8], _ skpk:[UInt8])

Validation

static func crypto_sign_open(_ sm:[UInt8], _ pk:[UInt8]) -> Bool

Implemantation

It is ported from SUPERCOP

You can check the algorithm in these papers and RFC.
Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang, High-speed high-security signatures. 2012
Huseyin Hisl, Kenneth Koon-Ho Wong, Gary Carter, Ed Dawson, Twisted Edwards curves revisited. 2008
RFC8032 Edward-Curve Digital Signature Algorithm (EdDSA)

Performance

macOS

On MacBook Pro 2017 2.3Ghz Intel Core i5

message validation : 10.7 msec per message
keypair creation : 4.8 msec per message

iOS

no measurement