Compile protobufs with no-convert/null-defaults
Co-authored-by: Scott Nonnenberg <scott@signal.org>
This commit is contained in:
parent
e8fdd7116b
commit
f52da976f9
12 changed files with 119 additions and 43 deletions
|
@ -50,7 +50,7 @@ import {
|
|||
import { normalizeAci } from '../util/normalizeAci';
|
||||
import { isMoreRecentThan, isOlderThan } from '../util/timestamp';
|
||||
import { ourProfileKeyService } from '../services/ourProfileKey';
|
||||
import { assertDev, strictAssert } from '../util/assert';
|
||||
import { strictAssert } from '../util/assert';
|
||||
import { getRegionCodeForNumber } from '../util/libphonenumberUtil';
|
||||
import { isNotNil } from '../util/isNotNil';
|
||||
import { missingCaseError } from '../util/missingCaseError';
|
||||
|
@ -258,12 +258,21 @@ export default class AccountManager extends EventTarget {
|
|||
|
||||
const bytes = Bytes.fromBase64(base64);
|
||||
const proto = Proto.DeviceName.decode(bytes);
|
||||
assertDev(
|
||||
proto.ephemeralPublic && proto.syntheticIv && proto.ciphertext,
|
||||
'Missing required fields in DeviceName'
|
||||
strictAssert(
|
||||
proto.ephemeralPublic,
|
||||
'Missing ephemeralPublic field in DeviceName'
|
||||
);
|
||||
strictAssert(proto.syntheticIv, 'Missing syntheticIv field in DeviceName');
|
||||
strictAssert(proto.ciphertext, 'Missing ciphertext field in DeviceName');
|
||||
|
||||
const name = decryptDeviceName(proto, identityKey.privKey);
|
||||
const name = decryptDeviceName(
|
||||
{
|
||||
ephemeralPublic: proto.ephemeralPublic,
|
||||
syntheticIv: proto.syntheticIv,
|
||||
ciphertext: proto.ciphertext,
|
||||
},
|
||||
identityKey.privKey
|
||||
);
|
||||
|
||||
return name;
|
||||
}
|
||||
|
|
|
@ -398,7 +398,7 @@ export default class MessageReceiver
|
|||
|
||||
try {
|
||||
const decoded = Proto.Envelope.decode(plaintext);
|
||||
const serverTimestamp = decoded.serverTimestamp?.toNumber();
|
||||
const serverTimestamp = decoded.serverTimestamp?.toNumber() ?? 0;
|
||||
|
||||
const ourAci = this.storage.user.getCheckedAci();
|
||||
|
||||
|
@ -412,14 +412,14 @@ export default class MessageReceiver
|
|||
messageAgeSec: this.calculateMessageAge(headers, serverTimestamp),
|
||||
|
||||
// Proto.Envelope fields
|
||||
type: decoded.type,
|
||||
type: decoded.type ?? Proto.Envelope.Type.UNKNOWN,
|
||||
sourceServiceId: decoded.sourceServiceId
|
||||
? normalizeServiceId(
|
||||
decoded.sourceServiceId,
|
||||
'MessageReceiver.handleRequest.sourceServiceId'
|
||||
)
|
||||
: undefined,
|
||||
sourceDevice: decoded.sourceDevice,
|
||||
sourceDevice: decoded.sourceDevice ?? 1,
|
||||
destinationServiceId: decoded.destinationServiceId
|
||||
? normalizeServiceId(
|
||||
decoded.destinationServiceId,
|
||||
|
@ -433,12 +433,12 @@ export default class MessageReceiver
|
|||
'MessageReceiver.handleRequest.updatedPni'
|
||||
)
|
||||
: undefined,
|
||||
timestamp: decoded.timestamp?.toNumber(),
|
||||
timestamp: decoded.timestamp?.toNumber() ?? 0,
|
||||
content: dropNull(decoded.content),
|
||||
serverGuid: decoded.serverGuid,
|
||||
serverGuid: decoded.serverGuid ?? getGuid(),
|
||||
serverTimestamp,
|
||||
urgent: isBoolean(decoded.urgent) ? decoded.urgent : true,
|
||||
story: decoded.story,
|
||||
story: decoded.story ?? false,
|
||||
reportingToken: decoded.reportingToken?.length
|
||||
? decoded.reportingToken
|
||||
: undefined,
|
||||
|
@ -873,7 +873,7 @@ export default class MessageReceiver
|
|||
messageAgeSec: item.messageAgeSec || 0,
|
||||
|
||||
// Proto.Envelope fields
|
||||
type: decoded.type,
|
||||
type: decoded.type ?? Proto.Envelope.Type.UNKNOWN,
|
||||
source: item.source,
|
||||
sourceServiceId: normalizeServiceId(
|
||||
item.sourceServiceId || decoded.sourceServiceId,
|
||||
|
@ -890,11 +890,11 @@ export default class MessageReceiver
|
|||
'CachedEnvelope.updatedPni'
|
||||
)
|
||||
: undefined,
|
||||
timestamp: decoded.timestamp?.toNumber(),
|
||||
timestamp: decoded.timestamp?.toNumber() ?? 0,
|
||||
content: dropNull(decoded.content),
|
||||
serverGuid: decoded.serverGuid,
|
||||
serverGuid: decoded.serverGuid ?? getGuid(),
|
||||
serverTimestamp:
|
||||
item.serverTimestamp || decoded.serverTimestamp?.toNumber(),
|
||||
item.serverTimestamp || decoded.serverTimestamp?.toNumber() || 0,
|
||||
urgent: isBoolean(item.urgent) ? item.urgent : true,
|
||||
story: Boolean(item.story),
|
||||
reportingToken: item.reportingToken
|
||||
|
|
|
@ -13,6 +13,7 @@ import {
|
|||
import { calculateAgreement, createKeyPair, generateKeyPair } from '../Curve';
|
||||
import { SignalService as Proto } from '../protobuf';
|
||||
import { strictAssert } from '../util/assert';
|
||||
import { dropNull } from '../util/dropNull';
|
||||
|
||||
type ProvisionDecryptResult = {
|
||||
aciKeyPair: KeyPairType;
|
||||
|
@ -34,9 +35,10 @@ class ProvisioningCipherInner {
|
|||
provisionEnvelope: Proto.ProvisionEnvelope
|
||||
): Promise<ProvisionDecryptResult> {
|
||||
strictAssert(
|
||||
provisionEnvelope.publicKey && provisionEnvelope.body,
|
||||
'Missing required fields in ProvisionEnvelope'
|
||||
provisionEnvelope.publicKey,
|
||||
'Missing publicKey in ProvisionEnvelope'
|
||||
);
|
||||
strictAssert(provisionEnvelope.body, 'Missing body in ProvisionEnvelope');
|
||||
const masterEphemeral = provisionEnvelope.publicKey;
|
||||
const message = provisionEnvelope.body;
|
||||
if (new Uint8Array(message)[0] !== 1) {
|
||||
|
@ -78,12 +80,12 @@ class ProvisioningCipherInner {
|
|||
const ret: ProvisionDecryptResult = {
|
||||
aciKeyPair,
|
||||
pniKeyPair,
|
||||
number: provisionMessage.number,
|
||||
number: dropNull(provisionMessage.number),
|
||||
aci,
|
||||
untaggedPni: pni,
|
||||
provisioningCode: provisionMessage.provisioningCode,
|
||||
userAgent: provisionMessage.userAgent,
|
||||
readReceipts: provisionMessage.readReceipts,
|
||||
provisioningCode: dropNull(provisionMessage.provisioningCode),
|
||||
userAgent: dropNull(provisionMessage.userAgent),
|
||||
readReceipts: provisionMessage.readReceipts ?? false,
|
||||
};
|
||||
if (Bytes.isNotEmpty(provisionMessage.profileKey)) {
|
||||
ret.profileKey = provisionMessage.profileKey;
|
||||
|
|
|
@ -3390,7 +3390,7 @@ export function initialize({
|
|||
return getGroupLog(
|
||||
{
|
||||
...options,
|
||||
startVersion: joinedAtVersion,
|
||||
startVersion: joinedAtVersion ?? 0,
|
||||
},
|
||||
credentials
|
||||
);
|
||||
|
|
|
@ -203,6 +203,9 @@ function decodeSingleResponse(
|
|||
resultMap: Map<string, CDSResponseEntryType>,
|
||||
response: Proto.CDSClientResponse
|
||||
): void {
|
||||
if (!response.e164PniAciTriples) {
|
||||
return;
|
||||
}
|
||||
for (
|
||||
let i = 0;
|
||||
i < response.e164PniAciTriples.length;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue