public WifImporter importAll() { for (BitmessageAddress identity : identities) { ctx.addresses().save(identity); } return this; }
public WifImporter importAll(Collection<BitmessageAddress> identities) { for (BitmessageAddress identity : identities) { ctx.addresses().save(identity); } return this; }
public WifImporter importIdentity(BitmessageAddress identity) { ctx.addresses().save(identity); return this; } }
public BitmessageAddress createChan(String passphrase) { // FIXME: hardcoded stream number BitmessageAddress chan = BitmessageAddress.chan(1, passphrase); ctx.getAddressRepository().save(chan); return chan; }
public List<BitmessageAddress> createDeterministicAddresses( String passphrase, int numberOfAddresses, long version, long stream, boolean shorter) { List<BitmessageAddress> result = BitmessageAddress.deterministic( passphrase, numberOfAddresses, version, stream, shorter); for (int i = 0; i < result.size(); i++) { BitmessageAddress address = result.get(i); address.setAlias("deterministic (" + (i + 1) + ")"); ctx.getAddressRepository().save(address); } return result; }
public BitmessageAddress joinChan(String passphrase, String address) { BitmessageAddress chan = BitmessageAddress.chan(address, passphrase); chan.setAlias(passphrase); ctx.getAddressRepository().save(chan); return chan; }
public void addContact(BitmessageAddress contact) { ctx.getAddressRepository().save(contact); if (contact.getPubkey() == null) { ctx.requestPubkey(contact); } }
public void addSubscribtion(BitmessageAddress address) { address.setSubscribed(true); ctx.getAddressRepo().save(address); tryToFindBroadcastsForAddress(address); }
public void addSubscribtion(BitmessageAddress address) { address.setSubscribed(true); ctx.getAddressRepository().save(address); tryToFindBroadcastsForAddress(address); }
public void addContact(BitmessageAddress contact) { ctx.getAddressRepo().save(contact); tryToFindMatchingPubkey(contact); if (contact.getPubkey() == null) { ctx.requestPubkey(contact); } }
private void updatePubkey(BitmessageAddress address, Pubkey pubkey) { address.setPubkey(pubkey); LOG.info("Got pubkey for contact " + address); ctx.getAddressRepository().save(address); List<Plaintext> messages = ctx.getMessageRepository().findMessages(PUBKEY_REQUESTED, address); LOG.info("Sending " + messages.size() + " messages for contact " + address); for (Plaintext msg : messages) { ctx.getLabeler().markAsSending(msg); ctx.getMessageRepository().save(msg); ctx.send(msg); } }
private void tryToFindMatchingPubkey(BitmessageAddress address) { for (ObjectMessage object : ctx.getInventory().getObjects(address.getStream(), address.getVersion(), ObjectType.PUBKEY)) { try { Pubkey pubkey = (Pubkey) object.getPayload(); if (address.getVersion() == 4) { V4Pubkey v4Pubkey = (V4Pubkey) pubkey; if (Arrays.equals(address.getTag(), v4Pubkey.getTag())) { v4Pubkey.decrypt(address.getPublicDecryptionKey()); if (object.isSignatureValid(v4Pubkey)) { address.setPubkey(v4Pubkey); ctx.getAddressRepo().save(address); break; } else { LOG.debug("Found pubkey for " + address + " but signature is invalid"); } } } else { if (Arrays.equals(pubkey.getRipe(), address.getRipe())) { address.setPubkey(pubkey); ctx.getAddressRepo().save(address); break; } } } catch (Exception e) { LOG.debug(e.getMessage(), e); } } }
/** * Be aware that if the pubkey already exists in the inventory, the metods will not request it and the callback * for freshly received pubkeys will not be called. Instead the pubkey is added to the contact and stored on DB. */ public void requestPubkey(final BitmessageAddress contact) { BitmessageAddress stored = addressRepository.getAddress(contact.getAddress()); tryToFindMatchingPubkey(contact); if (contact.getPubkey() != null) { if (stored != null) { stored.setPubkey(contact.getPubkey()); addressRepository.save(stored); } else { addressRepository.save(contact); } return; } if (stored == null) { addressRepository.save(contact); } long expires = UnixTime.now(TTL.getpubkey()); LOG.info("Expires at " + expires); final ObjectMessage request = new ObjectMessage.Builder() .stream(contact.getStream()) .expiresTime(expires) .payload(new GetPubkey(contact)) .build(); proofOfWorkService.doProofOfWork(request); }
protected void safeSenderIfNecessary(Plaintext message) { if (message.getId() == null) { BitmessageAddress savedAddress = ctx.getAddressRepository().getAddress(message.getFrom().getAddress()); if (savedAddress == null) { ctx.getAddressRepository().save(message.getFrom()); } else if (savedAddress.getPubkey() == null && message.getFrom().getPubkey() != null) { savedAddress.setPubkey(message.getFrom().getPubkey()); ctx.getAddressRepository().save(savedAddress); } } }
public BitmessageAddress createIdentity(boolean shorter, Feature... features) { final BitmessageAddress identity = new BitmessageAddress(new PrivateKey( shorter, ctx.getStreams()[0], NETWORK_NONCE_TRIALS_PER_BYTE, NETWORK_EXTRA_BYTES, features )); ctx.getAddressRepository().save(identity); if (sendPubkeyOnIdentityCreation) { ctx.sendPubkey(identity, identity.getStream()); } return identity; }
public BitmessageAddress createIdentity(boolean shorter, Feature... features) { BitmessageAddress identity = new BitmessageAddress(new PrivateKey( shorter, ctx.getStreams()[0], ctx.getNetworkNonceTrialsPerByte(), ctx.getNetworkExtraBytes(), features )); ctx.getAddressRepo().save(identity); // TODO: this should happen in a separate thread ctx.sendPubkey(identity, identity.getStream()); return identity; }
address.setPubkey(pubkey); LOG.debug("Got pubkey for contact " + address); ctx.getAddressRepo().save(address); List<Plaintext> messages = ctx.getMessageRepository().findMessages(Plaintext.Status.PUBKEY_REQUESTED, address); LOG.debug("Sending " + messages.size() + " messages for contact " + address);