aboutsummaryrefslogtreecommitdiff
path: root/xcode
diff options
context:
space:
mode:
Diffstat (limited to 'xcode')
-rw-r--r--xcode/OLMKit.xcodeproj/project.pbxproj510
-rw-r--r--xcode/OLMKit/Info.plist26
-rw-r--r--xcode/OLMKit/OLMAccount.h51
-rw-r--r--xcode/OLMKit/OLMAccount.m268
-rw-r--r--xcode/OLMKit/OLMAccount_Private.h25
-rw-r--r--xcode/OLMKit/OLMInboundGroupSession.h38
-rw-r--r--xcode/OLMKit/OLMInboundGroupSession.m301
-rw-r--r--xcode/OLMKit/OLMKit.h39
-rw-r--r--xcode/OLMKit/OLMKit.m33
-rw-r--r--xcode/OLMKit/OLMMessage.h38
-rw-r--r--xcode/OLMKit/OLMMessage.m34
-rw-r--r--xcode/OLMKit/OLMOutboundGroupSession.h32
-rw-r--r--xcode/OLMKit/OLMOutboundGroupSession.m222
-rw-r--r--xcode/OLMKit/OLMPkDecryption.h71
-rw-r--r--xcode/OLMKit/OLMPkDecryption.m299
-rw-r--r--xcode/OLMKit/OLMPkEncryption.h42
-rw-r--r--xcode/OLMKit/OLMPkEncryption.m111
-rw-r--r--xcode/OLMKit/OLMPkMessage.h31
-rw-r--r--xcode/OLMKit/OLMPkMessage.m32
-rw-r--r--xcode/OLMKit/OLMPkSigning.h49
-rw-r--r--xcode/OLMKit/OLMPkSigning.m125
-rw-r--r--xcode/OLMKit/OLMSAS.h70
-rw-r--r--xcode/OLMKit/OLMSAS.m174
-rw-r--r--xcode/OLMKit/OLMSerializable.h29
-rw-r--r--xcode/OLMKit/OLMSession.h44
-rw-r--r--xcode/OLMKit/OLMSession.m383
-rw-r--r--xcode/OLMKit/OLMSession_Private.h26
-rw-r--r--xcode/OLMKit/OLMUtility.h49
-rw-r--r--xcode/OLMKit/OLMUtility.m121
-rw-r--r--xcode/OLMKitTests/Info.plist22
-rw-r--r--xcode/OLMKitTests/OLMKitGroupTests.m146
-rw-r--r--xcode/OLMKitTests/OLMKitPkTests.m142
-rw-r--r--xcode/OLMKitTests/OLMKitSASTests.m86
-rw-r--r--xcode/OLMKitTests/OLMKitTests.m206
-rw-r--r--xcode/Podfile7
-rw-r--r--xcode/Podfile.lock20
-rw-r--r--xcode/README.rst26
37 files changed, 0 insertions, 3928 deletions
diff --git a/xcode/OLMKit.xcodeproj/project.pbxproj b/xcode/OLMKit.xcodeproj/project.pbxproj
deleted file mode 100644
index 821a204..0000000
--- a/xcode/OLMKit.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,510 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 3244277D2175EF700023EDF1 /* OLMKitPkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3244277C2175EF700023EDF1 /* OLMKitPkTests.m */; };
- 3274F6021D9A633A005282E4 /* OLMKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3274F5F81D9A633A005282E4 /* OLMKit.framework */; };
- 3274F6071D9A633A005282E4 /* OLMKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3274F6061D9A633A005282E4 /* OLMKitTests.m */; };
- 3274F6131D9A698E005282E4 /* OLMKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3274F6121D9A698E005282E4 /* OLMKit.h */; };
- 32A151311DABDD4300400192 /* OLMKitGroupTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A151301DABDD4300400192 /* OLMKitGroupTests.m */; };
- 32F143AF2236B4100077CF37 /* OLMKitSASTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F143AE2236B4100077CF37 /* OLMKitSASTests.m */; };
- 7DBAD311AEA85CF6DB80DCFA /* libPods-OLMKitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7123FABE917D0FB140E036B7 /* libPods-OLMKitTests.a */; };
- D667051A0BA47E17CCC4E5D7 /* libPods-OLMKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F2F22FE8F173AF845B882805 /* libPods-OLMKit.a */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 3274F6031D9A633A005282E4 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 3274F5EF1D9A633A005282E4 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 3274F5F71D9A633A005282E4;
- remoteInfo = OLMKit;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 1B226B371526F2782C9D6372 /* Pods-OLMKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLMKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-OLMKit/Pods-OLMKit.release.xcconfig"; sourceTree = "<group>"; };
- 3244277C2175EF700023EDF1 /* OLMKitPkTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OLMKitPkTests.m; sourceTree = "<group>"; };
- 3274F5F81D9A633A005282E4 /* OLMKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OLMKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 3274F5FC1D9A633A005282E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 3274F6011D9A633A005282E4 /* OLMKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OLMKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 3274F6061D9A633A005282E4 /* OLMKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OLMKitTests.m; sourceTree = "<group>"; };
- 3274F6081D9A633A005282E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 3274F6121D9A698E005282E4 /* OLMKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OLMKit.h; sourceTree = "<group>"; };
- 32A151301DABDD4300400192 /* OLMKitGroupTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OLMKitGroupTests.m; sourceTree = "<group>"; };
- 32F143AE2236B4100077CF37 /* OLMKitSASTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OLMKitSASTests.m; sourceTree = "<group>"; };
- 7123FABE917D0FB140E036B7 /* libPods-OLMKitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OLMKitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 875BA7A520258EA15A31DD82 /* Pods-OLMKitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLMKitTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-OLMKitTests/Pods-OLMKitTests.debug.xcconfig"; sourceTree = "<group>"; };
- D48E486DAE1F59F4F7EA8C25 /* Pods-OLMKitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLMKitTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-OLMKitTests/Pods-OLMKitTests.release.xcconfig"; sourceTree = "<group>"; };
- E50E6B16E3433A5EB3297DEE /* Pods-OLMKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLMKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-OLMKit/Pods-OLMKit.debug.xcconfig"; sourceTree = "<group>"; };
- F2F22FE8F173AF845B882805 /* libPods-OLMKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OLMKit.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 3274F5F41D9A633A005282E4 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- D667051A0BA47E17CCC4E5D7 /* libPods-OLMKit.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 3274F5FE1D9A633A005282E4 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3274F6021D9A633A005282E4 /* OLMKit.framework in Frameworks */,
- 7DBAD311AEA85CF6DB80DCFA /* libPods-OLMKitTests.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 1FA3F53DFAAAA773F07F5E56 /* Pods */ = {
- isa = PBXGroup;
- children = (
- E50E6B16E3433A5EB3297DEE /* Pods-OLMKit.debug.xcconfig */,
- 1B226B371526F2782C9D6372 /* Pods-OLMKit.release.xcconfig */,
- 875BA7A520258EA15A31DD82 /* Pods-OLMKitTests.debug.xcconfig */,
- D48E486DAE1F59F4F7EA8C25 /* Pods-OLMKitTests.release.xcconfig */,
- );
- name = Pods;
- sourceTree = "<group>";
- };
- 3274F5EE1D9A633A005282E4 = {
- isa = PBXGroup;
- children = (
- 3274F5FA1D9A633A005282E4 /* OLMKit */,
- 3274F6051D9A633A005282E4 /* OLMKitTests */,
- 3274F5F91D9A633A005282E4 /* Products */,
- 1FA3F53DFAAAA773F07F5E56 /* Pods */,
- A5D2E6F079A29F7CC2A8D9FE /* Frameworks */,
- );
- sourceTree = "<group>";
- };
- 3274F5F91D9A633A005282E4 /* Products */ = {
- isa = PBXGroup;
- children = (
- 3274F5F81D9A633A005282E4 /* OLMKit.framework */,
- 3274F6011D9A633A005282E4 /* OLMKitTests.xctest */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 3274F5FA1D9A633A005282E4 /* OLMKit */ = {
- isa = PBXGroup;
- children = (
- 3274F6121D9A698E005282E4 /* OLMKit.h */,
- 3274F5FC1D9A633A005282E4 /* Info.plist */,
- );
- path = OLMKit;
- sourceTree = "<group>";
- };
- 3274F6051D9A633A005282E4 /* OLMKitTests */ = {
- isa = PBXGroup;
- children = (
- 32F143AE2236B4100077CF37 /* OLMKitSASTests.m */,
- 3244277C2175EF700023EDF1 /* OLMKitPkTests.m */,
- 3274F6061D9A633A005282E4 /* OLMKitTests.m */,
- 32A151301DABDD4300400192 /* OLMKitGroupTests.m */,
- 3274F6081D9A633A005282E4 /* Info.plist */,
- );
- path = OLMKitTests;
- sourceTree = "<group>";
- };
- A5D2E6F079A29F7CC2A8D9FE /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- F2F22FE8F173AF845B882805 /* libPods-OLMKit.a */,
- 7123FABE917D0FB140E036B7 /* libPods-OLMKitTests.a */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 3274F5F51D9A633A005282E4 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3274F6131D9A698E005282E4 /* OLMKit.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 3274F5F71D9A633A005282E4 /* OLMKit */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 3274F60C1D9A633B005282E4 /* Build configuration list for PBXNativeTarget "OLMKit" */;
- buildPhases = (
- 7FBCB292198F4156D9CA3B8D /* [CP] Check Pods Manifest.lock */,
- 3274F5F31D9A633A005282E4 /* Sources */,
- 3274F5F41D9A633A005282E4 /* Frameworks */,
- 3274F5F51D9A633A005282E4 /* Headers */,
- 3274F5F61D9A633A005282E4 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = OLMKit;
- productName = OLMKit;
- productReference = 3274F5F81D9A633A005282E4 /* OLMKit.framework */;
- productType = "com.apple.product-type.framework";
- };
- 3274F6001D9A633A005282E4 /* OLMKitTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 3274F60F1D9A633B005282E4 /* Build configuration list for PBXNativeTarget "OLMKitTests" */;
- buildPhases = (
- 47E69E5BE6A019858DC41D4F /* [CP] Check Pods Manifest.lock */,
- 3274F5FD1D9A633A005282E4 /* Sources */,
- 3274F5FE1D9A633A005282E4 /* Frameworks */,
- 3274F5FF1D9A633A005282E4 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 3274F6041D9A633A005282E4 /* PBXTargetDependency */,
- );
- name = OLMKitTests;
- productName = OLMKitTests;
- productReference = 3274F6011D9A633A005282E4 /* OLMKitTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 3274F5EF1D9A633A005282E4 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0940;
- ORGANIZATIONNAME = matrix.org;
- TargetAttributes = {
- 3274F5F71D9A633A005282E4 = {
- CreatedOnToolsVersion = 8.0;
- ProvisioningStyle = Automatic;
- };
- 3274F6001D9A633A005282E4 = {
- CreatedOnToolsVersion = 8.0;
- ProvisioningStyle = Automatic;
- };
- };
- };
- buildConfigurationList = 3274F5F21D9A633A005282E4 /* Build configuration list for PBXProject "OLMKit" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- );
- mainGroup = 3274F5EE1D9A633A005282E4;
- productRefGroup = 3274F5F91D9A633A005282E4 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 3274F5F71D9A633A005282E4 /* OLMKit */,
- 3274F6001D9A633A005282E4 /* OLMKitTests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 3274F5F61D9A633A005282E4 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 3274F5FF1D9A633A005282E4 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 47E69E5BE6A019858DC41D4F /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-OLMKitTests-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- 7FBCB292198F4156D9CA3B8D /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-OLMKit-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 3274F5F31D9A633A005282E4 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 3274F5FD1D9A633A005282E4 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3274F6071D9A633A005282E4 /* OLMKitTests.m in Sources */,
- 32F143AF2236B4100077CF37 /* OLMKitSASTests.m in Sources */,
- 3244277D2175EF700023EDF1 /* OLMKitPkTests.m in Sources */,
- 32A151311DABDD4300400192 /* OLMKitGroupTests.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 3274F6041D9A633A005282E4 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 3274F5F71D9A633A005282E4 /* OLMKit */;
- targetProxy = 3274F6031D9A633A005282E4 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 3274F60A1D9A633B005282E4 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_SUSPICIOUS_MOVES = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- 3274F60B1D9A633B005282E4 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_SUSPICIOUS_MOVES = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- 3274F60D1D9A633B005282E4 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = E50E6B16E3433A5EB3297DEE /* Pods-OLMKit.debug.xcconfig */;
- buildSettings = {
- CODE_SIGN_IDENTITY = "";
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = OLMKit/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.matrix.OLMKit;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SKIP_INSTALL = YES;
- };
- name = Debug;
- };
- 3274F60E1D9A633B005282E4 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 1B226B371526F2782C9D6372 /* Pods-OLMKit.release.xcconfig */;
- buildSettings = {
- CODE_SIGN_IDENTITY = "";
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = OLMKit/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.matrix.OLMKit;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SKIP_INSTALL = YES;
- };
- name = Release;
- };
- 3274F6101D9A633B005282E4 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 875BA7A520258EA15A31DD82 /* Pods-OLMKitTests.debug.xcconfig */;
- buildSettings = {
- INFOPLIST_FILE = OLMKitTests/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.matrix.OLMKitTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Debug;
- };
- 3274F6111D9A633B005282E4 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = D48E486DAE1F59F4F7EA8C25 /* Pods-OLMKitTests.release.xcconfig */;
- buildSettings = {
- INFOPLIST_FILE = OLMKitTests/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.matrix.OLMKitTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 3274F5F21D9A633A005282E4 /* Build configuration list for PBXProject "OLMKit" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3274F60A1D9A633B005282E4 /* Debug */,
- 3274F60B1D9A633B005282E4 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 3274F60C1D9A633B005282E4 /* Build configuration list for PBXNativeTarget "OLMKit" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3274F60D1D9A633B005282E4 /* Debug */,
- 3274F60E1D9A633B005282E4 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 3274F60F1D9A633B005282E4 /* Build configuration list for PBXNativeTarget "OLMKitTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3274F6101D9A633B005282E4 /* Debug */,
- 3274F6111D9A633B005282E4 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 3274F5EF1D9A633A005282E4 /* Project object */;
-}
diff --git a/xcode/OLMKit/Info.plist b/xcode/OLMKit/Info.plist
deleted file mode 100644
index d3de8ee..0000000
--- a/xcode/OLMKit/Info.plist
+++ /dev/null
@@ -1,26 +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>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>$(CURRENT_PROJECT_VERSION)</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
diff --git a/xcode/OLMKit/OLMAccount.h b/xcode/OLMKit/OLMAccount.h
deleted file mode 100644
index c8d65cd..0000000
--- a/xcode/OLMKit/OLMAccount.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import "OLMSerializable.h"
-
-@class OLMSession;
-
-@interface OLMAccount : NSObject <OLMSerializable, NSSecureCoding>
-
-/** Creates new account */
-- (instancetype) initNewAccount;
-
-/** public identity keys. base64 encoded in "curve25519" and "ed25519" keys */
-- (NSDictionary*) identityKeys;
-
-/** signs message with ed25519 key for account */
-- (NSString*) signMessage:(NSData*)messageData;
-
-/** Public parts of the unpublished one time keys for the account */
-- (NSDictionary*) oneTimeKeys;
-
-- (BOOL) removeOneTimeKeysForSession:(OLMSession*)session;
-
-/** Marks the current set of one time keys as being published. */
-- (void) markOneTimeKeysAsPublished;
-
-/** The largest number of one time keys this account can store. */
-- (NSUInteger) maxOneTimeKeys;
-
-/** Generates a number of new one time keys. If the total number of keys stored
- * by this account exceeds -maxOneTimeKeys then the old keys are
- * discarded. */
-- (void) generateOneTimeKeys:(NSUInteger)numberOfKeys;
-
-@end
diff --git a/xcode/OLMKit/OLMAccount.m b/xcode/OLMKit/OLMAccount.m
deleted file mode 100644
index 9e48c2d..0000000
--- a/xcode/OLMKit/OLMAccount.m
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMAccount.h"
-#import "OLMAccount_Private.h"
-#import "OLMSession.h"
-#import "OLMSession_Private.h"
-#import "OLMUtility.h"
-
-@import Security;
-
-@implementation OLMAccount
-
-- (void) dealloc {
- olm_clear_account(_account);
- free(_account);
-}
-
-- (BOOL) initializeAccountMemory {
- size_t accountSize = olm_account_size();
- _account = malloc(accountSize);
- NSParameterAssert(_account != nil);
- if (!_account) {
- return NO;
- }
- _account = olm_account(_account);
- NSParameterAssert(_account != nil);
- if (!_account) {
- return NO;
- }
- return YES;
-}
-
-- (instancetype) init {
- self = [super init];
- if (!self) {
- return nil;
- }
- BOOL success = [self initializeAccountMemory];
- if (!success) {
- return nil;
- }
- return self;
-}
-
-- (instancetype) initNewAccount {
- self = [self init];
- if (!self) {
- return nil;
- }
- size_t randomLength = olm_create_account_random_length(_account);
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- size_t accountResult = olm_create_account(_account, random.mutableBytes, random.length);
- [random resetBytesInRange:NSMakeRange(0, random.length)];
- if (accountResult == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"error creating account: %s", error);
- return nil;
- }
- return self;
-}
-
-- (NSUInteger) maxOneTimeKeys {
- return olm_account_max_number_of_one_time_keys(_account);
-}
-
-
-/** public identity keys */
-- (NSDictionary*) identityKeys {
- size_t identityKeysLength = olm_account_identity_keys_length(_account);
- uint8_t *identityKeysBytes = malloc(identityKeysLength);
- if (!identityKeysBytes) {
- return nil;
- }
- size_t result = olm_account_identity_keys(_account, identityKeysBytes, identityKeysLength);
- if (result == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"error getting id keys: %s", error);
- free(identityKeysBytes);
- return nil;
- }
- NSData *idKeyData = [NSData dataWithBytesNoCopy:identityKeysBytes length:identityKeysLength freeWhenDone:YES];
- NSError *error = nil;
- NSDictionary *keysDictionary = [NSJSONSerialization JSONObjectWithData:idKeyData options:0 error:&error];
- if (error) {
- NSLog(@"Could not decode JSON: %@", error.localizedDescription);
- }
- return keysDictionary;
-}
-
-- (NSString *)signMessage:(NSData *)messageData {
- size_t signatureLength = olm_account_signature_length(_account);
- uint8_t *signatureBytes = malloc(signatureLength);
- if (!signatureBytes) {
- return nil;
- }
-
- size_t result = olm_account_sign(_account, messageData.bytes, messageData.length, signatureBytes, signatureLength);
- if (result == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"error signing message: %s", error);
- free(signatureBytes);
- return nil;
- }
-
- NSData *signatureData = [NSData dataWithBytesNoCopy:signatureBytes length:signatureLength freeWhenDone:YES];
- return [[NSString alloc] initWithData:signatureData encoding:NSUTF8StringEncoding];
-}
-
-- (NSDictionary*) oneTimeKeys {
- size_t otkLength = olm_account_one_time_keys_length(_account);
- uint8_t *otkBytes = malloc(otkLength);
- if (!otkBytes) {
- return nil;
- }
- size_t result = olm_account_one_time_keys(_account, otkBytes, otkLength);
- if (result == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"error getting id keys: %s", error);
- free(otkBytes);
- return nil;
- }
- NSData *otk = [NSData dataWithBytesNoCopy:otkBytes length:otkLength freeWhenDone:YES];
- NSError *error = nil;
- NSDictionary *keysDictionary = [NSJSONSerialization JSONObjectWithData:otk options:0 error:&error];
- if (error) {
- NSLog(@"Could not decode JSON: %@", error.localizedDescription);
- }
- return keysDictionary;
-}
-
-
-- (void) generateOneTimeKeys:(NSUInteger)numberOfKeys {
- size_t randomLength = olm_account_generate_one_time_keys_random_length(_account, numberOfKeys);
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- size_t result = olm_account_generate_one_time_keys(_account, numberOfKeys, random.mutableBytes, random.length);
- [random resetBytesInRange:NSMakeRange(0, random.length)];
- if (result == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"error generating keys: %s", error);
- }
-}
-
-- (BOOL) removeOneTimeKeysForSession:(OLMSession *)session {
- NSParameterAssert(session != nil);
- if (!session) {
- return NO;
- }
- size_t result = olm_remove_one_time_keys(self.account, session.session);
- if (result == olm_error()) {
- const char *error = olm_account_last_error(_account);
- NSLog(@"olm_remove_one_time_keys error: %s", error);
- return NO;
- }
- return YES;
-}
-
-- (void)markOneTimeKeysAsPublished
-{
- olm_account_mark_keys_as_published(self.account);
-}
-
-#pragma mark OLMSerializable
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString*)serializedData key:(NSData*)key error:(NSError**)error {
- self = [self init];
- if (!self) {
- return nil;
- }
- NSParameterAssert(key.length > 0);
- NSParameterAssert(serializedData.length > 0);
- if (key.length == 0 || serializedData.length == 0) {
- if (error) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"Bad length."}];
- }
- return nil;
- }
- NSMutableData *pickle = [serializedData dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- size_t result = olm_unpickle_account(_account, key.bytes, key.length, pickle.mutableBytes, pickle.length);
- [pickle resetBytesInRange:NSMakeRange(0, pickle.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_account_last_error(_account);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- return self;
-}
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error {
- NSParameterAssert(key.length > 0);
- size_t length = olm_pickle_account_length(_account);
- NSMutableData *pickled = [NSMutableData dataWithLength:length];
- size_t result = olm_pickle_account(_account, key.bytes, key.length, pickled.mutableBytes, pickled.length);
- if (result == olm_error()) {
- const char *olm_error = olm_account_last_error(_account);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- NSString *pickleString = [[NSString alloc] initWithData:pickled encoding:NSUTF8StringEncoding];
- [pickled resetBytesInRange:NSMakeRange(0, pickled.length)];
- return pickleString;
-}
-
-#pragma mark NSSecureCoding
-
-+ (BOOL) supportsSecureCoding {
- return YES;
-}
-
-#pragma mark NSCoding
-
-- (id)initWithCoder:(NSCoder *)decoder {
- NSString *version = [decoder decodeObjectOfClass:[NSString class] forKey:@"version"];
-
- NSError *error = nil;
-
- if ([version isEqualToString:@"1"]) {
- NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"];
- NSData *key = [decoder decodeObjectOfClass:[NSData class] forKey:@"key"];
-
- self = [self initWithSerializedData:pickle key:key error:&error];
- }
-
- NSParameterAssert(error == nil);
- NSParameterAssert(self != nil);
- if (!self) {
- return nil;
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)encoder {
- NSData *key = [OLMUtility randomBytesOfLength:32];
- NSError *error = nil;
- NSString *pickle = [self serializeDataWithKey:key error:&error];
- NSParameterAssert(pickle.length > 0 && error == nil);
-
- [encoder encodeObject:pickle forKey:@"pickle"];
- [encoder encodeObject:key forKey:@"key"];
- [encoder encodeObject:@"1" forKey:@"version"];
-}
-
-
-@end
diff --git a/xcode/OLMKit/OLMAccount_Private.h b/xcode/OLMKit/OLMAccount_Private.h
deleted file mode 100644
index 313ab71..0000000
--- a/xcode/OLMKit/OLMAccount_Private.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#include "olm/olm.h"
-
-@interface OLMAccount()
-
-@property (nonatomic) OlmAccount *account;
-
-@end
diff --git a/xcode/OLMKit/OLMInboundGroupSession.h b/xcode/OLMKit/OLMInboundGroupSession.h
deleted file mode 100644
index c0d2c59..0000000
--- a/xcode/OLMKit/OLMInboundGroupSession.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import "OLMSerializable.h"
-
-@interface OLMInboundGroupSession : NSObject <OLMSerializable, NSSecureCoding>
-
-- (instancetype)initInboundGroupSessionWithSessionKey:(NSString*)sessionKey error:(NSError**)error;
-
-- (instancetype)initInboundGroupSessionWithImportedSession:(NSString*)sessionKey error:(NSError**)error;
-
-- (NSString*)sessionIdentifier;
-
-/** base64 ciphertext -> UTF-8 plaintext */
-- (NSString*)decryptMessage:(NSString*)message messageIndex:(NSUInteger*)messageIndex error:(NSError**)error;
-
-- (NSUInteger)firstKnownIndex;
-
-- (BOOL)isVerified;
-
-- (NSString*)exportSessionAtMessageIndex:(NSUInteger)messageIndex error:(NSError**)error;
-
-@end
diff --git a/xcode/OLMKit/OLMInboundGroupSession.m b/xcode/OLMKit/OLMInboundGroupSession.m
deleted file mode 100644
index 9e57741..0000000
--- a/xcode/OLMKit/OLMInboundGroupSession.m
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMInboundGroupSession.h"
-
-#import "OLMUtility.h"
-#include "olm/olm.h"
-
-@interface OLMInboundGroupSession ()
-{
- OlmInboundGroupSession *session;
-}
-@end
-
-
-@implementation OLMInboundGroupSession
-
-- (void)dealloc {
- olm_clear_inbound_group_session(session);
- free(session);
-}
-
-- (instancetype)init {
- self = [super init];
- if (self)
- {
- session = malloc(olm_inbound_group_session_size());
- if (session) {
- session = olm_inbound_group_session(session);
- }
-
- if (!session) {
- return nil;
- }
- }
- return self;
-}
-
-- (instancetype)initInboundGroupSessionWithSessionKey:(NSString *)sessionKey error:(NSError**)error {
- self = [self init];
- if (self) {
- NSData *sessionKeyData = [sessionKey dataUsingEncoding:NSUTF8StringEncoding];
- size_t result = olm_init_inbound_group_session(session, sessionKeyData.bytes, sessionKeyData.length);
- if (result == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_init_inbound_group_session error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_init_inbound_group_session error: %@", errorString]
- }];
- }
-
- return nil;
- }
- }
- return self;
-}
-
-- (instancetype)initInboundGroupSessionWithImportedSession:(NSString *)sessionKey error:(NSError *__autoreleasing *)error
-{
- self = [self init];
- if (self) {
- NSData *sessionKeyData = [sessionKey dataUsingEncoding:NSUTF8StringEncoding];
- size_t result = olm_import_inbound_group_session(session, sessionKeyData.bytes, sessionKeyData.length);
- if (result == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_import_inbound_group_session error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_import_inbound_group_session error: %@", errorString]
- }];
- }
-
- return nil;
- }
- }
- return self;
-}
-
-- (NSString *)sessionIdentifier {
- size_t length = olm_inbound_group_session_id_length(session);
- NSMutableData *idData = [NSMutableData dataWithLength:length];
- if (!idData) {
- return nil;
- }
- size_t result = olm_inbound_group_session_id(session, idData.mutableBytes, idData.length);
- if (result == olm_error()) {
- const char *error = olm_inbound_group_session_last_error(session);
- NSLog(@"olm_inbound_group_session_id error: %s", error);
- return nil;
- }
- NSString *idString = [[NSString alloc] initWithData:idData encoding:NSUTF8StringEncoding];
- return idString;
-}
-
-- (NSString *)decryptMessage:(NSString *)message messageIndex:(NSUInteger*)messageIndex error:(NSError**)error
-{
- NSParameterAssert(message != nil);
- NSData *messageData = [message dataUsingEncoding:NSUTF8StringEncoding];
- if (!messageData) {
- return nil;
- }
- NSMutableData *mutMessage = messageData.mutableCopy;
- size_t maxPlaintextLength = olm_group_decrypt_max_plaintext_length(session, mutMessage.mutableBytes, mutMessage.length);
- if (maxPlaintextLength == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_group_decrypt_max_plaintext_length error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_decrypt_max_plaintext_length error: %@", errorString]
- }];
- }
-
- return nil;
- }
- // message buffer is destroyed by olm_group_decrypt_max_plaintext_length
- mutMessage = messageData.mutableCopy;
- NSMutableData *plaintextData = [NSMutableData dataWithLength:maxPlaintextLength];
-
- uint32_t message_index;
- size_t plaintextLength = olm_group_decrypt(session, mutMessage.mutableBytes, mutMessage.length, plaintextData.mutableBytes, plaintextData.length, &message_index);
- if (plaintextLength == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_group_decrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_decrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
- plaintextData.length = plaintextLength;
- NSString *plaintext = [[NSString alloc] initWithData:plaintextData encoding:NSUTF8StringEncoding];
- [plaintextData resetBytesInRange:NSMakeRange(0, plaintextData.length)];
-
- if (messageIndex)
- {
- *messageIndex = message_index;
- }
-
- return plaintext;
-}
-
-- (NSUInteger)firstKnownIndex
-{
- return olm_inbound_group_session_first_known_index(session);
-}
-
-- (BOOL)isVerified
-{
- return (0 != olm_inbound_group_session_is_verified(session));
-}
-
-- (NSString*)exportSessionAtMessageIndex:(NSUInteger)messageIndex error:(NSError**)error;
-{
- size_t length = olm_export_inbound_group_session_length(session);
- NSMutableData *key = [NSMutableData dataWithLength:length];
- size_t result = olm_export_inbound_group_session(session, key.mutableBytes, key.length, (uint32_t)messageIndex);
- if (result == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- NSString *keyString = [[NSString alloc] initWithData:key encoding:NSUTF8StringEncoding];
- [key resetBytesInRange:NSMakeRange(0, key.length)];
- return keyString;
-}
-
-
-#pragma mark OLMSerializable
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString *)serializedData key:(NSData *)key error:(NSError *__autoreleasing *)error {
- self = [self init];
- if (!self) {
- return nil;
- }
- NSParameterAssert(key.length > 0);
- NSParameterAssert(serializedData.length > 0);
- if (key.length == 0 || serializedData.length == 0) {
- if (error) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"Bad length."}];
- }
- return nil;
- }
- NSMutableData *pickle = [serializedData dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- size_t result = olm_unpickle_inbound_group_session(session, key.bytes, key.length, pickle.mutableBytes, pickle.length);
- [pickle resetBytesInRange:NSMakeRange(0, pickle.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- return self;
-}
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error {
- NSParameterAssert(key.length > 0);
- size_t length = olm_pickle_inbound_group_session_length(session);
- NSMutableData *pickled = [NSMutableData dataWithLength:length];
- size_t result = olm_pickle_inbound_group_session(session, key.bytes, key.length, pickled.mutableBytes, pickled.length);
- if (result == olm_error()) {
- const char *olm_error = olm_inbound_group_session_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- NSString *pickleString = [[NSString alloc] initWithData:pickled encoding:NSUTF8StringEncoding];
- [pickled resetBytesInRange:NSMakeRange(0, pickled.length)];
- return pickleString;
-}
-
-#pragma mark NSSecureCoding
-
-+ (BOOL) supportsSecureCoding {
- return YES;
-}
-
-#pragma mark NSCoding
-
-- (id)initWithCoder:(NSCoder *)decoder {
- NSString *version = [decoder decodeObjectOfClass:[NSString class] forKey:@"version"];
-
- NSError *error = nil;
-
- if ([version isEqualToString:@"1"]) {
- NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"];
- NSData *key = [decoder decodeObjectOfClass:[NSData class] forKey:@"key"];
-
- self = [self initWithSerializedData:pickle key:key error:&error];
- }
-
- NSParameterAssert(error == nil);
- NSParameterAssert(self != nil);
- if (!self) {
- return nil;
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)encoder {
- NSData *key = [OLMUtility randomBytesOfLength:32];
- NSError *error = nil;
- NSString *pickle = [self serializeDataWithKey:key error:&error];
- NSParameterAssert(pickle.length > 0 && error == nil);
-
- [encoder encodeObject:pickle forKey:@"pickle"];
- [encoder encodeObject:key forKey:@"key"];
- [encoder encodeObject:@"1" forKey:@"version"];
-}
-
-@end
diff --git a/xcode/OLMKit/OLMKit.h b/xcode/OLMKit/OLMKit.h
deleted file mode 100644
index 54496a0..0000000
--- a/xcode/OLMKit/OLMKit.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-// In this header, you should import all the public headers of your framework using statements like #import <OLMKit/PublicHeader.h>
-
-#import <OLMKit/OLMAccount.h>
-#import <OLMKit/OLMSession.h>
-#import <OLMKit/OLMMessage.h>
-#import <OLMKit/OLMUtility.h>
-#import <OLMKit/OLMInboundGroupSession.h>
-#import <OLMKit/OLMOutboundGroupSession.h>
-#import <OLMKit/OLMPkEncryption.h>
-#import <OLMKit/OLMPkDecryption.h>
-#import <OLMKit/OLMPkSigning.h>
-#import <OLMKit/OLMSAS.h>
-
-@interface OLMKit : NSObject
-
-//! Project version string for OLMKit, the same as libolm.
-+ (NSString*)versionString;
-
-@end
diff --git a/xcode/OLMKit/OLMKit.m b/xcode/OLMKit/OLMKit.m
deleted file mode 100644
index c383650..0000000
--- a/xcode/OLMKit/OLMKit.m
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMKit.h"
-
-#include "olm/olm.h"
-
-@implementation OLMKit
-
-+ (NSString*)versionString
-{
- uint8_t major, minor, patch;
-
- olm_get_library_version(&major, &minor, &patch);
-
- return [NSString stringWithFormat:@"%tu.%tu.%tu", major, minor, patch];
-}
-
-@end
diff --git a/xcode/OLMKit/OLMMessage.h b/xcode/OLMKit/OLMMessage.h
deleted file mode 100644
index b6e8c8f..0000000
--- a/xcode/OLMKit/OLMMessage.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-/*
- from olm.hh
- static const size_t OLM_MESSAGE_TYPE_PRE_KEY = 0;
- static const size_t OLM_MESSAGE_TYPE_MESSAGE = 1;
- */
-typedef NS_ENUM(NSInteger, OLMMessageType) {
- OLMMessageTypePreKey = 0,
- OLMMessageTypeMessage = 1
-};
-
-@interface OLMMessage : NSObject
-
-@property (nonatomic, copy, readonly, nonnull) NSString *ciphertext;
-@property (readonly) OLMMessageType type;
-
-- (nullable instancetype) initWithCiphertext:(nonnull NSString*)ciphertext type:(OLMMessageType)type;
-
-@end
diff --git a/xcode/OLMKit/OLMMessage.m b/xcode/OLMKit/OLMMessage.m
deleted file mode 100644
index 949f834..0000000
--- a/xcode/OLMKit/OLMMessage.m
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMMessage.h"
-
-@implementation OLMMessage
-
-- (nullable instancetype) initWithCiphertext:(nonnull NSString*)ciphertext type:(OLMMessageType)type {
- NSParameterAssert(ciphertext != nil);
- self = [super init];
- if (!self) {
- return nil;
- }
- _ciphertext = [ciphertext copy];
- _type = type;
- return self;
-}
-
-@end
diff --git a/xcode/OLMKit/OLMOutboundGroupSession.h b/xcode/OLMKit/OLMOutboundGroupSession.h
deleted file mode 100644
index c979b61..0000000
--- a/xcode/OLMKit/OLMOutboundGroupSession.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import "OLMSerializable.h"
-
-@interface OLMOutboundGroupSession : NSObject <OLMSerializable, NSSecureCoding>
-
-- (instancetype) initOutboundGroupSession;
-
-- (NSString*)sessionIdentifier;
-- (NSUInteger)messageIndex;
-- (NSString*)sessionKey;
-
-/** UTF-8 plaintext -> base64 ciphertext */
-- (NSString*)encryptMessage:(NSString*)message error:(NSError**)error;
-
-@end
diff --git a/xcode/OLMKit/OLMOutboundGroupSession.m b/xcode/OLMKit/OLMOutboundGroupSession.m
deleted file mode 100644
index a0a7cc6..0000000
--- a/xcode/OLMKit/OLMOutboundGroupSession.m
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMOutboundGroupSession.h"
-
-#import "OLMUtility.h"
-#include "olm/olm.h"
-
-@interface OLMOutboundGroupSession ()
-{
- OlmOutboundGroupSession *session;
-}
-@end
-
-@implementation OLMOutboundGroupSession
-
-- (void)dealloc {
- olm_clear_outbound_group_session(session);
- free(session);
-}
-
-- (instancetype)init {
- self = [super init];
- if (self)
- {
- session = malloc(olm_outbound_group_session_size());
- if (session) {
- session = olm_outbound_group_session(session);
- }
-
- if (!session) {
- return nil;
- }
- }
- return self;
-}
-
-- (instancetype)initOutboundGroupSession {
- self = [self init];
- if (self) {
- NSMutableData *random = [OLMUtility randomBytesOfLength:olm_init_outbound_group_session_random_length(session)];
-
- size_t result = olm_init_outbound_group_session(session, random.mutableBytes, random.length);
- [random resetBytesInRange:NSMakeRange(0, random.length)];
- if (result == olm_error()) {
- const char *error = olm_outbound_group_session_last_error(session);
- NSLog(@"olm_init_outbound_group_session error: %s", error);
- return nil;
- }
- }
- return self;
-}
-
-- (NSString *)sessionIdentifier {
- size_t length = olm_outbound_group_session_id_length(session);
- NSMutableData *idData = [NSMutableData dataWithLength:length];
- if (!idData) {
- return nil;
- }
- size_t result = olm_outbound_group_session_id(session, idData.mutableBytes, idData.length);
- if (result == olm_error()) {
- const char *error = olm_outbound_group_session_last_error(session);
- NSLog(@"olm_outbound_group_session_id error: %s", error);
- return nil;
- }
- NSString *idString = [[NSString alloc] initWithData:idData encoding:NSUTF8StringEncoding];
- return idString;
-}
-
-- (NSUInteger)messageIndex {
- return olm_outbound_group_session_message_index(session);
-}
-
-- (NSString *)sessionKey {
- size_t length = olm_outbound_group_session_key_length(session);
- NSMutableData *sessionKeyData = [NSMutableData dataWithLength:length];
- if (!sessionKeyData) {
- return nil;
- }
- size_t result = olm_outbound_group_session_key(session, sessionKeyData.mutableBytes, sessionKeyData.length);
- if (result == olm_error()) {
- const char *error = olm_outbound_group_session_last_error(session);
- NSLog(@"olm_outbound_group_session_key error: %s", error);
- return nil;
- }
- NSString *sessionKey = [[NSString alloc] initWithData:sessionKeyData encoding:NSUTF8StringEncoding];
- [sessionKeyData resetBytesInRange:NSMakeRange(0, sessionKeyData.length)];
- return sessionKey;
-}
-
-- (NSString *)encryptMessage:(NSString *)message error:(NSError**)error {
- NSData *plaintextData = [message dataUsingEncoding:NSUTF8StringEncoding];
- size_t ciphertextLength = olm_group_encrypt_message_length(session, plaintextData.length);
- NSMutableData *ciphertext = [NSMutableData dataWithLength:ciphertextLength];
- if (!ciphertext) {
- return nil;
- }
- size_t result = olm_group_encrypt(session, plaintextData.bytes, plaintextData.length, ciphertext.mutableBytes, ciphertext.length);
- if (result == olm_error()) {
- const char *olm_error = olm_outbound_group_session_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_group_encrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_encrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
- return [[NSString alloc] initWithData:ciphertext encoding:NSUTF8StringEncoding];
-}
-
-#pragma mark OLMSerializable
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString *)serializedData key:(NSData *)key error:(NSError *__autoreleasing *)error {
- self = [self init];
- if (!self) {
- return nil;
- }
- NSParameterAssert(key.length > 0);
- NSParameterAssert(serializedData.length > 0);
- if (key.length == 0 || serializedData.length == 0) {
- if (error) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"Bad length."}];
- }
- return nil;
- }
- NSMutableData *pickle = [serializedData dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- size_t result = olm_unpickle_outbound_group_session(session, key.bytes, key.length, pickle.mutableBytes, pickle.length);
- [pickle resetBytesInRange:NSMakeRange(0, pickle.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_outbound_group_session_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- return self;
-}
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error {
- NSParameterAssert(key.length > 0);
- size_t length = olm_pickle_outbound_group_session_length(session);
- NSMutableData *pickled = [NSMutableData dataWithLength:length];
- size_t result = olm_pickle_outbound_group_session(session, key.bytes, key.length, pickled.mutableBytes, pickled.length);
- if (result == olm_error()) {
- const char *olm_error = olm_outbound_group_session_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- NSString *pickleString = [[NSString alloc] initWithData:pickled encoding:NSUTF8StringEncoding];
- [pickled resetBytesInRange:NSMakeRange(0, pickled.length)];
- return pickleString;
-}
-
-#pragma mark NSSecureCoding
-
-+ (BOOL) supportsSecureCoding {
- return YES;
-}
-
-#pragma mark NSCoding
-
-- (id)initWithCoder:(NSCoder *)decoder {
- NSString *version = [decoder decodeObjectOfClass:[NSString class] forKey:@"version"];
-
- NSError *error = nil;
-
- if ([version isEqualToString:@"1"]) {
- NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"];
- NSData *key = [decoder decodeObjectOfClass:[NSData class] forKey:@"key"];
-
- self = [self initWithSerializedData:pickle key:key error:&error];
- }
-
- NSParameterAssert(error == nil);
- NSParameterAssert(self != nil);
- if (!self) {
- return nil;
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)encoder {
- NSData *key = [OLMUtility randomBytesOfLength:32];
- NSError *error = nil;
- NSString *pickle = [self serializeDataWithKey:key error:&error];
- NSParameterAssert(pickle.length > 0 && error == nil);
-
- [encoder encodeObject:pickle forKey:@"pickle"];
- [encoder encodeObject:key forKey:@"key"];
- [encoder encodeObject:@"1" forKey:@"version"];
-}
-
-@end
diff --git a/xcode/OLMKit/OLMPkDecryption.h b/xcode/OLMKit/OLMPkDecryption.h
deleted file mode 100644
index 823dc78..0000000
--- a/xcode/OLMKit/OLMPkDecryption.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "OLMSerializable.h"
-#import "OLMPkMessage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface OLMPkDecryption : NSObject <OLMSerializable, NSSecureCoding>
-
-/**
- Initialise the key from the private part of a key as returned by `privateKey`.
-
- Note that the pubkey is a base64 encoded string, but the private key is
- an unencoded byte array.
-
- @param privateKey the private key part.
- @param error the error if any.
- @return the associated public key.
- */
-- (NSString *)setPrivateKey:(NSData*)privateKey error:(NSError* _Nullable *)error;
-
-/**
- Generate a new key to use for decrypting messages.
-
- @param error the error if any.
- @return the public part of the generated key.
- */
-- (NSString *)generateKey:(NSError* _Nullable *)error;
-
-/**
- Get the private key.
-
- @return the private key;
- */
-- (NSData *)privateKey;
-
-/**
- Decrypt a ciphertext.
-
- @param message the cipher message to decrypt.
- @param error the error if any.
- @return the decrypted message.
- */
-- (NSString *)decryptMessage:(OLMPkMessage*)message error:(NSError* _Nullable *)error;
-
-/**
- Private key length.
-
- @return the length in bytes.
- */
-+ (NSUInteger)privateKeyLength;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/xcode/OLMKit/OLMPkDecryption.m b/xcode/OLMKit/OLMPkDecryption.m
deleted file mode 100644
index 4af2c71..0000000
--- a/xcode/OLMKit/OLMPkDecryption.m
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMPkDecryption.h"
-
-#include "olm/olm.h"
-#include "olm/pk.h"
-#include "OLMUtility.h"
-
-@interface OLMPkDecryption ()
-{
- OlmPkDecryption *session;
-}
-@end
-
-@implementation OLMPkDecryption
-
-- (void)dealloc {
- olm_clear_pk_decryption(session);
- free(session);
-}
-
-- (instancetype)init {
- self = [super init];
- if (self) {
- session = (OlmPkDecryption *)malloc(olm_pk_decryption_size());
- olm_pk_decryption(session);
- }
- return self;
-}
-
-- (NSString *)setPrivateKey:(NSData *)privateKey error:(NSError *__autoreleasing _Nullable *)error {
- size_t publicKeyLength = olm_pk_key_length();
- NSMutableData *publicKeyData = [NSMutableData dataWithLength:publicKeyLength];
- if (!publicKeyData) {
- return nil;
- }
-
- size_t result = olm_pk_key_from_private(session,
- publicKeyData.mutableBytes, publicKeyLength,
- (void*)privateKey.bytes, privateKey.length);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
- NSLog(@"[OLMPkDecryption] setPrivateKey: olm_pk_key_from_private error: %s", olm_error);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_pk_key_from_private error: %@", errorString]
- }];
- }
- return nil;
- }
-
- NSString *publicKey = [[NSString alloc] initWithData:publicKeyData encoding:NSUTF8StringEncoding];
- return publicKey;
-}
-
-- (NSString *)generateKey:(NSError *__autoreleasing _Nullable *)error {
- size_t randomLength = olm_pk_private_key_length();
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- if (!random) {
- return nil;
- }
-
- size_t publicKeyLength = olm_pk_key_length();
- NSMutableData *publicKeyData = [NSMutableData dataWithLength:publicKeyLength];
- if (!publicKeyData) {
- return nil;
- }
-
- size_t result = olm_pk_key_from_private(session,
- publicKeyData.mutableBytes, publicKeyData.length,
- random.mutableBytes, randomLength);
- [random resetBytesInRange:NSMakeRange(0, randomLength)];
- if (result == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
- NSLog(@"[OLMPkDecryption] generateKey: olm_pk_key_from_private error: %s", olm_error);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_pk_key_from_private error: %@", errorString]
- }];
- }
- return nil;
- }
-
- NSString *publicKey = [[NSString alloc] initWithData:publicKeyData encoding:NSUTF8StringEncoding];
- return publicKey;
-}
-
-- (NSData *)privateKey {
- size_t privateKeyLength = olm_pk_private_key_length();
- NSMutableData *privateKeyData = [NSMutableData dataWithLength:privateKeyLength];
- if (!privateKeyData) {
- return nil;
- }
-
- size_t result = olm_pk_get_private_key(session,
- privateKeyData.mutableBytes, privateKeyLength);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
- NSLog(@"[OLMPkDecryption] privateKey: olm_pk_get_private_key error: %s", olm_error);
- return nil;
- }
-
- NSData *privateKey = [privateKeyData copy];
- [privateKeyData resetBytesInRange:NSMakeRange(0, privateKeyData.length)];
-
- return privateKey;
-}
-
-- (NSString *)decryptMessage:(OLMPkMessage *)message error:(NSError *__autoreleasing _Nullable *)error {
- NSData *messageData = [message.ciphertext dataUsingEncoding:NSUTF8StringEncoding];
- NSData *macData = [message.mac dataUsingEncoding:NSUTF8StringEncoding];
- NSData *ephemeralKeyData = [message.ephemeralKey dataUsingEncoding:NSUTF8StringEncoding];
- if (!messageData || !macData || !ephemeralKeyData) {
- return nil;
- }
-
- NSMutableData *mutMessage = messageData.mutableCopy;
- size_t maxPlaintextLength = olm_pk_max_plaintext_length(session, mutMessage.length);
- if (maxPlaintextLength == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"[OLMPkDecryption] decryptMessage: olm_pk_max_plaintext_length error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_pk_max_plaintext_length error: %@", errorString]
- }];
- }
-
- return nil;
- }
-
- mutMessage = messageData.mutableCopy;
- NSMutableData *plaintextData = [NSMutableData dataWithLength:maxPlaintextLength];
- size_t plaintextLength = olm_pk_decrypt(session,
- ephemeralKeyData.bytes, ephemeralKeyData.length,
- macData.bytes, macData.length,
- mutMessage.mutableBytes, mutMessage.length,
- plaintextData.mutableBytes, plaintextData.length);
- if (plaintextLength == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"[OLMPkDecryption] decryptMessage: olm_pk_decrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_decrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
-
- plaintextData.length = plaintextLength;
- NSString *plaintext = [[NSString alloc] initWithData:plaintextData encoding:NSUTF8StringEncoding];
- [plaintextData resetBytesInRange:NSMakeRange(0, plaintextData.length)];
- return plaintext;
-}
-
-+ (NSUInteger)privateKeyLength {
- return olm_pk_private_key_length();
-}
-
-#pragma mark OLMSerializable
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString *)serializedData key:(NSData *)key error:(NSError *__autoreleasing *)error {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- NSParameterAssert(key.length > 0);
- NSParameterAssert(serializedData.length > 0);
- if (key.length == 0 || serializedData.length == 0) {
- if (error) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"Bad length."}];
- }
- return nil;
- }
-
- size_t ephemeralLength = olm_pk_key_length();
- NSMutableData *ephemeralBuffer = [NSMutableData dataWithLength:ephemeralLength];
-
- NSMutableData *pickle = [serializedData dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- size_t result = olm_unpickle_pk_decryption(session,
- key.bytes, key.length,
- pickle.mutableBytes, pickle.length,
- ephemeralBuffer.mutableBytes, ephemeralLength);
- [pickle resetBytesInRange:NSMakeRange(0, pickle.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- return self;
-}
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error {
- NSParameterAssert(key.length > 0);
- size_t length = olm_pickle_pk_decryption_length(session);
- NSMutableData *pickled = [NSMutableData dataWithLength:length];
-
- size_t result = olm_pickle_pk_decryption(session,
- key.bytes, key.length,
- pickled.mutableBytes, pickled.length);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_decryption_last_error(session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
-
- NSString *pickleString = [[NSString alloc] initWithData:pickled encoding:NSUTF8StringEncoding];
- [pickled resetBytesInRange:NSMakeRange(0, pickled.length)];
-
- return pickleString;
-}
-
-#pragma mark NSSecureCoding
-
-+ (BOOL) supportsSecureCoding {
- return YES;
-}
-
-#pragma mark NSCoding
-
-- (id)initWithCoder:(NSCoder *)decoder {
- NSString *version = [decoder decodeObjectOfClass:[NSString class] forKey:@"version"];
-
- NSError *error = nil;
-
- if ([version isEqualToString:@"1"]) {
- NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"];
- NSData *key = [decoder decodeObjectOfClass:[NSData class] forKey:@"key"];
-
- self = [self initWithSerializedData:pickle key:key error:&error];
- }
-
- NSParameterAssert(error == nil);
- NSParameterAssert(self != nil);
- if (!self) {
- return nil;
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)encoder {
- NSData *key = [OLMUtility randomBytesOfLength:32];
- NSError *error = nil;
-
- NSString *pickle = [self serializeDataWithKey:key error:&error];
- NSParameterAssert(pickle.length > 0 && error == nil);
-
- [encoder encodeObject:pickle forKey:@"pickle"];
- [encoder encodeObject:key forKey:@"key"];
- [encoder encodeObject:@"1" forKey:@"version"];
-}
-
-@end
diff --git a/xcode/OLMKit/OLMPkEncryption.h b/xcode/OLMKit/OLMPkEncryption.h
deleted file mode 100644
index 6ae767c..0000000
--- a/xcode/OLMKit/OLMPkEncryption.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "OLMPkMessage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface OLMPkEncryption : NSObject
-
-/**
- Set the recipient's public key for encrypting to.
-
- @param recipientKey the recipient's public key.
- */
-- (void)setRecipientKey:(NSString*)recipientKey;
-
-/**
- Encrypt a plaintext for the recipient.
-
- @param message the message to encrypt.
- @param error the error if any.
- @return the encrypted message.
- */
-- (OLMPkMessage *)encryptMessage:(NSString*)message error:(NSError* _Nullable *)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/xcode/OLMKit/OLMPkEncryption.m b/xcode/OLMKit/OLMPkEncryption.m
deleted file mode 100644
index 34ad57c..0000000
--- a/xcode/OLMKit/OLMPkEncryption.m
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMPkEncryption.h"
-
-#include "olm/olm.h"
-#include "olm/pk.h"
-#include "OLMUtility.h"
-
-@interface OLMPkEncryption ()
-{
- OlmPkEncryption *session;
-}
-@end
-
-@implementation OLMPkEncryption
-
-- (void)dealloc {
- olm_clear_pk_encryption(session);
- free(session);
-}
-
-
-- (instancetype)init {
- self = [super init];
- if (self) {
- session = (OlmPkEncryption *)malloc(olm_pk_encryption_size());
- olm_pk_encryption(session);
- }
- return self;
-}
-
-- (void)setRecipientKey:(NSString*)recipientKey {
- NSData *recipientKeyData = [recipientKey dataUsingEncoding:NSUTF8StringEncoding];
- olm_pk_encryption_set_recipient_key(session, recipientKeyData.bytes, recipientKeyData.length);
-}
-
-- (OLMPkMessage *)encryptMessage:(NSString *)message error:(NSError *__autoreleasing _Nullable *)error {
- NSData *plaintextData = [message dataUsingEncoding:NSUTF8StringEncoding];
-
- size_t randomLength = olm_pk_encrypt_random_length(session);
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- if (!random) {
- return nil;
- }
-
- size_t ciphertextLength = olm_pk_ciphertext_length(session, plaintextData.length);
- NSMutableData *ciphertext = [NSMutableData dataWithLength:ciphertextLength];
- if (!ciphertext) {
- return nil;
- }
-
- size_t macLength = olm_pk_mac_length(session);
- NSMutableData *macData = [NSMutableData dataWithLength:macLength];
- if (!macData) {
- return nil;
- }
-
- size_t ephemeralKeyLength = olm_pk_key_length();
- NSMutableData *ephemeralKeyData = [NSMutableData dataWithLength:ephemeralKeyLength];
- if (!ephemeralKeyData) {
- return nil;
- }
-
- size_t result = olm_pk_encrypt(session,
- plaintextData.bytes, plaintextData.length,
- ciphertext.mutableBytes, ciphertext.length,
- macData.mutableBytes, macLength,
- ephemeralKeyData.mutableBytes, ephemeralKeyLength,
- random.mutableBytes, randomLength);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_encryption_last_error(session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"[OLMPkEncryption] encryptMessage: olm_group_encrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_encrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
-
- OLMPkMessage *encryptedMessage = [[OLMPkMessage alloc]
- initWithCiphertext:[[NSString alloc] initWithData:ciphertext encoding:NSUTF8StringEncoding]
- mac:[[NSString alloc] initWithData:macData encoding:NSUTF8StringEncoding]
- ephemeralKey:[[NSString alloc] initWithData:ephemeralKeyData encoding:NSUTF8StringEncoding]];
-
-
- return encryptedMessage;
-}
-
-@end
diff --git a/xcode/OLMKit/OLMPkMessage.h b/xcode/OLMKit/OLMPkMessage.h
deleted file mode 100644
index 1559fca..0000000
--- a/xcode/OLMKit/OLMPkMessage.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface OLMPkMessage : NSObject
-
-@property (nonatomic, copy, readonly) NSString *ciphertext;
-@property (nonatomic, copy, readonly,) NSString *mac;
-@property (nonatomic, copy, readonly) NSString *ephemeralKey;
-
-- (instancetype) initWithCiphertext:(NSString*)ciphertext mac:(NSString*)mac ephemeralKey:(NSString*)ephemeralKey;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/xcode/OLMKit/OLMPkMessage.m b/xcode/OLMKit/OLMPkMessage.m
deleted file mode 100644
index 0f24512..0000000
--- a/xcode/OLMKit/OLMPkMessage.m
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMPkMessage.h"
-
-@implementation OLMPkMessage
-
-- (instancetype)initWithCiphertext:(NSString *)ciphertext mac:(NSString *)mac ephemeralKey:(NSString *)ephemeralKey {
- self = [super init];
- if (!self) {
- return nil;
- }
- _ciphertext = [ciphertext copy];
- _mac = [mac copy];
- _ephemeralKey = [ephemeralKey copy];
- return self;
-}
-
-@end
diff --git a/xcode/OLMKit/OLMPkSigning.h b/xcode/OLMKit/OLMPkSigning.h
deleted file mode 100644
index 09724e1..0000000
--- a/xcode/OLMKit/OLMPkSigning.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright 2019 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface OLMPkSigning : NSObject
-
-/**
- Initialise the signing object with a public/private keypair from a seed.
-
- @param seed the seed.
- @param error the error if any.
- @return the public key
- */
-- (NSString *)doInitWithSeed:(NSData*)seed error:(NSError* _Nullable *)error;
-
-/**
- Sign a message.
-
- @param message the message to sign.
- @param error the error if any.
- @return the signature.
- */
-- (NSString *)sign:(NSString*)message error:(NSError* _Nullable *)error;
-
-/**
- Generate a seed.
-
- @return the generated seed.
- */
-+ (NSData *)generateSeed;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/xcode/OLMKit/OLMPkSigning.m b/xcode/OLMKit/OLMPkSigning.m
deleted file mode 100644
index d5c7d09..0000000
--- a/xcode/OLMKit/OLMPkSigning.m
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- Copyright 2019 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMPkSigning.h"
-
-#include "olm/olm.h"
-#include "olm/pk.h"
-#include "OLMUtility.h"
-
-@interface OLMPkSigning ()
-{
- OlmPkSigning *sign;
-}
-@end
-
-@implementation OLMPkSigning
-
-- (void)dealloc {
- olm_clear_pk_signing(sign);
- free(sign);
-}
-
-
-- (instancetype)init {
- self = [super init];
- if (self) {
- sign = (OlmPkSigning *)malloc(olm_pk_signing_size());
- olm_pk_signing(sign);
- }
- return self;
-}
-
-- (NSString *)doInitWithSeed:(NSData *)seed error:(NSError *__autoreleasing _Nullable *)error {
- size_t publicKeyLength = olm_pk_signing_public_key_length();
- NSMutableData *publicKeyData = [NSMutableData dataWithLength:publicKeyLength];
- if (!publicKeyData) {
- return nil;
- }
-
- NSMutableData *mutableSeed = [NSMutableData dataWithData:seed];
-
- size_t result = olm_pk_signing_key_from_seed(sign,
- publicKeyData.mutableBytes, publicKeyLength,
- mutableSeed.mutableBytes, mutableSeed.length);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_signing_last_error(sign);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"[OLMPkSigning] doInitWithSeed: olm_pk_signing_key_from_seed error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_pk_signing_key_from_seed error: %@", errorString]
- }];
- }
-
- return nil;
- }
-
- [mutableSeed resetBytesInRange:NSMakeRange(0, mutableSeed.length)];
-
- NSString *publicKey = [[NSString alloc] initWithData:publicKeyData encoding:NSUTF8StringEncoding];
- return publicKey;
-}
-
-- (NSString *)sign:(NSString *)message error:(NSError *__autoreleasing _Nullable *)error {
- NSData *messageData = [message dataUsingEncoding:NSUTF8StringEncoding];
-
- size_t signatureLength = olm_pk_signature_length();
- NSMutableData *signatureData = [NSMutableData dataWithLength:signatureLength];
- if (!signatureData) {
- return nil;
- }
-
- size_t result = olm_pk_sign(sign,
- messageData.bytes, messageData.length,
- signatureData.mutableBytes, signatureLength);
- if (result == olm_error()) {
- const char *olm_error = olm_pk_signing_last_error(sign);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"[OLMPkSigning] sign: olm_pk_sign error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_pk_sign error: %@", errorString]
- }];
- }
-
- return nil;
- }
-
- NSString *signature = [[NSString alloc] initWithData:signatureData encoding:NSUTF8StringEncoding];
- return signature;
-}
-
-+ (NSData *)generateSeed {
- size_t seedLength = olm_pk_signing_seed_length();
- NSMutableData *seed = [OLMUtility randomBytesOfLength:seedLength];
- if (!seed) {
- return nil;
- }
-
- return seed;
-}
-
-@end
diff --git a/xcode/OLMKit/OLMSAS.h b/xcode/OLMKit/OLMSAS.h
deleted file mode 100644
index 3785b03..0000000
--- a/xcode/OLMKit/OLMSAS.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright 2019 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Short Authentication String verification utility class.
- */
-@interface OLMSAS : NSObject
-
-/**
- Get the public key of the SAS object.
- */
-- (NSString * _Nullable)publicKey;
-
-/**
- Set the public key of other user.
-
- @param theirPublicKey the other user's public key.
- @return error the error if any.
- */
-- (NSError* _Nullable)setTheirPublicKey:(NSString*)theirPublicKey;
-
-/**
- Generate bytes to use for the short authentication string.
-
- @param info extra information to mix in when generating the bytes, as per the Matrix spec.
- @param length the size of the output buffer. For hex-based SAS as in the Matrix spec, this will be 5.
- @return generated bytes
- */
-- (NSData *)generateBytes:(NSString*)info length:(NSUInteger)length;
-
-/**
- Generate a message authentication code (MAC) based on the shared secret.
-
- @param input the message to produce the authentication code for.
- @param info extra information to mix in when generating the MAC, as per the Matrix spec.
- @param error the error if any.
- @return the MAC.
- */
-- (NSString *)calculateMac:(NSString*)input info:(NSString*)info error:(NSError* _Nullable *)error;
-
-/**
- Generate a message authentication code (MAC) based on the shared secret.
- For compatibility with an old version of olm.js.
-
- @param input the message to produce the authentication code for.
- @param info extra information to mix in when generating the MAC, as per the Matrix spec.
- @param error the error if any.
- @return the MAC.
- */
-- (NSString *)calculateMacLongKdf:(NSString*)input info:(NSString*)info error:(NSError* _Nullable *)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/xcode/OLMKit/OLMSAS.m b/xcode/OLMKit/OLMSAS.m
deleted file mode 100644
index fed370b..0000000
--- a/xcode/OLMKit/OLMSAS.m
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMSAS.h"
-
-#include "olm/olm.h"
-#include "olm/sas.h"
-#include "OLMUtility.h"
-
-@interface OLMSAS () {
- void *olmSASbuffer;
- OlmSAS *olmSAS;
-}
-@end
-
-@implementation OLMSAS
-
-- (void)dealloc {
- olm_clear_sas(olmSAS);
- free(olmSASbuffer);
-}
-
-- (instancetype)init {
- self = [super init];
- if (self) {
- olmSASbuffer = malloc(olm_sas_size());
- olmSAS = olm_sas(olmSASbuffer);
-
- size_t randomLength = olm_create_sas_random_length(olmSAS);
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- if (!random) {
- return nil;
- }
-
- olm_create_sas(olmSAS, random.mutableBytes, randomLength);
-
- [random resetBytesInRange:NSMakeRange(0, randomLength)];
- }
- return self;
-}
-
-- (NSString * _Nullable)publicKey {
- size_t publicKeyLength = olm_sas_pubkey_length(olmSAS);
- NSMutableData *publicKeyData = [NSMutableData dataWithLength:publicKeyLength];
- if (!publicKeyData) {
- return nil;
- }
-
- size_t result = olm_sas_get_pubkey(olmSAS, publicKeyData.mutableBytes, publicKeyLength);
- if (result == olm_error()) {
- const char *olm_error = olm_sas_last_error(olmSAS);
- NSLog(@"[OLMSAS] publicKey: olm_sas_get_pubkey error: %s", olm_error);
- return nil;
- }
-
- NSString *publicKey = [[NSString alloc] initWithData:publicKeyData encoding:NSUTF8StringEncoding];
- return publicKey;
-}
-
-- (NSError * _Nullable)setTheirPublicKey:(NSString*)theirPublicKey {
- NSMutableData *theirPublicKeyData = [theirPublicKey dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
-
- size_t result = olm_sas_set_their_key(olmSAS, theirPublicKeyData.mutableBytes, theirPublicKeyData.length);
- if (result == olm_error()) {
- const char *olm_error = olm_sas_last_error(olmSAS);
- NSLog(@"[OLMSAS] setTheirPublicKey: olm_sas_set_their_key error: %s", olm_error);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (olm_error && errorString) {
- return [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_sas_set_their_key error: %@", errorString]
- }];
- }
- }
-
- return nil;
-}
-
-- (NSData *)generateBytes:(NSString *)info length:(NSUInteger)length {
- NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
-
- NSMutableData *bytes = [NSMutableData dataWithLength:length];
- if (!bytes) {
- return nil;
- }
-
- olm_sas_generate_bytes(olmSAS, infoData.bytes, infoData.length, bytes.mutableBytes, length);
- return bytes;
-}
-
-- (NSString *)calculateMac:(NSString *)input info:(NSString *)info error:(NSError *__autoreleasing _Nullable *)error {
- NSMutableData *inputData = [input dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
-
- size_t macLength = olm_sas_mac_length(olmSAS);
- NSMutableData *macData = [NSMutableData dataWithLength:macLength];
- if (!macData) {
- return nil;
- }
-
- size_t result = olm_sas_calculate_mac(olmSAS,
- inputData.mutableBytes, inputData.length,
- infoData.bytes, infoData.length,
- macData.mutableBytes, macLength);
- if (result == olm_error()) {
- const char *olm_error = olm_sas_last_error(olmSAS);
- NSLog(@"[OLMSAS] calculateMac: olm_sas_calculate_mac error: %s", olm_error);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_sas_calculate_mac error: %@", errorString]
- }];
- }
- return nil;
- }
-
- NSString *mac = [[NSString alloc] initWithData:macData encoding:NSUTF8StringEncoding];
- return mac;
-}
-
-- (NSString *)calculateMacLongKdf:(NSString *)input info:(NSString *)info error:(NSError *__autoreleasing _Nullable *)error {
- NSMutableData *inputData = [input dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
-
- size_t macLength = olm_sas_mac_length(olmSAS);
- NSMutableData *macData = [NSMutableData dataWithLength:macLength];
- if (!macData) {
- return nil;
- }
-
- size_t result = olm_sas_calculate_mac_long_kdf(olmSAS,
- inputData.mutableBytes, inputData.length,
- infoData.bytes, infoData.length,
- macData.mutableBytes, macLength);
- if (result == olm_error()) {
- const char *olm_error = olm_sas_last_error(olmSAS);
- NSLog(@"[OLMSAS] calculateMacLongKdf: olm_sas_calculate_mac error: %s", olm_error);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_sas_calculate_mac_long_kdf error: %@", errorString]
- }];
- }
- return nil;
- }
-
- NSString *mac = [[NSString alloc] initWithData:macData encoding:NSUTF8StringEncoding];
- return mac;
-}
-
-@end
diff --git a/xcode/OLMKit/OLMSerializable.h b/xcode/OLMKit/OLMSerializable.h
deleted file mode 100644
index e929903..0000000
--- a/xcode/OLMKit/OLMSerializable.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-@protocol OLMSerializable <NSObject>
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString*)serializedData key:(NSData*)key error:(NSError**)error;
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error;
-
-@end
diff --git a/xcode/OLMKit/OLMSession.h b/xcode/OLMKit/OLMSession.h
deleted file mode 100644
index 0446f98..0000000
--- a/xcode/OLMKit/OLMSession.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import "OLMSerializable.h"
-#import "OLMAccount.h"
-#import "OLMMessage.h"
-
-@interface OLMSession : NSObject <OLMSerializable, NSSecureCoding>
-
-- (instancetype) initOutboundSessionWithAccount:(OLMAccount*)account theirIdentityKey:(NSString*)theirIdentityKey theirOneTimeKey:(NSString*)theirOneTimeKey error:(NSError**)error;
-
-- (instancetype) initInboundSessionWithAccount:(OLMAccount*)account oneTimeKeyMessage:(NSString*)oneTimeKeyMessage error:(NSError**)error;
-
-- (instancetype) initInboundSessionWithAccount:(OLMAccount*)account theirIdentityKey:(NSString*)theirIdentityKey oneTimeKeyMessage:(NSString*)oneTimeKeyMessage error:(NSError**)error;
-
-- (NSString*) sessionIdentifier;
-
-- (BOOL) matchesInboundSession:(NSString*)oneTimeKeyMessage;
-
-- (BOOL) matchesInboundSessionFrom:(NSString*)theirIdentityKey oneTimeKeyMessage:(NSString *)oneTimeKeyMessage;
-
-/** UTF-8 plaintext -> base64 ciphertext */
-- (OLMMessage*) encryptMessage:(NSString*)message error:(NSError**)error;
-
-/** base64 ciphertext -> UTF-8 plaintext */
-- (NSString*) decryptMessage:(OLMMessage*)message error:(NSError**)error;
-
-@end
diff --git a/xcode/OLMKit/OLMSession.m b/xcode/OLMKit/OLMSession.m
deleted file mode 100644
index fc58a08..0000000
--- a/xcode/OLMKit/OLMSession.m
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMSession.h"
-#import "OLMUtility.h"
-#import "OLMAccount_Private.h"
-#import "OLMSession_Private.h"
-#include "olm/olm.h"
-
-@implementation OLMSession
-
-- (void) dealloc {
- olm_clear_session(_session);
- free(_session);
-}
-
-- (BOOL) initializeSessionMemory {
- size_t size = olm_session_size();
- _session = malloc(size);
- NSParameterAssert(_session != nil);
- if (!_session) {
- return NO;
- }
- _session = olm_session(_session);
- NSParameterAssert(_session != nil);
- if (!_session) {
- return NO;
- }
- return YES;
-}
-
-- (instancetype) init {
- self = [super init];
- if (!self) {
- return nil;
- }
- BOOL success = [self initializeSessionMemory];
- if (!success) {
- return nil;
- }
- return self;
-}
-
-- (instancetype) initWithAccount:(OLMAccount*)account {
- self = [self init];
- if (!self) {
- return nil;
- }
- NSParameterAssert(account != nil && account.account != NULL);
- if (account == nil || account.account == NULL) {
- return nil;
- }
- _account = account;
- return self;
-}
-
-- (instancetype) initOutboundSessionWithAccount:(OLMAccount*)account theirIdentityKey:(NSString*)theirIdentityKey theirOneTimeKey:(NSString*)theirOneTimeKey error:(NSError**)error {
- self = [self initWithAccount:account];
- if (!self) {
- return nil;
- }
- NSMutableData *random = [OLMUtility randomBytesOfLength:olm_create_outbound_session_random_length(_session)];
- NSData *idKey = [theirIdentityKey dataUsingEncoding:NSUTF8StringEncoding];
- NSData *otKey = [theirOneTimeKey dataUsingEncoding:NSUTF8StringEncoding];
- size_t result = olm_create_outbound_session(_session, account.account, idKey.bytes, idKey.length, otKey.bytes, otKey.length, random.mutableBytes, random.length);
- [random resetBytesInRange:NSMakeRange(0, random.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_create_outbound_session error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_create_outbound_session error: %@", errorString]
- }];
- }
-
- return nil;
- }
- return self;
-}
-
-- (instancetype) initInboundSessionWithAccount:(OLMAccount*)account oneTimeKeyMessage:(NSString*)oneTimeKeyMessage error:(NSError**)error {
- self = [self initWithAccount:account];
- if (!self) {
- return nil;
- }
- NSMutableData *otk = [NSMutableData dataWithData:[oneTimeKeyMessage dataUsingEncoding:NSUTF8StringEncoding]];
- size_t result = olm_create_inbound_session(_session, account.account, otk.mutableBytes, oneTimeKeyMessage.length);
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_create_inbound_session error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_create_inbound_session error: %@", errorString]
- }];
- }
-
- return nil;
- }
- return self;
-}
-
-- (instancetype) initInboundSessionWithAccount:(OLMAccount*)account theirIdentityKey:(NSString*)theirIdentityKey oneTimeKeyMessage:(NSString*)oneTimeKeyMessage error:(NSError**)error {
- self = [self initWithAccount:account];
- if (!self) {
- return nil;
- }
- NSData *idKey = [theirIdentityKey dataUsingEncoding:NSUTF8StringEncoding];
- NSMutableData *otk = [NSMutableData dataWithData:[oneTimeKeyMessage dataUsingEncoding:NSUTF8StringEncoding]];
- size_t result = olm_create_inbound_session_from(_session, account.account, idKey.bytes, idKey.length, otk.mutableBytes, otk.length);
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_create_inbound_session_from error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_create_inbound_session_from error: %@", errorString]
- }];
- }
-
- return nil;
- }
- return self;
-}
-
-- (NSString*) sessionIdentifier {
- size_t length = olm_session_id_length(_session);
- NSMutableData *idData = [NSMutableData dataWithLength:length];
- if (!idData) {
- return nil;
- }
- size_t result = olm_session_id(_session, idData.mutableBytes, idData.length);
- if (result == olm_error()) {
- const char *error = olm_session_last_error(_session);
- NSLog(@"olm_session_id error: %s", error);
- return nil;
- }
- NSString *idString = [[NSString alloc] initWithData:idData encoding:NSUTF8StringEncoding];
- return idString;
-}
-
-- (BOOL)matchesInboundSession:(NSString *)oneTimeKeyMessage {
- NSMutableData *otk = [NSMutableData dataWithData:[oneTimeKeyMessage dataUsingEncoding:NSUTF8StringEncoding]];
-
- size_t result = olm_matches_inbound_session(_session, otk.mutableBytes, otk.length);
- if (result == 1) {
- return YES;
- }
- else {
- if (result == olm_error()) {
- const char *error = olm_session_last_error(_session);
- NSLog(@"olm_matches_inbound_session error: %s", error);
- }
- return NO;
- }
-}
-
-- (BOOL)matchesInboundSessionFrom:(NSString *)theirIdentityKey oneTimeKeyMessage:(NSString *)oneTimeKeyMessage {
- NSData *idKey = [theirIdentityKey dataUsingEncoding:NSUTF8StringEncoding];
- NSMutableData *otk = [NSMutableData dataWithData:[oneTimeKeyMessage dataUsingEncoding:NSUTF8StringEncoding]];
-
- size_t result = olm_matches_inbound_session_from(_session,
- idKey.bytes, idKey.length,
- otk.mutableBytes, otk.length);
- if (result == 1) {
- return YES;
- }
- else {
- if (result == olm_error()) {
- const char *error = olm_session_last_error(_session);
- NSLog(@"olm_matches_inbound_session error: %s", error);
- }
- return NO;
- }
-}
-
-- (OLMMessage*) encryptMessage:(NSString*)message error:(NSError**)error {
- size_t messageType = olm_encrypt_message_type(_session);
- size_t randomLength = olm_encrypt_random_length(_session);
- NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength];
- NSData *plaintextData = [message dataUsingEncoding:NSUTF8StringEncoding];
- size_t ciphertextLength = olm_encrypt_message_length(_session, plaintextData.length);
- NSMutableData *ciphertext = [NSMutableData dataWithLength:ciphertextLength];
- if (!ciphertext) {
- return nil;
- }
- size_t result = olm_encrypt(_session, plaintextData.bytes, plaintextData.length, random.mutableBytes, random.length, ciphertext.mutableBytes, ciphertext.length);
- [random resetBytesInRange:NSMakeRange(0, random.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_encrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_encrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
- NSString *ciphertextString = [[NSString alloc] initWithData:ciphertext encoding:NSUTF8StringEncoding];
- OLMMessage *encryptedMessage = [[OLMMessage alloc] initWithCiphertext:ciphertextString type:messageType];
- return encryptedMessage;
-}
-
-- (NSString*) decryptMessage:(OLMMessage*)message error:(NSError**)error {
- NSParameterAssert(message != nil);
- NSData *messageData = [message.ciphertext dataUsingEncoding:NSUTF8StringEncoding];
- if (!messageData) {
- return nil;
- }
- NSMutableData *mutMessage = messageData.mutableCopy;
- size_t maxPlaintextLength = olm_decrypt_max_plaintext_length(_session, message.type, mutMessage.mutableBytes, mutMessage.length);
- if (maxPlaintextLength == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_decrypt_max_plaintext_length error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_decrypt_max_plaintext_length error: %@", errorString]
- }];
- }
-
- return nil;
- }
- // message buffer is destroyed by olm_decrypt_max_plaintext_length
- mutMessage = messageData.mutableCopy;
- NSMutableData *plaintextData = [NSMutableData dataWithLength:maxPlaintextLength];
- size_t plaintextLength = olm_decrypt(_session, message.type, mutMessage.mutableBytes, mutMessage.length, plaintextData.mutableBytes, plaintextData.length);
- if (plaintextLength == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
-
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- NSLog(@"olm_decrypt error: %@", errorString);
-
- if (error && olm_error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain
- code:0
- userInfo:@{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_decrypt error: %@", errorString]
- }];
- }
-
- return nil;
- }
- plaintextData.length = plaintextLength;
- NSString *plaintext = [[NSString alloc] initWithData:plaintextData encoding:NSUTF8StringEncoding];
- [plaintextData resetBytesInRange:NSMakeRange(0, plaintextData.length)];
- return plaintext;
-}
-
-#pragma mark OLMSerializable
-
-/** Initializes from encrypted serialized data. Will throw error if invalid key or invalid base64. */
-- (instancetype) initWithSerializedData:(NSString*)serializedData key:(NSData*)key error:(NSError**)error {
- self = [self init];
- if (!self) {
- return nil;
- }
- NSParameterAssert(key.length > 0);
- NSParameterAssert(serializedData.length > 0);
- if (key.length == 0 || serializedData.length == 0) {
- if (error) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"Bad length."}];
- }
- return nil;
- }
- NSMutableData *pickle = [serializedData dataUsingEncoding:NSUTF8StringEncoding].mutableCopy;
- size_t result = olm_unpickle_session(_session, key.bytes, key.length, pickle.mutableBytes, pickle.length);
- [pickle resetBytesInRange:NSMakeRange(0, pickle.length)];
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- return self;
-}
-
-/** Serializes and encrypts object data, outputs base64 blob */
-- (NSString*) serializeDataWithKey:(NSData*)key error:(NSError**)error {
- NSParameterAssert(key.length > 0);
- size_t length = olm_pickle_session_length(_session);
- NSMutableData *pickled = [NSMutableData dataWithLength:length];
- size_t result = olm_pickle_session(_session, key.bytes, key.length, pickled.mutableBytes, pickled.length);
- if (result == olm_error()) {
- const char *olm_error = olm_session_last_error(_session);
- NSString *errorString = [NSString stringWithUTF8String:olm_error];
- if (error && errorString) {
- *error = [NSError errorWithDomain:OLMErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: errorString}];
- }
- return nil;
- }
- NSString *pickleString = [[NSString alloc] initWithData:pickled encoding:NSUTF8StringEncoding];
- [pickled resetBytesInRange:NSMakeRange(0, pickled.length)];
- return pickleString;
-}
-
-#pragma mark NSSecureCoding
-
-+ (BOOL) supportsSecureCoding {
- return YES;
-}
-
-#pragma mark NSCoding
-
-- (id)initWithCoder:(NSCoder *)decoder {
- NSString *version = [decoder decodeObjectOfClass:[NSString class] forKey:@"version"];
-
- NSError *error = nil;
-
- if ([version isEqualToString:@"1"]) {
- NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"];
- NSData *key = [decoder decodeObjectOfClass:[NSData class] forKey:@"key"];
-
- self = [self initWithSerializedData:pickle key:key error:&error];
- }
-
- NSParameterAssert(error == nil);
- NSParameterAssert(self != nil);
- if (!self) {
- return nil;
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)encoder {
- NSData *key = [OLMUtility randomBytesOfLength:32];
- NSError *error = nil;
- NSString *pickle = [self serializeDataWithKey:key error:&error];
- NSParameterAssert(pickle.length > 0 && error == nil);
-
- [encoder encodeObject:pickle forKey:@"pickle"];
- [encoder encodeObject:key forKey:@"key"];
- [encoder encodeObject:@"1" forKey:@"version"];
-}
-
-@end
diff --git a/xcode/OLMKit/OLMSession_Private.h b/xcode/OLMKit/OLMSession_Private.h
deleted file mode 100644
index 28ba5e1..0000000
--- a/xcode/OLMKit/OLMSession_Private.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#include "olm/olm.h"
-
-@interface OLMSession()
-
-@property (nonatomic) OlmSession *session;
-@property (nonatomic, strong) OLMAccount *account;
-
-@end
diff --git a/xcode/OLMKit/OLMUtility.h b/xcode/OLMKit/OLMUtility.h
deleted file mode 100644
index 3041da9..0000000
--- a/xcode/OLMKit/OLMUtility.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-FOUNDATION_EXPORT NSString *const OLMErrorDomain;
-
-@interface OLMUtility : NSObject
-
-/**
- Calculate the SHA-256 hash of the input and encodes it as base64.
-
- @param message the message to hash.
- @return the base64-encoded hash value.
- */
-- (NSString*)sha256:(NSData*)message;
-
-/**
- Verify an ed25519 signature.
-
- @param signature the base64-encoded signature to be checked.
- @param key the ed25519 key.
- @param message the message which was signed.
- @param error if there is a problem with the verification.
- If the key was too small then the message will be "OLM.INVALID_BASE64".
- If the signature was invalid then the message will be "OLM.BAD_MESSAGE_MAC".
-
- @return YES if valid.
- */
-- (BOOL)verifyEd25519Signature:(NSString*)signature key:(NSString*)key message:(NSData*)message error:(NSError**)error;
-
-+ (NSMutableData*) randomBytesOfLength:(NSUInteger)length;
-
-@end
diff --git a/xcode/OLMKit/OLMUtility.m b/xcode/OLMKit/OLMUtility.m
deleted file mode 100644
index 936785a..0000000
--- a/xcode/OLMKit/OLMUtility.m
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- Copyright 2016 Chris Ballinger
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import "OLMUtility.h"
-
-#include "olm/olm.h"
-
-NSString *const OLMErrorDomain = @"org.matrix.olm";
-
-@interface OLMUtility()
-
-@property (nonatomic) OlmUtility *utility;
-
-@end
-
-@implementation OLMUtility
-
-- (void) dealloc {
- olm_clear_utility(_utility);
- free(_utility);
-}
-
-- (BOOL) initializeUtilityMemory {
- size_t utilitySize = olm_utility_size();
- _utility = malloc(utilitySize);
- NSParameterAssert(_utility != nil);
- if (!_utility) {
- return NO;
- }
- _utility = olm_utility(_utility);
- NSParameterAssert(_utility != nil);
- if (!_utility) {
- return NO;
- }
- return YES;
-}
-
-- (instancetype) init {
- self = [super init];
- if (!self) {
- return nil;
- }
- BOOL success = [self initializeUtilityMemory];
- if (!success) {
- return nil;
- }
- return self;
-}
-
-- (NSString *)sha256:(NSData *)message {
- size_t length = olm_sha256_length(_utility);
-
- NSMutableData *shaData = [NSMutableData dataWithLength:length];
- if (!shaData) {
- return nil;
- }
-
- size_t result = olm_sha256(_utility, message.bytes, message.length, shaData.mutableBytes, shaData.length);
- if (result == olm_error()) {
- const char *error = olm_utility_last_error(_utility);
- NSLog(@"olm_sha256 error: %s", error);
- return nil;
- }
-
- NSString *sha = [[NSString alloc] initWithData:shaData encoding:NSUTF8StringEncoding];
- return sha;
-}
-
-- (BOOL)verifyEd25519Signature:(NSString*)signature key:(NSString*)key message:(NSData*)message error:(NSError**)error {
-
- NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
- NSData *signatureData = [signature dataUsingEncoding:NSUTF8StringEncoding];
-
- size_t result = olm_ed25519_verify(_utility,
- keyData.bytes, keyData.length,
- message.bytes, message.length,
- (void*)signatureData.bytes, signatureData.length
- );
-
- if (result == olm_error()) {
- if (error) {
- NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: [NSString stringWithUTF8String:olm_utility_last_error(_utility)]};
-
- // @TODO
- *error = [[NSError alloc] initWithDomain:@"OLMKitErrorDomain" code:0 userInfo:userInfo];
- }
- return NO;
- }
- else {
- return YES;
- }
-}
-
-+ (NSMutableData*) randomBytesOfLength:(NSUInteger)length {
- NSMutableData *randomData = [NSMutableData dataWithLength:length];
- if (!randomData) {
- return nil;
- }
- int result = SecRandomCopyBytes(kSecRandomDefault, randomData.length, randomData.mutableBytes);
- if (result != 0) {
- return nil;
- }
- return randomData;
-}
-
-@end
diff --git a/xcode/OLMKitTests/Info.plist b/xcode/OLMKitTests/Info.plist
deleted file mode 100644
index 6c6c23c..0000000
--- a/xcode/OLMKitTests/Info.plist
+++ /dev/null
@@ -1,22 +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>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/xcode/OLMKitTests/OLMKitGroupTests.m b/xcode/OLMKitTests/OLMKitGroupTests.m
deleted file mode 100644
index 39ad400..0000000
--- a/xcode/OLMKitTests/OLMKitGroupTests.m
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- Copyright 2016 OpenMarket Ltd
- Copyright 2016 Vector Creations Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <XCTest/XCTest.h>
-
-#import <OLMKit/OLMKit.h>
-
-#include "olm/olm.h"
-
-@interface OLMKitGroupTests : XCTestCase
-
-@end
-
-@implementation OLMKitGroupTests
-
-- (void)setUp {
- [super setUp];
- // Put setup code here. This method is called before the invocation of each test method in the class.
-}
-
-- (void)tearDown {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- [super tearDown];
-}
-
-- (void)testAliceAndBob {
- NSError *error;
-
- OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession];
- XCTAssertGreaterThan(aliceSession.sessionIdentifier.length, 0);
- XCTAssertGreaterThan(aliceSession.sessionKey.length, 0);
- XCTAssertEqual(aliceSession.messageIndex, 0);
-
- // Store the session key before starting encrypting
- NSString *sessionKey = aliceSession.sessionKey;
-
- NSString *message = @"Hello!";
- NSString *aliceToBobMsg = [aliceSession encryptMessage:message error:&error];
-
- XCTAssertEqual(aliceSession.messageIndex, 1);
- XCTAssertGreaterThanOrEqual(aliceToBobMsg.length, 0);
- XCTAssertNil(error);
-
- OLMInboundGroupSession *bobSession = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithSessionKey:sessionKey error:&error];
- XCTAssertEqualObjects(aliceSession.sessionIdentifier, bobSession.sessionIdentifier);
- XCTAssertNil(error);
-
- NSUInteger messageIndex;
-
- NSString *plaintext = [bobSession decryptMessage:aliceToBobMsg messageIndex:&messageIndex error:&error];
- XCTAssertEqualObjects(message, plaintext);
-
- XCTAssertEqual(messageIndex, 0);
- XCTAssertNil(error);
-}
-
-- (void)testOutboundGroupSessionSerialization {
-
- OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession];
-
- NSData *aliceData = [NSKeyedArchiver archivedDataWithRootObject:aliceSession];
- OLMOutboundGroupSession *aliceSession2 = [NSKeyedUnarchiver unarchiveObjectWithData:aliceData];
-
- XCTAssertEqualObjects(aliceSession2.sessionKey, aliceSession.sessionKey);
- XCTAssertEqualObjects(aliceSession2.sessionIdentifier, aliceSession.sessionIdentifier);
-}
-
-- (void)testInboundGroupSessionSerialization {
-
- OLMOutboundGroupSession *aliceSession = [[OLMOutboundGroupSession alloc] initOutboundGroupSession];
-
- OLMInboundGroupSession *bobSession = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithSessionKey:aliceSession.sessionKey error:nil];
-
- NSData *bobData = [NSKeyedArchiver archivedDataWithRootObject:bobSession];
- OLMInboundGroupSession *bobSession2 = [NSKeyedUnarchiver unarchiveObjectWithData:bobData];
-
- XCTAssertEqualObjects(bobSession2.sessionIdentifier, aliceSession.sessionIdentifier);
-}
-
-- (void)testInboundGroupSessionImportExport {
-
- NSError *error;
-
- NSString *sessionKey = @"AgAAAAAwMTIzNDU2Nzg5QUJERUYwMTIzNDU2Nzg5QUJDREVGMDEyMzQ1Njc4OUFCREVGM" \
- "DEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkRFRjAxMjM0NTY3ODlBQkNERUYwMTIzND" \
- "U2Nzg5QUJERUYwMTIzNDU2Nzg5QUJDREVGMDEyMw0bdg1BDq4Px/slBow06q8n/B9WBfw" \
- "WYyNOB8DlUmXGGwrFmaSb9bR/eY8xgERrxmP07hFmD9uqA2p8PMHdnV5ysmgufE6oLZ5+" \
- "8/mWQOW3VVTnDIlnwd8oHUYRuk8TCQ";
-
- NSString *message = @"AwgAEhAcbh6UpbByoyZxufQ+h2B+8XHMjhR69G8F4+qjMaFlnIXusJZX3r8LnRORG9T3D" \
- "XFdbVuvIWrLyRfm4i8QRbe8VPwGRFG57B1CtmxanuP8bHtnnYqlwPsD";
-
- // init first inbound group session, and decrypt */
- OLMInboundGroupSession *session1 = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithSessionKey:sessionKey error:&error];
-
- XCTAssertNil(error);
- XCTAssertTrue(session1.isVerified);
-
- // decrypt the message
- NSUInteger messageIndex;
- NSString *plaintext = [session1 decryptMessage:message messageIndex:&messageIndex error:&error];
-
- XCTAssertNil(error);
- XCTAssertEqualObjects(plaintext, @"Message");
- XCTAssertEqual(messageIndex, 0);
-
- // export the keys
- NSString *export = [session1 exportSessionAtMessageIndex:0 error:&error];
-
- XCTAssertNil(error);
- XCTAssertGreaterThan(export.length, 0);
-
- // free the old session to check there is no shared data
- session1 = nil;
-
- // import the keys into another inbound group session
- OLMInboundGroupSession *session2 = [[OLMInboundGroupSession alloc] initInboundGroupSessionWithImportedSession:export error:&error];
-
- XCTAssertNil(error);
- XCTAssert(session2);
- XCTAssertFalse(session2.isVerified);
-
- // decrypt the message with the new session
- NSString *plaintext2 = [session2 decryptMessage:message messageIndex:&messageIndex error:&error];
-
- XCTAssertNil(error);
- XCTAssertEqualObjects(plaintext2, @"Message");
- XCTAssertEqual(messageIndex, 0);
- XCTAssertTrue(session2.isVerified);
-}
-
-@end
diff --git a/xcode/OLMKitTests/OLMKitPkTests.m b/xcode/OLMKitTests/OLMKitPkTests.m
deleted file mode 100644
index 7a09130..0000000
--- a/xcode/OLMKitTests/OLMKitPkTests.m
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- Copyright 2018 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <XCTest/XCTest.h>
-#import <OLMKit/OLMKit.h>
-
-/**
- Tests are inspired from js tests.
- */
-@interface OLMKitPkTests : XCTestCase {
- OLMPkEncryption *encryption;
- OLMPkDecryption *decryption;
-}
-
-@end
-
-@implementation OLMKitPkTests
-
-- (void)setUp {
- encryption = [OLMPkEncryption new];
- decryption = [OLMPkDecryption new];
-}
-
-- (void)tearDown {
- encryption = nil;
- decryption = nil;
-}
-
-- (void)testImportExportKeys {
- UInt8 alicePrivateBytes[] = {
- 0x77, 0x07, 0x6D, 0x0A, 0x73, 0x18, 0xA5, 0x7D,
- 0x3C, 0x16, 0xC1, 0x72, 0x51, 0xB2, 0x66, 0x45,
- 0xDF, 0x4C, 0x2F, 0x87, 0xEB, 0xC0, 0x99, 0x2A,
- 0xB1, 0x77, 0xFB, 0xA5, 0x1D, 0xB9, 0x2C, 0x2A
- };
-
- NSData *alicePrivate = [NSData dataWithBytes:alicePrivateBytes length:sizeof(alicePrivateBytes)];
-
- NSError *error;
- NSString *alicePublic = [decryption setPrivateKey:alicePrivate error:&error];
- XCTAssertNil(error);
- XCTAssertEqualObjects(alicePublic, @"hSDwCYkwp1R0i33ctD73Wg2/Og0mOBr066SpjqqbTmo");
-
- NSData *alicePrivateOut = decryption.privateKey;
- XCTAssertNil(error);
- XCTAssertEqualObjects(alicePrivateOut, alicePrivate);
-}
-
-- (void)testEncryptAndDecrypt {
-
- NSString *pubKey = [decryption generateKey:nil];
- NSLog(@"Ephemeral Key: %@", pubKey);
- XCTAssertNotNil(pubKey);
-
- NSString *TEST_TEXT = @"têst1";
- NSError *error;
- [encryption setRecipientKey:pubKey];
- OLMPkMessage *message = [encryption encryptMessage:TEST_TEXT error:&error];
- NSLog(@"message: %@ %@ %@", message.ciphertext, message.mac, message.ephemeralKey);
- XCTAssertNil(error);
- XCTAssertNotNil(message);
- XCTAssertNotNil(message.ciphertext);
- XCTAssertNotNil(message.mac);
- XCTAssertNotNil(message.ephemeralKey);
-
- NSString *decrypted = [decryption decryptMessage:message error:&error];
- XCTAssertNil(error);
- XCTAssertEqualObjects(decrypted, TEST_TEXT);
-
- TEST_TEXT = @"hot beverage: ☕";
- [encryption setRecipientKey:pubKey];
- message = [encryption encryptMessage:TEST_TEXT error:&error];
- decrypted = [decryption decryptMessage:message error:&error];
- XCTAssertEqualObjects(decrypted, TEST_TEXT);
-}
-
-- (void)testOLMPkDecryptionSerialization {
- NSString *TEST_TEXT = @"têst1";
- NSString *pubKey = [decryption generateKey:nil];
- [encryption setRecipientKey:pubKey];
- OLMPkMessage *encrypted = [encryption encryptMessage:TEST_TEXT error:nil];
-
-
- NSData *pickle = [NSKeyedArchiver archivedDataWithRootObject:decryption];
- decryption = nil;
-
- OLMPkDecryption *newDecryption = [NSKeyedUnarchiver unarchiveObjectWithData:pickle];
-
- NSError *error;
- NSString *decrypted = [newDecryption decryptMessage:encrypted error:&error];
- XCTAssertEqualObjects(decrypted, TEST_TEXT);
-}
-
-- (void)testSignAndVerify {
-
- UInt8 seedBytes[] = {
- 0x77, 0x07, 0x6D, 0x0A, 0x73, 0x18, 0xA5, 0x7D,
- 0x3C, 0x16, 0xC1, 0x72, 0x51, 0xB2, 0x66, 0x45,
- 0xDF, 0x4C, 0x2F, 0x87, 0xEB, 0xC0, 0x99, 0x2A,
- 0xB1, 0x77, 0xFB, 0xA5, 0x1D, 0xB9, 0x2C, 0x2A
- };
-
- NSData *seed = [NSData dataWithBytes:seedBytes length:sizeof(seedBytes)];
-
- NSString *TEST_TEXT = @"We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.";
-
- OLMPkSigning *signing = [OLMPkSigning new];
-
- NSError *error;
- NSString *pubKey = [signing doInitWithSeed:seed error:&error];
- XCTAssertNotNil(pubKey);
- XCTAssertNil(error);
-
- NSString *sig = [signing sign:TEST_TEXT error:&error];
- XCTAssertNotNil(sig);
- XCTAssertNil(error);
-
- OLMUtility *util = [OLMUtility new];
- BOOL verify = [util verifyEd25519Signature:sig key:pubKey message:[TEST_TEXT dataUsingEncoding:NSUTF8StringEncoding] error:&error];
- XCTAssertTrue(verify);
- XCTAssertNil(error);
-
- NSString *badSig = [sig stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@"p"];
- verify = [util verifyEd25519Signature:badSig key:pubKey message:[TEST_TEXT dataUsingEncoding:NSUTF8StringEncoding] error:&error];
- XCTAssertFalse(verify);
- XCTAssertNotNil(error);
-}
-
-@end
diff --git a/xcode/OLMKitTests/OLMKitSASTests.m b/xcode/OLMKitTests/OLMKitSASTests.m
deleted file mode 100644
index e250a67..0000000
--- a/xcode/OLMKitTests/OLMKitSASTests.m
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright 2019 New Vector Ltd
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-#import <XCTest/XCTest.h>
-#import <OLMKit/OLMKit.h>
-
-@interface OLMKitSASTests : XCTestCase {
- OLMSAS *alice;
- OLMSAS *bob;
-}
-
-@end
-
-@implementation OLMKitSASTests
-
-- (void)setUp {
- alice = [OLMSAS new];
- bob = [OLMSAS new];
-}
-
-- (void)tearDown {
- alice = nil;
- bob = nil;
-}
-
-- (void)testSASRandomness
-{
- XCTAssertNotEqualObjects(alice.publicKey, bob.publicKey);
-}
-
-- (void)testSASBytesMatch {
- [alice setTheirPublicKey:bob.publicKey];
- [bob setTheirPublicKey:alice.publicKey];
-
- NSString *sas = @"SAS";
- NSUInteger length = 5;
-
- XCTAssertEqualObjects([alice generateBytes:sas length:length],
- [bob generateBytes:sas length:length]);
-}
-
-- (void)testMACsMatch {
- [alice setTheirPublicKey:bob.publicKey];
- [bob setTheirPublicKey:alice.publicKey];
-
- NSString *string = @"test";
- NSString *info = @"MAC";
-
- NSError *aliceError, *bobError;
- XCTAssertEqualObjects([alice calculateMac:string info:info error:&aliceError],
- [bob calculateMac:string info:info error:&bobError]);
- XCTAssertNil(aliceError);
- XCTAssertNil(bobError);
-}
-
-- (void)testMACLongKdfsMatch {
- [alice setTheirPublicKey:bob.publicKey];
- [bob setTheirPublicKey:alice.publicKey];
-
- NSString *string = @"test";
- NSString *info = @"MAC";
-
- NSError *aliceError, *bobError;
- XCTAssertEqualObjects([alice calculateMacLongKdf:string info:info error:&aliceError],
- [bob calculateMacLongKdf:string info:info error:&bobError]);
- XCTAssertNotEqualObjects([alice calculateMacLongKdf:string info:info error:&aliceError],
- [bob calculateMac:string info:info error:&bobError]);
- XCTAssertNil(aliceError);
- XCTAssertNil(bobError);
-}
-
-
-@end
diff --git a/xcode/OLMKitTests/OLMKitTests.m b/xcode/OLMKitTests/OLMKitTests.m
deleted file mode 100644
index ee02420..0000000
--- a/xcode/OLMKitTests/OLMKitTests.m
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-Copyright 2016 Chris Ballinger
-Copyright 2016 OpenMarket Ltd
-Copyright 2016 Vector Creations Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-#import <XCTest/XCTest.h>
-#import <OLMKit/OLMKit.h>
-
-@interface OLMKitTests : XCTestCase
-
-@end
-
-@implementation OLMKitTests
-
-- (void)setUp {
- [super setUp];
- // Put setup code here. This method is called before the invocation of each test method in the class.
-}
-
-- (void)tearDown {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- [super tearDown];
-}
-
-- (void)testAliceAndBob {
- NSError *error;
-
- OLMAccount *alice = [[OLMAccount alloc] initNewAccount];
- OLMAccount *bob = [[OLMAccount alloc] initNewAccount];
- [bob generateOneTimeKeys:5];
- NSDictionary *bobIdKeys = bob.identityKeys;
- NSString *bobIdKey = bobIdKeys[@"curve25519"];
- NSDictionary *bobOneTimeKeys = bob.oneTimeKeys;
- NSParameterAssert(bobIdKey != nil);
- NSParameterAssert(bobOneTimeKeys != nil);
- __block NSString *bobOneTimeKey = nil;
- NSDictionary *bobOtkCurve25519 = bobOneTimeKeys[@"curve25519"];
- [bobOtkCurve25519 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- bobOneTimeKey = obj;
- }];
- XCTAssert([bobOneTimeKey isKindOfClass:[NSString class]]);
-
- OLMSession *aliceSession = [[OLMSession alloc] initOutboundSessionWithAccount:alice theirIdentityKey:bobIdKey theirOneTimeKey:bobOneTimeKey error:nil];
- NSString *message = @"Hello!";
- OLMMessage *aliceToBobMsg = [aliceSession encryptMessage:message error:&error];
- XCTAssertNil(error);
-
- OLMSession *bobSession = [[OLMSession alloc] initInboundSessionWithAccount:bob oneTimeKeyMessage:aliceToBobMsg.ciphertext error:nil];
- NSString *plaintext = [bobSession decryptMessage:aliceToBobMsg error:&error];
- XCTAssertEqualObjects(message, plaintext);
- XCTAssertNil(error);
-
- XCTAssert([bobSession matchesInboundSession:aliceToBobMsg.ciphertext]);
- XCTAssertFalse([aliceSession matchesInboundSession:@"ARandomOtkMessage"]);
-
- NSString *aliceIdKey = alice.identityKeys[@"curve25519"];
- XCTAssert([bobSession matchesInboundSessionFrom:aliceIdKey oneTimeKeyMessage:aliceToBobMsg.ciphertext]);
- XCTAssertFalse([bobSession matchesInboundSessionFrom:@"ARandomIdKey" oneTimeKeyMessage:aliceToBobMsg.ciphertext]);
- XCTAssertFalse([bobSession matchesInboundSessionFrom:aliceIdKey oneTimeKeyMessage:@"ARandomOtkMessage"]);
-
- BOOL success = [bob removeOneTimeKeysForSession:bobSession];
- XCTAssertTrue(success);
-}
-
-- (void) testBackAndForth {
- OLMAccount *alice = [[OLMAccount alloc] initNewAccount];
- OLMAccount *bob = [[OLMAccount alloc] initNewAccount];
- [bob generateOneTimeKeys:1];
- NSDictionary *bobIdKeys = bob.identityKeys;
- NSString *bobIdKey = bobIdKeys[@"curve25519"];
- NSDictionary *bobOneTimeKeys = bob.oneTimeKeys;
- NSParameterAssert(bobIdKey != nil);
- NSParameterAssert(bobOneTimeKeys != nil);
- __block NSString *bobOneTimeKey = nil;
- NSDictionary *bobOtkCurve25519 = bobOneTimeKeys[@"curve25519"];
- [bobOtkCurve25519 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- bobOneTimeKey = obj;
- }];
- XCTAssert([bobOneTimeKey isKindOfClass:[NSString class]]);
-
- OLMSession *aliceSession = [[OLMSession alloc] initOutboundSessionWithAccount:alice theirIdentityKey:bobIdKey theirOneTimeKey:bobOneTimeKey error:nil];
- NSString *message = @"Hello I'm Alice!";
- OLMMessage *aliceToBobMsg = [aliceSession encryptMessage:message error:nil];
-
- OLMSession *bobSession = [[OLMSession alloc] initInboundSessionWithAccount:bob oneTimeKeyMessage:aliceToBobMsg.ciphertext error:nil];
- NSString *plaintext = [bobSession decryptMessage:aliceToBobMsg error:nil];
- XCTAssertEqualObjects(message, plaintext);
- BOOL success = [bob removeOneTimeKeysForSession:bobSession];
- XCTAssertTrue(success);
-
- NSString *msg1 = @"Hello I'm Bob!";
- NSString *msg2 = @"Isn't life grand?";
- NSString *msg3 = @"Let's go to the opera.";
-
- OLMMessage *eMsg1 = [bobSession encryptMessage:msg1 error:nil];
- OLMMessage *eMsg2 = [bobSession encryptMessage:msg2 error:nil];
- OLMMessage *eMsg3 = [bobSession encryptMessage:msg3 error:nil];
-
- NSString *dMsg1 = [aliceSession decryptMessage:eMsg1 error:nil];
- NSString *dMsg2 = [aliceSession decryptMessage:eMsg2 error:nil];
- NSString *dMsg3 = [aliceSession decryptMessage:eMsg3 error:nil];
- XCTAssertEqualObjects(msg1, dMsg1);
- XCTAssertEqualObjects(msg2, dMsg2);
- XCTAssertEqualObjects(msg3, dMsg3);
-}
-
-- (void) testAccountSerialization {
- OLMAccount *bob = [[OLMAccount alloc] initNewAccount];
- [bob generateOneTimeKeys:5];
- NSDictionary *bobIdKeys = bob.identityKeys;
- NSDictionary *bobOneTimeKeys = bob.oneTimeKeys;
-
- NSData *bobData = [NSKeyedArchiver archivedDataWithRootObject:bob];
-
- OLMAccount *bob2 = [NSKeyedUnarchiver unarchiveObjectWithData:bobData];
- NSDictionary *bobIdKeys2 = bob2.identityKeys;
- NSDictionary *bobOneTimeKeys2 = bob2.oneTimeKeys;
-
- XCTAssertEqualObjects(bobIdKeys, bobIdKeys2);
- XCTAssertEqualObjects(bobOneTimeKeys, bobOneTimeKeys2);
-}
-
-- (void) testSessionSerialization {
- NSError *error;
-
- OLMAccount *alice = [[OLMAccount alloc] initNewAccount];
- OLMAccount *bob = [[OLMAccount alloc] initNewAccount];
- [bob generateOneTimeKeys:1];
- NSDictionary *bobIdKeys = bob.identityKeys;
- NSString *bobIdKey = bobIdKeys[@"curve25519"];
- NSDictionary *bobOneTimeKeys = bob.oneTimeKeys;
- NSParameterAssert(bobIdKey != nil);
- NSParameterAssert(bobOneTimeKeys != nil);
- __block NSString *bobOneTimeKey = nil;
- NSDictionary *bobOtkCurve25519 = bobOneTimeKeys[@"curve25519"];
- [bobOtkCurve25519 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- bobOneTimeKey = obj;
- }];
- XCTAssert([bobOneTimeKey isKindOfClass:[NSString class]]);
-
- OLMSession *aliceSession = [[OLMSession alloc] initOutboundSessionWithAccount:alice theirIdentityKey:bobIdKey theirOneTimeKey:bobOneTimeKey error:nil];
- NSString *message = @"Hello I'm Alice!";
- OLMMessage *aliceToBobMsg = [aliceSession encryptMessage:message error:&error];
- XCTAssertNil(error);
-
-
- OLMSession *bobSession = [[OLMSession alloc] initInboundSessionWithAccount:bob oneTimeKeyMessage:aliceToBobMsg.ciphertext error:nil];
- NSString *plaintext = [bobSession decryptMessage:aliceToBobMsg error:nil];
- XCTAssertEqualObjects(message, plaintext);
- BOOL success = [bob removeOneTimeKeysForSession:bobSession];
- XCTAssertTrue(success);
-
- NSString *msg1 = @"Hello I'm Bob!";
- NSString *msg2 = @"Isn't life grand?";
- NSString *msg3 = @"Let's go to the opera.";
-
- OLMMessage *eMsg1 = [bobSession encryptMessage:msg1 error:nil];
- OLMMessage *eMsg2 = [bobSession encryptMessage:msg2 error:nil];
- OLMMessage *eMsg3 = [bobSession encryptMessage:msg3 error:nil];
-
- NSData *aliceData = [NSKeyedArchiver archivedDataWithRootObject:aliceSession];
- OLMSession *alice2 = [NSKeyedUnarchiver unarchiveObjectWithData:aliceData];
-
- NSString *dMsg1 = [alice2 decryptMessage:eMsg1 error:nil];
- NSString *dMsg2 = [alice2 decryptMessage:eMsg2 error:nil];
- NSString *dMsg3 = [alice2 decryptMessage:eMsg3 error:nil];
- XCTAssertEqualObjects(msg1, dMsg1);
- XCTAssertEqualObjects(msg2, dMsg2);
- XCTAssertEqualObjects(msg3, dMsg3);
-}
-
-- (void)testEd25519Signing {
-
- OLMUtility *olmUtility = [[OLMUtility alloc] init];
- OLMAccount *alice = [[OLMAccount alloc] initNewAccount];
-
- NSDictionary *aJSON = @{
- @"key1": @"value1",
- @"key2": @"value2"
- };
- NSData *message = [NSKeyedArchiver archivedDataWithRootObject:aJSON];
- NSString *signature = [alice signMessage:message];
-
-
- NSString *aliceEd25519Key = alice.identityKeys[@"ed25519"];
-
- NSError *error;
- BOOL result = [olmUtility verifyEd25519Signature:signature key:aliceEd25519Key message:message error:&error];
- XCTAssert(result);
- XCTAssertNil(error);
-}
-
-@end
diff --git a/xcode/Podfile b/xcode/Podfile
deleted file mode 100644
index 4c60dd3..0000000
--- a/xcode/Podfile
+++ /dev/null
@@ -1,7 +0,0 @@
-target "OLMKit" do
-pod 'OLMKit', :path => '../OLMKit.podspec'
-end
-
-target "OLMKitTests" do
-pod 'OLMKit', :path => '../OLMKit.podspec'
-end \ No newline at end of file
diff --git a/xcode/Podfile.lock b/xcode/Podfile.lock
deleted file mode 100644
index e6f2333..0000000
--- a/xcode/Podfile.lock
+++ /dev/null
@@ -1,20 +0,0 @@
-PODS:
- - OLMKit (3.1.0):
- - OLMKit/olmc (= 3.1.0)
- - OLMKit/olmcpp (= 3.1.0)
- - OLMKit/olmc (3.1.0)
- - OLMKit/olmcpp (3.1.0)
-
-DEPENDENCIES:
- - OLMKit (from `../OLMKit.podspec`)
-
-EXTERNAL SOURCES:
- OLMKit:
- :path: "../OLMKit.podspec"
-
-SPEC CHECKSUMS:
- OLMKit: c806e1d2295c8aa1e19de66f4f470c4472d23ba1
-
-PODFILE CHECKSUM: 4e261dae61d833ec5585ced2473023b98909fd35
-
-COCOAPODS: 1.6.1
diff --git a/xcode/README.rst b/xcode/README.rst
deleted file mode 100644
index d56fa85..0000000
--- a/xcode/README.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-OLMKit
-======
-
-OLMKit exposes an Objective-C wrapper to libolm.
-
-The original work by Chris Ballinger can be found at https://github.com/chrisballinger/OLMKit.
-
-Installation
-------------
-You can embed OLMKit to your application project with CocoaPods. The pod for
-the latest OLMKit release is::
-
- pod 'OLMKit'
-
-Development
------------
-Run `pod install` and open `OLMKit.xcworkspace`.
-
-The project contains only tests files. The libolm and the Objective-C wrapper source files are loaded via the OLMKit CocoaPods pod.
-
-To add a new source file, add it to the file system and run `pod update` to make CocoaPods insert it into OLMKit.xcworkspace.
-
-Release
--------
-See ../README.rst for the release of the CocoaPod.
-