Use untagged pnis in storage service
This commit is contained in:
parent
283ef57779
commit
eb7942dd1e
16 changed files with 530 additions and 62 deletions
|
@ -401,7 +401,7 @@ export default class AccountManager extends EventTarget {
|
|||
!provisionMessage.pniKeyPair ||
|
||||
!provisionMessage.profileKey ||
|
||||
!provisionMessage.aci ||
|
||||
!isUntaggedPniString(provisionMessage.pni)
|
||||
!isUntaggedPniString(provisionMessage.untaggedPni)
|
||||
) {
|
||||
throw new Error(
|
||||
'AccountManager.registerSecondDevice: Provision message was missing key data'
|
||||
|
@ -410,7 +410,7 @@ export default class AccountManager extends EventTarget {
|
|||
|
||||
const ourAci = normalizeAci(provisionMessage.aci, 'provisionMessage.aci');
|
||||
const ourPni = normalizePni(
|
||||
toTaggedPni(provisionMessage.pni),
|
||||
toTaggedPni(provisionMessage.untaggedPni),
|
||||
'provisionMessage.pni'
|
||||
);
|
||||
|
||||
|
|
|
@ -59,8 +59,10 @@ import {
|
|||
normalizeServiceId,
|
||||
normalizePni,
|
||||
isPniString,
|
||||
isUntaggedPniString,
|
||||
isServiceIdString,
|
||||
fromPniObject,
|
||||
toTaggedPni,
|
||||
} from '../types/ServiceId';
|
||||
import { normalizeAci } from '../util/normalizeAci';
|
||||
import { isAciString } from '../util/isAciString';
|
||||
|
@ -421,12 +423,13 @@ export default class MessageReceiver
|
|||
'MessageReceiver.handleRequest.destinationServiceId'
|
||||
)
|
||||
: ourAci,
|
||||
updatedPni: decoded.updatedPni
|
||||
? normalizePni(
|
||||
decoded.updatedPni,
|
||||
'MessageReceiver.handleRequest.updatedPni'
|
||||
)
|
||||
: undefined,
|
||||
updatedPni:
|
||||
decoded.updatedPni && isUntaggedPniString(decoded.updatedPni)
|
||||
? normalizePni(
|
||||
toTaggedPni(decoded.updatedPni),
|
||||
'MessageReceiver.handleRequest.updatedPni'
|
||||
)
|
||||
: undefined,
|
||||
timestamp: decoded.timestamp?.toNumber(),
|
||||
content: dropNull(decoded.content),
|
||||
serverGuid: decoded.serverGuid,
|
||||
|
@ -878,8 +881,11 @@ export default class MessageReceiver
|
|||
decoded.destinationServiceId || item.destinationServiceId || ourAci,
|
||||
'CachedEnvelope.destinationServiceId'
|
||||
),
|
||||
updatedPni: decoded.updatedPni
|
||||
? normalizePni(decoded.updatedPni, 'CachedEnvelope.updatedPni')
|
||||
updatedPni: isUntaggedPniString(decoded.updatedPni)
|
||||
? normalizePni(
|
||||
toTaggedPni(decoded.updatedPni),
|
||||
'CachedEnvelope.updatedPni'
|
||||
)
|
||||
: undefined,
|
||||
timestamp: decoded.timestamp?.toNumber(),
|
||||
content: dropNull(decoded.content),
|
||||
|
|
|
@ -12,17 +12,14 @@ import {
|
|||
} from '../Crypto';
|
||||
import { calculateAgreement, createKeyPair, generateKeyPair } from '../Curve';
|
||||
import { SignalService as Proto } from '../protobuf';
|
||||
import type { PniString, AciString } from '../types/ServiceId';
|
||||
import { normalizePni } from '../types/ServiceId';
|
||||
import { normalizeAci } from '../util/normalizeAci';
|
||||
import { strictAssert } from '../util/assert';
|
||||
|
||||
type ProvisionDecryptResult = {
|
||||
aciKeyPair: KeyPairType;
|
||||
pniKeyPair?: KeyPairType;
|
||||
number?: string;
|
||||
aci?: AciString;
|
||||
pni?: PniString;
|
||||
aci?: string;
|
||||
untaggedPni?: string;
|
||||
provisioningCode?: string;
|
||||
userAgent?: string;
|
||||
readReceipts?: boolean;
|
||||
|
@ -75,13 +72,14 @@ class ProvisioningCipherInner {
|
|||
|
||||
const { aci, pni } = provisionMessage;
|
||||
strictAssert(aci, 'Missing aci in provisioning message');
|
||||
strictAssert(pni, 'Missing pni in provisioning message');
|
||||
|
||||
const ret: ProvisionDecryptResult = {
|
||||
aciKeyPair,
|
||||
pniKeyPair,
|
||||
number: provisionMessage.number,
|
||||
aci: normalizeAci(aci, 'ProvisionMessage.aci'),
|
||||
pni: pni ? normalizePni(pni, 'ProvisionMessage.pni') : undefined,
|
||||
aci,
|
||||
untaggedPni: pni,
|
||||
provisioningCode: provisionMessage.provisioningCode,
|
||||
userAgent: provisionMessage.userAgent,
|
||||
readReceipts: provisionMessage.readReceipts,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue