Cipher.swift 1.1 KB

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