|
@@ -9,18 +9,22 @@
|
|
|
import Foundation
|
|
|
import XCTest
|
|
|
import Security
|
|
|
+import Base32
|
|
|
+
|
|
|
+let vectors: [(String, String, String)] = [
|
|
|
+ ("", "", ""),
|
|
|
+ ("f", "MY======", "CO======"),
|
|
|
+ ("fo", "MZXQ====", "CPNG===="),
|
|
|
+ ("foo", "MZXW6===", "CPNMU==="),
|
|
|
+ ("foob", "MZXW6YQ=", "CPNMUOG="),
|
|
|
+ ("fooba", "MZXW6YTB", "CPNMUOJ1"),
|
|
|
+ ("foobar", "MZXW6YTBOI======", "CPNMUOJ1E8======"),
|
|
|
+]
|
|
|
+
|
|
|
+let convertedVectors = vectors.map {($0.dataUsingUTF8StringEncoding, $1, $2)}
|
|
|
|
|
|
class SecEncodeTransformTests: XCTestCase {
|
|
|
|
|
|
- let vectors: [(String,String,String)] = [
|
|
|
- ("", "", ""),
|
|
|
- ("f", "MY======", "CO======"),
|
|
|
- ("fo", "MZXQ====", "CPNG===="),
|
|
|
- ("foo", "MZXW6===", "CPNMU==="),
|
|
|
- ("foob", "MZXW6YQ=", "CPNMUOG="),
|
|
|
- ("fooba", "MZXW6YTB", "CPNMUOJ1"),
|
|
|
- ("foobar", "MZXW6YTBOI======", "CPNMUOJ1E8======"),
|
|
|
- ]
|
|
|
|
|
|
override func setUp() {
|
|
|
super.setUp()
|
|
@@ -33,10 +37,9 @@ class SecEncodeTransformTests: XCTestCase {
|
|
|
}
|
|
|
|
|
|
// MARK: https://tools.ietf.org/html/rfc4648
|
|
|
-
|
|
|
+
|
|
|
// MARK: Using SecEncodeTransform
|
|
|
func test_RFC4648_Encode_UsingSecEncodeTransform() {
|
|
|
- let convertedVectors = self.vectors.map {($0.dataUsingUTF8StringEncoding, $1, $2)}
|
|
|
self.measureBlock{
|
|
|
for _ in 0...100 {
|
|
|
for (test, expect, expectHex) in convertedVectors {
|
|
@@ -48,7 +51,6 @@ class SecEncodeTransformTests: XCTestCase {
|
|
|
}
|
|
|
|
|
|
func test_RFC4648_Decode_UsingSecEncodeTransform() {
|
|
|
- let convertedVectors = self.vectors.map {($0.dataUsingUTF8StringEncoding, $1, $2)}
|
|
|
self.measureBlock{
|
|
|
for _ in 0...100 {
|
|
|
for (expect, test, testHex) in convertedVectors {
|
|
@@ -58,4 +60,27 @@ class SecEncodeTransformTests: XCTestCase {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // MARK: Using Base32
|
|
|
+ func test_RFC4648_Encode_UsingBase32() {
|
|
|
+ self.measureBlock{
|
|
|
+ for _ in 0...100 {
|
|
|
+ for (test, expect, expectHex) in convertedVectors {
|
|
|
+ let result = base32Encode(test)
|
|
|
+ XCTAssertEqual(result, expect, "base32Encode for \(test)")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func test_RFC4648_Decode_UsingBase32() {
|
|
|
+ self.measureBlock{
|
|
|
+ for _ in 0...100 {
|
|
|
+ for (expect, test, testHex) in convertedVectors {
|
|
|
+ let result = base32DecodeToData(test)
|
|
|
+ XCTAssertEqual(result!, expect, "base32Decode for \(test)")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|