Compare commits
10 Commits
jack/relea
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33ff7cc578 | ||
|
|
ef5a7c9bcb | ||
|
|
ef02953213 | ||
|
|
93a1abbe30 | ||
|
|
e55d85ceda | ||
|
|
aa77f0ca68 | ||
|
|
afa8f40eaa | ||
|
|
8b368cc492 | ||
|
|
42a3c707f7 | ||
|
|
c5ed885b9b |
@ -1,2 +0,0 @@
|
||||
dist/**
|
||||
.eslintrc.js
|
||||
83
.eslintrc.js
83
.eslintrc.js
@ -1,83 +0,0 @@
|
||||
// For reference: https://github.com/airbnb/javascript
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
|
||||
parserOptions: {
|
||||
project: './tsconfig.json',
|
||||
ecmaVersion: 2018,
|
||||
sourceType: 'module',
|
||||
},
|
||||
|
||||
settings: {
|
||||
'import/core-modules': ['electron'],
|
||||
},
|
||||
|
||||
plugins: ['header', 'import', 'mocha', 'more', '@typescript-eslint'],
|
||||
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:import/errors',
|
||||
'plugin:import/warnings',
|
||||
'plugin:import/typescript',
|
||||
],
|
||||
|
||||
rules: {
|
||||
'header/header': [
|
||||
2,
|
||||
'line',
|
||||
[
|
||||
'',
|
||||
{ pattern: ' Copyright \\d{4}(-\\d{4})? Signal Messenger, LLC.' },
|
||||
' SPDX-License-Identifier: AGPL-3.0-only',
|
||||
'',
|
||||
],
|
||||
],
|
||||
|
||||
'comma-dangle': [
|
||||
'error',
|
||||
{
|
||||
arrays: 'always-multiline',
|
||||
objects: 'always-multiline',
|
||||
imports: 'always-multiline',
|
||||
exports: 'always-multiline',
|
||||
functions: 'never',
|
||||
},
|
||||
],
|
||||
|
||||
// prevents us from accidentally checking in exclusive tests (`.only`):
|
||||
'mocha/no-exclusive-tests': 'error',
|
||||
|
||||
// encourage consistent use of `async` / `await` instead of `then`
|
||||
'more/no-then': 'error',
|
||||
|
||||
// it helps readability to put public API at top,
|
||||
'no-use-before-define': 'off',
|
||||
|
||||
// useful for unused or internal fields
|
||||
'no-underscore-dangle': 'off',
|
||||
|
||||
// useful for unused parameters
|
||||
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
||||
|
||||
// though we have a logger, we still remap console to log to disk
|
||||
'no-console': 'error',
|
||||
|
||||
// consistently place operators at end of line except ternaries
|
||||
'operator-linebreak': 'error',
|
||||
|
||||
quotes: [
|
||||
'error',
|
||||
'single',
|
||||
{ avoidEscape: true, allowTemplateLiterals: false },
|
||||
],
|
||||
|
||||
// We prefer named exports
|
||||
'import/prefer-default-export': 'off',
|
||||
|
||||
'@typescript-eslint/no-require-imports': 'error',
|
||||
'@typescript-eslint/consistent-type-assertions': 'error',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'error',
|
||||
},
|
||||
};
|
||||
619
LICENSE
619
LICENSE
@ -1,619 +0,0 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
79
README.md
79
README.md
@ -1,77 +1,4 @@
|
||||
# Overview
|
||||
**Releases of [libsignal-client][] for Node have moved to NPM under the name [@signalapp/signal-client][].** This repository will continue to host releases prior to v0.5.1.
|
||||
|
||||
libsignal-client is an implementation of the Signal client protocol in Rust.
|
||||
|
||||
Work in progress. Subject to change without notice, use outside Signal not yet recommended.
|
||||
|
||||
# Building
|
||||
|
||||
To build anything in this repository you must have [Rust](https://rust-lang.org) installed.
|
||||
The build currently uses a specific version of the Rust nightly compiler, which
|
||||
will be downloaded automatically by cargo. To build and test the basic protocol
|
||||
libraries:
|
||||
|
||||
```shell
|
||||
$ cargo build
|
||||
...
|
||||
$ cargo test
|
||||
...
|
||||
```
|
||||
|
||||
## Java/Android
|
||||
|
||||
To build for Android you must install several additional packages including a JDK,
|
||||
the Android NDK/SDK, and add the Android targets to the Rust compiler, using
|
||||
|
||||
```rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android```
|
||||
|
||||
as well as the Cargo NDK tool using
|
||||
|
||||
```cargo install --version=1.0.0 cargo-ndk```
|
||||
|
||||
To build the Java/Android ``jar`` and ``aar``, and run the tests:
|
||||
|
||||
```shell
|
||||
$ cd java
|
||||
$ ./gradlew test
|
||||
```
|
||||
|
||||
Alternately, a build system using Docker is available:
|
||||
|
||||
```shell
|
||||
$ cd java
|
||||
$ make java_test
|
||||
```
|
||||
|
||||
## Swift
|
||||
|
||||
To learn about the Swift build process see [``swift/README.md``](swift/)
|
||||
|
||||
# Contributions
|
||||
|
||||
Signal does accept external contributions to this project. However unless the change is
|
||||
simple and easily understood, for example fixing a bug or portability issue, adding a new
|
||||
test, or improving performance, first open an issue to discuss your intended change as not
|
||||
all changes can be accepted.
|
||||
|
||||
Signing a [CLA (Contributor License Agreement)](https://signal.org/cla/) is required for all contributions.
|
||||
|
||||
# Legal things
|
||||
## Cryptography Notice
|
||||
|
||||
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on
|
||||
the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption
|
||||
software, please check your country's laws, regulations and policies concerning the import, possession, or use, and
|
||||
re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information.
|
||||
|
||||
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as
|
||||
Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing
|
||||
cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for
|
||||
export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export
|
||||
Administration Regulations, Section 740.13) for both object code and source code.
|
||||
|
||||
## License
|
||||
|
||||
Copyright 2020 Signal Messenger, LLC
|
||||
|
||||
Licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
|
||||
[libsignal-client]: https://github.com/signalapp/libsignal-client
|
||||
[@signalapp/signal-client]: https://www.npmjs.com/package/@signalapp/signal-client
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
293
dist/index.d.ts
vendored
293
dist/index.d.ts
vendored
@ -1,293 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
import * as SignalClient from './libsignal_client';
|
||||
export declare const initLogger: typeof SignalClient.initLogger, LogLevel: typeof SignalClient.LogLevel;
|
||||
export declare const enum CiphertextMessageType {
|
||||
Whisper = 2,
|
||||
PreKey = 3,
|
||||
SenderKey = 4,
|
||||
SenderKeyDistribution = 5
|
||||
}
|
||||
export declare const enum Direction {
|
||||
Sending = 0,
|
||||
Receiving = 1
|
||||
}
|
||||
export declare class HKDF {
|
||||
private readonly version;
|
||||
private constructor();
|
||||
static new(version: number): HKDF;
|
||||
deriveSecrets(outputLength: number, keyMaterial: Buffer, label: Buffer, salt: Buffer | null): Buffer;
|
||||
}
|
||||
export declare class ScannableFingerprint {
|
||||
private readonly scannable;
|
||||
private constructor();
|
||||
static _fromBuffer(scannable: Buffer): ScannableFingerprint;
|
||||
compare(other: ScannableFingerprint): boolean;
|
||||
toBuffer(): Buffer;
|
||||
}
|
||||
export declare class DisplayableFingerprint {
|
||||
private readonly display;
|
||||
private constructor();
|
||||
static _fromString(display: string): DisplayableFingerprint;
|
||||
toString(): string;
|
||||
}
|
||||
export declare class Fingerprint {
|
||||
readonly _nativeHandle: SignalClient.Fingerprint;
|
||||
private constructor();
|
||||
static new(iterations: number, version: number, localIdentifier: Buffer, localKey: PublicKey, remoteIdentifier: Buffer, remoteKey: PublicKey): Fingerprint;
|
||||
displayableFingerprint(): DisplayableFingerprint;
|
||||
scannableFingerprint(): ScannableFingerprint;
|
||||
}
|
||||
export declare class Aes256GcmSiv {
|
||||
readonly _nativeHandle: SignalClient.Aes256GcmSiv;
|
||||
private constructor();
|
||||
static new(key: Buffer): Aes256GcmSiv;
|
||||
encrypt(message: Buffer, nonce: Buffer, associated_data: Buffer): Buffer;
|
||||
decrypt(message: Buffer, nonce: Buffer, associated_data: Buffer): Buffer;
|
||||
}
|
||||
export declare class ProtocolAddress {
|
||||
readonly _nativeHandle: SignalClient.ProtocolAddress;
|
||||
private constructor();
|
||||
static _fromNativeHandle(handle: SignalClient.ProtocolAddress): ProtocolAddress;
|
||||
static new(name: string, deviceId: number): ProtocolAddress;
|
||||
name(): string;
|
||||
deviceId(): number;
|
||||
}
|
||||
export declare class PublicKey {
|
||||
readonly _nativeHandle: SignalClient.PublicKey;
|
||||
private constructor();
|
||||
static _fromNativeHandle(handle: SignalClient.PublicKey): PublicKey;
|
||||
static deserialize(buf: Buffer): PublicKey;
|
||||
compare(other: PublicKey): number;
|
||||
serialize(): Buffer;
|
||||
getPublicKeyBytes(): Buffer;
|
||||
verify(msg: Buffer, sig: Buffer): boolean;
|
||||
}
|
||||
export declare class PrivateKey {
|
||||
readonly _nativeHandle: SignalClient.PrivateKey;
|
||||
private constructor();
|
||||
static _fromNativeHandle(handle: SignalClient.PrivateKey): PrivateKey;
|
||||
static generate(): PrivateKey;
|
||||
static deserialize(buf: Buffer): PrivateKey;
|
||||
serialize(): Buffer;
|
||||
sign(msg: Buffer): Buffer;
|
||||
agree(other_key: PublicKey): Buffer;
|
||||
getPublicKey(): PublicKey;
|
||||
}
|
||||
export declare class IdentityKeyPair {
|
||||
private readonly publicKey;
|
||||
private readonly privateKey;
|
||||
constructor(publicKey: PublicKey, privateKey: PrivateKey);
|
||||
static new(publicKey: PublicKey, privateKey: PrivateKey): IdentityKeyPair;
|
||||
serialize(): Buffer;
|
||||
}
|
||||
export declare class PreKeyBundle {
|
||||
readonly _nativeHandle: SignalClient.PreKeyBundle;
|
||||
private constructor();
|
||||
static new(registration_id: number, device_id: number, prekey_id: number | null, prekey: PublicKey | null, signed_prekey_id: number, signed_prekey: PublicKey, signed_prekey_signature: Buffer, identity_key: PublicKey): PreKeyBundle;
|
||||
deviceId(): number;
|
||||
identityKey(): PublicKey;
|
||||
preKeyId(): number | null;
|
||||
preKeyPublic(): PublicKey | null;
|
||||
registrationId(): number;
|
||||
signedPreKeyId(): number;
|
||||
signedPreKeyPublic(): PublicKey;
|
||||
signedPreKeySignature(): Buffer;
|
||||
}
|
||||
export declare class PreKeyRecord {
|
||||
readonly _nativeHandle: SignalClient.PreKeyRecord;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.PreKeyRecord): PreKeyRecord;
|
||||
static new(id: number, pubKey: PublicKey, privKey: PrivateKey): PreKeyRecord;
|
||||
static deserialize(buffer: Buffer): PreKeyRecord;
|
||||
id(): number;
|
||||
privateKey(): PrivateKey;
|
||||
publicKey(): PublicKey;
|
||||
serialize(): Buffer;
|
||||
}
|
||||
export declare class SignedPreKeyRecord {
|
||||
readonly _nativeHandle: SignalClient.SignedPreKeyRecord;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SignedPreKeyRecord): SignedPreKeyRecord;
|
||||
static new(id: number, timestamp: number, pubKey: PublicKey, privKey: PrivateKey, signature: Buffer): SignedPreKeyRecord;
|
||||
static deserialize(buffer: Buffer): SignedPreKeyRecord;
|
||||
id(): number;
|
||||
privateKey(): PrivateKey;
|
||||
publicKey(): PublicKey;
|
||||
serialize(): Buffer;
|
||||
signature(): Buffer;
|
||||
timestamp(): number;
|
||||
}
|
||||
export declare class SignalMessage {
|
||||
readonly _nativeHandle: SignalClient.SignalMessage;
|
||||
private constructor();
|
||||
static new(messageVersion: number, macKey: Buffer, senderRatchetKey: PublicKey, counter: number, previousCounter: number, ciphertext: Buffer, senderIdentityKey: PublicKey, receiverIdentityKey: PublicKey): SignalMessage;
|
||||
static deserialize(buffer: Buffer): SignalMessage;
|
||||
body(): Buffer;
|
||||
counter(): number;
|
||||
messageVersion(): number;
|
||||
serialize(): Buffer;
|
||||
verifyMac(senderIdentityKey: PublicKey, recevierIdentityKey: PublicKey, macKey: Buffer): boolean;
|
||||
}
|
||||
export declare class PreKeySignalMessage {
|
||||
readonly _nativeHandle: SignalClient.PreKeySignalMessage;
|
||||
private constructor();
|
||||
static new(messageVersion: number, registrationId: number, preKeyId: number | null, signedPreKeyId: number, baseKey: PublicKey, identityKey: PublicKey, signalMessage: SignalMessage): PreKeySignalMessage;
|
||||
static deserialize(buffer: Buffer): PreKeySignalMessage;
|
||||
preKeyId(): number | null;
|
||||
registrationId(): number;
|
||||
signedPreKeyId(): number;
|
||||
version(): number;
|
||||
serialize(): Buffer;
|
||||
}
|
||||
export declare class SessionRecord {
|
||||
readonly _nativeHandle: SignalClient.SessionRecord;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SessionRecord): SessionRecord;
|
||||
static deserialize(buffer: Buffer): SessionRecord;
|
||||
serialize(): Buffer;
|
||||
archiveCurrentState(): void;
|
||||
localRegistrationId(): number;
|
||||
remoteRegistrationId(): number;
|
||||
}
|
||||
export declare class SenderKeyName {
|
||||
readonly _nativeHandle: SignalClient.SenderKeyName;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SenderKeyName): SenderKeyName;
|
||||
static new(groupId: string, senderName: string, senderDeviceId: number): SenderKeyName;
|
||||
groupId(): string;
|
||||
senderName(): string;
|
||||
senderDeviceId(): number;
|
||||
}
|
||||
export declare class ServerCertificate {
|
||||
readonly _nativeHandle: SignalClient.ServerCertificate;
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.ServerCertificate): ServerCertificate;
|
||||
private constructor();
|
||||
static new(keyId: number, serverKey: PublicKey, trustRoot: PrivateKey): ServerCertificate;
|
||||
static deserialize(buffer: Buffer): ServerCertificate;
|
||||
certificateData(): Buffer;
|
||||
key(): PublicKey;
|
||||
keyId(): number;
|
||||
serialize(): Buffer;
|
||||
signature(): Buffer;
|
||||
}
|
||||
export declare class SenderKeyRecord {
|
||||
readonly _nativeHandle: SignalClient.SenderKeyRecord;
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SenderKeyRecord): SenderKeyRecord;
|
||||
private constructor();
|
||||
static new(): SenderKeyRecord;
|
||||
static deserialize(buffer: Buffer): SenderKeyRecord;
|
||||
serialize(): Buffer;
|
||||
}
|
||||
export declare class SenderCertificate {
|
||||
readonly _nativeHandle: SignalClient.SenderCertificate;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SenderCertificate): SenderCertificate;
|
||||
static new(senderUuid: string, senderE164: string | null, senderDeviceId: number, senderKey: PublicKey, expiration: number, signerCert: ServerCertificate, signerKey: PrivateKey): SenderCertificate;
|
||||
static deserialize(buffer: Buffer): SenderCertificate;
|
||||
serialize(): Buffer;
|
||||
certificate(): Buffer;
|
||||
expiration(): number;
|
||||
key(): PublicKey;
|
||||
senderE164(): string | null;
|
||||
senderUuid(): string;
|
||||
senderDeviceId(): number;
|
||||
serverCertificate(): ServerCertificate;
|
||||
signature(): Buffer;
|
||||
validate(trustRoot: PublicKey, time: number): boolean;
|
||||
}
|
||||
export declare class SenderKeyDistributionMessage {
|
||||
readonly _nativeHandle: SignalClient.SenderKeyDistributionMessage;
|
||||
private constructor();
|
||||
static create(name: SenderKeyName, store: SenderKeyStore): Promise<SenderKeyDistributionMessage>;
|
||||
static new(keyId: number, iteration: number, chainKey: Buffer, pk: PublicKey): SenderKeyDistributionMessage;
|
||||
static deserialize(buffer: Buffer): SenderKeyDistributionMessage;
|
||||
serialize(): Buffer;
|
||||
chainKey(): Buffer;
|
||||
iteration(): number;
|
||||
id(): number;
|
||||
}
|
||||
export declare function processSenderKeyDistributionMessage(name: SenderKeyName, message: SenderKeyDistributionMessage, store: SenderKeyStore): Promise<void>;
|
||||
export declare class SenderKeyMessage {
|
||||
readonly _nativeHandle: SignalClient.SenderKeyMessage;
|
||||
private constructor();
|
||||
static new(keyId: number, iteration: number, ciphertext: Buffer, pk: PrivateKey): SenderKeyMessage;
|
||||
static deserialize(buffer: Buffer): SenderKeyMessage;
|
||||
serialize(): Buffer;
|
||||
ciphertext(): Buffer;
|
||||
iteration(): number;
|
||||
keyId(): number;
|
||||
verifySignature(key: PublicKey): boolean;
|
||||
}
|
||||
export declare class UnidentifiedSenderMessageContent {
|
||||
readonly _nativeHandle: SignalClient.UnidentifiedSenderMessageContent;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.UnidentifiedSenderMessageContent): UnidentifiedSenderMessageContent;
|
||||
static deserialize(buffer: Buffer): UnidentifiedSenderMessageContent;
|
||||
serialize(): Buffer;
|
||||
contents(): Buffer;
|
||||
msgType(): number;
|
||||
senderCertificate(): SenderCertificate;
|
||||
}
|
||||
export declare abstract class SessionStore implements SignalClient.SessionStore {
|
||||
_saveSession(name: SignalClient.ProtocolAddress, record: SignalClient.SessionRecord): Promise<void>;
|
||||
_getSession(name: SignalClient.ProtocolAddress): Promise<SignalClient.SessionRecord | null>;
|
||||
abstract saveSession(name: ProtocolAddress, record: SessionRecord): Promise<void>;
|
||||
abstract getSession(name: ProtocolAddress): Promise<SessionRecord | null>;
|
||||
}
|
||||
export declare abstract class IdentityKeyStore implements SignalClient.IdentityKeyStore {
|
||||
_getIdentityKey(): Promise<SignalClient.PrivateKey>;
|
||||
_getLocalRegistrationId(): Promise<number>;
|
||||
_saveIdentity(name: SignalClient.ProtocolAddress, key: SignalClient.PublicKey): Promise<boolean>;
|
||||
_isTrustedIdentity(name: SignalClient.ProtocolAddress, key: SignalClient.PublicKey, sending: boolean): Promise<boolean>;
|
||||
_getIdentity(name: SignalClient.ProtocolAddress): Promise<SignalClient.PublicKey | null>;
|
||||
abstract getIdentityKey(): Promise<PrivateKey>;
|
||||
abstract getLocalRegistrationId(): Promise<number>;
|
||||
abstract saveIdentity(name: ProtocolAddress, key: PublicKey): Promise<boolean>;
|
||||
abstract isTrustedIdentity(name: ProtocolAddress, key: PublicKey, direction: Direction): Promise<boolean>;
|
||||
abstract getIdentity(name: ProtocolAddress): Promise<PublicKey | null>;
|
||||
}
|
||||
export declare abstract class PreKeyStore implements SignalClient.PreKeyStore {
|
||||
_savePreKey(id: number, record: SignalClient.PreKeyRecord): Promise<void>;
|
||||
_getPreKey(id: number): Promise<SignalClient.PreKeyRecord>;
|
||||
_removePreKey(id: number): Promise<void>;
|
||||
abstract savePreKey(id: number, record: PreKeyRecord): Promise<void>;
|
||||
abstract getPreKey(id: number): Promise<PreKeyRecord>;
|
||||
abstract removePreKey(id: number): Promise<void>;
|
||||
}
|
||||
export declare abstract class SignedPreKeyStore implements SignalClient.SignedPreKeyStore {
|
||||
_saveSignedPreKey(id: number, record: SignalClient.SignedPreKeyRecord): Promise<void>;
|
||||
_getSignedPreKey(id: number): Promise<SignalClient.SignedPreKeyRecord>;
|
||||
abstract saveSignedPreKey(id: number, record: SignedPreKeyRecord): Promise<void>;
|
||||
abstract getSignedPreKey(id: number): Promise<SignedPreKeyRecord>;
|
||||
}
|
||||
export declare abstract class SenderKeyStore implements SignalClient.SenderKeyStore {
|
||||
_saveSenderKey(name: SignalClient.SenderKeyName, record: SignalClient.SenderKeyRecord): Promise<void>;
|
||||
_getSenderKey(name: SignalClient.SenderKeyName): Promise<SignalClient.SenderKeyRecord | null>;
|
||||
abstract saveSenderKey(name: SenderKeyName, record: SenderKeyRecord): Promise<void>;
|
||||
abstract getSenderKey(name: SenderKeyName): Promise<SenderKeyRecord | null>;
|
||||
}
|
||||
export declare function groupEncrypt(name: SenderKeyName, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export declare function groupDecrypt(name: SenderKeyName, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export declare class SealedSenderDecryptionResult {
|
||||
readonly _nativeHandle: SignalClient.SealedSenderDecryptionResult;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.SealedSenderDecryptionResult): SealedSenderDecryptionResult;
|
||||
message(): Buffer;
|
||||
senderE164(): string | null;
|
||||
senderUuid(): string;
|
||||
deviceId(): number;
|
||||
}
|
||||
export declare class CiphertextMessage {
|
||||
readonly _nativeHandle: SignalClient.CiphertextMessage;
|
||||
private constructor();
|
||||
static _fromNativeHandle(nativeHandle: SignalClient.CiphertextMessage): CiphertextMessage;
|
||||
serialize(): Buffer;
|
||||
type(): number;
|
||||
}
|
||||
export declare function processPreKeyBundle(bundle: PreKeyBundle, address: ProtocolAddress, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<void>;
|
||||
export declare function signalEncrypt(message: Buffer, address: ProtocolAddress, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<CiphertextMessage>;
|
||||
export declare function signalDecrypt(message: SignalMessage, address: ProtocolAddress, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export declare function signalDecryptPreKey(message: PreKeySignalMessage, address: ProtocolAddress, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<Buffer>;
|
||||
export declare function sealedSenderEncryptMessage(message: Buffer, address: ProtocolAddress, senderCert: SenderCertificate, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export declare function sealedSenderDecryptMessage(message: Buffer, trustRoot: PublicKey, timestamp: number, localE164: string | null, localUuid: string, localDeviceId: number, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<SealedSenderDecryptionResult>;
|
||||
export declare function sealedSenderDecryptToUsmc(message: Buffer, identityStore: IdentityKeyStore): Promise<UnidentifiedSenderMessageContent>;
|
||||
743
dist/index.js
vendored
743
dist/index.js
vendored
@ -1,743 +0,0 @@
|
||||
"use strict";
|
||||
//
|
||||
// Copyright 2020-2021 Signal Messenger, LLC.
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
//
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const os = require("os");
|
||||
const bindings = require("bindings"); // eslint-disable-line @typescript-eslint/no-require-imports
|
||||
const SC = bindings('libsignal_client_' + os.platform() + '_' + process.arch);
|
||||
exports.initLogger = SC.initLogger, exports.LogLevel = SC.LogLevel;
|
||||
class HKDF {
|
||||
constructor(version) {
|
||||
this.version = version;
|
||||
}
|
||||
static new(version) {
|
||||
return new HKDF(version);
|
||||
}
|
||||
deriveSecrets(outputLength, keyMaterial, label, salt) {
|
||||
return SC.HKDF_DeriveSecrets(outputLength, this.version, keyMaterial, label, salt);
|
||||
}
|
||||
}
|
||||
exports.HKDF = HKDF;
|
||||
class ScannableFingerprint {
|
||||
constructor(scannable) {
|
||||
this.scannable = scannable;
|
||||
}
|
||||
static _fromBuffer(scannable) {
|
||||
return new ScannableFingerprint(scannable);
|
||||
}
|
||||
compare(other) {
|
||||
return SC.ScannableFingerprint_Compare(this.scannable, other.scannable);
|
||||
}
|
||||
toBuffer() {
|
||||
return this.scannable;
|
||||
}
|
||||
}
|
||||
exports.ScannableFingerprint = ScannableFingerprint;
|
||||
class DisplayableFingerprint {
|
||||
constructor(display) {
|
||||
this.display = display;
|
||||
}
|
||||
static _fromString(display) {
|
||||
return new DisplayableFingerprint(display);
|
||||
}
|
||||
toString() {
|
||||
return this.display;
|
||||
}
|
||||
}
|
||||
exports.DisplayableFingerprint = DisplayableFingerprint;
|
||||
class Fingerprint {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static new(iterations, version, localIdentifier, localKey, remoteIdentifier, remoteKey) {
|
||||
return new Fingerprint(SC.Fingerprint_New(iterations, version, localIdentifier, localKey, remoteIdentifier, remoteKey));
|
||||
}
|
||||
displayableFingerprint() {
|
||||
return DisplayableFingerprint._fromString(SC.Fingerprint_DisplayString(this));
|
||||
}
|
||||
scannableFingerprint() {
|
||||
return ScannableFingerprint._fromBuffer(SC.Fingerprint_ScannableEncoding(this));
|
||||
}
|
||||
}
|
||||
exports.Fingerprint = Fingerprint;
|
||||
class Aes256GcmSiv {
|
||||
constructor(key) {
|
||||
this._nativeHandle = SC.Aes256GcmSiv_New(key);
|
||||
}
|
||||
static new(key) {
|
||||
return new Aes256GcmSiv(key);
|
||||
}
|
||||
encrypt(message, nonce, associated_data) {
|
||||
return SC.Aes256GcmSiv_Encrypt(this, message, nonce, associated_data);
|
||||
}
|
||||
decrypt(message, nonce, associated_data) {
|
||||
return SC.Aes256GcmSiv_Decrypt(this, message, nonce, associated_data);
|
||||
}
|
||||
}
|
||||
exports.Aes256GcmSiv = Aes256GcmSiv;
|
||||
class ProtocolAddress {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static _fromNativeHandle(handle) {
|
||||
return new ProtocolAddress(handle);
|
||||
}
|
||||
static new(name, deviceId) {
|
||||
return new ProtocolAddress(SC.ProtocolAddress_New(name, deviceId));
|
||||
}
|
||||
name() {
|
||||
return SC.ProtocolAddress_Name(this);
|
||||
}
|
||||
deviceId() {
|
||||
return SC.ProtocolAddress_DeviceId(this);
|
||||
}
|
||||
}
|
||||
exports.ProtocolAddress = ProtocolAddress;
|
||||
class PublicKey {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static _fromNativeHandle(handle) {
|
||||
return new PublicKey(handle);
|
||||
}
|
||||
static deserialize(buf) {
|
||||
return new PublicKey(SC.PublicKey_Deserialize(buf));
|
||||
}
|
||||
/// Returns -1, 0, or 1
|
||||
compare(other) {
|
||||
return SC.PublicKey_Compare(this, other);
|
||||
}
|
||||
serialize() {
|
||||
return SC.PublicKey_Serialize(this);
|
||||
}
|
||||
getPublicKeyBytes() {
|
||||
return SC.PublicKey_GetPublicKeyBytes(this);
|
||||
}
|
||||
verify(msg, sig) {
|
||||
return SC.PublicKey_Verify(this, msg, sig);
|
||||
}
|
||||
}
|
||||
exports.PublicKey = PublicKey;
|
||||
class PrivateKey {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static _fromNativeHandle(handle) {
|
||||
return new PrivateKey(handle);
|
||||
}
|
||||
static generate() {
|
||||
return new PrivateKey(SC.PrivateKey_Generate());
|
||||
}
|
||||
static deserialize(buf) {
|
||||
return new PrivateKey(SC.PrivateKey_Deserialize(buf));
|
||||
}
|
||||
serialize() {
|
||||
return SC.PrivateKey_Serialize(this);
|
||||
}
|
||||
sign(msg) {
|
||||
return SC.PrivateKey_Sign(this, msg);
|
||||
}
|
||||
agree(other_key) {
|
||||
return SC.PrivateKey_Agree(this, other_key);
|
||||
}
|
||||
getPublicKey() {
|
||||
return PublicKey._fromNativeHandle(SC.PrivateKey_GetPublicKey(this));
|
||||
}
|
||||
}
|
||||
exports.PrivateKey = PrivateKey;
|
||||
class IdentityKeyPair {
|
||||
constructor(publicKey, privateKey) {
|
||||
this.publicKey = publicKey;
|
||||
this.privateKey = privateKey;
|
||||
}
|
||||
static new(publicKey, privateKey) {
|
||||
return new IdentityKeyPair(publicKey, privateKey);
|
||||
}
|
||||
serialize() {
|
||||
return SC.IdentityKeyPair_Serialize(this.publicKey, this.privateKey);
|
||||
}
|
||||
}
|
||||
exports.IdentityKeyPair = IdentityKeyPair;
|
||||
class PreKeyBundle {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static new(registration_id, device_id, prekey_id, prekey, signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key) {
|
||||
return new PreKeyBundle(SC.PreKeyBundle_New(registration_id, device_id, prekey_id, prekey != null ? prekey : null,
|
||||
//prekey?,
|
||||
signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key));
|
||||
}
|
||||
deviceId() {
|
||||
return SC.PreKeyBundle_GetDeviceId(this);
|
||||
}
|
||||
identityKey() {
|
||||
return PublicKey._fromNativeHandle(SC.PreKeyBundle_GetIdentityKey(this));
|
||||
}
|
||||
preKeyId() {
|
||||
return SC.PreKeyBundle_GetPreKeyId(this);
|
||||
}
|
||||
preKeyPublic() {
|
||||
const handle = SC.PreKeyBundle_GetPreKeyPublic(this);
|
||||
if (handle == null) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return PublicKey._fromNativeHandle(handle);
|
||||
}
|
||||
}
|
||||
registrationId() {
|
||||
return SC.PreKeyBundle_GetRegistrationId(this);
|
||||
}
|
||||
signedPreKeyId() {
|
||||
return SC.PreKeyBundle_GetSignedPreKeyId(this);
|
||||
}
|
||||
signedPreKeyPublic() {
|
||||
return PublicKey._fromNativeHandle(SC.PreKeyBundle_GetSignedPreKeyPublic(this));
|
||||
}
|
||||
signedPreKeySignature() {
|
||||
return SC.PreKeyBundle_GetSignedPreKeySignature(this);
|
||||
}
|
||||
}
|
||||
exports.PreKeyBundle = PreKeyBundle;
|
||||
class PreKeyRecord {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new PreKeyRecord(nativeHandle);
|
||||
}
|
||||
static new(id, pubKey, privKey) {
|
||||
return new PreKeyRecord(SC.PreKeyRecord_New(id, pubKey, privKey));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new PreKeyRecord(SC.PreKeyRecord_Deserialize(buffer));
|
||||
}
|
||||
id() {
|
||||
return SC.PreKeyRecord_GetId(this);
|
||||
}
|
||||
privateKey() {
|
||||
return PrivateKey._fromNativeHandle(SC.PreKeyRecord_GetPrivateKey(this));
|
||||
}
|
||||
publicKey() {
|
||||
return PublicKey._fromNativeHandle(SC.PreKeyRecord_GetPublicKey(this));
|
||||
}
|
||||
serialize() {
|
||||
return SC.PreKeyRecord_Serialize(this);
|
||||
}
|
||||
}
|
||||
exports.PreKeyRecord = PreKeyRecord;
|
||||
class SignedPreKeyRecord {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SignedPreKeyRecord(nativeHandle);
|
||||
}
|
||||
static new(id, timestamp, pubKey, privKey, signature) {
|
||||
return new SignedPreKeyRecord(SC.SignedPreKeyRecord_New(id, timestamp, pubKey, privKey, signature));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SignedPreKeyRecord(SC.SignedPreKeyRecord_Deserialize(buffer));
|
||||
}
|
||||
id() {
|
||||
return SC.SignedPreKeyRecord_GetId(this);
|
||||
}
|
||||
privateKey() {
|
||||
return PrivateKey._fromNativeHandle(SC.SignedPreKeyRecord_GetPrivateKey(this));
|
||||
}
|
||||
publicKey() {
|
||||
return PublicKey._fromNativeHandle(SC.SignedPreKeyRecord_GetPublicKey(this));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SignedPreKeyRecord_Serialize(this);
|
||||
}
|
||||
signature() {
|
||||
return SC.SignedPreKeyRecord_GetSignature(this);
|
||||
}
|
||||
timestamp() {
|
||||
return SC.SignedPreKeyRecord_GetTimestamp(this);
|
||||
}
|
||||
}
|
||||
exports.SignedPreKeyRecord = SignedPreKeyRecord;
|
||||
class SignalMessage {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static new(messageVersion, macKey, senderRatchetKey, counter, previousCounter, ciphertext, senderIdentityKey, receiverIdentityKey) {
|
||||
return new SignalMessage(SC.SignalMessage_New(messageVersion, macKey, senderRatchetKey, counter, previousCounter, ciphertext, senderIdentityKey, receiverIdentityKey));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SignalMessage(SC.SignalMessage_Deserialize(buffer));
|
||||
}
|
||||
body() {
|
||||
return SC.SignalMessage_GetBody(this);
|
||||
}
|
||||
counter() {
|
||||
return SC.SignalMessage_GetCounter(this);
|
||||
}
|
||||
messageVersion() {
|
||||
return SC.SignalMessage_GetMessageVersion(this);
|
||||
}
|
||||
serialize() {
|
||||
return SC.SignalMessage_GetSerialized(this);
|
||||
}
|
||||
verifyMac(senderIdentityKey, recevierIdentityKey, macKey) {
|
||||
return SC.SignalMessage_VerifyMac(this, senderIdentityKey, recevierIdentityKey, macKey);
|
||||
}
|
||||
}
|
||||
exports.SignalMessage = SignalMessage;
|
||||
class PreKeySignalMessage {
|
||||
constructor(handle) {
|
||||
this._nativeHandle = handle;
|
||||
}
|
||||
static new(messageVersion, registrationId, preKeyId, signedPreKeyId, baseKey, identityKey, signalMessage) {
|
||||
return new PreKeySignalMessage(SC.PreKeySignalMessage_New(messageVersion, registrationId, preKeyId, signedPreKeyId, baseKey, identityKey, signalMessage));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new PreKeySignalMessage(SC.PreKeySignalMessage_Deserialize(buffer));
|
||||
}
|
||||
preKeyId() {
|
||||
return SC.PreKeySignalMessage_GetPreKeyId(this);
|
||||
}
|
||||
registrationId() {
|
||||
return SC.PreKeySignalMessage_GetRegistrationId(this);
|
||||
}
|
||||
signedPreKeyId() {
|
||||
return SC.PreKeySignalMessage_GetSignedPreKeyId(this);
|
||||
}
|
||||
version() {
|
||||
return SC.PreKeySignalMessage_GetVersion(this);
|
||||
}
|
||||
serialize() {
|
||||
return SC.PreKeySignalMessage_Serialize(this);
|
||||
}
|
||||
}
|
||||
exports.PreKeySignalMessage = PreKeySignalMessage;
|
||||
class SessionRecord {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SessionRecord(nativeHandle);
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SessionRecord(SC.SessionRecord_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SessionRecord_Serialize(this);
|
||||
}
|
||||
archiveCurrentState() {
|
||||
SC.SessionRecord_ArchiveCurrentState(this);
|
||||
}
|
||||
localRegistrationId() {
|
||||
return SC.SessionRecord_GetLocalRegistrationId(this);
|
||||
}
|
||||
remoteRegistrationId() {
|
||||
return SC.SessionRecord_GetRemoteRegistrationId(this);
|
||||
}
|
||||
}
|
||||
exports.SessionRecord = SessionRecord;
|
||||
class SenderKeyName {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SenderKeyName(nativeHandle);
|
||||
}
|
||||
static new(groupId, senderName, senderDeviceId) {
|
||||
return new SenderKeyName(SC.SenderKeyName_New(groupId, senderName, senderDeviceId));
|
||||
}
|
||||
groupId() {
|
||||
return SC.SenderKeyName_GetGroupId(this);
|
||||
}
|
||||
senderName() {
|
||||
return SC.SenderKeyName_GetSenderName(this);
|
||||
}
|
||||
senderDeviceId() {
|
||||
return SC.SenderKeyName_GetSenderDeviceId(this);
|
||||
}
|
||||
}
|
||||
exports.SenderKeyName = SenderKeyName;
|
||||
class ServerCertificate {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new ServerCertificate(nativeHandle);
|
||||
}
|
||||
static new(keyId, serverKey, trustRoot) {
|
||||
return new ServerCertificate(SC.ServerCertificate_New(keyId, serverKey, trustRoot));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new ServerCertificate(SC.ServerCertificate_Deserialize(buffer));
|
||||
}
|
||||
certificateData() {
|
||||
return SC.ServerCertificate_GetCertificate(this);
|
||||
}
|
||||
key() {
|
||||
return PublicKey._fromNativeHandle(SC.ServerCertificate_GetKey(this));
|
||||
}
|
||||
keyId() {
|
||||
return SC.ServerCertificate_GetKeyId(this);
|
||||
}
|
||||
serialize() {
|
||||
return SC.ServerCertificate_GetSerialized(this);
|
||||
}
|
||||
signature() {
|
||||
return SC.ServerCertificate_GetSignature(this);
|
||||
}
|
||||
}
|
||||
exports.ServerCertificate = ServerCertificate;
|
||||
class SenderKeyRecord {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SenderKeyRecord(nativeHandle);
|
||||
}
|
||||
static new() {
|
||||
return new SenderKeyRecord(SC.SenderKeyRecord_New());
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SenderKeyRecord(SC.SenderKeyRecord_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SenderKeyRecord_Serialize(this);
|
||||
}
|
||||
}
|
||||
exports.SenderKeyRecord = SenderKeyRecord;
|
||||
class SenderCertificate {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SenderCertificate(nativeHandle);
|
||||
}
|
||||
static new(senderUuid, senderE164, senderDeviceId, senderKey, expiration, signerCert, signerKey) {
|
||||
return new SenderCertificate(SC.SenderCertificate_New(senderUuid, senderE164, senderDeviceId, senderKey, expiration, signerCert, signerKey));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SenderCertificate(SC.SenderCertificate_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SenderCertificate_GetSerialized(this);
|
||||
}
|
||||
certificate() {
|
||||
return SC.SenderCertificate_GetCertificate(this);
|
||||
}
|
||||
expiration() {
|
||||
return SC.SenderCertificate_GetExpiration(this);
|
||||
}
|
||||
key() {
|
||||
return PublicKey._fromNativeHandle(SC.SenderCertificate_GetKey(this));
|
||||
}
|
||||
senderE164() {
|
||||
return SC.SenderCertificate_GetSenderE164(this);
|
||||
}
|
||||
senderUuid() {
|
||||
return SC.SenderCertificate_GetSenderUuid(this);
|
||||
}
|
||||
senderDeviceId() {
|
||||
return SC.SenderCertificate_GetDeviceId(this);
|
||||
}
|
||||
serverCertificate() {
|
||||
return ServerCertificate._fromNativeHandle(SC.SenderCertificate_GetServerCertificate(this));
|
||||
}
|
||||
signature() {
|
||||
return SC.SenderCertificate_GetSignature(this);
|
||||
}
|
||||
validate(trustRoot, time) {
|
||||
return SC.SenderCertificate_Validate(this, trustRoot, time);
|
||||
}
|
||||
}
|
||||
exports.SenderCertificate = SenderCertificate;
|
||||
class SenderKeyDistributionMessage {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static create(name, store) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const handle = yield SC.SenderKeyDistributionMessage_Create(name, store);
|
||||
return new SenderKeyDistributionMessage(handle);
|
||||
});
|
||||
}
|
||||
static new(keyId, iteration, chainKey, pk) {
|
||||
return new SenderKeyDistributionMessage(SC.SenderKeyDistributionMessage_New(keyId, iteration, chainKey, pk));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SenderKeyDistributionMessage(SC.SenderKeyDistributionMessage_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SenderKeyDistributionMessage_Serialize(this);
|
||||
}
|
||||
chainKey() {
|
||||
return SC.SenderKeyDistributionMessage_GetChainKey(this);
|
||||
}
|
||||
iteration() {
|
||||
return SC.SenderKeyDistributionMessage_GetIteration(this);
|
||||
}
|
||||
id() {
|
||||
return SC.SenderKeyDistributionMessage_GetId(this);
|
||||
}
|
||||
}
|
||||
exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
|
||||
function processSenderKeyDistributionMessage(name, message, store) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield SC.SenderKeyDistributionMessage_Process(name, message, store);
|
||||
});
|
||||
}
|
||||
exports.processSenderKeyDistributionMessage = processSenderKeyDistributionMessage;
|
||||
class SenderKeyMessage {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static new(keyId, iteration, ciphertext, pk) {
|
||||
return new SenderKeyMessage(SC.SenderKeyMessage_New(keyId, iteration, ciphertext, pk));
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new SenderKeyMessage(SC.SenderKeyMessage_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.SenderKeyMessage_Serialize(this);
|
||||
}
|
||||
ciphertext() {
|
||||
return SC.SenderKeyMessage_GetCipherText(this);
|
||||
}
|
||||
iteration() {
|
||||
return SC.SenderKeyMessage_GetIteration(this);
|
||||
}
|
||||
keyId() {
|
||||
return SC.SenderKeyMessage_GetKeyId(this);
|
||||
}
|
||||
verifySignature(key) {
|
||||
return SC.SenderKeyMessage_VerifySignature(this, key);
|
||||
}
|
||||
}
|
||||
exports.SenderKeyMessage = SenderKeyMessage;
|
||||
class UnidentifiedSenderMessageContent {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new UnidentifiedSenderMessageContent(nativeHandle);
|
||||
}
|
||||
static deserialize(buffer) {
|
||||
return new UnidentifiedSenderMessageContent(SC.UnidentifiedSenderMessageContent_Deserialize(buffer));
|
||||
}
|
||||
serialize() {
|
||||
return SC.UnidentifiedSenderMessageContent_Serialize(this);
|
||||
}
|
||||
contents() {
|
||||
return SC.UnidentifiedSenderMessageContent_GetContents(this);
|
||||
}
|
||||
msgType() {
|
||||
return SC.UnidentifiedSenderMessageContent_GetMsgType(this);
|
||||
}
|
||||
senderCertificate() {
|
||||
return SenderCertificate._fromNativeHandle(SC.UnidentifiedSenderMessageContent_GetSenderCert(this));
|
||||
}
|
||||
}
|
||||
exports.UnidentifiedSenderMessageContent = UnidentifiedSenderMessageContent;
|
||||
class SessionStore {
|
||||
_saveSession(name, record) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.saveSession(ProtocolAddress._fromNativeHandle(name), SessionRecord._fromNativeHandle(record));
|
||||
});
|
||||
}
|
||||
_getSession(name) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const sess = yield this.getSession(ProtocolAddress._fromNativeHandle(name));
|
||||
if (sess == null) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return sess._nativeHandle;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.SessionStore = SessionStore;
|
||||
class IdentityKeyStore {
|
||||
_getIdentityKey() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const key = yield this.getIdentityKey();
|
||||
return key._nativeHandle;
|
||||
});
|
||||
}
|
||||
_getLocalRegistrationId() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.getLocalRegistrationId();
|
||||
});
|
||||
}
|
||||
_saveIdentity(name, key) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.saveIdentity(ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key));
|
||||
});
|
||||
}
|
||||
_isTrustedIdentity(name, key, sending) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const direction = sending ? 0 /* Sending */ : 1 /* Receiving */;
|
||||
return this.isTrustedIdentity(ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key), direction);
|
||||
});
|
||||
}
|
||||
_getIdentity(name) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const key = yield this.getIdentity(ProtocolAddress._fromNativeHandle(name));
|
||||
if (key == null) {
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
else {
|
||||
return key._nativeHandle;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.IdentityKeyStore = IdentityKeyStore;
|
||||
class PreKeyStore {
|
||||
_savePreKey(id, record) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.savePreKey(id, PreKeyRecord._fromNativeHandle(record));
|
||||
});
|
||||
}
|
||||
_getPreKey(id) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const pk = yield this.getPreKey(id);
|
||||
return pk._nativeHandle;
|
||||
});
|
||||
}
|
||||
_removePreKey(id) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.removePreKey(id);
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.PreKeyStore = PreKeyStore;
|
||||
class SignedPreKeyStore {
|
||||
_saveSignedPreKey(id, record) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.saveSignedPreKey(id, SignedPreKeyRecord._fromNativeHandle(record));
|
||||
});
|
||||
}
|
||||
_getSignedPreKey(id) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const pk = yield this.getSignedPreKey(id);
|
||||
return pk._nativeHandle;
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.SignedPreKeyStore = SignedPreKeyStore;
|
||||
class SenderKeyStore {
|
||||
_saveSenderKey(name, record) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return this.saveSenderKey(SenderKeyName._fromNativeHandle(name), SenderKeyRecord._fromNativeHandle(record));
|
||||
});
|
||||
}
|
||||
_getSenderKey(name) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const skr = yield this.getSenderKey(SenderKeyName._fromNativeHandle(name));
|
||||
if (skr == null) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return skr._nativeHandle;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.SenderKeyStore = SenderKeyStore;
|
||||
function groupEncrypt(name, store, message) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return SC.GroupCipher_Encrypt(name, store, message);
|
||||
});
|
||||
}
|
||||
exports.groupEncrypt = groupEncrypt;
|
||||
function groupDecrypt(name, store, message) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return SC.GroupCipher_Decrypt(name, store, message);
|
||||
});
|
||||
}
|
||||
exports.groupDecrypt = groupDecrypt;
|
||||
class SealedSenderDecryptionResult {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new SealedSenderDecryptionResult(nativeHandle);
|
||||
}
|
||||
message() {
|
||||
return SC.SealedSenderDecryptionResult_Message(this);
|
||||
}
|
||||
senderE164() {
|
||||
return SC.SealedSenderDecryptionResult_GetSenderE164(this);
|
||||
}
|
||||
senderUuid() {
|
||||
return SC.SealedSenderDecryptionResult_GetSenderUuid(this);
|
||||
}
|
||||
deviceId() {
|
||||
return SC.SealedSenderDecryptionResult_GetDeviceId(this);
|
||||
}
|
||||
}
|
||||
exports.SealedSenderDecryptionResult = SealedSenderDecryptionResult;
|
||||
class CiphertextMessage {
|
||||
constructor(nativeHandle) {
|
||||
this._nativeHandle = nativeHandle;
|
||||
}
|
||||
static _fromNativeHandle(nativeHandle) {
|
||||
return new CiphertextMessage(nativeHandle);
|
||||
}
|
||||
serialize() {
|
||||
return SC.CiphertextMessage_Serialize(this);
|
||||
}
|
||||
type() {
|
||||
return SC.CiphertextMessage_Type(this);
|
||||
}
|
||||
}
|
||||
exports.CiphertextMessage = CiphertextMessage;
|
||||
function processPreKeyBundle(bundle, address, sessionStore, identityStore) {
|
||||
return SC.SessionBuilder_ProcessPreKeyBundle(bundle, address, sessionStore, identityStore);
|
||||
}
|
||||
exports.processPreKeyBundle = processPreKeyBundle;
|
||||
function signalEncrypt(message, address, sessionStore, identityStore) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return CiphertextMessage._fromNativeHandle(yield SC.SessionCipher_EncryptMessage(message, address, sessionStore, identityStore));
|
||||
});
|
||||
}
|
||||
exports.signalEncrypt = signalEncrypt;
|
||||
function signalDecrypt(message, address, sessionStore, identityStore) {
|
||||
return SC.SessionCipher_DecryptSignalMessage(message, address, sessionStore, identityStore);
|
||||
}
|
||||
exports.signalDecrypt = signalDecrypt;
|
||||
function signalDecryptPreKey(message, address, sessionStore, identityStore, prekeyStore, signedPrekeyStore) {
|
||||
return SC.SessionCipher_DecryptPreKeySignalMessage(message, address, sessionStore, identityStore, prekeyStore, signedPrekeyStore);
|
||||
}
|
||||
exports.signalDecryptPreKey = signalDecryptPreKey;
|
||||
function sealedSenderEncryptMessage(message, address, senderCert, sessionStore, identityStore) {
|
||||
return SC.SealedSender_EncryptMessage(message, address, senderCert, sessionStore, identityStore);
|
||||
}
|
||||
exports.sealedSenderEncryptMessage = sealedSenderEncryptMessage;
|
||||
function sealedSenderDecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const ssdr = yield SC.SealedSender_DecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore);
|
||||
return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
|
||||
});
|
||||
}
|
||||
exports.sealedSenderDecryptMessage = sealedSenderDecryptMessage;
|
||||
function sealedSenderDecryptToUsmc(message, identityStore) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const usmc = yield SC.SealedSender_DecryptToUsmc(message, identityStore);
|
||||
return UnidentifiedSenderMessageContent._fromNativeHandle(usmc);
|
||||
});
|
||||
}
|
||||
exports.sealedSenderDecryptToUsmc = sealedSenderDecryptToUsmc;
|
||||
//# sourceMappingURL=index.js.map
|
||||
189
dist/libsignal_client.d.ts
vendored
189
dist/libsignal_client.d.ts
vendored
@ -1,189 +0,0 @@
|
||||
//
|
||||
// Copyright 2020-2021 Signal Messenger, LLC.
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
//
|
||||
|
||||
// WARNING: this file was automatically generated
|
||||
|
||||
export abstract class IdentityKeyStore {
|
||||
_getIdentityKey(): Promise<PrivateKey>;
|
||||
_getLocalRegistrationId(): Promise<number>;
|
||||
_saveIdentity(name: ProtocolAddress, key: PublicKey): Promise<boolean>;
|
||||
_isTrustedIdentity(name: ProtocolAddress, key: PublicKey, sending: boolean): Promise<boolean>;
|
||||
_getIdentity(name: ProtocolAddress): Promise<PublicKey | null>;
|
||||
}
|
||||
|
||||
export abstract class SessionStore {
|
||||
_saveSession(addr: ProtocolAddress, record: SessionRecord): Promise<void>;
|
||||
_getSession(addr: ProtocolAddress): Promise<SessionRecord | null>;
|
||||
}
|
||||
|
||||
export abstract class PreKeyStore {
|
||||
_savePreKey(preKeyId: number, record: PreKeyRecord): Promise<void>;
|
||||
_getPreKey(preKeyId: number): Promise<PreKeyRecord>;
|
||||
_removePreKey(preKeyId: number): Promise<void>;
|
||||
}
|
||||
|
||||
export abstract class SignedPreKeyStore {
|
||||
_saveSignedPreKey(signedPreKeyId: number, record: SignedPreKeyRecord): Promise<void>;
|
||||
_getSignedPreKey(signedPreKeyId: number): Promise<SignedPreKeyRecord>;
|
||||
}
|
||||
|
||||
export abstract class SenderKeyStore {
|
||||
_saveSenderKey(name: SenderKeyName, record: SenderKeyRecord): Promise<void>;
|
||||
_getSenderKey(name: SenderKeyName): Promise<SenderKeyRecord | null>;
|
||||
}
|
||||
|
||||
interface Wrapper<T> {
|
||||
readonly _nativeHandle: T
|
||||
}
|
||||
|
||||
|
||||
export const enum LogLevel { Error, Warn, Info, Debug, Trace }
|
||||
export function Aes256GcmSiv_Decrypt(aesGcmSiv: Wrapper<Aes256GcmSiv>, ctext: Buffer, nonce: Buffer, associatedData: Buffer): Buffer;
|
||||
export function Aes256GcmSiv_Encrypt(aesGcmSiv: Wrapper<Aes256GcmSiv>, ptext: Buffer, nonce: Buffer, associatedData: Buffer): Buffer;
|
||||
export function Aes256GcmSiv_New(key: Buffer): Aes256GcmSiv;
|
||||
export function CiphertextMessage_Serialize(obj: Wrapper<CiphertextMessage>): Buffer;
|
||||
export function CiphertextMessage_Type(msg: Wrapper<CiphertextMessage>): number;
|
||||
export function Fingerprint_DisplayString(obj: Wrapper<Fingerprint>): string;
|
||||
export function Fingerprint_New(iterations: number, version: number, localIdentifier: Buffer, localKey: Wrapper<PublicKey>, remoteIdentifier: Buffer, remoteKey: Wrapper<PublicKey>): Fingerprint;
|
||||
export function Fingerprint_ScannableEncoding(obj: Wrapper<Fingerprint>): Buffer;
|
||||
export function GroupCipher_Decrypt(name: Wrapper<SenderKeyName>, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export function GroupCipher_Encrypt(name: Wrapper<SenderKeyName>, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export function HKDF_DeriveSecrets(outputLength: number, version: number, ikm: Buffer, label: Buffer, salt: Buffer | null): Buffer;
|
||||
export function IdentityKeyPair_Serialize(publicKey: Wrapper<PublicKey>, privateKey: Wrapper<PrivateKey>): Buffer;
|
||||
export function PreKeyBundle_GetDeviceId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetIdentityKey(p: Wrapper<PreKeyBundle>): PublicKey;
|
||||
export function PreKeyBundle_GetPreKeyId(obj: Wrapper<PreKeyBundle>): number | null;
|
||||
export function PreKeyBundle_GetPreKeyPublic(obj: Wrapper<PreKeyBundle>): PublicKey | null;
|
||||
export function PreKeyBundle_GetRegistrationId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetSignedPreKeyId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetSignedPreKeyPublic(obj: Wrapper<PreKeyBundle>): PublicKey;
|
||||
export function PreKeyBundle_GetSignedPreKeySignature(obj: Wrapper<PreKeyBundle>): Buffer;
|
||||
export function PreKeyBundle_New(registrationId: number, deviceId: number, prekeyId: number | null, prekey: Wrapper<PublicKey> | null, signedPrekeyId: number, signedPrekey: Wrapper<PublicKey>, signedPrekeySignature: Buffer, identityKey: Wrapper<PublicKey>): PreKeyBundle;
|
||||
export function PreKeyRecord_Deserialize(buffer: Buffer): PreKeyRecord;
|
||||
export function PreKeyRecord_GetId(obj: Wrapper<PreKeyRecord>): number;
|
||||
export function PreKeyRecord_GetPrivateKey(obj: Wrapper<PreKeyRecord>): PrivateKey;
|
||||
export function PreKeyRecord_GetPublicKey(obj: Wrapper<PreKeyRecord>): PublicKey;
|
||||
export function PreKeyRecord_New(id: number, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>): PreKeyRecord;
|
||||
export function PreKeyRecord_Serialize(obj: Wrapper<PreKeyRecord>): Buffer;
|
||||
export function PreKeySignalMessage_Deserialize(buffer: Buffer): PreKeySignalMessage;
|
||||
export function PreKeySignalMessage_GetPreKeyId(obj: Wrapper<PreKeySignalMessage>): number | null;
|
||||
export function PreKeySignalMessage_GetRegistrationId(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_GetSignedPreKeyId(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_GetVersion(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_New(messageVersion: number, registrationId: number, preKeyId: number | null, signedPreKeyId: number, baseKey: Wrapper<PublicKey>, identityKey: Wrapper<PublicKey>, signalMessage: Wrapper<SignalMessage>): PreKeySignalMessage;
|
||||
export function PreKeySignalMessage_Serialize(obj: Wrapper<PreKeySignalMessage>): Buffer;
|
||||
export function PrivateKey_Agree(privateKey: Wrapper<PrivateKey>, publicKey: Wrapper<PublicKey>): Buffer;
|
||||
export function PrivateKey_Deserialize(buffer: Buffer): PrivateKey;
|
||||
export function PrivateKey_Generate(): PrivateKey;
|
||||
export function PrivateKey_GetPublicKey(k: Wrapper<PrivateKey>): PublicKey;
|
||||
export function PrivateKey_Serialize(obj: Wrapper<PrivateKey>): Buffer;
|
||||
export function PrivateKey_Sign(key: Wrapper<PrivateKey>, message: Buffer): Buffer;
|
||||
export function ProtocolAddress_DeviceId(obj: Wrapper<ProtocolAddress>): number;
|
||||
export function ProtocolAddress_Name(obj: Wrapper<ProtocolAddress>): string;
|
||||
export function ProtocolAddress_New(name: string, deviceId: number): ProtocolAddress;
|
||||
export function PublicKey_Compare(key1: Wrapper<PublicKey>, key2: Wrapper<PublicKey>): number;
|
||||
export function PublicKey_Deserialize(buffer: Buffer): PublicKey;
|
||||
export function PublicKey_GetPublicKeyBytes(obj: Wrapper<PublicKey>): Buffer;
|
||||
export function PublicKey_Serialize(obj: Wrapper<PublicKey>): Buffer;
|
||||
export function PublicKey_Verify(key: Wrapper<PublicKey>, message: Buffer, signature: Buffer): boolean;
|
||||
export function ScannableFingerprint_Compare(fprint1: Buffer, fprint2: Buffer): boolean;
|
||||
export function SealedSenderDecryptionResult_GetDeviceId(obj: Wrapper<SealedSenderDecryptionResult>): number;
|
||||
export function SealedSenderDecryptionResult_GetSenderE164(obj: Wrapper<SealedSenderDecryptionResult>): string | null;
|
||||
export function SealedSenderDecryptionResult_GetSenderUuid(obj: Wrapper<SealedSenderDecryptionResult>): string;
|
||||
export function SealedSenderDecryptionResult_Message(obj: Wrapper<SealedSenderDecryptionResult>): Buffer;
|
||||
export function SealedSender_DecryptMessage(message: Buffer, trustRoot: Wrapper<PublicKey>, timestamp: number, localE164: string|null, localUuid: string, localDeviceId: number, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<SealedSenderDecryptionResult>;
|
||||
export function SealedSender_DecryptToUsmc(message: Buffer, identityStore: IdentityKeyStore): Promise<UnidentifiedSenderMessageContent>;
|
||||
export function SealedSender_EncryptMessage(message: Buffer, address: Wrapper<ProtocolAddress>, senderCert: Wrapper<SenderCertificate>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export function SenderCertificate_Deserialize(buffer: Buffer): SenderCertificate;
|
||||
export function SenderCertificate_GetCertificate(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_GetDeviceId(obj: Wrapper<SenderCertificate>): number;
|
||||
export function SenderCertificate_GetExpiration(obj: Wrapper<SenderCertificate>): number;
|
||||
export function SenderCertificate_GetKey(obj: Wrapper<SenderCertificate>): PublicKey;
|
||||
export function SenderCertificate_GetSenderE164(obj: Wrapper<SenderCertificate>): string | null;
|
||||
export function SenderCertificate_GetSenderUuid(obj: Wrapper<SenderCertificate>): string;
|
||||
export function SenderCertificate_GetSerialized(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_GetServerCertificate(cert: Wrapper<SenderCertificate>): ServerCertificate;
|
||||
export function SenderCertificate_GetSignature(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_New(senderUuid: string, senderE164: string | null, senderDeviceId: number, senderKey: Wrapper<PublicKey>, expiration: number, signerCert: Wrapper<ServerCertificate>, signerKey: Wrapper<PrivateKey>): SenderCertificate;
|
||||
export function SenderCertificate_Validate(cert: Wrapper<SenderCertificate>, key: Wrapper<PublicKey>, time: number): boolean;
|
||||
export function SenderKeyDistributionMessage_Create(name: Wrapper<SenderKeyName>, store: SenderKeyStore): Promise<SenderKeyDistributionMessage>;
|
||||
export function SenderKeyDistributionMessage_Deserialize(buffer: Buffer): SenderKeyDistributionMessage;
|
||||
export function SenderKeyDistributionMessage_GetChainKey(obj: Wrapper<SenderKeyDistributionMessage>): Buffer;
|
||||
export function SenderKeyDistributionMessage_GetId(obj: Wrapper<SenderKeyDistributionMessage>): number;
|
||||
export function SenderKeyDistributionMessage_GetIteration(obj: Wrapper<SenderKeyDistributionMessage>): number;
|
||||
export function SenderKeyDistributionMessage_New(keyId: number, iteration: number, chainkey: Buffer, pk: Wrapper<PublicKey>): SenderKeyDistributionMessage;
|
||||
export function SenderKeyDistributionMessage_Process(name: Wrapper<SenderKeyName>, msg: Wrapper<SenderKeyDistributionMessage>, store: SenderKeyStore): Promise<void>;
|
||||
export function SenderKeyDistributionMessage_Serialize(obj: Wrapper<SenderKeyDistributionMessage>): Buffer;
|
||||
export function SenderKeyMessage_Deserialize(buffer: Buffer): SenderKeyMessage;
|
||||
export function SenderKeyMessage_GetCipherText(obj: Wrapper<SenderKeyMessage>): Buffer;
|
||||
export function SenderKeyMessage_GetIteration(obj: Wrapper<SenderKeyMessage>): number;
|
||||
export function SenderKeyMessage_GetKeyId(obj: Wrapper<SenderKeyMessage>): number;
|
||||
export function SenderKeyMessage_New(keyId: number, iteration: number, ciphertext: Buffer, pk: Wrapper<PrivateKey>): SenderKeyMessage;
|
||||
export function SenderKeyMessage_Serialize(obj: Wrapper<SenderKeyMessage>): Buffer;
|
||||
export function SenderKeyMessage_VerifySignature(skm: Wrapper<SenderKeyMessage>, pubkey: Wrapper<PublicKey>): boolean;
|
||||
export function SenderKeyName_GetGroupId(obj: Wrapper<SenderKeyName>): string;
|
||||
export function SenderKeyName_GetSenderDeviceId(skn: Wrapper<SenderKeyName>): number;
|
||||
export function SenderKeyName_GetSenderName(obj: Wrapper<SenderKeyName>): string;
|
||||
export function SenderKeyName_New(groupId: string, senderName: string, senderDeviceId: number): SenderKeyName;
|
||||
export function SenderKeyRecord_Deserialize(buffer: Buffer): SenderKeyRecord;
|
||||
export function SenderKeyRecord_New(): SenderKeyRecord;
|
||||
export function SenderKeyRecord_Serialize(obj: Wrapper<SenderKeyRecord>): Buffer;
|
||||
export function ServerCertificate_Deserialize(buffer: Buffer): ServerCertificate;
|
||||
export function ServerCertificate_GetCertificate(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_GetKey(obj: Wrapper<ServerCertificate>): PublicKey;
|
||||
export function ServerCertificate_GetKeyId(obj: Wrapper<ServerCertificate>): number;
|
||||
export function ServerCertificate_GetSerialized(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_GetSignature(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_New(keyId: number, serverKey: Wrapper<PublicKey>, trustRoot: Wrapper<PrivateKey>): ServerCertificate;
|
||||
export function SessionBuilder_ProcessPreKeyBundle(bundle: Wrapper<PreKeyBundle>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<void>;
|
||||
export function SessionCipher_DecryptPreKeySignalMessage(message: Wrapper<PreKeySignalMessage>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<Buffer>;
|
||||
export function SessionCipher_DecryptSignalMessage(message: Wrapper<SignalMessage>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export function SessionCipher_EncryptMessage(message: Buffer, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<CiphertextMessage>;
|
||||
export function SessionRecord_ArchiveCurrentState(sessionRecord: Wrapper<SessionRecord>): void;
|
||||
export function SessionRecord_Deserialize(buffer: Buffer): SessionRecord;
|
||||
export function SessionRecord_GetLocalRegistrationId(obj: Wrapper<SessionRecord>): number;
|
||||
export function SessionRecord_GetRemoteRegistrationId(obj: Wrapper<SessionRecord>): number;
|
||||
export function SessionRecord_Serialize(obj: Wrapper<SessionRecord>): Buffer;
|
||||
export function SignalMessage_Deserialize(buffer: Buffer): SignalMessage;
|
||||
export function SignalMessage_GetBody(obj: Wrapper<SignalMessage>): Buffer;
|
||||
export function SignalMessage_GetCounter(obj: Wrapper<SignalMessage>): number;
|
||||
export function SignalMessage_GetMessageVersion(obj: Wrapper<SignalMessage>): number;
|
||||
export function SignalMessage_GetSerialized(obj: Wrapper<SignalMessage>): Buffer;
|
||||
export function SignalMessage_New(messageVersion: number, macKey: Buffer, senderRatchetKey: Wrapper<PublicKey>, counter: number, previousCounter: number, ciphertext: Buffer, senderIdentityKey: Wrapper<PublicKey>, receiverIdentityKey: Wrapper<PublicKey>): SignalMessage;
|
||||
export function SignalMessage_VerifyMac(msg: Wrapper<SignalMessage>, senderIdentityKey: Wrapper<PublicKey>, receiverIdentityKey: Wrapper<PublicKey>, macKey: Buffer): boolean;
|
||||
export function SignedPreKeyRecord_Deserialize(buffer: Buffer): SignedPreKeyRecord;
|
||||
export function SignedPreKeyRecord_GetId(obj: Wrapper<SignedPreKeyRecord>): number;
|
||||
export function SignedPreKeyRecord_GetPrivateKey(obj: Wrapper<SignedPreKeyRecord>): PrivateKey;
|
||||
export function SignedPreKeyRecord_GetPublicKey(obj: Wrapper<SignedPreKeyRecord>): PublicKey;
|
||||
export function SignedPreKeyRecord_GetSignature(obj: Wrapper<SignedPreKeyRecord>): Buffer;
|
||||
export function SignedPreKeyRecord_GetTimestamp(obj: Wrapper<SignedPreKeyRecord>): number;
|
||||
export function SignedPreKeyRecord_New(id: number, timestamp: number, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>, signature: Buffer): SignedPreKeyRecord;
|
||||
export function SignedPreKeyRecord_Serialize(obj: Wrapper<SignedPreKeyRecord>): Buffer;
|
||||
export function UnidentifiedSenderMessageContent_Deserialize(buffer: Buffer): UnidentifiedSenderMessageContent;
|
||||
export function UnidentifiedSenderMessageContent_GetContents(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
||||
export function UnidentifiedSenderMessageContent_GetMsgType(m: Wrapper<UnidentifiedSenderMessageContent>): number;
|
||||
export function UnidentifiedSenderMessageContent_GetSenderCert(m: Wrapper<UnidentifiedSenderMessageContent>): SenderCertificate;
|
||||
export function UnidentifiedSenderMessageContent_Serialize(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
||||
export function initLogger(maxLevel: LogLevel, callback: (level: LogLevel, target: string, file: string | null, line: number | null, message: string) => void): void
|
||||
interface Aes256GcmSiv { readonly __type: unique symbol; }
|
||||
interface CiphertextMessage { readonly __type: unique symbol; }
|
||||
interface Fingerprint { readonly __type: unique symbol; }
|
||||
interface PreKeyBundle { readonly __type: unique symbol; }
|
||||
interface PreKeyRecord { readonly __type: unique symbol; }
|
||||
interface PreKeySignalMessage { readonly __type: unique symbol; }
|
||||
interface PrivateKey { readonly __type: unique symbol; }
|
||||
interface ProtocolAddress { readonly __type: unique symbol; }
|
||||
interface PublicKey { readonly __type: unique symbol; }
|
||||
interface SealedSenderDecryptionResult { readonly __type: unique symbol; }
|
||||
interface SenderCertificate { readonly __type: unique symbol; }
|
||||
interface SenderKeyDistributionMessage { readonly __type: unique symbol; }
|
||||
interface SenderKeyMessage { readonly __type: unique symbol; }
|
||||
interface SenderKeyName { readonly __type: unique symbol; }
|
||||
interface SenderKeyRecord { readonly __type: unique symbol; }
|
||||
interface ServerCertificate { readonly __type: unique symbol; }
|
||||
interface SessionRecord { readonly __type: unique symbol; }
|
||||
interface SignalMessage { readonly __type: unique symbol; }
|
||||
interface SignedPreKeyRecord { readonly __type: unique symbol; }
|
||||
interface UnidentifiedSenderMessageContent { readonly __type: unique symbol; }
|
||||
189
libsignal_client.d.ts
vendored
189
libsignal_client.d.ts
vendored
@ -1,189 +0,0 @@
|
||||
//
|
||||
// Copyright 2020-2021 Signal Messenger, LLC.
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
//
|
||||
|
||||
// WARNING: this file was automatically generated
|
||||
|
||||
export abstract class IdentityKeyStore {
|
||||
_getIdentityKey(): Promise<PrivateKey>;
|
||||
_getLocalRegistrationId(): Promise<number>;
|
||||
_saveIdentity(name: ProtocolAddress, key: PublicKey): Promise<boolean>;
|
||||
_isTrustedIdentity(name: ProtocolAddress, key: PublicKey, sending: boolean): Promise<boolean>;
|
||||
_getIdentity(name: ProtocolAddress): Promise<PublicKey | null>;
|
||||
}
|
||||
|
||||
export abstract class SessionStore {
|
||||
_saveSession(addr: ProtocolAddress, record: SessionRecord): Promise<void>;
|
||||
_getSession(addr: ProtocolAddress): Promise<SessionRecord | null>;
|
||||
}
|
||||
|
||||
export abstract class PreKeyStore {
|
||||
_savePreKey(preKeyId: number, record: PreKeyRecord): Promise<void>;
|
||||
_getPreKey(preKeyId: number): Promise<PreKeyRecord>;
|
||||
_removePreKey(preKeyId: number): Promise<void>;
|
||||
}
|
||||
|
||||
export abstract class SignedPreKeyStore {
|
||||
_saveSignedPreKey(signedPreKeyId: number, record: SignedPreKeyRecord): Promise<void>;
|
||||
_getSignedPreKey(signedPreKeyId: number): Promise<SignedPreKeyRecord>;
|
||||
}
|
||||
|
||||
export abstract class SenderKeyStore {
|
||||
_saveSenderKey(name: SenderKeyName, record: SenderKeyRecord): Promise<void>;
|
||||
_getSenderKey(name: SenderKeyName): Promise<SenderKeyRecord | null>;
|
||||
}
|
||||
|
||||
interface Wrapper<T> {
|
||||
readonly _nativeHandle: T
|
||||
}
|
||||
|
||||
|
||||
export const enum LogLevel { Error, Warn, Info, Debug, Trace }
|
||||
export function Aes256GcmSiv_Decrypt(aesGcmSiv: Wrapper<Aes256GcmSiv>, ctext: Buffer, nonce: Buffer, associatedData: Buffer): Buffer;
|
||||
export function Aes256GcmSiv_Encrypt(aesGcmSiv: Wrapper<Aes256GcmSiv>, ptext: Buffer, nonce: Buffer, associatedData: Buffer): Buffer;
|
||||
export function Aes256GcmSiv_New(key: Buffer): Aes256GcmSiv;
|
||||
export function CiphertextMessage_Serialize(obj: Wrapper<CiphertextMessage>): Buffer;
|
||||
export function CiphertextMessage_Type(msg: Wrapper<CiphertextMessage>): number;
|
||||
export function Fingerprint_DisplayString(obj: Wrapper<Fingerprint>): string;
|
||||
export function Fingerprint_New(iterations: number, version: number, localIdentifier: Buffer, localKey: Wrapper<PublicKey>, remoteIdentifier: Buffer, remoteKey: Wrapper<PublicKey>): Fingerprint;
|
||||
export function Fingerprint_ScannableEncoding(obj: Wrapper<Fingerprint>): Buffer;
|
||||
export function GroupCipher_Decrypt(name: Wrapper<SenderKeyName>, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export function GroupCipher_Encrypt(name: Wrapper<SenderKeyName>, store: SenderKeyStore, message: Buffer): Promise<Buffer>;
|
||||
export function HKDF_DeriveSecrets(outputLength: number, version: number, ikm: Buffer, label: Buffer, salt: Buffer | null): Buffer;
|
||||
export function IdentityKeyPair_Serialize(publicKey: Wrapper<PublicKey>, privateKey: Wrapper<PrivateKey>): Buffer;
|
||||
export function PreKeyBundle_GetDeviceId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetIdentityKey(p: Wrapper<PreKeyBundle>): PublicKey;
|
||||
export function PreKeyBundle_GetPreKeyId(obj: Wrapper<PreKeyBundle>): number | null;
|
||||
export function PreKeyBundle_GetPreKeyPublic(obj: Wrapper<PreKeyBundle>): PublicKey | null;
|
||||
export function PreKeyBundle_GetRegistrationId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetSignedPreKeyId(obj: Wrapper<PreKeyBundle>): number;
|
||||
export function PreKeyBundle_GetSignedPreKeyPublic(obj: Wrapper<PreKeyBundle>): PublicKey;
|
||||
export function PreKeyBundle_GetSignedPreKeySignature(obj: Wrapper<PreKeyBundle>): Buffer;
|
||||
export function PreKeyBundle_New(registrationId: number, deviceId: number, prekeyId: number | null, prekey: Wrapper<PublicKey> | null, signedPrekeyId: number, signedPrekey: Wrapper<PublicKey>, signedPrekeySignature: Buffer, identityKey: Wrapper<PublicKey>): PreKeyBundle;
|
||||
export function PreKeyRecord_Deserialize(buffer: Buffer): PreKeyRecord;
|
||||
export function PreKeyRecord_GetId(obj: Wrapper<PreKeyRecord>): number;
|
||||
export function PreKeyRecord_GetPrivateKey(obj: Wrapper<PreKeyRecord>): PrivateKey;
|
||||
export function PreKeyRecord_GetPublicKey(obj: Wrapper<PreKeyRecord>): PublicKey;
|
||||
export function PreKeyRecord_New(id: number, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>): PreKeyRecord;
|
||||
export function PreKeyRecord_Serialize(obj: Wrapper<PreKeyRecord>): Buffer;
|
||||
export function PreKeySignalMessage_Deserialize(buffer: Buffer): PreKeySignalMessage;
|
||||
export function PreKeySignalMessage_GetPreKeyId(obj: Wrapper<PreKeySignalMessage>): number | null;
|
||||
export function PreKeySignalMessage_GetRegistrationId(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_GetSignedPreKeyId(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_GetVersion(obj: Wrapper<PreKeySignalMessage>): number;
|
||||
export function PreKeySignalMessage_New(messageVersion: number, registrationId: number, preKeyId: number | null, signedPreKeyId: number, baseKey: Wrapper<PublicKey>, identityKey: Wrapper<PublicKey>, signalMessage: Wrapper<SignalMessage>): PreKeySignalMessage;
|
||||
export function PreKeySignalMessage_Serialize(obj: Wrapper<PreKeySignalMessage>): Buffer;
|
||||
export function PrivateKey_Agree(privateKey: Wrapper<PrivateKey>, publicKey: Wrapper<PublicKey>): Buffer;
|
||||
export function PrivateKey_Deserialize(buffer: Buffer): PrivateKey;
|
||||
export function PrivateKey_Generate(): PrivateKey;
|
||||
export function PrivateKey_GetPublicKey(k: Wrapper<PrivateKey>): PublicKey;
|
||||
export function PrivateKey_Serialize(obj: Wrapper<PrivateKey>): Buffer;
|
||||
export function PrivateKey_Sign(key: Wrapper<PrivateKey>, message: Buffer): Buffer;
|
||||
export function ProtocolAddress_DeviceId(obj: Wrapper<ProtocolAddress>): number;
|
||||
export function ProtocolAddress_Name(obj: Wrapper<ProtocolAddress>): string;
|
||||
export function ProtocolAddress_New(name: string, deviceId: number): ProtocolAddress;
|
||||
export function PublicKey_Compare(key1: Wrapper<PublicKey>, key2: Wrapper<PublicKey>): number;
|
||||
export function PublicKey_Deserialize(buffer: Buffer): PublicKey;
|
||||
export function PublicKey_GetPublicKeyBytes(obj: Wrapper<PublicKey>): Buffer;
|
||||
export function PublicKey_Serialize(obj: Wrapper<PublicKey>): Buffer;
|
||||
export function PublicKey_Verify(key: Wrapper<PublicKey>, message: Buffer, signature: Buffer): boolean;
|
||||
export function ScannableFingerprint_Compare(fprint1: Buffer, fprint2: Buffer): boolean;
|
||||
export function SealedSenderDecryptionResult_GetDeviceId(obj: Wrapper<SealedSenderDecryptionResult>): number;
|
||||
export function SealedSenderDecryptionResult_GetSenderE164(obj: Wrapper<SealedSenderDecryptionResult>): string | null;
|
||||
export function SealedSenderDecryptionResult_GetSenderUuid(obj: Wrapper<SealedSenderDecryptionResult>): string;
|
||||
export function SealedSenderDecryptionResult_Message(obj: Wrapper<SealedSenderDecryptionResult>): Buffer;
|
||||
export function SealedSender_DecryptMessage(message: Buffer, trustRoot: Wrapper<PublicKey>, timestamp: number, localE164: string|null, localUuid: string, localDeviceId: number, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<SealedSenderDecryptionResult>;
|
||||
export function SealedSender_DecryptToUsmc(message: Buffer, identityStore: IdentityKeyStore): Promise<UnidentifiedSenderMessageContent>;
|
||||
export function SealedSender_EncryptMessage(message: Buffer, address: Wrapper<ProtocolAddress>, senderCert: Wrapper<SenderCertificate>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export function SenderCertificate_Deserialize(buffer: Buffer): SenderCertificate;
|
||||
export function SenderCertificate_GetCertificate(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_GetDeviceId(obj: Wrapper<SenderCertificate>): number;
|
||||
export function SenderCertificate_GetExpiration(obj: Wrapper<SenderCertificate>): number;
|
||||
export function SenderCertificate_GetKey(obj: Wrapper<SenderCertificate>): PublicKey;
|
||||
export function SenderCertificate_GetSenderE164(obj: Wrapper<SenderCertificate>): string | null;
|
||||
export function SenderCertificate_GetSenderUuid(obj: Wrapper<SenderCertificate>): string;
|
||||
export function SenderCertificate_GetSerialized(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_GetServerCertificate(cert: Wrapper<SenderCertificate>): ServerCertificate;
|
||||
export function SenderCertificate_GetSignature(obj: Wrapper<SenderCertificate>): Buffer;
|
||||
export function SenderCertificate_New(senderUuid: string, senderE164: string | null, senderDeviceId: number, senderKey: Wrapper<PublicKey>, expiration: number, signerCert: Wrapper<ServerCertificate>, signerKey: Wrapper<PrivateKey>): SenderCertificate;
|
||||
export function SenderCertificate_Validate(cert: Wrapper<SenderCertificate>, key: Wrapper<PublicKey>, time: number): boolean;
|
||||
export function SenderKeyDistributionMessage_Create(name: Wrapper<SenderKeyName>, store: SenderKeyStore): Promise<SenderKeyDistributionMessage>;
|
||||
export function SenderKeyDistributionMessage_Deserialize(buffer: Buffer): SenderKeyDistributionMessage;
|
||||
export function SenderKeyDistributionMessage_GetChainKey(obj: Wrapper<SenderKeyDistributionMessage>): Buffer;
|
||||
export function SenderKeyDistributionMessage_GetId(obj: Wrapper<SenderKeyDistributionMessage>): number;
|
||||
export function SenderKeyDistributionMessage_GetIteration(obj: Wrapper<SenderKeyDistributionMessage>): number;
|
||||
export function SenderKeyDistributionMessage_New(keyId: number, iteration: number, chainkey: Buffer, pk: Wrapper<PublicKey>): SenderKeyDistributionMessage;
|
||||
export function SenderKeyDistributionMessage_Process(name: Wrapper<SenderKeyName>, msg: Wrapper<SenderKeyDistributionMessage>, store: SenderKeyStore): Promise<void>;
|
||||
export function SenderKeyDistributionMessage_Serialize(obj: Wrapper<SenderKeyDistributionMessage>): Buffer;
|
||||
export function SenderKeyMessage_Deserialize(buffer: Buffer): SenderKeyMessage;
|
||||
export function SenderKeyMessage_GetCipherText(obj: Wrapper<SenderKeyMessage>): Buffer;
|
||||
export function SenderKeyMessage_GetIteration(obj: Wrapper<SenderKeyMessage>): number;
|
||||
export function SenderKeyMessage_GetKeyId(obj: Wrapper<SenderKeyMessage>): number;
|
||||
export function SenderKeyMessage_New(keyId: number, iteration: number, ciphertext: Buffer, pk: Wrapper<PrivateKey>): SenderKeyMessage;
|
||||
export function SenderKeyMessage_Serialize(obj: Wrapper<SenderKeyMessage>): Buffer;
|
||||
export function SenderKeyMessage_VerifySignature(skm: Wrapper<SenderKeyMessage>, pubkey: Wrapper<PublicKey>): boolean;
|
||||
export function SenderKeyName_GetGroupId(obj: Wrapper<SenderKeyName>): string;
|
||||
export function SenderKeyName_GetSenderDeviceId(skn: Wrapper<SenderKeyName>): number;
|
||||
export function SenderKeyName_GetSenderName(obj: Wrapper<SenderKeyName>): string;
|
||||
export function SenderKeyName_New(groupId: string, senderName: string, senderDeviceId: number): SenderKeyName;
|
||||
export function SenderKeyRecord_Deserialize(buffer: Buffer): SenderKeyRecord;
|
||||
export function SenderKeyRecord_New(): SenderKeyRecord;
|
||||
export function SenderKeyRecord_Serialize(obj: Wrapper<SenderKeyRecord>): Buffer;
|
||||
export function ServerCertificate_Deserialize(buffer: Buffer): ServerCertificate;
|
||||
export function ServerCertificate_GetCertificate(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_GetKey(obj: Wrapper<ServerCertificate>): PublicKey;
|
||||
export function ServerCertificate_GetKeyId(obj: Wrapper<ServerCertificate>): number;
|
||||
export function ServerCertificate_GetSerialized(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_GetSignature(obj: Wrapper<ServerCertificate>): Buffer;
|
||||
export function ServerCertificate_New(keyId: number, serverKey: Wrapper<PublicKey>, trustRoot: Wrapper<PrivateKey>): ServerCertificate;
|
||||
export function SessionBuilder_ProcessPreKeyBundle(bundle: Wrapper<PreKeyBundle>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<void>;
|
||||
export function SessionCipher_DecryptPreKeySignalMessage(message: Wrapper<PreKeySignalMessage>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<Buffer>;
|
||||
export function SessionCipher_DecryptSignalMessage(message: Wrapper<SignalMessage>, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
|
||||
export function SessionCipher_EncryptMessage(message: Buffer, address: Wrapper<ProtocolAddress>, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<CiphertextMessage>;
|
||||
export function SessionRecord_ArchiveCurrentState(sessionRecord: Wrapper<SessionRecord>): void;
|
||||
export function SessionRecord_Deserialize(buffer: Buffer): SessionRecord;
|
||||
export function SessionRecord_GetLocalRegistrationId(obj: Wrapper<SessionRecord>): number;
|
||||
export function SessionRecord_GetRemoteRegistrationId(obj: Wrapper<SessionRecord>): number;
|
||||
export function SessionRecord_Serialize(obj: Wrapper<SessionRecord>): Buffer;
|
||||
export function SignalMessage_Deserialize(buffer: Buffer): SignalMessage;
|
||||
export function SignalMessage_GetBody(obj: Wrapper<SignalMessage>): Buffer;
|
||||
export function SignalMessage_GetCounter(obj: Wrapper<SignalMessage>): number;
|
||||
export function SignalMessage_GetMessageVersion(obj: Wrapper<SignalMessage>): number;
|
||||
export function SignalMessage_GetSerialized(obj: Wrapper<SignalMessage>): Buffer;
|
||||
export function SignalMessage_New(messageVersion: number, macKey: Buffer, senderRatchetKey: Wrapper<PublicKey>, counter: number, previousCounter: number, ciphertext: Buffer, senderIdentityKey: Wrapper<PublicKey>, receiverIdentityKey: Wrapper<PublicKey>): SignalMessage;
|
||||
export function SignalMessage_VerifyMac(msg: Wrapper<SignalMessage>, senderIdentityKey: Wrapper<PublicKey>, receiverIdentityKey: Wrapper<PublicKey>, macKey: Buffer): boolean;
|
||||
export function SignedPreKeyRecord_Deserialize(buffer: Buffer): SignedPreKeyRecord;
|
||||
export function SignedPreKeyRecord_GetId(obj: Wrapper<SignedPreKeyRecord>): number;
|
||||
export function SignedPreKeyRecord_GetPrivateKey(obj: Wrapper<SignedPreKeyRecord>): PrivateKey;
|
||||
export function SignedPreKeyRecord_GetPublicKey(obj: Wrapper<SignedPreKeyRecord>): PublicKey;
|
||||
export function SignedPreKeyRecord_GetSignature(obj: Wrapper<SignedPreKeyRecord>): Buffer;
|
||||
export function SignedPreKeyRecord_GetTimestamp(obj: Wrapper<SignedPreKeyRecord>): number;
|
||||
export function SignedPreKeyRecord_New(id: number, timestamp: number, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>, signature: Buffer): SignedPreKeyRecord;
|
||||
export function SignedPreKeyRecord_Serialize(obj: Wrapper<SignedPreKeyRecord>): Buffer;
|
||||
export function UnidentifiedSenderMessageContent_Deserialize(buffer: Buffer): UnidentifiedSenderMessageContent;
|
||||
export function UnidentifiedSenderMessageContent_GetContents(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
||||
export function UnidentifiedSenderMessageContent_GetMsgType(m: Wrapper<UnidentifiedSenderMessageContent>): number;
|
||||
export function UnidentifiedSenderMessageContent_GetSenderCert(m: Wrapper<UnidentifiedSenderMessageContent>): SenderCertificate;
|
||||
export function UnidentifiedSenderMessageContent_Serialize(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
||||
export function initLogger(maxLevel: LogLevel, callback: (level: LogLevel, target: string, file: string | null, line: number | null, message: string) => void): void
|
||||
interface Aes256GcmSiv { readonly __type: unique symbol; }
|
||||
interface CiphertextMessage { readonly __type: unique symbol; }
|
||||
interface Fingerprint { readonly __type: unique symbol; }
|
||||
interface PreKeyBundle { readonly __type: unique symbol; }
|
||||
interface PreKeyRecord { readonly __type: unique symbol; }
|
||||
interface PreKeySignalMessage { readonly __type: unique symbol; }
|
||||
interface PrivateKey { readonly __type: unique symbol; }
|
||||
interface ProtocolAddress { readonly __type: unique symbol; }
|
||||
interface PublicKey { readonly __type: unique symbol; }
|
||||
interface SealedSenderDecryptionResult { readonly __type: unique symbol; }
|
||||
interface SenderCertificate { readonly __type: unique symbol; }
|
||||
interface SenderKeyDistributionMessage { readonly __type: unique symbol; }
|
||||
interface SenderKeyMessage { readonly __type: unique symbol; }
|
||||
interface SenderKeyName { readonly __type: unique symbol; }
|
||||
interface SenderKeyRecord { readonly __type: unique symbol; }
|
||||
interface ServerCertificate { readonly __type: unique symbol; }
|
||||
interface SessionRecord { readonly __type: unique symbol; }
|
||||
interface SignalMessage { readonly __type: unique symbol; }
|
||||
interface SignedPreKeyRecord { readonly __type: unique symbol; }
|
||||
interface UnidentifiedSenderMessageContent { readonly __type: unique symbol; }
|
||||
41
package.json
41
package.json
@ -1,41 +0,0 @@
|
||||
{
|
||||
"name": "signal-client",
|
||||
"version": "0.3.0",
|
||||
"license": "AGPL-3.0-only",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "node-gyp build",
|
||||
"tsc": "tsc",
|
||||
"clean": "rimraf dist build",
|
||||
"test": "electron-mocha --recursive dist/test --require source-map-support/register",
|
||||
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
||||
"format": "p() { prettier ${@:- --write} package.json '*.js' '**/*.{css,js,json,md,scss,ts,tsx}'; }; p"
|
||||
},
|
||||
"dependencies": {
|
||||
"bindings": "^1.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/bindings": "^1.3.0",
|
||||
"@types/chai": "4.2.7",
|
||||
"@types/mocha": "5.2.7",
|
||||
"@types/node": "13.1.8",
|
||||
"@typescript-eslint/eslint-plugin": "^4.6.0",
|
||||
"@typescript-eslint/parser": "^4.6.0",
|
||||
"chai": "4.2.0",
|
||||
"electron": "11.2.3",
|
||||
"electron-mocha": "8.1.1",
|
||||
"eslint": "^7.12.1",
|
||||
"eslint-config-prettier": "6.15.0",
|
||||
"eslint-plugin-header": "^3.1.0",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-mocha": "^8.0.0",
|
||||
"eslint-plugin-more": "^1.0.0",
|
||||
"mocha": "7.1.1",
|
||||
"node-gyp": "^7.1.2",
|
||||
"prettier": "1.19.1",
|
||||
"rimraf": "3.0.1",
|
||||
"source-map-support": "^0.5.19",
|
||||
"typescript": "3.7.4"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user