Minor bugfixes & renamed 'security' to 'cryptography
This commit is contained in:
parent
eb322d94a2
commit
abd25f4010
@ -7,7 +7,7 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "ch.dissem.apps.abit"
|
applicationId "ch.dissem.apps.abit"
|
||||||
minSdkVersion 15
|
minSdkVersion 19
|
||||||
targetSdkVersion 23
|
targetSdkVersion 23
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
@ -37,7 +37,7 @@ dependencies {
|
|||||||
|
|
||||||
compile 'ch.dissem.jabit:jabit-domain:0.2.1-SNAPSHOT'
|
compile 'ch.dissem.jabit:jabit-domain:0.2.1-SNAPSHOT'
|
||||||
compile 'ch.dissem.jabit:jabit-networking:0.2.1-SNAPSHOT'
|
compile 'ch.dissem.jabit:jabit-networking:0.2.1-SNAPSHOT'
|
||||||
compile 'ch.dissem.jabit:jabit-security-spongy:0.2.1-SNAPSHOT'
|
compile 'ch.dissem.jabit:jabit-cryptography-spongy:0.2.1-SNAPSHOT'
|
||||||
compile 'ch.dissem.jabit:jabit-extensions:0.2.1-SNAPSHOT'
|
compile 'ch.dissem.jabit:jabit-extensions:0.2.1-SNAPSHOT'
|
||||||
|
|
||||||
compile 'org.slf4j:slf4j-android:1.7.12'
|
compile 'org.slf4j:slf4j-android:1.7.12'
|
||||||
|
@ -43,6 +43,7 @@ import java.lang.ref.WeakReference;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import ch.dissem.apps.abit.listener.ActionBarListener;
|
import ch.dissem.apps.abit.listener.ActionBarListener;
|
||||||
import ch.dissem.apps.abit.listener.ListSelectionListener;
|
import ch.dissem.apps.abit.listener.ListSelectionListener;
|
||||||
@ -438,8 +439,9 @@ public class MainActivity extends AppCompatActivity
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTitle(CharSequence title) {
|
public void updateTitle(CharSequence title) {
|
||||||
//noinspection ConstantConditions
|
if (getSupportActionBar() != null) {
|
||||||
getSupportActionBar().setTitle(title);
|
getSupportActionBar().setTitle(title);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Label getSelectedLabel() {
|
public Label getSelectedLabel() {
|
||||||
|
@ -16,7 +16,7 @@ import ch.dissem.bitmessage.entity.payload.Broadcast;
|
|||||||
import ch.dissem.bitmessage.entity.valueobject.Label;
|
import ch.dissem.bitmessage.entity.valueobject.Label;
|
||||||
import ch.dissem.bitmessage.factory.Factory;
|
import ch.dissem.bitmessage.factory.Factory;
|
||||||
import ch.dissem.bitmessage.ports.ProofOfWorkEngine;
|
import ch.dissem.bitmessage.ports.ProofOfWorkEngine;
|
||||||
import ch.dissem.bitmessage.security.sc.SpongySecurity;
|
import ch.dissem.bitmessage.cryptography.sc.SpongyCryptography;
|
||||||
import ch.dissem.bitmessage.utils.UnixTime;
|
import ch.dissem.bitmessage.utils.UnixTime;
|
||||||
|
|
||||||
import static ch.dissem.apps.abit.util.Constants.PREFERENCE_SERVER_POW;
|
import static ch.dissem.apps.abit.util.Constants.PREFERENCE_SERVER_POW;
|
||||||
@ -27,8 +27,8 @@ import static ch.dissem.bitmessage.utils.UnixTime.DAY;
|
|||||||
/**
|
/**
|
||||||
* @author Christian Basler
|
* @author Christian Basler
|
||||||
*/
|
*/
|
||||||
public class AndroidSecurity extends SpongySecurity {
|
public class AndroidCryptography extends SpongyCryptography {
|
||||||
public AndroidSecurity() {
|
public AndroidCryptography() {
|
||||||
PRNGFixes.apply();
|
PRNGFixes.apply();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,11 +5,6 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
import android.net.wifi.SupplicantState;
|
|
||||||
import android.net.wifi.WifiManager;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import ch.dissem.apps.abit.service.Singleton;
|
import ch.dissem.apps.abit.service.Singleton;
|
||||||
import ch.dissem.apps.abit.util.Preferences;
|
import ch.dissem.apps.abit.util.Preferences;
|
||||||
@ -20,20 +15,21 @@ public class WifiReceiver extends BroadcastReceiver {
|
|||||||
public void onReceive(Context ctx, Intent intent) {
|
public void onReceive(Context ctx, Intent intent) {
|
||||||
if (Preferences.isWifiOnly(ctx)) {
|
if (Preferences.isWifiOnly(ctx)) {
|
||||||
BitmessageContext bmc = Singleton.getBitmessageContext(ctx);
|
BitmessageContext bmc = Singleton.getBitmessageContext(ctx);
|
||||||
ConnectivityManager conMan = (ConnectivityManager) ctx.getSystemService(Context
|
|
||||||
.CONNECTIVITY_SERVICE);
|
|
||||||
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
|
|
||||||
|
|
||||||
if (netInfo != null && netInfo.getType() != ConnectivityManager.TYPE_WIFI
|
if (!isConnectedToWifi(ctx) && bmc.isRunning()) {
|
||||||
&& !bmc.isRunning()) {
|
|
||||||
bmc.shutdown();
|
bmc.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isConnectedToWifi(Context ctx) {
|
public static boolean isConnectedToWifi(Context ctx) {
|
||||||
WifiManager wifiManager = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
|
NetworkInfo netInfo = getNetworkInfo(ctx);
|
||||||
SupplicantState state = wifiManager.getConnectionInfo().getSupplicantState();
|
return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI;
|
||||||
return state == SupplicantState.COMPLETED;
|
}
|
||||||
|
|
||||||
|
private static NetworkInfo getNetworkInfo(Context ctx) {
|
||||||
|
ConnectivityManager conMan = (ConnectivityManager) ctx.getSystemService(Context
|
||||||
|
.CONNECTIVITY_SERVICE);
|
||||||
|
return conMan.getActiveNetworkInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -121,12 +121,11 @@ public class AndroidAddressRepository implements AddressRepository {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
try (Cursor c = db.query(
|
||||||
TABLE_NAME, projection,
|
TABLE_NAME, projection,
|
||||||
where,
|
where,
|
||||||
null, null, null, null
|
null, null, null, null
|
||||||
);
|
)) {
|
||||||
try {
|
|
||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
while (!c.isAfterLast()) {
|
while (!c.isAfterLast()) {
|
||||||
BitmessageAddress address;
|
BitmessageAddress address;
|
||||||
@ -158,8 +157,6 @@ public class AndroidAddressRepository implements AddressRepository {
|
|||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -179,13 +176,10 @@ public class AndroidAddressRepository implements AddressRepository {
|
|||||||
|
|
||||||
private boolean exists(BitmessageAddress address) {
|
private boolean exists(BitmessageAddress address) {
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM Address WHERE address='" + address
|
try (Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM Address WHERE address='" + address
|
||||||
.getAddress() + "'", null);
|
.getAddress() + "'", null)) {
|
||||||
try {
|
|
||||||
cursor.moveToFirst();
|
cursor.moveToFirst();
|
||||||
return cursor.getInt(0) > 0;
|
return cursor.getInt(0) > 0;
|
||||||
} finally {
|
|
||||||
cursor.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@ public class AndroidInventory implements Inventory {
|
|||||||
} finally {
|
} finally {
|
||||||
c.close();
|
c.close();
|
||||||
}
|
}
|
||||||
|
LOG.info("Inventory size: " + result.size());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,20 +108,17 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont
|
|||||||
};
|
};
|
||||||
|
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
try (Cursor c = db.query(
|
||||||
LBL_TABLE_NAME, projection,
|
LBL_TABLE_NAME, projection,
|
||||||
where,
|
where,
|
||||||
null, null, null,
|
null, null, null,
|
||||||
LBL_COLUMN_ORDER
|
LBL_COLUMN_ORDER
|
||||||
);
|
)) {
|
||||||
try {
|
|
||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
while (!c.isAfterLast()) {
|
while (!c.isAfterLast()) {
|
||||||
result.add(getLabel(c));
|
result.add(getLabel(c));
|
||||||
c.moveToNext();
|
c.moveToNext();
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -174,16 +171,13 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont
|
|||||||
where = "";
|
where = "";
|
||||||
}
|
}
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
try (Cursor c = db.query(
|
||||||
TABLE_NAME, new String[]{COLUMN_ID},
|
TABLE_NAME, new String[]{COLUMN_ID},
|
||||||
where + "id IN (SELECT message_id FROM Message_Label WHERE label_id IN (" +
|
where + "id IN (SELECT message_id FROM Message_Label WHERE label_id IN (" +
|
||||||
"SELECT id FROM Label WHERE type = '" + Label.Type.UNREAD.name() + "'))",
|
"SELECT id FROM Label WHERE type = '" + Label.Type.UNREAD.name() + "'))",
|
||||||
null, null, null, null
|
null, null, null, null
|
||||||
);
|
)) {
|
||||||
try {
|
|
||||||
return c.getColumnCount();
|
return c.getColumnCount();
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,13 +239,12 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont
|
|||||||
};
|
};
|
||||||
|
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
try (Cursor c = db.query(
|
||||||
TABLE_NAME, projection,
|
TABLE_NAME, projection,
|
||||||
where,
|
where,
|
||||||
null, null, null,
|
null, null, null,
|
||||||
COLUMN_RECEIVED + " DESC"
|
COLUMN_RECEIVED + " DESC"
|
||||||
);
|
)) {
|
||||||
try {
|
|
||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
while (!c.isAfterLast()) {
|
while (!c.isAfterLast()) {
|
||||||
byte[] iv = c.getBlob(c.getColumnIndex(COLUMN_IV));
|
byte[] iv = c.getBlob(c.getColumnIndex(COLUMN_IV));
|
||||||
@ -277,8 +270,6 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont
|
|||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -52,12 +52,11 @@ public class AndroidProofOfWorkRepository implements ProofOfWorkRepository {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
try (Cursor c = db.query(
|
||||||
TABLE_NAME, projection,
|
TABLE_NAME, projection,
|
||||||
"initial_hash = X'" + Strings.hex(initialHash) + "'",
|
"initial_hash = X'" + Strings.hex(initialHash) + "'",
|
||||||
null, null, null, null
|
null, null, null, null
|
||||||
);
|
)) {
|
||||||
try {
|
|
||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
if (!c.isAfterLast()) {
|
if (!c.isAfterLast()) {
|
||||||
int version = c.getInt(c.getColumnIndex(COLUMN_VERSION));
|
int version = c.getInt(c.getColumnIndex(COLUMN_VERSION));
|
||||||
@ -69,8 +68,6 @@ public class AndroidProofOfWorkRepository implements ProofOfWorkRepository {
|
|||||||
c.getLong(c.getColumnIndex(COLUMN_EXTRA_BYTES))
|
c.getLong(c.getColumnIndex(COLUMN_EXTRA_BYTES))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
throw new RuntimeException("Object requested that we don't have. Initial hash: " +
|
throw new RuntimeException("Object requested that we don't have. Initial hash: " +
|
||||||
Strings.hex(initialHash));
|
Strings.hex(initialHash));
|
||||||
@ -85,20 +82,17 @@ public class AndroidProofOfWorkRepository implements ProofOfWorkRepository {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SQLiteDatabase db = sql.getReadableDatabase();
|
SQLiteDatabase db = sql.getReadableDatabase();
|
||||||
Cursor c = db.query(
|
List<byte[]> result = new LinkedList<>();
|
||||||
|
try (Cursor c = db.query(
|
||||||
TABLE_NAME, projection,
|
TABLE_NAME, projection,
|
||||||
null, null, null, null, null
|
null, null, null, null, null
|
||||||
);
|
)) {
|
||||||
List<byte[]> result = new LinkedList<>();
|
|
||||||
try {
|
|
||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
while (!c.isAfterLast()) {
|
while (!c.isAfterLast()) {
|
||||||
byte[] initialHash = c.getBlob(c.getColumnIndex(COLUMN_INITIAL_HASH));
|
byte[] initialHash = c.getBlob(c.getColumnIndex(COLUMN_INITIAL_HASH));
|
||||||
result.add(initialHash);
|
result.add(initialHash);
|
||||||
c.moveToNext();
|
c.moveToNext();
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
c.close();
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import android.content.Context;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ch.dissem.apps.abit.adapter.AndroidSecurity;
|
import ch.dissem.apps.abit.adapter.AndroidCryptography;
|
||||||
import ch.dissem.apps.abit.adapter.SwitchingProofOfWorkEngine;
|
import ch.dissem.apps.abit.adapter.SwitchingProofOfWorkEngine;
|
||||||
import ch.dissem.apps.abit.listener.MessageListener;
|
import ch.dissem.apps.abit.listener.MessageListener;
|
||||||
import ch.dissem.apps.abit.pow.ServerPowEngine;
|
import ch.dissem.apps.abit.pow.ServerPowEngine;
|
||||||
@ -47,7 +47,7 @@ public class Singleton {
|
|||||||
new ServerPowEngine(ctx),
|
new ServerPowEngine(ctx),
|
||||||
new ServicePowEngine(ctx)
|
new ServicePowEngine(ctx)
|
||||||
))
|
))
|
||||||
.security(new AndroidSecurity())
|
.cryptography(new AndroidCryptography())
|
||||||
.nodeRegistry(new MemoryNodeRegistry())
|
.nodeRegistry(new MemoryNodeRegistry())
|
||||||
.inventory(new AndroidInventory(sqlHelper))
|
.inventory(new AndroidInventory(sqlHelper))
|
||||||
.addressRepo(new AndroidAddressRepository(sqlHelper))
|
.addressRepo(new AndroidAddressRepository(sqlHelper))
|
||||||
|
@ -7,18 +7,6 @@ import android.os.IBinder;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import ch.dissem.apps.abit.listener.MessageListener;
|
|
||||||
import ch.dissem.apps.abit.notification.NetworkNotification;
|
|
||||||
import ch.dissem.apps.abit.repository.AndroidInventory;
|
|
||||||
import ch.dissem.apps.abit.repository.SqlHelper;
|
|
||||||
import ch.dissem.apps.abit.service.Singleton;
|
|
||||||
import ch.dissem.bitmessage.BitmessageContext;
|
|
||||||
import ch.dissem.bitmessage.networking.DefaultNetworkHandler;
|
|
||||||
import ch.dissem.bitmessage.ports.MemoryNodeRegistry;
|
|
||||||
import ch.dissem.bitmessage.security.sc.SpongySecurity;
|
|
||||||
|
|
||||||
import static ch.dissem.apps.abit.notification.NetworkNotification.ONGOING_NOTIFICATION_ID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define a Service that returns an IBinder for the
|
* Define a Service that returns an IBinder for the
|
||||||
* sync adapter class, allowing the sync adapter framework to call
|
* sync adapter class, allowing the sync adapter framework to call
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
android:viewportWidth="24.0"
|
android:viewportWidth="24.0"
|
||||||
android:viewportHeight="24.0">
|
android:viewportHeight="24.0">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FF000000"
|
android:fillColor="#FFFFFFFF"
|
||||||
android:pathData="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0,0 0,6 20H19A5,5 0,0 0,24 15C24,12.36 21.95,10.22 19.35,10.03Z"/>
|
android:pathData="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0,0 0,6 20H19A5,5 0,0 0,24 15C24,12.36 21.95,10.22 19.35,10.03Z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
android:viewportWidth="24.0"
|
android:viewportWidth="24.0"
|
||||||
android:viewportHeight="24.0">
|
android:viewportHeight="24.0">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FF000000"
|
android:fillColor="#FFFFFFFF"
|
||||||
android:pathData="M20.5,0A2.5,2.5 0,0 1,23 2.5V3A1,1 0,0 1,24 4V8A1,1 0,0 1,23 9H18A1,1 0,0 1,17 8V4A1,1 0,0 1,18 3V2.5A2.5,2.5 0,0 1,20.5 0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0,0 1,20 20H4A2,2 0,0 1,2 18V6A2,2 0,0 1,4 4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0,0 0,19 2.5V3H22V2.5A1.5,1.5 0,0 0,20.5 1Z"/>
|
android:pathData="M20.5,0A2.5,2.5 0,0 1,23 2.5V3A1,1 0,0 1,24 4V8A1,1 0,0 1,23 9H18A1,1 0,0 1,17 8V4A1,1 0,0 1,18 3V2.5A2.5,2.5 0,0 1,20.5 0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0,0 1,20 20H4A2,2 0,0 1,2 18V6A2,2 0,0 1,4 4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0,0 0,19 2.5V3H22V2.5A1.5,1.5 0,0 0,20.5 1Z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
android:viewportHeight="24.0"
|
android:viewportHeight="24.0"
|
||||||
android:viewportWidth="24.0">
|
android:viewportWidth="24.0">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FF000000"
|
android:fillColor="#FFFFFFFF"
|
||||||
android:pathData="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" />
|
android:pathData="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" />
|
||||||
</vector>
|
</vector>
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
android:viewportWidth="24.0"
|
android:viewportWidth="24.0"
|
||||||
android:viewportHeight="24.0">
|
android:viewportHeight="24.0">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FF000000"
|
android:fillColor="#FFFFFFFF"
|
||||||
android:pathData="M1,21h22L12,2 1,21zm12,-3h-2v-2h2v2zm0,-4h-2v-4h2v4z"/>
|
android:pathData="M1,21h22L12,2 1,21zm12,-3h-2v-2h2v2zm0,-4h-2v-4h2v4z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<string name="subscribed">Subscribed</string>
|
<string name="subscribed">Subscribed</string>
|
||||||
<string name="server_pow">Server POW</string>
|
<string name="server_pow">Server POW</string>
|
||||||
<string name="server_pow_summary">Trusted node does proof of work</string>
|
<string name="server_pow_summary">Trusted node does proof of work</string>
|
||||||
<string name="full_node_warning">Running a full Bitmessage uses a lot of traffic, which could be expensive on a mobile network. Are you sure you want to start a full node?</string>
|
<string name="full_node_warning">Running a full Bitmessage node uses a lot of traffic, which could be expensive on a mobile network. Are you sure you want to start a full node?</string>
|
||||||
<string name="about">About Abit</string>
|
<string name="about">About Abit</string>
|
||||||
<string name="about_summary">Open source dependencies.</string>
|
<string name="about_summary">Open source dependencies.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -15,7 +15,10 @@
|
|||||||
id="svg2"
|
id="svg2"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.91 r13725"
|
inkscape:version="0.91 r13725"
|
||||||
sodipodi:docname="icon.svg">
|
sodipodi:docname="icon.svg"
|
||||||
|
inkscape:export-filename="C:\Users\chrig\Documents\Projekte\Abit\store\icon.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90">
|
||||||
<defs
|
<defs
|
||||||
id="defs4" />
|
id="defs4" />
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
@ -26,7 +29,7 @@
|
|||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="0.35"
|
inkscape:zoom="0.35"
|
||||||
inkscape:cx="-330.71429"
|
inkscape:cx="-602.14286"
|
||||||
inkscape:cy="520"
|
inkscape:cy="520"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.2 KiB |
Loading…
Reference in New Issue
Block a user