Base() throws GoraException {
   userDatastore = DataStoreFactory.getDataStore(Long.class, User.class, new Configuration());
   notifier = new Notifier();
   pendingNotificationDataStore =
       DataStoreFactory.getDataStore(Long.class, PendingNotification.class, new Configuration());
   clientNotifier = new ClientNotifier(notifier, pendingNotificationDataStore);
   identityDataStore =
       DataStoreFactory.getDataStore(ByteBuffer.class, HashIdentity.class, new Configuration());
   sendContactCard = new SendContactCard(userDatastore, identityDataStore, clientNotifier);
   final User user = new User();
   final ByteBuffer b = ByteBuffer.wrap("".getBytes());
   b.mark();
   user.setBlind(b);
   user.setId(clientId.getUser());
   user.setIdentities(new ArrayList<>());
   user.setSentRequests(new ArrayList<>());
   final Map<CharSequence, Client> clients = new HashMap<>(1);
   clients.put(
       TypeConverter.convert(clientId.getClient()), createClient(clientId, verificationKey));
   user.setClients(clients);
   userDatastore.put(user.getId(), user);
 }
 Base3()
     throws GoraException, TException, NoSuchAlgorithmException, NoSuchProviderException,
         InvalidKeyException, SignatureException {
   final User user = new User();
   user.setId(userId);
   final ByteBuffer b = ByteBuffer.wrap("".getBytes());
   b.mark();
   user.setBlind(b);
   user.setIdentities(new ArrayList<>());
   user.setSentRequests(new ArrayList<>());
   final Map<CharSequence, Client> clients = new HashMap<>(2);
   final VerificationKey verificationKey = new VerificationKey();
   verificationKey.setAlgorithm(com.kareebo.contacts.server.gora.SignatureAlgorithm.Fake);
   verificationKey.setBuffer(b);
   clients.put(
       TypeConverter.convert(clientId0.getClient()), createClient(clientId0, verificationKey));
   clients.put(
       TypeConverter.convert(clientId1.getClient()), createClient(clientId1, verificationKey));
   user.setClients(clients);
   userDatastore.put(userId, user);
   final com.kareebo.contacts.thrift.EncryptedBuffer encryptedBuffer0 =
       new com.kareebo.contacts.thrift.EncryptedBuffer(
           b, com.kareebo.contacts.thrift.EncryptionAlgorithm.Fake, clientId0);
   final EncryptedBufferSigned encryptedBufferSigned0 =
       new EncryptedBufferSigned(encryptedBuffer0, sign(encryptedBuffer0, clientId));
   encryptedBufferSignedSet.add(encryptedBufferSigned0);
   e0 =
       new EncryptedBufferSignedWithVerificationKey(
           encryptedBufferSigned0, TypeConverter.convert(this.verificationKey));
   final com.kareebo.contacts.thrift.EncryptedBuffer encryptedBuffer1 =
       new com.kareebo.contacts.thrift.EncryptedBuffer(
           b, com.kareebo.contacts.thrift.EncryptionAlgorithm.Fake, clientId1);
   final EncryptedBufferSigned encryptedBufferSigned1 =
       new EncryptedBufferSigned(encryptedBuffer1, sign(encryptedBuffer1, clientId));
   encryptedBufferSignedSet.add(encryptedBufferSigned1);
   e1 =
       new EncryptedBufferSignedWithVerificationKey(
           encryptedBufferSigned1, TypeConverter.convert(this.verificationKey));
 }
 Client createClient(final ClientId clientId, final VerificationKey verificationKey) {
   final Client client = new Client();
   client.setComparisonIdentities(new ArrayList<>());
   client.setDeviceToken(clientId.getClient());
   final PublicKeys publicKeys = new PublicKeys();
   publicKeys.setVerification(verificationKey);
   final EncryptionKey encryptionKey = new EncryptionKey();
   encryptionKey.setAlgorithm(EncryptionAlgorithm.RSA2048);
   final ByteBuffer b = ByteBuffer.wrap("".getBytes());
   b.mark();
   encryptionKey.setBuffer(b);
   publicKeys.setEncryption(encryptionKey);
   client.setKeys(publicKeys);
   final UserAgent userAgent = new UserAgent();
   userAgent.setPlatform("");
   userAgent.setVersion("");
   client.setUserAgent(userAgent);
   return client;
 }
 Base1() throws GoraException, NoSuchAlgorithmException {
   final ByteBuffer b0 = ByteBuffer.wrap("0".getBytes());
   b0.mark();
   e0 =
       new com.kareebo.contacts.thrift.EncryptionKey(
           b0, com.kareebo.contacts.thrift.EncryptionAlgorithm.RSA2048);
   final User user0 = userDatastore.get(clientId.getUser());
   final Map<CharSequence, Client> clients0 = user0.getClients();
   clients0.values().iterator().next().getKeys().setEncryption(TypeConverter.convert(e0));
   final ByteBuffer b1 = ByteBuffer.wrap("1".getBytes());
   b1.mark();
   e1 =
       new com.kareebo.contacts.thrift.EncryptionKey(
           b1, com.kareebo.contacts.thrift.EncryptionAlgorithm.RSA2048);
   final Client client01 = createClient(clientId01, verificationKey);
   client01.getKeys().setEncryption(TypeConverter.convert(e1));
   clients0.put(TypeConverter.convert(clientId01.getClient()), client01);
   user0.setClients(clients0);
   final Client client10 = createClient(clientId10, verificationKey);
   final Client client11 = createClient(clientId11, verificationKey);
   final User user1 = new User();
   user1.setBlind(b0);
   final Map<CharSequence, Client> clients1 = new HashMap<>(2);
   clients1.put(TypeConverter.convert(clientId10.getClient()), client10);
   clients1.put(TypeConverter.convert(clientId11.getClient()), client11);
   user1.setClients(clients1);
   user1.setIdentities(new ArrayList<>());
   user1.setSentRequests(new ArrayList<>());
   user1.setId(clientId10.getUser());
   userDatastore.put(clientId.getUser(), user0);
   userDatastore.put(clientId10.getUser(), user1);
   final HashIdentity hashIdentity = new HashIdentity();
   hashIdentity.setHash(b0);
   final HashIdentityValue hashIdentityValue = new HashIdentityValue();
   hashIdentityValue.setConfirmers(new ArrayList<>());
   hashIdentityValue.setId(clientId10.getUser());
   hashIdentity.setHashIdentity(hashIdentityValue);
   u.setAlgorithm(HashAlgorithm.SHA256);
   u.setBuffer(b0);
   identityDataStore.put(b0, hashIdentity);
 }