@signalapp/libsignal-client 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Native.d.ts CHANGED
@@ -11,6 +11,13 @@ type Uuid = Buffer;
11
11
  /// what's important is that it's an integer less than Number.MAX_SAFE_INTEGER.
12
12
  type Timestamp = number;
13
13
 
14
+ type LookupResponse = Map<string, LookupResponseEntry>;
15
+
16
+ interface LookupResponseEntry {
17
+ readonly aci: string | undefined;
18
+ readonly pni: string | undefined;
19
+ }
20
+
14
21
  export abstract class IdentityKeyStore {
15
22
  _getIdentityKey(): Promise<PrivateKey>;
16
23
  _getLocalRegistrationId(): Promise<number>;
@@ -101,9 +108,11 @@ export function CallLinkSecretParams_DecryptUserId(paramsBytes: Buffer, userId:
101
108
  export function CallLinkSecretParams_DeriveFromRootKey(rootKey: Buffer): Buffer;
102
109
  export function CallLinkSecretParams_GetPublicParams(paramsBytes: Buffer): Buffer;
103
110
  export function Cds2ClientState_New(mrenclave: Buffer, attestationMsg: Buffer, currentTimestamp: Timestamp): SgxClientState;
111
+ export function CdsiLookup(asyncRuntime: Wrapper<TokioAsyncContext>, connectionManager: Wrapper<ConnectionManager>, username: string, password: string, request: Wrapper<LookupRequest>, timeoutMillis: number): Promise<LookupResponse>;
104
112
  export function CiphertextMessage_FromPlaintextContent(m: Wrapper<PlaintextContent>): CiphertextMessage;
105
113
  export function CiphertextMessage_Serialize(obj: Wrapper<CiphertextMessage>): Buffer;
106
114
  export function CiphertextMessage_Type(msg: Wrapper<CiphertextMessage>): number;
115
+ export function ConnectionManager_new(environment: number): ConnectionManager;
107
116
  export function CreateCallLinkCredentialPresentation_CheckValidContents(presentationBytes: Buffer): void;
108
117
  export function CreateCallLinkCredentialPresentation_Verify(presentationBytes: Buffer, roomId: Buffer, now: Timestamp, serverParamsBytes: Buffer, callLinkParamsBytes: Buffer): void;
109
118
  export function CreateCallLinkCredentialRequestContext_CheckValidContents(contextBytes: Buffer): void;
@@ -179,6 +188,10 @@ export function KyberPublicKey_Equals(lhs: Wrapper<KyberPublicKey>, rhs: Wrapper
179
188
  export function KyberPublicKey_Serialize(obj: Wrapper<KyberPublicKey>): Buffer;
180
189
  export function KyberSecretKey_Deserialize(data: Buffer): KyberSecretKey;
181
190
  export function KyberSecretKey_Serialize(obj: Wrapper<KyberSecretKey>): Buffer;
191
+ export function LookupRequest_addAciAndAccessKey(request: Wrapper<LookupRequest>, aci: Buffer, accessKey: Buffer): void;
192
+ export function LookupRequest_addE164(request: Wrapper<LookupRequest>, e164: string): void;
193
+ export function LookupRequest_new(): LookupRequest;
194
+ export function LookupRequest_setReturnAcisWithoutUaks(request: Wrapper<LookupRequest>, returnAcisWithoutUaks: boolean): void;
182
195
  export function Mp4Sanitizer_Sanitize(input: InputStream, len: Buffer): Promise<SanitizedMetadata>;
183
196
  export function PlaintextContent_Deserialize(data: Buffer): PlaintextContent;
184
197
  export function PlaintextContent_FromDecryptionErrorMessage(m: Wrapper<DecryptionErrorMessage>): PlaintextContent;
@@ -359,6 +372,7 @@ export function SignedPreKeyRecord_GetSignature(obj: Wrapper<SignedPreKeyRecord>
359
372
  export function SignedPreKeyRecord_GetTimestamp(obj: Wrapper<SignedPreKeyRecord>): Timestamp;
360
373
  export function SignedPreKeyRecord_New(id: number, timestamp: Timestamp, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>, signature: Buffer): SignedPreKeyRecord;
361
374
  export function SignedPreKeyRecord_Serialize(obj: Wrapper<SignedPreKeyRecord>): Buffer;
375
+ export function TESTING_CdsiLookupResponseConvert(): LookupResponse;
362
376
  export function TESTING_ErrorOnBorrowAsync(_input: null): Promise<void>;
363
377
  export function TESTING_ErrorOnBorrowIo(asyncRuntime: Wrapper<NonSuspendingBackgroundThreadRuntime>, _input: null): Promise<void>;
364
378
  export function TESTING_ErrorOnBorrowSync(_input: null): void;
@@ -380,6 +394,7 @@ export function TESTING_PanicOnLoadSync(_needsCleanup: null, _input: null): void
380
394
  export function TESTING_PanicOnReturnAsync(_needsCleanup: null): Promise<null>;
381
395
  export function TESTING_PanicOnReturnIo(asyncRuntime: Wrapper<NonSuspendingBackgroundThreadRuntime>, _needsCleanup: null): Promise<null>;
382
396
  export function TESTING_PanicOnReturnSync(_needsCleanup: null): null;
397
+ export function TokioAsyncContext_new(): TokioAsyncContext;
383
398
  export function UnidentifiedSenderMessageContent_Deserialize(data: Buffer): UnidentifiedSenderMessageContent;
384
399
  export function UnidentifiedSenderMessageContent_GetContentHint(m: Wrapper<UnidentifiedSenderMessageContent>): number;
385
400
  export function UnidentifiedSenderMessageContent_GetContents(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
@@ -388,7 +403,7 @@ export function UnidentifiedSenderMessageContent_GetMsgType(m: Wrapper<Unidentif
388
403
  export function UnidentifiedSenderMessageContent_GetSenderCert(m: Wrapper<UnidentifiedSenderMessageContent>): SenderCertificate;
389
404
  export function UnidentifiedSenderMessageContent_New(message: Wrapper<CiphertextMessage>, sender: Wrapper<SenderCertificate>, contentHint: number, groupId: Buffer | null): UnidentifiedSenderMessageContent;
390
405
  export function UnidentifiedSenderMessageContent_Serialize(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
391
- export function UsernameLink_Create(username: string): Buffer;
406
+ export function UsernameLink_Create(username: string, entropy: Buffer | null): Buffer;
392
407
  export function UsernameLink_DecryptUsername(entropy: Buffer, encryptedUsername: Buffer): string;
393
408
  export function Username_CandidatesFrom(nickname: string, minLen: number, maxLen: number): string;
394
409
  export function Username_Hash(username: string): Buffer;
@@ -406,6 +421,7 @@ interface AuthCredentialResponse { readonly __type: unique symbol; }
406
421
  interface AuthCredentialWithPni { readonly __type: unique symbol; }
407
422
  interface AuthCredentialWithPniResponse { readonly __type: unique symbol; }
408
423
  interface CiphertextMessage { readonly __type: unique symbol; }
424
+ interface ConnectionManager { readonly __type: unique symbol; }
409
425
  interface DecryptionErrorMessage { readonly __type: unique symbol; }
410
426
  interface ExpiringProfileKeyCredential { readonly __type: unique symbol; }
411
427
  interface ExpiringProfileKeyCredentialResponse { readonly __type: unique symbol; }
@@ -419,6 +435,7 @@ interface KyberKeyPair { readonly __type: unique symbol; }
419
435
  interface KyberPreKeyRecord { readonly __type: unique symbol; }
420
436
  interface KyberPublicKey { readonly __type: unique symbol; }
421
437
  interface KyberSecretKey { readonly __type: unique symbol; }
438
+ interface LookupRequest { readonly __type: unique symbol; }
422
439
  interface NonSuspendingBackgroundThreadRuntime { readonly __type: unique symbol; }
423
440
  interface PlaintextContent { readonly __type: unique symbol; }
424
441
  interface PreKeyBundle { readonly __type: unique symbol; }
@@ -450,6 +467,7 @@ interface SessionRecord { readonly __type: unique symbol; }
450
467
  interface SgxClientState { readonly __type: unique symbol; }
451
468
  interface SignalMessage { readonly __type: unique symbol; }
452
469
  interface SignedPreKeyRecord { readonly __type: unique symbol; }
470
+ interface TokioAsyncContext { readonly __type: unique symbol; }
453
471
  interface UnidentifiedSenderMessageContent { readonly __type: unique symbol; }
454
472
  interface UuidCiphertext { readonly __type: unique symbol; }
455
473
  interface ValidatingMac { readonly __type: unique symbol; }
package/dist/Address.js CHANGED
@@ -123,7 +123,7 @@ class ProtocolAddress {
123
123
  try {
124
124
  return ServiceId.parseFromServiceIdString(this.name());
125
125
  }
126
- catch (_a) {
126
+ catch {
127
127
  return null;
128
128
  }
129
129
  }
package/dist/Errors.d.ts CHANGED
@@ -20,7 +20,8 @@ export declare enum ErrorCode {
20
20
  UnsupportedMediaInput = 16,
21
21
  InputDataTooLong = 17,
22
22
  InvalidEntropyDataLength = 18,
23
- InvalidUsernameLinkEncryptedData = 19
23
+ InvalidUsernameLinkEncryptedData = 19,
24
+ RateLimitedError = 20
24
25
  }
25
26
  export declare class LibSignalErrorBase extends Error {
26
27
  readonly code: ErrorCode;
@@ -93,4 +94,8 @@ export type InvalidMediaInputError = LibSignalErrorCommon & {
93
94
  export type UnsupportedMediaInputError = LibSignalErrorCommon & {
94
95
  code: ErrorCode.UnsupportedMediaInput;
95
96
  };
97
+ export type RateLimitedError = LibSignalErrorBase & {
98
+ code: ErrorCode.RateLimitedError;
99
+ readonly retryAfterSecs: number;
100
+ };
96
101
  export type LibSignalError = GenericError | DuplicatedMessageError | SealedSenderSelfSendError | UntrustedIdentityError | InvalidRegistrationIdError | VerificationFailedError | InvalidSessionError | InvalidSenderKeySessionError | CannotBeEmptyError | CannotStartWithDigitError | MissingSeparatorError | BadNicknameCharacterError | NicknameTooShortError | NicknameTooLongError | InputDataTooLong | InvalidEntropyDataLength | InvalidUsernameLinkEncryptedData | IoError | InvalidMediaInputError | UnsupportedMediaInputError;
package/dist/Errors.js CHANGED
@@ -28,6 +28,7 @@ var ErrorCode;
28
28
  ErrorCode[ErrorCode["InputDataTooLong"] = 17] = "InputDataTooLong";
29
29
  ErrorCode[ErrorCode["InvalidEntropyDataLength"] = 18] = "InvalidEntropyDataLength";
30
30
  ErrorCode[ErrorCode["InvalidUsernameLinkEncryptedData"] = 19] = "InvalidUsernameLinkEncryptedData";
31
+ ErrorCode[ErrorCode["RateLimitedError"] = 20] = "RateLimitedError";
31
32
  })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
32
33
  class LibSignalErrorBase extends Error {
33
34
  constructor(message, name, operation, extraProps) {
@@ -3,15 +3,6 @@
3
3
  // Copyright 2023 Signal Messenger, LLC.
4
4
  // SPDX-License-Identifier: AGPL-3.0-only
5
5
  //
6
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
- step((generator = generator.apply(thisArg, _arguments || [])).next());
13
- });
14
- };
15
6
  Object.defineProperty(exports, "__esModule", { value: true });
16
7
  exports.sanitize = exports.SanitizedMetadata = void 0;
17
8
  /**
@@ -89,11 +80,9 @@ exports.SanitizedMetadata = SanitizedMetadata;
89
80
  * @throws InvalidMediaInputError If the input could not be parsed because it was invalid.
90
81
  * @throws UnsupportedMediaInputError If the input could not be parsed because it's unsupported in some way.
91
82
  */
92
- function sanitize(input, len) {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- const sanitizedMetadataNativeHandle = yield Native.Mp4Sanitizer_Sanitize(input, (0, BigIntUtil_1.bufferFromBigUInt64BE)(len));
95
- return SanitizedMetadata._fromNativeHandle(sanitizedMetadataNativeHandle);
96
- });
83
+ async function sanitize(input, len) {
84
+ const sanitizedMetadataNativeHandle = await Native.Mp4Sanitizer_Sanitize(input, (0, BigIntUtil_1.bufferFromBigUInt64BE)(len));
85
+ return SanitizedMetadata._fromNativeHandle(sanitizedMetadataNativeHandle);
97
86
  }
98
87
  exports.sanitize = sanitize;
99
88
  //# sourceMappingURL=Mp4Sanitizer.js.map
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ import { Aci, ProtocolAddress } from './Address';
4
4
  export * from './Address';
5
5
  export * as usernames from './usernames';
6
6
  export * as io from './io';
7
+ export * as Net from './net';
7
8
  export * as Mp4Sanitizer from './Mp4Sanitizer';
8
9
  export * as WebpSanitizer from './WebpSanitizer';
9
10
  import * as Native from '../Native';
package/dist/index.js CHANGED
@@ -17,18 +17,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
17
17
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
19
  };
20
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
21
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
22
- return new (P || (P = Promise))(function (resolve, reject) {
23
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
24
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
25
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
26
- step((generator = generator.apply(thisArg, _arguments || [])).next());
27
- });
28
- };
29
20
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.sealedSenderEncryptMessage = exports.signalDecryptPreKey = exports.signalDecrypt = exports.signalEncrypt = exports.processPreKeyBundle = exports.DecryptionErrorMessage = exports.PlaintextContent = exports.CiphertextMessage = exports.SealedSenderDecryptionResult = exports.groupDecrypt = exports.groupEncrypt = exports.SenderKeyStore = exports.KyberPreKeyStore = exports.SignedPreKeyStore = exports.PreKeyStore = exports.IdentityKeyStore = exports.SessionStore = exports.UnidentifiedSenderMessageContent = exports.SenderKeyMessage = exports.processSenderKeyDistributionMessage = exports.SenderKeyDistributionMessage = exports.SenderCertificate = exports.SenderKeyRecord = exports.ServerCertificate = exports.SessionRecord = exports.PreKeySignalMessage = exports.SignalMessage = exports.KyberPreKeyRecord = exports.SignedPreKeyRecord = exports.PreKeyRecord = exports.PreKeyBundle = exports.IdentityKeyPair = exports.KEMKeyPair = exports.KEMSecretKey = exports.KEMPublicKey = exports.PrivateKey = exports.PublicKey = exports.Aes256GcmSiv = exports.Fingerprint = exports.DisplayableFingerprint = exports.ScannableFingerprint = exports.hkdf = exports.HKDF = exports.ContentHint = exports.Direction = exports.CiphertextMessageType = exports.WebpSanitizer = exports.Mp4Sanitizer = exports.io = exports.usernames = void 0;
31
- exports.initLogger = exports.LogLevel = exports.HsmEnclaveClient = exports.Cds2Client = exports.sealedSenderDecryptToUsmc = exports.sealedSenderDecryptMessage = exports.sealedSenderMultiRecipientMessageForSingleRecipient = exports.sealedSenderMultiRecipientEncrypt = exports.sealedSenderEncrypt = void 0;
21
+ exports.signalDecryptPreKey = exports.signalDecrypt = exports.signalEncrypt = exports.processPreKeyBundle = exports.DecryptionErrorMessage = exports.PlaintextContent = exports.CiphertextMessage = exports.SealedSenderDecryptionResult = exports.groupDecrypt = exports.groupEncrypt = exports.SenderKeyStore = exports.KyberPreKeyStore = exports.SignedPreKeyStore = exports.PreKeyStore = exports.IdentityKeyStore = exports.SessionStore = exports.UnidentifiedSenderMessageContent = exports.SenderKeyMessage = exports.processSenderKeyDistributionMessage = exports.SenderKeyDistributionMessage = exports.SenderCertificate = exports.SenderKeyRecord = exports.ServerCertificate = exports.SessionRecord = exports.PreKeySignalMessage = exports.SignalMessage = exports.KyberPreKeyRecord = exports.SignedPreKeyRecord = exports.PreKeyRecord = exports.PreKeyBundle = exports.IdentityKeyPair = exports.KEMKeyPair = exports.KEMSecretKey = exports.KEMPublicKey = exports.PrivateKey = exports.PublicKey = exports.Aes256GcmSiv = exports.Fingerprint = exports.DisplayableFingerprint = exports.ScannableFingerprint = exports.hkdf = exports.HKDF = exports.ContentHint = exports.Direction = exports.CiphertextMessageType = exports.WebpSanitizer = exports.Mp4Sanitizer = exports.Net = exports.io = exports.usernames = void 0;
22
+ exports.initLogger = exports.LogLevel = exports.HsmEnclaveClient = exports.Cds2Client = exports.sealedSenderDecryptToUsmc = exports.sealedSenderDecryptMessage = exports.sealedSenderMultiRecipientMessageForSingleRecipient = exports.sealedSenderMultiRecipientEncrypt = exports.sealedSenderEncrypt = exports.sealedSenderEncryptMessage = void 0;
32
23
  const uuid = require("uuid");
33
24
  const Errors = require("./Errors");
34
25
  __exportStar(require("./Errors"), exports);
@@ -36,6 +27,7 @@ const Address_1 = require("./Address");
36
27
  __exportStar(require("./Address"), exports);
37
28
  exports.usernames = require("./usernames");
38
29
  exports.io = require("./io");
30
+ exports.Net = require("./net");
39
31
  exports.Mp4Sanitizer = require("./Mp4Sanitizer");
40
32
  exports.WebpSanitizer = require("./WebpSanitizer");
41
33
  const Native = require("../Native");
@@ -267,7 +259,7 @@ class PreKeyBundle {
267
259
  static new(registration_id, device_id, prekey_id, prekey, signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id, kyber_prekey, kyber_prekey_signature) {
268
260
  return new PreKeyBundle(Native.PreKeyBundle_New(registration_id, device_id, prekey_id, prekey != null ? prekey : null,
269
261
  //prekey?,
270
- signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id !== null && kyber_prekey_id !== void 0 ? kyber_prekey_id : null, kyber_prekey !== null && kyber_prekey !== void 0 ? kyber_prekey : null, kyber_prekey_signature !== null && kyber_prekey_signature !== void 0 ? kyber_prekey_signature : Buffer.alloc(0)));
262
+ signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id ?? null, kyber_prekey ?? null, kyber_prekey_signature ?? Buffer.alloc(0)));
271
263
  }
272
264
  deviceId() {
273
265
  return Native.PreKeyBundle_GetDeviceId(this);
@@ -585,7 +577,7 @@ class SenderCertificate {
585
577
  try {
586
578
  return Address_1.Aci.parseFromServiceIdString(this.senderUuid());
587
579
  }
588
- catch (_a) {
580
+ catch {
589
581
  return null;
590
582
  }
591
583
  }
@@ -607,11 +599,9 @@ class SenderKeyDistributionMessage {
607
599
  constructor(nativeHandle) {
608
600
  this._nativeHandle = nativeHandle;
609
601
  }
610
- static create(sender, distributionId, store) {
611
- return __awaiter(this, void 0, void 0, function* () {
612
- const handle = yield Native.SenderKeyDistributionMessage_Create(sender, Buffer.from(uuid.parse(distributionId)), store);
613
- return new SenderKeyDistributionMessage(handle);
614
- });
602
+ static async create(sender, distributionId, store) {
603
+ const handle = await Native.SenderKeyDistributionMessage_Create(sender, Buffer.from(uuid.parse(distributionId)), store);
604
+ return new SenderKeyDistributionMessage(handle);
615
605
  }
616
606
  static _new(messageVersion, distributionId, chainId, iteration, chainKey, pk) {
617
607
  return new SenderKeyDistributionMessage(Native.SenderKeyDistributionMessage_New(messageVersion, Buffer.from(uuid.parse(distributionId)), chainId, iteration, chainKey, pk));
@@ -636,10 +626,8 @@ class SenderKeyDistributionMessage {
636
626
  }
637
627
  }
638
628
  exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
639
- function processSenderKeyDistributionMessage(sender, message, store) {
640
- return __awaiter(this, void 0, void 0, function* () {
641
- yield Native.SenderKeyDistributionMessage_Process(sender, message, store);
642
- });
629
+ async function processSenderKeyDistributionMessage(sender, message, store) {
630
+ await Native.SenderKeyDistributionMessage_Process(sender, message, store);
643
631
  }
644
632
  exports.processSenderKeyDistributionMessage = processSenderKeyDistributionMessage;
645
633
  class SenderKeyMessage {
@@ -706,141 +694,103 @@ class UnidentifiedSenderMessageContent {
706
694
  }
707
695
  exports.UnidentifiedSenderMessageContent = UnidentifiedSenderMessageContent;
708
696
  class SessionStore {
709
- _saveSession(name, record) {
710
- return __awaiter(this, void 0, void 0, function* () {
711
- return this.saveSession(Address_1.ProtocolAddress._fromNativeHandle(name), SessionRecord._fromNativeHandle(record));
712
- });
697
+ async _saveSession(name, record) {
698
+ return this.saveSession(Address_1.ProtocolAddress._fromNativeHandle(name), SessionRecord._fromNativeHandle(record));
713
699
  }
714
- _getSession(name) {
715
- return __awaiter(this, void 0, void 0, function* () {
716
- const sess = yield this.getSession(Address_1.ProtocolAddress._fromNativeHandle(name));
717
- if (sess == null) {
718
- return null;
719
- }
720
- else {
721
- return sess._nativeHandle;
722
- }
723
- });
700
+ async _getSession(name) {
701
+ const sess = await this.getSession(Address_1.ProtocolAddress._fromNativeHandle(name));
702
+ if (sess == null) {
703
+ return null;
704
+ }
705
+ else {
706
+ return sess._nativeHandle;
707
+ }
724
708
  }
725
709
  }
726
710
  exports.SessionStore = SessionStore;
727
711
  class IdentityKeyStore {
728
- _getIdentityKey() {
729
- return __awaiter(this, void 0, void 0, function* () {
730
- const key = yield this.getIdentityKey();
731
- return key._nativeHandle;
732
- });
712
+ async _getIdentityKey() {
713
+ const key = await this.getIdentityKey();
714
+ return key._nativeHandle;
733
715
  }
734
- _getLocalRegistrationId() {
735
- return __awaiter(this, void 0, void 0, function* () {
736
- return this.getLocalRegistrationId();
737
- });
716
+ async _getLocalRegistrationId() {
717
+ return this.getLocalRegistrationId();
738
718
  }
739
- _saveIdentity(name, key) {
740
- return __awaiter(this, void 0, void 0, function* () {
741
- return this.saveIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key));
742
- });
719
+ async _saveIdentity(name, key) {
720
+ return this.saveIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key));
743
721
  }
744
- _isTrustedIdentity(name, key, sending) {
745
- return __awaiter(this, void 0, void 0, function* () {
746
- const direction = sending ? Direction.Sending : Direction.Receiving;
747
- return this.isTrustedIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key), direction);
748
- });
722
+ async _isTrustedIdentity(name, key, sending) {
723
+ const direction = sending ? Direction.Sending : Direction.Receiving;
724
+ return this.isTrustedIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key), direction);
749
725
  }
750
- _getIdentity(name) {
751
- return __awaiter(this, void 0, void 0, function* () {
752
- const key = yield this.getIdentity(Address_1.ProtocolAddress._fromNativeHandle(name));
753
- if (key == null) {
754
- return Promise.resolve(null);
755
- }
756
- else {
757
- return key._nativeHandle;
758
- }
759
- });
726
+ async _getIdentity(name) {
727
+ const key = await this.getIdentity(Address_1.ProtocolAddress._fromNativeHandle(name));
728
+ if (key == null) {
729
+ return Promise.resolve(null);
730
+ }
731
+ else {
732
+ return key._nativeHandle;
733
+ }
760
734
  }
761
735
  }
762
736
  exports.IdentityKeyStore = IdentityKeyStore;
763
737
  class PreKeyStore {
764
- _savePreKey(id, record) {
765
- return __awaiter(this, void 0, void 0, function* () {
766
- return this.savePreKey(id, PreKeyRecord._fromNativeHandle(record));
767
- });
738
+ async _savePreKey(id, record) {
739
+ return this.savePreKey(id, PreKeyRecord._fromNativeHandle(record));
768
740
  }
769
- _getPreKey(id) {
770
- return __awaiter(this, void 0, void 0, function* () {
771
- const pk = yield this.getPreKey(id);
772
- return pk._nativeHandle;
773
- });
741
+ async _getPreKey(id) {
742
+ const pk = await this.getPreKey(id);
743
+ return pk._nativeHandle;
774
744
  }
775
- _removePreKey(id) {
776
- return __awaiter(this, void 0, void 0, function* () {
777
- return this.removePreKey(id);
778
- });
745
+ async _removePreKey(id) {
746
+ return this.removePreKey(id);
779
747
  }
780
748
  }
781
749
  exports.PreKeyStore = PreKeyStore;
782
750
  class SignedPreKeyStore {
783
- _saveSignedPreKey(id, record) {
784
- return __awaiter(this, void 0, void 0, function* () {
785
- return this.saveSignedPreKey(id, SignedPreKeyRecord._fromNativeHandle(record));
786
- });
751
+ async _saveSignedPreKey(id, record) {
752
+ return this.saveSignedPreKey(id, SignedPreKeyRecord._fromNativeHandle(record));
787
753
  }
788
- _getSignedPreKey(id) {
789
- return __awaiter(this, void 0, void 0, function* () {
790
- const pk = yield this.getSignedPreKey(id);
791
- return pk._nativeHandle;
792
- });
754
+ async _getSignedPreKey(id) {
755
+ const pk = await this.getSignedPreKey(id);
756
+ return pk._nativeHandle;
793
757
  }
794
758
  }
795
759
  exports.SignedPreKeyStore = SignedPreKeyStore;
796
760
  class KyberPreKeyStore {
797
- _saveKyberPreKey(kyberPreKeyId, record) {
798
- return __awaiter(this, void 0, void 0, function* () {
799
- return this.saveKyberPreKey(kyberPreKeyId, KyberPreKeyRecord._fromNativeHandle(record));
800
- });
761
+ async _saveKyberPreKey(kyberPreKeyId, record) {
762
+ return this.saveKyberPreKey(kyberPreKeyId, KyberPreKeyRecord._fromNativeHandle(record));
801
763
  }
802
- _getKyberPreKey(kyberPreKeyId) {
803
- return __awaiter(this, void 0, void 0, function* () {
804
- const prekey = yield this.getKyberPreKey(kyberPreKeyId);
805
- return prekey._nativeHandle;
806
- });
764
+ async _getKyberPreKey(kyberPreKeyId) {
765
+ const prekey = await this.getKyberPreKey(kyberPreKeyId);
766
+ return prekey._nativeHandle;
807
767
  }
808
- _markKyberPreKeyUsed(kyberPreKeyId) {
809
- return __awaiter(this, void 0, void 0, function* () {
810
- return this.markKyberPreKeyUsed(kyberPreKeyId);
811
- });
768
+ async _markKyberPreKeyUsed(kyberPreKeyId) {
769
+ return this.markKyberPreKeyUsed(kyberPreKeyId);
812
770
  }
813
771
  }
814
772
  exports.KyberPreKeyStore = KyberPreKeyStore;
815
773
  class SenderKeyStore {
816
- _saveSenderKey(sender, distributionId, record) {
817
- return __awaiter(this, void 0, void 0, function* () {
818
- return this.saveSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId), SenderKeyRecord._fromNativeHandle(record));
819
- });
774
+ async _saveSenderKey(sender, distributionId, record) {
775
+ return this.saveSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId), SenderKeyRecord._fromNativeHandle(record));
820
776
  }
821
- _getSenderKey(sender, distributionId) {
822
- return __awaiter(this, void 0, void 0, function* () {
823
- const skr = yield this.getSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId));
824
- if (skr == null) {
825
- return null;
826
- }
827
- else {
828
- return skr._nativeHandle;
829
- }
830
- });
777
+ async _getSenderKey(sender, distributionId) {
778
+ const skr = await this.getSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId));
779
+ if (skr == null) {
780
+ return null;
781
+ }
782
+ else {
783
+ return skr._nativeHandle;
784
+ }
831
785
  }
832
786
  }
833
787
  exports.SenderKeyStore = SenderKeyStore;
834
- function groupEncrypt(sender, distributionId, store, message) {
835
- return __awaiter(this, void 0, void 0, function* () {
836
- return CiphertextMessage._fromNativeHandle(yield Native.GroupCipher_EncryptMessage(sender, Buffer.from(uuid.parse(distributionId)), message, store));
837
- });
788
+ async function groupEncrypt(sender, distributionId, store, message) {
789
+ return CiphertextMessage._fromNativeHandle(await Native.GroupCipher_EncryptMessage(sender, Buffer.from(uuid.parse(distributionId)), message, store));
838
790
  }
839
791
  exports.groupEncrypt = groupEncrypt;
840
- function groupDecrypt(sender, store, message) {
841
- return __awaiter(this, void 0, void 0, function* () {
842
- return Native.GroupCipher_DecryptMessage(sender, message, store);
843
- });
792
+ async function groupDecrypt(sender, store, message) {
793
+ return Native.GroupCipher_DecryptMessage(sender, message, store);
844
794
  }
845
795
  exports.groupDecrypt = groupDecrypt;
846
796
  class SealedSenderDecryptionResult {
@@ -868,7 +818,7 @@ class SealedSenderDecryptionResult {
868
818
  try {
869
819
  return Address_1.Aci.parseFromServiceIdString(this.senderUuid());
870
820
  }
871
- catch (_a) {
821
+ catch {
872
822
  return null;
873
823
  }
874
824
  }
@@ -956,10 +906,8 @@ function processPreKeyBundle(bundle, address, sessionStore, identityStore, now =
956
906
  return Native.SessionBuilder_ProcessPreKeyBundle(bundle, address, sessionStore, identityStore, now.getTime());
957
907
  }
958
908
  exports.processPreKeyBundle = processPreKeyBundle;
959
- function signalEncrypt(message, address, sessionStore, identityStore, now = new Date()) {
960
- return __awaiter(this, void 0, void 0, function* () {
961
- return CiphertextMessage._fromNativeHandle(yield Native.SessionCipher_EncryptMessage(message, address, sessionStore, identityStore, now.getTime()));
962
- });
909
+ async function signalEncrypt(message, address, sessionStore, identityStore, now = new Date()) {
910
+ return CiphertextMessage._fromNativeHandle(await Native.SessionCipher_EncryptMessage(message, address, sessionStore, identityStore, now.getTime()));
963
911
  }
964
912
  exports.signalEncrypt = signalEncrypt;
965
913
  function signalDecrypt(message, address, sessionStore, identityStore) {
@@ -970,23 +918,19 @@ function signalDecryptPreKey(message, address, sessionStore, identityStore, prek
970
918
  return Native.SessionCipher_DecryptPreKeySignalMessage(message, address, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore);
971
919
  }
972
920
  exports.signalDecryptPreKey = signalDecryptPreKey;
973
- function sealedSenderEncryptMessage(message, address, senderCert, sessionStore, identityStore) {
974
- return __awaiter(this, void 0, void 0, function* () {
975
- const ciphertext = yield signalEncrypt(message, address, sessionStore, identityStore);
976
- const usmc = UnidentifiedSenderMessageContent.new(ciphertext, senderCert, ContentHint.Default, null);
977
- return yield sealedSenderEncrypt(usmc, address, identityStore);
978
- });
921
+ async function sealedSenderEncryptMessage(message, address, senderCert, sessionStore, identityStore) {
922
+ const ciphertext = await signalEncrypt(message, address, sessionStore, identityStore);
923
+ const usmc = UnidentifiedSenderMessageContent.new(ciphertext, senderCert, ContentHint.Default, null);
924
+ return await sealedSenderEncrypt(usmc, address, identityStore);
979
925
  }
980
926
  exports.sealedSenderEncryptMessage = sealedSenderEncryptMessage;
981
927
  function sealedSenderEncrypt(content, address, identityStore) {
982
928
  return Native.SealedSender_Encrypt(address, content, identityStore);
983
929
  }
984
930
  exports.sealedSenderEncrypt = sealedSenderEncrypt;
985
- function sealedSenderMultiRecipientEncrypt(content, recipients, identityStore, sessionStore) {
986
- return __awaiter(this, void 0, void 0, function* () {
987
- const recipientSessions = yield sessionStore.getExistingSessions(recipients);
988
- return yield Native.SealedSender_MultiRecipientEncrypt(recipients, recipientSessions, content, identityStore);
989
- });
931
+ async function sealedSenderMultiRecipientEncrypt(content, recipients, identityStore, sessionStore) {
932
+ const recipientSessions = await sessionStore.getExistingSessions(recipients);
933
+ return await Native.SealedSender_MultiRecipientEncrypt(recipients, recipientSessions, content, identityStore);
990
934
  }
991
935
  exports.sealedSenderMultiRecipientEncrypt = sealedSenderMultiRecipientEncrypt;
992
936
  // For testing only
@@ -994,18 +938,14 @@ function sealedSenderMultiRecipientMessageForSingleRecipient(message) {
994
938
  return Native.SealedSender_MultiRecipientMessageForSingleRecipient(message);
995
939
  }
996
940
  exports.sealedSenderMultiRecipientMessageForSingleRecipient = sealedSenderMultiRecipientMessageForSingleRecipient;
997
- function sealedSenderDecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore) {
998
- return __awaiter(this, void 0, void 0, function* () {
999
- const ssdr = yield Native.SealedSender_DecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore);
1000
- return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
1001
- });
941
+ async function sealedSenderDecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore) {
942
+ const ssdr = await Native.SealedSender_DecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore);
943
+ return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
1002
944
  }
1003
945
  exports.sealedSenderDecryptMessage = sealedSenderDecryptMessage;
1004
- function sealedSenderDecryptToUsmc(message, identityStore) {
1005
- return __awaiter(this, void 0, void 0, function* () {
1006
- const usmc = yield Native.SealedSender_DecryptToUsmc(message, identityStore);
1007
- return UnidentifiedSenderMessageContent._fromNativeHandle(usmc);
1008
- });
946
+ async function sealedSenderDecryptToUsmc(message, identityStore) {
947
+ const usmc = await Native.SealedSender_DecryptToUsmc(message, identityStore);
948
+ return UnidentifiedSenderMessageContent._fromNativeHandle(usmc);
1009
949
  }
1010
950
  exports.sealedSenderDecryptToUsmc = sealedSenderDecryptToUsmc;
1011
951
  class Cds2Client {
package/dist/net.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import type { ReadonlyDeep } from 'type-fest';
2
+ export declare enum Environment {
3
+ Staging = 0,
4
+ Production = 1
5
+ }
6
+ export type CDSAuthType = {
7
+ username: string;
8
+ password: string;
9
+ };
10
+ export type CDSRequestOptionsType = {
11
+ e164s: Array<string>;
12
+ acisAndAccessKeys: Array<{
13
+ aci: string;
14
+ accessKey: string;
15
+ }>;
16
+ timeout: number;
17
+ returnAcisWithoutUaks: boolean;
18
+ };
19
+ export type CDSResponseEntryType<Aci, Pni> = {
20
+ aci: Aci | undefined;
21
+ pni: Pni | undefined;
22
+ };
23
+ export type CDSResponseType<Aci, Pni> = Map<string, CDSResponseEntryType<Aci, Pni>>;
24
+ export declare class Net {
25
+ private readonly _asyncContext;
26
+ private readonly _connectionManager;
27
+ constructor(env: Environment);
28
+ cdsiLookup({ username, password }: Readonly<CDSAuthType>, { e164s, acisAndAccessKeys, timeout, returnAcisWithoutUaks, }: ReadonlyDeep<CDSRequestOptionsType>): Promise<CDSResponseType<string, string>>;
29
+ }
package/dist/net.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2023 Signal Messenger, LLC.
4
+ // SPDX-License-Identifier: AGPL-3.0-only
5
+ //
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Net = exports.Environment = void 0;
8
+ const Native = require("../Native");
9
+ const Address_1 = require("./Address");
10
+ // This must match the libsignal-bridge Rust enum of the same name.
11
+ var Environment;
12
+ (function (Environment) {
13
+ Environment[Environment["Staging"] = 0] = "Staging";
14
+ Environment[Environment["Production"] = 1] = "Production";
15
+ })(Environment = exports.Environment || (exports.Environment = {}));
16
+ class Net {
17
+ constructor(env) {
18
+ this._asyncContext = Native.TokioAsyncContext_new();
19
+ this._connectionManager = Native.ConnectionManager_new(env);
20
+ }
21
+ async cdsiLookup({ username, password }, { e164s, acisAndAccessKeys, timeout, returnAcisWithoutUaks, }) {
22
+ const request = { _nativeHandle: Native.LookupRequest_new() };
23
+ e164s.forEach((e164) => {
24
+ Native.LookupRequest_addE164(request, e164);
25
+ });
26
+ acisAndAccessKeys.forEach(({ aci: aciStr, accessKey: accessKeyStr }) => {
27
+ Native.LookupRequest_addAciAndAccessKey(request, Address_1.Aci.parseFromServiceIdString(aciStr).getServiceIdFixedWidthBinary(), Buffer.from(accessKeyStr, 'base64'));
28
+ });
29
+ Native.LookupRequest_setReturnAcisWithoutUaks(request, returnAcisWithoutUaks);
30
+ return await Native.CdsiLookup({ _nativeHandle: this._asyncContext }, { _nativeHandle: this._connectionManager }, username, password, request, timeout);
31
+ }
32
+ }
33
+ exports.Net = Net;
34
+ //# sourceMappingURL=net.js.map
@@ -8,5 +8,5 @@ export declare function hash(username: string): Buffer;
8
8
  export declare function generateProof(username: string): Buffer;
9
9
  export declare function generateProofWithRandom(username: string, random: Buffer): Buffer;
10
10
  export declare function decryptUsernameLink(usernameLink: UsernameLink): string;
11
- export declare function createUsernameLink(username: string): UsernameLink;
11
+ export declare function createUsernameLink(username: string, previousEntropy?: Buffer): UsernameLink;
12
12
  export declare function verifyProof(proof: Buffer, hash: Buffer): void;
package/dist/usernames.js CHANGED
@@ -30,8 +30,8 @@ function decryptUsernameLink(usernameLink) {
30
30
  return Native.UsernameLink_DecryptUsername(usernameLink.entropy, usernameLink.encryptedUsername);
31
31
  }
32
32
  exports.decryptUsernameLink = decryptUsernameLink;
33
- function createUsernameLink(username) {
34
- const usernameLinkData = Native.UsernameLink_Create(username);
33
+ function createUsernameLink(username, previousEntropy) {
34
+ const usernameLinkData = Native.UsernameLink_Create(username, previousEntropy ?? null);
35
35
  const entropy = usernameLinkData.slice(0, 32);
36
36
  const encryptedUsername = usernameLinkData.slice(32);
37
37
  return { entropy, encryptedUsername };
@@ -5,7 +5,7 @@
5
5
  //
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.bufferFromBigUInt64BE = void 0;
8
- const UINT64_MAX = BigInt('0xFFFFFFFFFFFFFFFF');
8
+ const UINT64_MAX = 0xffffffffffffffffn;
9
9
  function bufferFromBigUInt64BE(value) {
10
10
  if (value < 0 || value > UINT64_MAX) {
11
11
  throw new RangeError(`value ${value} isn't representable as a u64`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalapp/libsignal-client",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -26,6 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "node-gyp-build": "^4.2.3",
29
+ "type-fest": "^3.5.0",
29
30
  "uuid": "^8.3.0"
30
31
  },
31
32
  "devDependencies": {
@@ -34,7 +35,7 @@
34
35
  "@types/chai-as-promised": "^7.1.3",
35
36
  "@types/chance": "^1.1.3",
36
37
  "@types/mocha": "^5.2.7",
37
- "@types/node": "16.18.3",
38
+ "@types/node": "~18.15.0",
38
39
  "@types/uuid": "^8.3.0",
39
40
  "@typescript-eslint/eslint-plugin": "^5.47.0",
40
41
  "@typescript-eslint/parser": "^5.47.0",
@@ -48,7 +49,7 @@
48
49
  "eslint-plugin-mocha": "^10.1.0",
49
50
  "eslint-plugin-more": "^1.0.0",
50
51
  "mocha": "^9",
51
- "node-gyp": "^8.4.1",
52
+ "node-gyp": "^10.0.0",
52
53
  "prettier": "^2.7.1",
53
54
  "rimraf": "^3.0.1",
54
55
  "source-map-support": "^0.5.19",
Binary file
Binary file
Binary file