/
Cipher.swift
37 lines (32 loc) · 1.17 KB
/
Cipher.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//
// Cipher.swift
// CryptoSwift
//
// Created by Marcin Krzyzanowski on 30/08/14.
// Copyright (c) 2014 Marcin Krzyzanowski. All rights reserved.
//
import Foundation
public enum Cipher {
case ChaCha20(key: NSData, iv: NSData)
case AES(key: NSData, iv: NSData, blockMode: CipherBlockMode)
public func encrypt(message: NSData) -> NSData? {
switch (self) {
case .ChaCha20(let key, let iv):
var chacha = CryptoSwift.ChaCha20(key: key, iv: iv)
return chacha?.encrypt(message)
case .AES(let key, let iv, let blockMode):
var aes = CryptoSwift.AES(key: key, iv: iv, blockMode: blockMode)
return aes?.encrypt(message)
}
}
public func decrypt(message: NSData) -> NSData? {
switch (self) {
case .ChaCha20(let key, let iv):
var chacha = CryptoSwift.ChaCha20(key: key, iv: iv);
return chacha?.decrypt(message)
case .AES(let key, let iv, let blockMode):
var aes = CryptoSwift.AES(key: key, iv: iv, blockMode: blockMode);
return aes?.decrypt(message)
}
}
}