Hash.swift 1003 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //
  2. // CryptoHash.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 07/08/14.
  6. // Copyright (c) 2014 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. import Foundation
  9. public enum Hash {
  10. case md5(NSData)
  11. case sha1(NSData)
  12. case sha224(NSData), sha256(NSData), sha384(NSData), sha512(NSData)
  13. case crc32(NSData)
  14. public func calculate() -> NSData! {
  15. switch self {
  16. case md5(let data):
  17. return MD5(data)?.calculate()
  18. case sha1(let data):
  19. return SHA1(data)?.calculate()
  20. case sha224(let data):
  21. return SHA2(data)?.calculate32(.sha224)
  22. case sha256(let data):
  23. return SHA2(data)?.calculate32(.sha256)
  24. case sha384(let data):
  25. return SHA2(data)?.calculate64(.sha384)
  26. case sha512(let data):
  27. return SHA2(data)?.calculate64(.sha512)
  28. case crc32(let data):
  29. return CRC().crc32(data);
  30. default:
  31. return nil
  32. }
  33. }
  34. }