001/** 002 * 003 * Copyright 2018 Paul Schaub 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.jivesoftware.smackx.omemo.exceptions; 018 019import org.jivesoftware.smackx.omemo.OmemoConfiguration; 020import org.jivesoftware.smackx.omemo.internal.OmemoDevice; 021 022/** 023 * Exception that signals, that a device is considered read-only. 024 * Read-only devices are devices that receive OMEMO messages, but do not send any. 025 * Those devices are weakening forward secrecy. For that reason, read-only devices are ignored after n messages have 026 * been sent without getting a reply back. 027 */ 028public class ReadOnlyDeviceException extends Exception { 029 private static final long serialVersionUID = 1L; 030 031 private final OmemoDevice device; 032 033 /** 034 * Constructor. 035 * We do not need to hand over the current value of the message counter, as that value will always be equal to 036 * {@link OmemoConfiguration#getMaxReadOnlyMessageCount()}. Therefore providing the {@link OmemoDevice} should be 037 * enough. 038 * 039 * @param device device which is considered read-only. 040 */ 041 public ReadOnlyDeviceException(OmemoDevice device) { 042 this.device = device; 043 } 044 045 /** 046 * Return the device in question. 047 * 048 * @return device that is read-only. 049 */ 050 public OmemoDevice getDevice() { 051 return device; 052 } 053}