Skip to content

sinoru/swift-sodium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swift Sodium

Swift Sodium is an open-source package of libsodium implementations for the Swift programming language.

Contents

The package currently provides the following implementations:

Example

SecretBox

import SodiumSecretBox

let secretBox = try SecretBox<XSalsa20Poly1305>()

// This is generated key for you.
// If you want, you can supply it manually on init.
secretBox.key 

let originalData: Array<UInt8> = .init("text".utf8)
let encryptedData = try secretBox.seal(Array("text".utf8))
let decryptedData = try secretBox.open(encryptedData.data, nonce: encryptedData.nonce)

SecretStream

import SodiumSecretStream

let encryptionSecretStream = try SecretStream<XChaCha20Poly1305>()

// This is generated key for you.
// If you want, you can supply it manually on init.
encryptionSecretStream.key

let messagePart1: Array<UInt8> = .init("Arbitrary data to encrypt".utf8)
let messagePart2: Array<UInt8> = .init("split into".utf8)
let messagePart3: Array<UInt8> = .init("three messages".utf8)

var encryptionSecretStream = try SecretStream<XChaCha20Poly1305>()
let cipherTextPart1 = try encryptionSecretStream.push(messagePart1)
let cipherTextPart2 = try encryptionSecretStream.push(messagePart2)
let cipherTextPart3 = try encryptionSecretStream.push(messagePart3, tag: .final)

var decryptionSecretStream = SecretStream<XChaCha20Poly1305>(
    key: encryptionSecretStream.key,
    header: encryptionSecretStream.header
)

let decryptedMessagePart1 = try decryptionSecretStream.pull(cipherTextPart1)
let decryptedMessagePart2 = try decryptionSecretStream.pull(cipherTextPart2)
let decryptedMessagePart3 = try decryptionSecretStream.pull(cipherTextPart3)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors