All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.thoffbauer.signal4j.store.SignalStore Maven / Gradle / Ivy

The newest version!
package de.thoffbauer.signal4j.store;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;

import org.whispersystems.libsignal.IdentityKey;
import org.whispersystems.libsignal.IdentityKeyPair;
import org.whispersystems.libsignal.SignalProtocolAddress;
import org.whispersystems.libsignal.state.PreKeyRecord;
import org.whispersystems.libsignal.state.SessionRecord;
import org.whispersystems.libsignal.state.SignalProtocolStore;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;

import com.fasterxml.jackson.annotation.JsonIgnore;

public abstract class SignalStore implements SignalProtocolStore {
	
	@Override
	@JsonIgnore
	public boolean isTrustedIdentity(String name, IdentityKey identityKey) {
		IdentityKey storedIdentity = getIdentity(name);
		return storedIdentity == null || identityKey.equals(storedIdentity);
	}
	
	@Override
	@JsonIgnore
	public List getSubDeviceSessions(String name) {
		List ids = new ArrayList();
		for(Entry entry : getSessions()) {
			SignalProtocolAddress address = entry.getKey();
			if(address.getName().equals(name) && 
					address.getDeviceId() != SignalServiceAddress.DEFAULT_DEVICE_ID) {
				ids.add(address.getDeviceId());
			}
		}
		return ids;
	}
	
	@Override
	public void deleteAllSessions(String name) {
		for(Iterator> it = getSessions().iterator(); 
				it.hasNext();) {
			if(it.next().getKey().getName().equals(name)) {
				it.remove();
			}
		}
	}
	
	
	@Override
	public SessionRecord loadSession(SignalProtocolAddress address) {
		SessionRecord session = getSession(address);
		if(session == null) {
			session = new SessionRecord();
		}
		return session;
	}

	public abstract void save(File file) throws IOException;
	
	public abstract DataStore getDataStore();

	public abstract IdentityKey getIdentity(String name);
	public abstract Iterable> getSessions();
	public abstract SessionRecord getSession(SignalProtocolAddress address);
	
	public abstract String getUrl();
	public abstract void setUrl(String url);
	public abstract String getUserAgent();
	public abstract void setUserAgent(String userAgent);
	public abstract String getPhoneNumber();
	public abstract void setPhoneNumber(String phoneNumber);
	public abstract void setIdentityKeyPair(IdentityKeyPair identityKeyPair);
	public abstract String getPassword();
	public abstract void setPassword(String password);
	public abstract String getSignalingKey();
	public abstract void setSignalingKey(String signalingKey);
	public abstract int getDeviceId();
	public abstract void setDeviceId(int deviceId);
	public abstract PreKeyRecord getLastResortPreKey();
	public abstract void setLastResortPreKey(PreKeyRecord lastResortPreKey);
	public abstract void setLocalRegistrationId(int localRegistrationId);
	public abstract int getNextPreKeyId();
	public abstract void setNextPreKeyId(int nextPreKeyId);
	public abstract int getNextSignedPreKeyId();
	public abstract void setNextSignedPreKeyId(int nextSignedPreKeyId);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy