Treat APNs team/key IDs as secrets so they can change atomically with the key itself
This commit is contained in:
		
							parent
							
								
									207ae6129b
								
							
						
					
					
						commit
						f2a3b8dba4
					
				|  | @ -46,6 +46,8 @@ gcpAttachments.rsaSigningKey: | | ||||||
|   AAAAAAAA |   AAAAAAAA | ||||||
|   -----END PRIVATE KEY----- |   -----END PRIVATE KEY----- | ||||||
| 
 | 
 | ||||||
|  | apn.teamId: team-id | ||||||
|  | apn.keyId: key-id | ||||||
| apn.signingKey: | | apn.signingKey: | | ||||||
|   -----BEGIN PRIVATE KEY----- |   -----BEGIN PRIVATE KEY----- | ||||||
|   ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz |   ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz | ||||||
|  |  | ||||||
|  | @ -208,8 +208,8 @@ accountDatabaseCrawler: | ||||||
| apn: # Apple Push Notifications configuration | apn: # Apple Push Notifications configuration | ||||||
|   sandbox: true |   sandbox: true | ||||||
|   bundleId: com.example.textsecuregcm |   bundleId: com.example.textsecuregcm | ||||||
|   keyId: unset |   keyId: secret://apn.keyId | ||||||
|   teamId: unset |   teamId: secret://apn.teamId | ||||||
|   signingKey: secret://apn.signingKey |   signingKey: secret://apn.signingKey | ||||||
| 
 | 
 | ||||||
| fcm: # FCM configuration | fcm: # FCM configuration | ||||||
|  |  | ||||||
|  | @ -9,8 +9,8 @@ import javax.validation.constraints.NotNull; | ||||||
| import org.whispersystems.textsecuregcm.configuration.secrets.SecretString; | import org.whispersystems.textsecuregcm.configuration.secrets.SecretString; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| public record ApnConfiguration(@NotBlank String teamId, | public record ApnConfiguration(@NotNull SecretString teamId, | ||||||
|                                @NotBlank String keyId, |                                @NotNull SecretString keyId, | ||||||
|                                @NotNull SecretString signingKey, |                                @NotNull SecretString signingKey, | ||||||
|                                @NotBlank String bundleId, |                                @NotBlank String bundleId, | ||||||
|                                boolean sandbox) { |                                boolean sandbox) { | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ public class APNSender implements Managed, PushNotificationSender { | ||||||
|     this.bundleId = configuration.bundleId(); |     this.bundleId = configuration.bundleId(); | ||||||
|     this.apnsClient = new ApnsClientBuilder().setSigningKey( |     this.apnsClient = new ApnsClientBuilder().setSigningKey( | ||||||
|             ApnsSigningKey.loadFromInputStream(new ByteArrayInputStream(configuration.signingKey().value().getBytes()), |             ApnsSigningKey.loadFromInputStream(new ByteArrayInputStream(configuration.signingKey().value().getBytes()), | ||||||
|                 configuration.teamId(), configuration.keyId())) |                 configuration.teamId().value(), configuration.keyId().value())) | ||||||
|         .setTrustedServerCertificateChain(getClass().getResourceAsStream(APNS_CA_FILENAME)) |         .setTrustedServerCertificateChain(getClass().getResourceAsStream(APNS_CA_FILENAME)) | ||||||
|         .setApnsServer(configuration.sandbox() ? ApnsClientBuilder.DEVELOPMENT_APNS_HOST : ApnsClientBuilder.PRODUCTION_APNS_HOST) |         .setApnsServer(configuration.sandbox() ? ApnsClientBuilder.DEVELOPMENT_APNS_HOST : ApnsClientBuilder.PRODUCTION_APNS_HOST) | ||||||
|         .build(); |         .build(); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jon Chambers
						Jon Chambers