diff --git a/components/net/sf/briar/crypto/ErasableKeyImpl.java b/components/net/sf/briar/crypto/ErasableKeyImpl.java index b50c424797e1938d2bf4320670f2ec4cdc888cfd..b1b43ea0e22c564ed2b45fb399baffce88bcba04 100644 --- a/components/net/sf/briar/crypto/ErasableKeyImpl.java +++ b/components/net/sf/briar/crypto/ErasableKeyImpl.java @@ -13,8 +13,8 @@ class ErasableKeyImpl implements ErasableKey { private final byte[] key; private final String algorithm; - private Collection<byte[]> copies = null; - private boolean erased = false; + private Collection<byte[]> copies = null; // Locking: this + private boolean erased = false; // Locking: this ErasableKeyImpl(byte[] key, String algorithm) { this.key = key; @@ -25,7 +25,7 @@ class ErasableKeyImpl implements ErasableKey { return algorithm; } - public byte[] getEncoded() { + public synchronized byte[] getEncoded() { if(erased) throw new IllegalStateException(); byte[] b = new byte[key.length]; System.arraycopy(key, 0, b, 0, key.length); @@ -42,7 +42,7 @@ class ErasableKeyImpl implements ErasableKey { return new ErasableKeyImpl(getEncoded(), algorithm); } - public void erase() { + public synchronized void erase() { if(erased) throw new IllegalStateException(); ByteUtils.erase(key); if(copies != null) for(byte[] b : copies) ByteUtils.erase(b);