mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-07-02 00:06:45 +02:00
167 lines
5.2 KiB
Java
167 lines
5.2 KiB
Java
|
/**
|
||
|
*
|
||
|
* Copyright 2017 Paul Schaub
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
package org.jivesoftware.smackx.omemo;
|
||
|
|
||
|
import java.io.File;
|
||
|
|
||
|
/**
|
||
|
* Contains OMEMO related configuration options.
|
||
|
*
|
||
|
* @author Paul Schaub
|
||
|
*/
|
||
|
public final class OmemoConfiguration {
|
||
|
|
||
|
/**
|
||
|
* Ignore own other stale devices that we did not receive a message from for a period of time.
|
||
|
* Ignoring means do not encrypt messages for them. This helps to mitigate stale devices that threaten
|
||
|
* forward secrecy by never advancing ratchets.
|
||
|
*/
|
||
|
private static boolean IGNORE_STALE_DEVICES = true;
|
||
|
private static int IGNORE_STALE_DEVICE_AFTER_HOURS = 24 * 7; //One week
|
||
|
|
||
|
/**
|
||
|
* Delete stale devices from the device list after a period of time.
|
||
|
*/
|
||
|
private static boolean DELETE_STALE_DEVICES = true;
|
||
|
private static int DELETE_STALE_DEVICE_AFTER_HOURS = 24 * 7 * 4; //4 weeks
|
||
|
|
||
|
/**
|
||
|
* Upload a new signed prekey in intervals. This improves forward secrecy. Old keys are kept for some more time and
|
||
|
* then deleted.
|
||
|
*/
|
||
|
private static boolean RENEW_OLD_SIGNED_PREKEYS = false;
|
||
|
private static int RENEW_OLD_SIGNED_PREKEYS_AFTER_HOURS = 24 * 7; //One week
|
||
|
private static int MAX_NUMBER_OF_STORED_SIGNED_PREKEYS = 4;
|
||
|
|
||
|
/**
|
||
|
* Add a plaintext body hint about omemo encryption to the message.
|
||
|
*/
|
||
|
private static boolean ADD_OMEMO_HINT_BODY = true;
|
||
|
|
||
|
/**
|
||
|
* Add Explicit Message Encryption hint (XEP-0380) to the message.
|
||
|
*/
|
||
|
private static boolean ADD_EME_ENCRYPTION_HINT = true;
|
||
|
|
||
|
/**
|
||
|
* Add MAM storage hint to allow the server to store messages that do not contain a body.
|
||
|
*/
|
||
|
private static boolean ADD_MAM_STORAGE_HINT = true;
|
||
|
|
||
|
private static File FILE_BASED_OMEMO_STORE_DEFAULT_PATH = null;
|
||
|
|
||
|
public static void setIgnoreStaleDevices(boolean ignore) {
|
||
|
IGNORE_STALE_DEVICES = ignore;
|
||
|
}
|
||
|
|
||
|
public static boolean getIgnoreStaleDevices() {
|
||
|
return IGNORE_STALE_DEVICES;
|
||
|
}
|
||
|
|
||
|
public static void setIgnoreStaleDevicesAfterHours(int hours) {
|
||
|
if (hours <= 0) {
|
||
|
throw new IllegalArgumentException("Hours must be greater than 0.");
|
||
|
}
|
||
|
IGNORE_STALE_DEVICE_AFTER_HOURS = hours;
|
||
|
}
|
||
|
|
||
|
public static int getIgnoreStaleDevicesAfterHours() {
|
||
|
return IGNORE_STALE_DEVICE_AFTER_HOURS;
|
||
|
}
|
||
|
|
||
|
public static void setDeleteStaleDevices(boolean delete) {
|
||
|
DELETE_STALE_DEVICES = delete;
|
||
|
}
|
||
|
|
||
|
public static boolean getDeleteStaleDevices() {
|
||
|
return DELETE_STALE_DEVICES;
|
||
|
}
|
||
|
|
||
|
public static void setDeleteStaleDevicesAfterHours(int hours) {
|
||
|
if (hours <= 0) {
|
||
|
throw new IllegalArgumentException("Hours must be greater than 0.");
|
||
|
}
|
||
|
DELETE_STALE_DEVICE_AFTER_HOURS = hours;
|
||
|
}
|
||
|
|
||
|
public static int getDeleteStaleDevicesAfterHours() {
|
||
|
return DELETE_STALE_DEVICE_AFTER_HOURS;
|
||
|
}
|
||
|
|
||
|
public static void setRenewOldSignedPreKeys(boolean renew) {
|
||
|
RENEW_OLD_SIGNED_PREKEYS = renew;
|
||
|
}
|
||
|
|
||
|
public static boolean getRenewOldSignedPreKeys() {
|
||
|
return RENEW_OLD_SIGNED_PREKEYS;
|
||
|
}
|
||
|
|
||
|
public static void setRenewOldSignedPreKeysAfterHours(int hours) {
|
||
|
if (hours <= 0) {
|
||
|
throw new IllegalArgumentException("Hours must be greater than 0.");
|
||
|
}
|
||
|
RENEW_OLD_SIGNED_PREKEYS_AFTER_HOURS = hours;
|
||
|
}
|
||
|
|
||
|
public static int getRenewOldSignedPreKeysAfterHours() {
|
||
|
return RENEW_OLD_SIGNED_PREKEYS_AFTER_HOURS;
|
||
|
}
|
||
|
|
||
|
public static void setMaxNumberOfStoredSignedPreKeys(int number) {
|
||
|
if (number <= 0) {
|
||
|
throw new IllegalArgumentException("Number must be greater than 0.");
|
||
|
}
|
||
|
MAX_NUMBER_OF_STORED_SIGNED_PREKEYS = number;
|
||
|
}
|
||
|
|
||
|
public static int getMaxNumberOfStoredSignedPreKeys() {
|
||
|
return MAX_NUMBER_OF_STORED_SIGNED_PREKEYS;
|
||
|
}
|
||
|
|
||
|
public static void setAddOmemoHintBody(boolean addHint) {
|
||
|
ADD_OMEMO_HINT_BODY = addHint;
|
||
|
}
|
||
|
|
||
|
public static boolean getAddOmemoHintBody() {
|
||
|
return ADD_OMEMO_HINT_BODY;
|
||
|
}
|
||
|
|
||
|
public static void setAddEmeEncryptionHint(boolean addHint) {
|
||
|
ADD_EME_ENCRYPTION_HINT = addHint;
|
||
|
}
|
||
|
|
||
|
public static boolean getAddEmeEncryptionHint() {
|
||
|
return ADD_EME_ENCRYPTION_HINT;
|
||
|
}
|
||
|
|
||
|
public static void setAddMAMStorageProcessingHint(boolean addStorageHint) {
|
||
|
ADD_MAM_STORAGE_HINT = addStorageHint;
|
||
|
}
|
||
|
|
||
|
public static boolean getAddMAMStorageProcessingHint() {
|
||
|
return ADD_MAM_STORAGE_HINT;
|
||
|
}
|
||
|
|
||
|
public static void setFileBasedOmemoStoreDefaultPath(File path) {
|
||
|
FILE_BASED_OMEMO_STORE_DEFAULT_PATH = path;
|
||
|
}
|
||
|
|
||
|
public static File getFileBasedOmemoStoreDefaultPath() {
|
||
|
return FILE_BASED_OMEMO_STORE_DEFAULT_PATH;
|
||
|
}
|
||
|
}
|