Kaynağa Gözat

CryptoHash enum, tests update, readme update, Podspec initials

Marcin Krzyżanowski 11 yıl önce
ebeveyn
işleme
701c3ff585

+ 18 - 0
CryptoSwift.podspec

@@ -0,0 +1,18 @@
+Pod::Spec.new do |s|
+  s.name         = "CryptoSwift"
+  s.version      = "0.0.1"
+  s.summary      = "Crypto helpers. Written in Swift"
+  s.homepage     = "https://github.com/krzyzanowskim/CryptoSwift"
+  
+  s.license      = "Apache License"
+  s.license      = { :type => "Apache", :file => "LICENSE" }
+  s.author             = { "Marcin Krzyżanowski" => "marcin.krzyzanowski@gmail.com" }
+  s.social_media_url   = "http://twitter.com/krzyzanowskim"
+  s.platform     = :ios
+  s.ios.deployment_target = '7.0'
+  s.source       = { :git => "https://github.com/krzyzanowskim/CryptoSwift.git", :tag => "0.0.1" }
+  s.source_files = "CryptoSwift/*"
+  s.dependency   = "OpenSSL-Universal"
+  s.requires_arc = true
+  s.dependa
+end

+ 30 - 1
CryptoSwift/NSDataExtension.swift

@@ -8,6 +8,35 @@
 
 import Foundation
 
+enum CryptoHash: Int {
+    case md5 = 1
+    case sha1 = 2
+    case sha224 = 3
+    case sha256 = 4
+    case sha384 = 5
+    case sha512 = 6
+    case ripemd160 = 7
+    
+    func hash(data: NSData) -> NSData! {
+        switch self {
+        case md5:
+            return data.md5()
+        case sha1:
+            return data.sha1()
+        case sha224:
+            return data.sha224()
+        case sha256:
+            return data.sha256()
+        case sha384:
+            return data.sha384()
+        case sha512:
+            return data.sha512()
+        case ripemd160:
+            return data.ripemd160()
+        }
+    }
+}
+
 extension NSData {
     
     func arrayOfBytes() -> Array<Byte> {
@@ -128,7 +157,7 @@ extension NSData {
         return outData;
     }
 
-    func ripemd150() -> NSData {
+    func ripemd160() -> NSData {
         var ctx = UnsafePointer<RIPEMD160_CTX>.alloc(sizeof(RIPEMD160_CTX))
         RIPEMD160_Init(ctx);
         

+ 7 - 0
CryptoSwiftTests/CryptoSwiftTests.swift

@@ -37,6 +37,13 @@ class CryptoSwiftTests: XCTestCase {
         XCTAssertEqualObjects(sha1String, "40BD001563085FC35165329EA1FF5C5ECBDBBEEF", "SHA1 calculation failed");
     }
     
+    func testHashEnum() {
+        var data:NSData = NSData(bytes: [49, 50, 51] as Byte[], length: 3)
+        let md5 = CryptoHash.md5.hash(data);
+        var md5String:String = md5.toHexString();
+        XCTAssertEqualObjects(md5String, "202CB962AC59075B964B07152D234B70", "MD5 calculation failed");
+    }
+    
 //    func testPerformanceExample() {
 //        self.measureBlock() {
 //        }

+ 12 - 1
README.md

@@ -1,4 +1,15 @@
 CryptoSwift
 ===========
 
-Bunch of crypto related functions for Swift
+Crypto related helpers for Swift.
+
+Requirements
+============
+For now CryptoSwift depends on OpenSSL
+
+Usage
+=====
+
+Use cocoapods, add this to Podfile
+
+`pod 'CryptoSwift', :git => 'https://github.com/krzyzanowskim/CryptoSwift.git', :branch => :master`