aboutsummaryrefslogtreecommitdiff
path: root/xcode/OLMKitTests
diff options
context:
space:
mode:
authorHubert Chathi <hubert@uhoreg.ca>2019-04-12 19:04:09 -0400
committerGitHub <noreply@github.com>2019-04-12 19:04:09 -0400
commitb12fe0aeb3cbee8c4067a4fd229a7fb54de6781b (patch)
treec59f8690f0ab0ad4a266955a153b4af50450cb72 /xcode/OLMKitTests
parent086133f39a175a72ea7c898c708fed38b8dbd36b (diff)
parent5147349feabe93d4cfd3d45e94002c1bb8f87923 (diff)
Merge pull request #88 from matrix-org/manuroe/sas_pksigning
OLMKit: add Short Authentication String verification
Diffstat (limited to 'xcode/OLMKitTests')
-rw-r--r--xcode/OLMKitTests/OLMKitPkTests.m35
-rw-r--r--xcode/OLMKitTests/OLMKitSASTests.m86
2 files changed, 121 insertions, 0 deletions
diff --git a/xcode/OLMKitTests/OLMKitPkTests.m b/xcode/OLMKitTests/OLMKitPkTests.m
index 04d2e30..7a09130 100644
--- a/xcode/OLMKitTests/OLMKitPkTests.m
+++ b/xcode/OLMKitTests/OLMKitPkTests.m
@@ -104,4 +104,39 @@
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
new file mode 100644
index 0000000..e250a67
--- /dev/null
+++ b/xcode/OLMKitTests/OLMKitSASTests.m
@@ -0,0 +1,86 @@
+/*
+ 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