Delete OneTimePasswordLegacyTests
This commit is contained in:
@@ -6,7 +6,6 @@ codecov:
|
||||
|
||||
ignore:
|
||||
- Tests
|
||||
- OneTimePasswordLegacyTests
|
||||
|
||||
coverage:
|
||||
status:
|
||||
|
||||
@@ -31,15 +31,10 @@
|
||||
C9290C301947D104008AE4DE /* TokenSerializationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9290C2F1947D104008AE4DE /* TokenSerializationTests.swift */; };
|
||||
C93A251A196B1BA400F86892 /* Token.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93A2519196B1BA400F86892 /* Token.swift */; };
|
||||
C944A55F1A7EDAE200E08B1E /* Base32.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C944A55E1A7EDAE200E08B1E /* Base32.framework */; };
|
||||
C944A5951A809CC000E08B1E /* OTPTokenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C944A5941A809CC000E08B1E /* OTPTokenTests.swift */; };
|
||||
C94B2007197774A20014A202 /* TokenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94B2006197774A20014A202 /* TokenTests.swift */; };
|
||||
C95B10CC196D22B9000840AA /* GeneratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C95B10CB196D22B9000840AA /* GeneratorTests.swift */; };
|
||||
C95F9FB91C03D6BC00CEA286 /* PersistentToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = C95F9FB81C03D6BC00CEA286 /* PersistentToken.swift */; };
|
||||
C97142361C1155FC0063B37E /* OTPToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9DC7ECC196C4D3D00B50C82 /* OTPToken.swift */; };
|
||||
C97142371C1156DB0063B37E /* OneTimePassword.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C97C82381946E51D00FD9F4C /* OneTimePassword.framework */; };
|
||||
C97C82441946E51D00FD9F4C /* OneTimePassword.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C97C82381946E51D00FD9F4C /* OneTimePassword.framework */; };
|
||||
C9A486C8196F38C800524F51 /* OTPTokenSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C93A2515196AFE1100F86892 /* OTPTokenSerializationTests.m */; settings = {COMPILER_FLAGS = "-Wno-nullable-to-nonnull-conversion"; }; };
|
||||
C9A486C9196F38CD00524F51 /* OTPTypeStrings.m in Sources */ = {isa = PBXBuildFile; fileRef = C9C9FE25196D181800C7ACEE /* OTPTypeStrings.m */; };
|
||||
C9B2A19C199A7F1B00BC4A8A /* EquatableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B2A19B199A7F1B00BC4A8A /* EquatableTests.swift */; };
|
||||
C9B77D771C03078B00BAF6BF /* KeychainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93A2514196AFE1100F86892 /* KeychainTests.swift */; };
|
||||
C9DC7EC4196BD5DF00B50C82 /* Token+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9DC7EC3196BD5DF00B50C82 /* Token+URL.swift */; };
|
||||
@@ -50,13 +45,6 @@
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
C97142381C1157FC0063B37E /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = C97C822F1946E51D00FD9F4C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = C97C82371946E51D00FD9F4C;
|
||||
remoteInfo = "OneTimePassword (iOS)";
|
||||
};
|
||||
C97C82451946E51D00FD9F4C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = C97C822F1946E51D00FD9F4C /* Project object */;
|
||||
@@ -100,7 +88,6 @@
|
||||
C9003417196F7046009733E8 /* Keychain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = "<group>"; };
|
||||
C9290C2F1947D104008AE4DE /* TokenSerializationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenSerializationTests.swift; sourceTree = "<group>"; };
|
||||
C93A2514196AFE1100F86892 /* KeychainTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainTests.swift; sourceTree = "<group>"; };
|
||||
C93A2515196AFE1100F86892 /* OTPTokenSerializationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTPTokenSerializationTests.m; sourceTree = "<group>"; };
|
||||
C93A2519196B1BA400F86892 /* Token.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Token.swift; sourceTree = "<group>"; };
|
||||
C93CC01A1DCBB755006255FA /* OneTimePassword-iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "OneTimePassword-iOS.xcconfig"; sourceTree = "<group>"; };
|
||||
C93CC01B1DCBB7FB006255FA /* OneTimePassword-watchOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "OneTimePassword-watchOS.xcconfig"; sourceTree = "<group>"; };
|
||||
@@ -108,7 +95,6 @@
|
||||
C93CC01E1DCBBDE7006255FA /* OneTimePassword.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OneTimePassword.xcconfig; sourceTree = "<group>"; };
|
||||
C93CC0211DCBC189006255FA /* OneTimePasswordTests.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OneTimePasswordTests.xcconfig; sourceTree = "<group>"; };
|
||||
C944A55E1A7EDAE200E08B1E /* Base32.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Base32.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C944A5941A809CC000E08B1E /* OTPTokenTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OTPTokenTests.swift; sourceTree = "<group>"; };
|
||||
C94765061C64587800C7527E /* Cartfile.private */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile.private; sourceTree = "<group>"; };
|
||||
C94B2006197774A20014A202 /* TokenTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenTests.swift; sourceTree = "<group>"; };
|
||||
C94B9BC81BD7270E0073D7C5 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; };
|
||||
@@ -125,17 +111,12 @@
|
||||
C996EC2D1A74D5830076B105 /* Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Profile.xcconfig; path = Configurations/Profile.xcconfig; sourceTree = "<group>"; };
|
||||
C996EC2E1A74D5830076B105 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Configurations/Release.xcconfig; sourceTree = "<group>"; };
|
||||
C996EC2F1A74D5830076B105 /* Test.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Test.xcconfig; path = Configurations/Test.xcconfig; sourceTree = "<group>"; };
|
||||
C9A486B3196F352E00524F51 /* OneTimePasswordLegacyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OneTimePasswordLegacyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C9A486B9196F352F00524F51 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
C9B2A19B199A7F1B00BC4A8A /* EquatableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EquatableTests.swift; sourceTree = "<group>"; };
|
||||
C9B84D1C1C015EC0002EE631 /* .hound.yml */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = text; path = .hound.yml; sourceTree = "<group>"; };
|
||||
C9B84D1D1C015EC0002EE631 /* .swiftlint.yml */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = text; path = .swiftlint.yml; sourceTree = "<group>"; };
|
||||
C9B84D1F1C015EC8002EE631 /* Cartfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile; sourceTree = "<group>"; };
|
||||
C9C9FE24196D181800C7ACEE /* OTPTypeStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTPTypeStrings.h; sourceTree = "<group>"; };
|
||||
C9C9FE25196D181800C7ACEE /* OTPTypeStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTPTypeStrings.m; sourceTree = "<group>"; };
|
||||
C9DC7EC3196BD5DF00B50C82 /* Token+URL.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Token+URL.swift"; sourceTree = "<group>"; };
|
||||
C9DC7EC7196BDF3B00B50C82 /* Generator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Generator.swift; sourceTree = "<group>"; };
|
||||
C9DC7ECC196C4D3D00B50C82 /* OTPToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OTPToken.swift; sourceTree = "<group>"; };
|
||||
C9E829531C62DFDA003F5FC9 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
|
||||
C9E829541C62FFBD003F5FC9 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = "<group>"; };
|
||||
C9E829551C630514003F5FC9 /* CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONDUCT.md; sourceTree = "<group>"; };
|
||||
@@ -171,14 +152,6 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
C9A486B0196F352E00524F51 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C97142371C1156DB0063B37E /* OneTimePassword.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
@@ -229,7 +202,6 @@
|
||||
children = (
|
||||
C97C823A1946E51D00FD9F4C /* Sources */,
|
||||
C97C82471946E51D00FD9F4C /* Tests */,
|
||||
C9A486B7196F352F00524F51 /* OneTimePasswordLegacyTests */,
|
||||
746E7166AD60449882DD84C7 /* Frameworks */,
|
||||
C996EC281A74D5830076B105 /* Configuration */,
|
||||
C97C82391946E51D00FD9F4C /* Products */,
|
||||
@@ -245,7 +217,6 @@
|
||||
children = (
|
||||
C97C82381946E51D00FD9F4C /* OneTimePassword.framework */,
|
||||
C97C82431946E51D00FD9F4C /* OneTimePasswordTests.xctest */,
|
||||
C9A486B3196F352E00524F51 /* OneTimePasswordLegacyTests.xctest */,
|
||||
5B39F4941DBD06BA00CD2DAB /* OneTimePassword.framework */,
|
||||
FD6C3C0C1E0200F800EC4528 /* OneTimePasswordTestApp.app */,
|
||||
);
|
||||
@@ -315,26 +286,6 @@
|
||||
path = Carthage/Checkouts/xcconfigs/Base;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
C9A486B7196F352F00524F51 /* OneTimePasswordLegacyTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9DC7ECC196C4D3D00B50C82 /* OTPToken.swift */,
|
||||
C944A5941A809CC000E08B1E /* OTPTokenTests.swift */,
|
||||
C93A2515196AFE1100F86892 /* OTPTokenSerializationTests.m */,
|
||||
C9C9FE23196D176300C7ACEE /* Helpers */,
|
||||
C9A486B8196F352F00524F51 /* Supporting Files */,
|
||||
);
|
||||
path = OneTimePasswordLegacyTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9A486B8196F352F00524F51 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9A486B9196F352F00524F51 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9A9B09A1A81EF4B00F3C4DC /* Persistence */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -357,15 +308,6 @@
|
||||
name = Tools;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9C9FE23196D176300C7ACEE /* Helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9C9FE24196D181800C7ACEE /* OTPTypeStrings.h */,
|
||||
C9C9FE25196D181800C7ACEE /* OTPTypeStrings.m */,
|
||||
);
|
||||
name = Helpers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FD6C3C0D1E0200F800EC4528 /* Test App */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -430,23 +372,6 @@
|
||||
productReference = C97C82431946E51D00FD9F4C /* OneTimePasswordTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
C9A486B2196F352E00524F51 /* OneTimePasswordLegacyTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C9A486C1196F352F00524F51 /* Build configuration list for PBXNativeTarget "OneTimePasswordLegacyTests" */;
|
||||
buildPhases = (
|
||||
C9A486AF196F352E00524F51 /* Sources */,
|
||||
C9A486B0196F352E00524F51 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
C97142391C1157FC0063B37E /* PBXTargetDependency */,
|
||||
);
|
||||
name = OneTimePasswordLegacyTests;
|
||||
productName = OneTimePasswordLegacyTests;
|
||||
productReference = C9A486B3196F352E00524F51 /* OneTimePasswordLegacyTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
FD6C3C0B1E0200F800EC4528 /* OneTimePasswordTestApp */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = FD6C3C2A1E0200F900EC4528 /* Build configuration list for PBXNativeTarget "OneTimePasswordTestApp" */;
|
||||
@@ -495,11 +420,6 @@
|
||||
ProvisioningStyle = Manual;
|
||||
TestTargetID = FD6C3C0B1E0200F800EC4528;
|
||||
};
|
||||
C9A486B2196F352E00524F51 = {
|
||||
CreatedOnToolsVersion = 6.0;
|
||||
LastSwiftMigration = 1020;
|
||||
ProvisioningStyle = Manual;
|
||||
};
|
||||
FD6C3C0B1E0200F800EC4528 = {
|
||||
CreatedOnToolsVersion = 8.2;
|
||||
LastSwiftMigration = 1020;
|
||||
@@ -522,7 +442,6 @@
|
||||
targets = (
|
||||
C97C82371946E51D00FD9F4C /* OneTimePassword (iOS) */,
|
||||
C97C82421946E51D00FD9F4C /* OneTimePasswordTests */,
|
||||
C9A486B2196F352E00524F51 /* OneTimePasswordLegacyTests */,
|
||||
FD6C3C0B1E0200F800EC4528 /* OneTimePasswordTestApp */,
|
||||
5B39F4931DBD06BA00CD2DAB /* OneTimePassword (watchOS) */,
|
||||
C9425DE4227501F500EF93BD /* Lint OneTimePassword */,
|
||||
@@ -600,17 +519,6 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
C9A486AF196F352E00524F51 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C9A486C8196F38C800524F51 /* OTPTokenSerializationTests.m in Sources */,
|
||||
C97142361C1155FC0063B37E /* OTPToken.swift in Sources */,
|
||||
C9A486C9196F38CD00524F51 /* OTPTypeStrings.m in Sources */,
|
||||
C944A5951A809CC000E08B1E /* OTPTokenTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
FD6C3C081E0200F800EC4528 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -622,11 +530,6 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
C97142391C1157FC0063B37E /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = C97C82371946E51D00FD9F4C /* OneTimePassword (iOS) */;
|
||||
targetProxy = C97142381C1157FC0063B37E /* PBXContainerItemProxy */;
|
||||
};
|
||||
C97C82461946E51D00FD9F4C /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = C97C82371946E51D00FD9F4C /* OneTimePassword (iOS) */;
|
||||
@@ -725,26 +628,6 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C9A486BE196F352F00524F51 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C93CC01C1DCBB875006255FA /* OneTimePasswordTests-iOS.xcconfig */;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = OneTimePasswordLegacyTests/Info.plist;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.mattrubin.onetimepassword.legacy.tests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C9A486BF196F352F00524F51 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C93CC01C1DCBB875006255FA /* OneTimePasswordTests-iOS.xcconfig */;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = OneTimePasswordLegacyTests/Info.plist;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.mattrubin.onetimepassword.legacy.tests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
FD6C3C261E0200F900EC4528 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = FDA64C771E021394004AD993 /* OneTimePasswordTestApp.xcconfig */;
|
||||
@@ -807,15 +690,6 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C9A486C1196F352F00524F51 /* Build configuration list for PBXNativeTarget "OneTimePasswordLegacyTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C9A486BE196F352F00524F51 /* Debug */,
|
||||
C9A486BF196F352F00524F51 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
FD6C3C2A1E0200F900EC4528 /* Build configuration list for PBXNativeTarget "OneTimePasswordTestApp" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -62,16 +62,6 @@
|
||||
ReferencedContainer = "container:OneTimePassword.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C9A486B2196F352E00524F51"
|
||||
BuildableName = "OneTimePasswordLegacyTests.xctest"
|
||||
BlueprintName = "OneTimePasswordLegacyTests"
|
||||
ReferencedContainer = "container:OneTimePassword.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,165 +0,0 @@
|
||||
//
|
||||
// OTPToken.swift
|
||||
// OneTimePassword
|
||||
//
|
||||
// Copyright (c) 2013-2018 Matt Rubin and the OneTimePassword authors
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import OneTimePassword
|
||||
|
||||
/// `OTPToken` is a mutable, Objective-C-compatible wrapper around `OneTimePassword.Token`. For more
|
||||
/// information about its properties and methods, consult the underlying `OneTimePassword`
|
||||
/// documentation.
|
||||
public final class OTPToken: NSObject {
|
||||
override public required init() {}
|
||||
|
||||
@objc public var name: String = OTPToken.defaultName
|
||||
@objc public var issuer: String = OTPToken.defaultIssuer
|
||||
@objc public var type: OTPTokenType = .timer
|
||||
@objc public var secret: Data = Data()
|
||||
@objc public var algorithm: OTPAlgorithm = OTPToken.defaultAlgorithm
|
||||
@objc public var digits: UInt = OTPToken.defaultDigits
|
||||
@objc public var period: TimeInterval = OTPToken.defaultPeriod
|
||||
@objc public var counter: UInt64 = OTPToken.defaultInitialCounter
|
||||
|
||||
private static let defaultName: String = ""
|
||||
private static let defaultIssuer: String = ""
|
||||
private static let defaultAlgorithm: OTPAlgorithm = .sha1
|
||||
private static var defaultDigits: UInt = 6
|
||||
private static var defaultInitialCounter: UInt64 = 0
|
||||
private static var defaultPeriod: TimeInterval = 30
|
||||
|
||||
private func update(with token: Token) {
|
||||
self.name = token.name
|
||||
self.issuer = token.issuer
|
||||
|
||||
self.secret = token.generator.secret
|
||||
self.algorithm = OTPAlgorithm(token.generator.algorithm)
|
||||
self.digits = UInt(token.generator.digits)
|
||||
|
||||
switch token.generator.factor {
|
||||
case let .counter(counter):
|
||||
self.type = .counter
|
||||
self.counter = counter
|
||||
case let .timer(period):
|
||||
self.type = .timer
|
||||
self.period = period
|
||||
}
|
||||
}
|
||||
|
||||
private convenience init(token: Token) {
|
||||
self.init()
|
||||
update(with: token)
|
||||
}
|
||||
|
||||
@objc
|
||||
public func validate() -> Bool {
|
||||
return (tokenForOTPToken(self) != nil)
|
||||
}
|
||||
}
|
||||
|
||||
public extension OTPToken {
|
||||
@objc(tokenWithURL:)
|
||||
static func token(from url: URL) -> Self? {
|
||||
return token(from: url, secret: nil)
|
||||
}
|
||||
|
||||
@objc(tokenWithURL:secret:)
|
||||
static func token(from url: URL, secret: Data?) -> Self? {
|
||||
guard let token = try? Token(url: url, secret: secret) else {
|
||||
return nil
|
||||
}
|
||||
return self.init(token: token)
|
||||
}
|
||||
|
||||
@objc
|
||||
func url() -> URL? {
|
||||
guard let token = tokenForOTPToken(self) else {
|
||||
return nil
|
||||
}
|
||||
return try? token.toURL()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Enums
|
||||
|
||||
// swiftlint:disable explicit_enum_raw_value
|
||||
@objc
|
||||
public enum OTPTokenType: UInt8 {
|
||||
case counter
|
||||
case timer
|
||||
}
|
||||
|
||||
@objc
|
||||
public enum OTPAlgorithm: UInt32 {
|
||||
@objc(OTPAlgorithmSHA1) case sha1
|
||||
@objc(OTPAlgorithmSHA256) case sha256
|
||||
@objc(OTPAlgorithmSHA512) case sha512
|
||||
}
|
||||
// swiftlint:enable explicit_enum_raw_value
|
||||
|
||||
// MARK: Conversion
|
||||
|
||||
private extension OTPAlgorithm {
|
||||
init(_ generatorAlgorithm: Generator.Algorithm) {
|
||||
switch generatorAlgorithm {
|
||||
case .sha1:
|
||||
self = .sha1
|
||||
case .sha256:
|
||||
self = .sha256
|
||||
case .sha512:
|
||||
self = .sha512
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func tokenForOTPToken(_ otpToken: OTPToken) -> Token? {
|
||||
guard let generator = try? Generator(
|
||||
factor: factorForOTPToken(otpToken),
|
||||
secret: otpToken.secret,
|
||||
algorithm: algorithmForOTPAlgorithm(otpToken.algorithm),
|
||||
digits: Int(otpToken.digits)
|
||||
) else {
|
||||
return nil
|
||||
}
|
||||
return Token(name: otpToken.name, issuer: otpToken.issuer, generator: generator)
|
||||
}
|
||||
|
||||
private func factorForOTPToken(_ otpToken: OTPToken) -> Generator.Factor {
|
||||
switch otpToken.type {
|
||||
case .counter:
|
||||
return .counter(otpToken.counter)
|
||||
case .timer:
|
||||
return .timer(period: otpToken.period)
|
||||
}
|
||||
}
|
||||
|
||||
private func algorithmForOTPAlgorithm(_ algorithm: OTPAlgorithm) -> Generator.Algorithm {
|
||||
switch algorithm {
|
||||
case .sha1:
|
||||
return .sha1
|
||||
case .sha256:
|
||||
return .sha256
|
||||
case .sha512:
|
||||
return .sha512
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
//
|
||||
// OTPTokenSerializationTests.m
|
||||
// OneTimePassword
|
||||
//
|
||||
// Copyright (c) 2013-2017 Matt Rubin and the OneTimePassword authors
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
|
||||
@import XCTest;
|
||||
@import Base32;
|
||||
#import "OneTimePasswordLegacyTests-Swift.h"
|
||||
#import "OTPTypeStrings.h"
|
||||
|
||||
|
||||
static NSString * const kOTPScheme = @"otpauth";
|
||||
static NSString * const kOTPTokenTypeCounterHost = @"hotp";
|
||||
static NSString * const kOTPTokenTypeTimerHost = @"totp";
|
||||
static NSString * const kRandomKey = @"RANDOM";
|
||||
|
||||
static NSArray *typeNumbers;
|
||||
static NSArray *names;
|
||||
static NSArray *issuers;
|
||||
static NSArray *secretStrings;
|
||||
static NSArray *algorithmNumbers;
|
||||
static NSArray *digitNumbers;
|
||||
static NSArray *periodNumbers;
|
||||
static NSArray *counterNumbers;
|
||||
|
||||
static const unsigned char kValidSecret[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };
|
||||
|
||||
|
||||
@interface OTPTokenSerializationTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation OTPTokenSerializationTests
|
||||
|
||||
+ (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -1,41 +0,0 @@
|
||||
//
|
||||
// OTPTokenTests.swift
|
||||
// OneTimePassword
|
||||
//
|
||||
// Copyright (c) 2015-2017 Matt Rubin and the OneTimePassword authors
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class OTPTokenTests: XCTestCase {
|
||||
func testInit() {
|
||||
let token = OTPToken()
|
||||
|
||||
XCTAssertEqual(token.name, "")
|
||||
XCTAssertEqual(token.issuer, "")
|
||||
XCTAssertEqual(token.type, OTPTokenType.timer)
|
||||
XCTAssertEqual(token.secret, Data())
|
||||
XCTAssertEqual(token.algorithm, OTPAlgorithm.sha1)
|
||||
XCTAssertEqual(token.digits, 6)
|
||||
XCTAssertEqual(token.period, 30)
|
||||
XCTAssertEqual(token.counter, 0)
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
//
|
||||
// OTPTypeStrings.h
|
||||
// OneTimePassword
|
||||
//
|
||||
// Copyright (c) 2014-2015 Matt Rubin and the OneTimePassword authors
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
|
||||
@import Foundation;
|
||||
#import "OneTimePasswordLegacyTests-Swift.h"
|
||||
|
||||
|
||||
#pragma mark - OTPTokenType
|
||||
|
||||
@interface NSString (OTPTokenType)
|
||||
+ (instancetype)stringForTokenType:(OTPTokenType)tokenType;
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - OTPAlgorithm
|
||||
|
||||
extern NSString *const kOTPAlgorithmSHA1;
|
||||
extern NSString *const kOTPAlgorithmSHA256;
|
||||
extern NSString *const kOTPAlgorithmSHA512;
|
||||
|
||||
@interface NSString (OTPAlgorithm)
|
||||
+ (instancetype)stringForAlgorithm:(OTPAlgorithm)algorithm;
|
||||
@end
|
||||
@@ -1,69 +0,0 @@
|
||||
//
|
||||
// OTPTypeStrings.m
|
||||
// OneTimePassword
|
||||
//
|
||||
// Copyright (c) 2014-2019 Matt Rubin and the OneTimePassword authors
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
|
||||
#import "OTPTypeStrings.h"
|
||||
|
||||
|
||||
#pragma mark - OTPTokenType
|
||||
|
||||
NSString *const kOTPTokenTypeCounter = @"hotp";
|
||||
NSString *const kOTPTokenTypeTimer = @"totp";
|
||||
|
||||
@implementation NSString (OTPTokenType)
|
||||
|
||||
+ (instancetype)stringForTokenType:(OTPTokenType)tokenType
|
||||
{
|
||||
switch (tokenType) {
|
||||
case OTPTokenTypeCounter:
|
||||
return kOTPTokenTypeCounter;
|
||||
case OTPTokenTypeTimer:
|
||||
return kOTPTokenTypeTimer;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark - OTPAlgorithm
|
||||
|
||||
NSString *const kOTPAlgorithmSHA1 = @"SHA1";
|
||||
NSString *const kOTPAlgorithmSHA256 = @"SHA256";
|
||||
NSString *const kOTPAlgorithmSHA512 = @"SHA512";
|
||||
|
||||
@implementation NSString (OTPAlgorithm)
|
||||
|
||||
+ (instancetype)stringForAlgorithm:(OTPAlgorithm)algorithm
|
||||
{
|
||||
switch (algorithm) {
|
||||
case OTPAlgorithmSHA1:
|
||||
return kOTPAlgorithmSHA1;
|
||||
case OTPAlgorithmSHA256:
|
||||
return kOTPAlgorithmSHA256;
|
||||
case OTPAlgorithmSHA512:
|
||||
return kOTPAlgorithmSHA512;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user