You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											5 years ago
										 | import { Constants } from '../../../..'; | ||
|  | import { SignalService } from '../../../../../protobuf'; | ||
| 
											5 years ago
										 | import { | ||
| 
											5 years ago
										 |   ClosedGroupMessage, | ||
|  |   ClosedGroupMessageParams, | ||
|  | } from './ClosedGroupMessage'; | ||
| 
											5 years ago
										 | 
 | ||
| 
											5 years ago
										 | export interface ClosedGroupEncryptionPairMessageParams | ||
| 
											5 years ago
										 |   extends ClosedGroupMessageParams { | ||
| 
											5 years ago
										 |   encryptedKeyPairs: Array< | ||
| 
											5 years ago
										 |     SignalService.DataMessage.ClosedGroupControlMessage.KeyPairWrapper | ||
| 
											5 years ago
										 |   >; | ||
| 
											5 years ago
										 | } | ||
|  | 
 | ||
| 
											5 years ago
										 | export class ClosedGroupEncryptionPairMessage extends ClosedGroupMessage { | ||
| 
											5 years ago
										 |   private readonly encryptedKeyPairs: Array< | ||
| 
											5 years ago
										 |     SignalService.DataMessage.ClosedGroupControlMessage.KeyPairWrapper | ||
| 
											5 years ago
										 |   >; | ||
|  | 
 | ||
| 
											5 years ago
										 |   constructor(params: ClosedGroupEncryptionPairMessageParams) { | ||
| 
											5 years ago
										 |     super({ | ||
|  |       timestamp: params.timestamp, | ||
|  |       identifier: params.identifier, | ||
|  |       groupId: params.groupId, | ||
|  |       expireTimer: params.expireTimer, | ||
|  |     }); | ||
|  |     this.encryptedKeyPairs = params.encryptedKeyPairs; | ||
|  |     if (this.encryptedKeyPairs.length === 0) { | ||
|  |       throw new Error('EncryptedKeyPairs cannot be empty'); | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   public dataProto(): SignalService.DataMessage { | ||
|  |     const dataMessage = super.dataProto(); | ||
|  | 
 | ||
|  |     // tslint:disable: no-non-null-assertion
 | ||
| 
											5 years ago
										 |     dataMessage.closedGroupControlMessage!.type = | ||
|  |       SignalService.DataMessage.ClosedGroupControlMessage.Type.ENCRYPTION_KEY_PAIR; | ||
|  |     dataMessage.closedGroupControlMessage!.wrappers = this.encryptedKeyPairs.map( | ||
| 
											5 years ago
										 |       w => { | ||
|  |         const { publicKey, encryptedKeyPair } = w; | ||
|  |         return { | ||
|  |           publicKey: publicKey, | ||
|  |           encryptedKeyPair, | ||
|  |         }; | ||
|  |       } | ||
|  |     ); | ||
|  | 
 | ||
|  |     return dataMessage; | ||
|  |   } | ||
|  | 
 | ||
|  |   public ttl(): number { | ||
| 
											5 years ago
										 |     return Constants.TTL_DEFAULT.ENCRYPTION_PAIR_GROUP; | ||
| 
											5 years ago
										 |   } | ||
|  | } |