mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Add own profile key to multidevice provisioning message
// FREEBIE
This commit is contained in:
parent
1f3d2d1ed6
commit
46919e4702
|
@ -3,8 +3,10 @@
|
|||
//
|
||||
|
||||
#import "OWSLinkDeviceViewController.h"
|
||||
#import "Cryptography.h"
|
||||
#import "OWSDeviceProvisioningURLParser.h"
|
||||
#import "OWSLinkedDevicesTableViewController.h"
|
||||
#import "OWSProfileManager.h"
|
||||
#import <SignalServiceKit/ECKeyPair+OWSPrivateKey.h>
|
||||
#import <SignalServiceKit/OWSDeviceProvisioner.h>
|
||||
#import <SignalServiceKit/OWSIdentityManager.h>
|
||||
|
@ -38,6 +40,11 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
= NSLocalizedString(@"LINK_NEW_DEVICE_TITLE", "Navigation title when scanning QR code to add new device.");
|
||||
}
|
||||
|
||||
- (OWSProfileManager *)profileManager
|
||||
{
|
||||
return [OWSProfileManager sharedManager];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
@ -132,12 +139,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
NSData *myPublicKey = identityKeyPair.publicKey;
|
||||
NSData *myPrivateKey = identityKeyPair.ows_privateKey;
|
||||
NSString *accountIdentifier = [TSAccountManager localNumber];
|
||||
NSData *myProfileKeyData = self.profileManager.localProfileKey.keyData;
|
||||
|
||||
OWSDeviceProvisioner *provisioner = [[OWSDeviceProvisioner alloc] initWithMyPublicKey:myPublicKey
|
||||
myPrivateKey:myPrivateKey
|
||||
theirPublicKey:parser.publicKey
|
||||
theirEphemeralDeviceId:parser.ephemeralDeviceId
|
||||
accountIdentifier:accountIdentifier];
|
||||
accountIdentifier:accountIdentifier
|
||||
profileKey:myProfileKeyData];
|
||||
|
||||
[provisioner provisionWithSuccess:^{
|
||||
DDLogInfo(@"Successfully provisioned device.");
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
// Copyright © 2016 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
@ -14,14 +16,16 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
theirPublicKey:(NSData *)theirPublicKey
|
||||
theirEphemeralDeviceId:(NSString *)ephemeralDeviceId
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey
|
||||
provisioningCodeService:(OWSDeviceProvisioningCodeService *)provisioningCodeService
|
||||
provisioningService:(OWSDeviceProvisioningService *)provisioningService NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
- (instancetype)initWithMyPublicKey:(NSData *)myPublicKey
|
||||
myPrivateKey:(NSData *)myPrivateKey
|
||||
theirPublicKey:(NSData *)theirEncodedPublicKey
|
||||
theirPublicKey:(NSData *)theirPublicKey
|
||||
theirEphemeralDeviceId:(NSString *)ephemeralDeviceId
|
||||
accountIdentifier:(NSString *)accountIdentifier;
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey;
|
||||
|
||||
- (void)provisionWithSuccess:(void (^)())successCallback failure:(void (^)(NSError *))failureCallback;
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nonatomic, readonly) NSData *myPrivateKey;
|
||||
@property (nonatomic, readonly) NSData *theirPublicKey;
|
||||
@property (nonatomic, readonly) NSString *accountIdentifier;
|
||||
@property (nonatomic, readonly) NSData *profileKey;
|
||||
@property (nonatomic, nullable) NSString *ephemeralDeviceId;
|
||||
@property (nonatomic, readonly) OWSDeviceProvisioningCodeService *provisioningCodeService;
|
||||
@property (nonatomic, readonly) OWSDeviceProvisioningService *provisioningService;
|
||||
|
@ -26,6 +27,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
theirPublicKey:(NSData *)theirPublicKey
|
||||
theirEphemeralDeviceId:(NSString *)ephemeralDeviceId
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey
|
||||
provisioningCodeService:(OWSDeviceProvisioningCodeService *)provisioningCodeService
|
||||
provisioningService:(OWSDeviceProvisioningService *)provisioningService
|
||||
{
|
||||
|
@ -38,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
_myPrivateKey = myPrivateKey;
|
||||
_theirPublicKey = theirPublicKey;
|
||||
_accountIdentifier = accountIdentifier;
|
||||
_profileKey = profileKey;
|
||||
_ephemeralDeviceId = ephemeralDeviceId;
|
||||
_provisioningCodeService = provisioningCodeService;
|
||||
_provisioningService = provisioningService;
|
||||
|
@ -50,12 +53,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
theirPublicKey:(NSData *)theirPublicKey
|
||||
theirEphemeralDeviceId:(NSString *)ephemeralDeviceId
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey
|
||||
{
|
||||
return [self initWithMyPublicKey:myPublicKey
|
||||
myPrivateKey:myPrivateKey
|
||||
theirPublicKey:theirPublicKey
|
||||
theirEphemeralDeviceId:ephemeralDeviceId
|
||||
accountIdentifier:accountIdentifier
|
||||
profileKey:profileKey
|
||||
provisioningCodeService:[OWSDeviceProvisioningCodeService new]
|
||||
provisioningService:[OWSDeviceProvisioningService new]];
|
||||
}
|
||||
|
@ -80,6 +85,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
myPrivateKey:self.myPrivateKey
|
||||
theirPublicKey:self.theirPublicKey
|
||||
accountIdentifier:self.accountIdentifier
|
||||
profileKey:self.profileKey
|
||||
provisioningCode:provisioningCode];
|
||||
|
||||
[self.provisioningService provisionWithMessageBody:[message buildEncryptedMessageBody]
|
||||
|
|
|
@ -8,6 +8,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
myPrivateKey:(NSData *)myPrivateKey
|
||||
theirPublicKey:(NSData *)theirPublicKey
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey
|
||||
provisioningCode:(NSString *)provisioningCode;
|
||||
|
||||
- (NSData *)buildEncryptedMessageBody;
|
||||
|
|
|
@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nonatomic, readonly) NSData *myPrivateKey;
|
||||
@property (nonatomic, readonly) NSString *accountIdentifier;
|
||||
@property (nonatomic, readonly) NSData *theirPublicKey;
|
||||
@property (nonatomic, readonly) NSData *profileKey;
|
||||
@property (nonatomic, readonly) NSString *provisioningCode;
|
||||
|
||||
@end
|
||||
|
@ -25,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
myPrivateKey:(NSData *)myPrivateKey
|
||||
theirPublicKey:(NSData *)theirPublicKey
|
||||
accountIdentifier:(NSString *)accountIdentifier
|
||||
profileKey:(NSData *)profileKey
|
||||
provisioningCode:(NSString *)provisioningCode
|
||||
{
|
||||
self = [super init];
|
||||
|
@ -34,8 +36,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
_myPublicKey = myPublicKey;
|
||||
_myPrivateKey = myPrivateKey;
|
||||
_accountIdentifier = accountIdentifier;
|
||||
_theirPublicKey = theirPublicKey;
|
||||
_accountIdentifier = accountIdentifier;
|
||||
_profileKey = profileKey;
|
||||
_provisioningCode = provisioningCode;
|
||||
|
||||
return self;
|
||||
|
@ -49,6 +52,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[messageBuilder setNumber:self.accountIdentifier];
|
||||
[messageBuilder setProvisioningCode:self.provisioningCode];
|
||||
[messageBuilder setUserAgent:@"OWI"];
|
||||
[messageBuilder setProfileKey:self.profileKey];
|
||||
|
||||
NSData *plainTextProvisionMessage = [[messageBuilder build] data];
|
||||
|
||||
|
|
Loading…
Reference in a new issue