package org.thoughtcrime.SMP.crypto.storage; import android.content.Context; import org.thoughtcrime.SMP.crypto.IdentityKeyUtil; import org.thoughtcrime.SMP.crypto.MasterSecret; import org.thoughtcrime.SMP.database.DatabaseFactory; import org.thoughtcrime.SMP.recipients.RecipientFactory; import org.thoughtcrime.SMP.util.TextSecurePreferences; import org.whispersystems.libaxolotl.IdentityKey; import org.whispersystems.libaxolotl.IdentityKeyPair; import org.whispersystems.libaxolotl.state.IdentityKeyStore; public class TextSecureIdentityKeyStore implements IdentityKeyStore { private final Context context; private final MasterSecret masterSecret; public TextSecureIdentityKeyStore(Context context, MasterSecret masterSecret) { this.context = context; this.masterSecret = masterSecret; } @Override public IdentityKeyPair getIdentityKeyPair() { return IdentityKeyUtil.getIdentityKeyPair(context, masterSecret); } @Override public int getLocalRegistrationId() { return TextSecurePreferences.getLocalRegistrationId(context); } @Override public void saveIdentity(String name, IdentityKey identityKey) { long recipientId = RecipientFactory.getRecipientsFromString(context, name, true).getPrimaryRecipient().getRecipientId(); DatabaseFactory.getIdentityDatabase(context).saveIdentity(masterSecret, recipientId, identityKey); } @Override public boolean isTrustedIdentity(String name, IdentityKey identityKey) { long recipientId = RecipientFactory.getRecipientsFromString(context, name, true).getPrimaryRecipient().getRecipientId(); return DatabaseFactory.getIdentityDatabase(context) .isValidIdentity(masterSecret, recipientId, identityKey); } }