1 package org
.asamk
.signal
.manager
;
3 import org
.asamk
.signal
.manager
.api
.CaptchaRequiredException
;
4 import org
.asamk
.signal
.manager
.api
.IncorrectPinException
;
5 import org
.asamk
.signal
.manager
.api
.PinLockedException
;
6 import org
.asamk
.signal
.manager
.config
.ServiceConfig
;
7 import org
.asamk
.signal
.manager
.config
.ServiceEnvironment
;
8 import org
.asamk
.signal
.manager
.storage
.SignalAccount
;
9 import org
.asamk
.signal
.manager
.storage
.identities
.TrustNewIdentity
;
10 import org
.asamk
.signal
.manager
.util
.KeyUtils
;
11 import org
.whispersystems
.libsignal
.util
.KeyHelper
;
13 import java
.io
.Closeable
;
15 import java
.io
.IOException
;
16 import java
.util
.function
.Consumer
;
18 public interface RegistrationManager
extends Closeable
{
20 static RegistrationManager
init(
21 String number
, File settingsPath
, ServiceEnvironment serviceEnvironment
, String userAgent
22 ) throws IOException
{
23 return init(number
, settingsPath
, serviceEnvironment
, userAgent
, null);
26 static RegistrationManager
init(
29 ServiceEnvironment serviceEnvironment
,
31 Consumer
<Manager
> newManagerListener
32 ) throws IOException
{
33 var pathConfig
= PathConfig
.createDefault(settingsPath
);
35 final var serviceConfiguration
= ServiceConfig
.getServiceEnvironmentConfig(serviceEnvironment
, userAgent
);
36 if (!SignalAccount
.userExists(pathConfig
.dataPath(), number
)) {
37 var identityKey
= KeyUtils
.generateIdentityKeyPair();
38 var registrationId
= KeyHelper
.generateRegistrationId(false);
40 var profileKey
= KeyUtils
.createProfileKey();
41 var account
= SignalAccount
.create(pathConfig
.dataPath(),
46 TrustNewIdentity
.ON_FIRST_USE
);
48 return new RegistrationManagerImpl(account
,
55 var account
= SignalAccount
.load(pathConfig
.dataPath(), number
, true, TrustNewIdentity
.ON_FIRST_USE
);
57 return new RegistrationManagerImpl(account
, pathConfig
, serviceConfiguration
, userAgent
, newManagerListener
);
60 void register(boolean voiceVerification
, String captcha
) throws IOException
, CaptchaRequiredException
;
63 String verificationCode
, String pin
64 ) throws IOException
, PinLockedException
, IncorrectPinException
;