// // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // #import #import <25519/Curve25519.h> #import "OWSUnitTestEnvironment.h" #import "SecurityUtils.h" #import "OWSIdentityManager.h" #import "OWSRecipientIdentity.h" #import "TSStorageManager.h" #import "TextSecureKitEnv.h" @interface TSStorageIdentityKeyStoreTests : XCTestCase @end @implementation TSStorageIdentityKeyStoreTests - (void)setUp { [super setUp]; [[TSStorageManager sharedManager] purgeCollection:@"TSStorageManagerTrustedKeysCollection"]; [OWSRecipientIdentity removeAllObjectsInCollection]; } - (void)tearDown { // Put teardown code here. This method is called after the invocation of each test method in the class. [super tearDown]; } - (void)testNewEmptyKey { NSData *newKey = [SecurityUtils generateRandomBytes:32]; NSString *recipientId = @"test@gmail.com"; XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionOutgoing]); XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionIncoming]); } - (void)testAlreadyRegisteredKey { NSData *newKey = [SecurityUtils generateRandomBytes:32]; NSString *recipientId = @"test@gmail.com"; [[OWSIdentityManager sharedManager] saveRemoteIdentity:newKey recipientId:recipientId]; XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionOutgoing]); XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionIncoming]); } - (void)testChangedKey { NSData *originalKey = [SecurityUtils generateRandomBytes:32]; NSString *recipientId = @"test@protonmail.com"; [[OWSIdentityManager sharedManager] saveRemoteIdentity:originalKey recipientId:recipientId]; XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey recipientId:recipientId direction:TSMessageDirectionOutgoing]); XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey recipientId:recipientId direction:TSMessageDirectionIncoming]); NSData *otherKey = [SecurityUtils generateRandomBytes:32]; XCTAssertFalse([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey recipientId:recipientId direction:TSMessageDirectionOutgoing]); XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey recipientId:recipientId direction:TSMessageDirectionIncoming]); } - (void)testIdentityKey { [[OWSIdentityManager sharedManager] generateNewIdentityKey]; XCTAssert([[[OWSIdentityManager sharedManager] identityKeyPair].publicKey length] == 32); } @end