Skip to content

fukazayo/ed25519swift

 
 

Repository files navigation

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

About

ed25199 implementation by pure swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 56.3%
  • C 39.9%
  • C++ 2.2%
  • Other 1.6%