Swift bindings for the reference C implementation of Argon2

Argon2Swift

Swift bindings for the reference C implementation of Argon2, the winner of the Password Hash Competition.

Installation (Cocoapods)

Argon2Swift can be installed via Cocoapods by adding the following to your Podfile:

pod Argon2Swift

Installation (SPM)

Argon2Swift can be installed via SPM (Swift Package Mangeer) by adding the following to your depencencies:

.package(url: "https://github.com/tmthecoder/Argon2Swift.git", .branch("main"))

Usage

High-level hashing and verification (for direct hashing & verification of byte arrays, check the example)

import Argon2Swift

// Create a password and a salt
let password = "password"
let s = Salt.newSalt()
//Hash with pre-set params (iterations: 32, memory: 256, parallelism: 2, length: 32, type: Argon2Type.i, version: Argon2Version.V13)
let result = try! Argon2Swift.hashPasswordString(password: password, salt: s)

//Raw hash values available as int list, base 64 string, and hex string
let hashData = result.hashData()
let base64Hash = result.base64String()
let hexHash = result.hexString()

//Encoded hash values available as int list and encoded string
let encodedData = result.encodedData()
let encodedString = result.encodedString()

//Verify password (returns true/false), uses default type (Argon2Type.i)
let verified = try! Argon2Swift.verifyHashString(password: password, hash: stringEncoded);

GitHub

https://github.com/tmthecoder/Argon2Swift