diff --git a/src/main/java/com/licel/jcardsim/crypto/ECKeyImpl.java b/src/main/java/com/licel/jcardsim/crypto/ECKeyImpl.java index 206d00bb..29678594 100644 --- a/src/main/java/com/licel/jcardsim/crypto/ECKeyImpl.java +++ b/src/main/java/com/licel/jcardsim/crypto/ECKeyImpl.java @@ -60,7 +60,11 @@ public abstract class ECKeyImpl extends KeyImpl implements ECKey { public ECKeyImpl(byte keyType, short keySize) { this.size = keySize; this.type = keyType; - setDomainParameters(getDefaultsDomainParameters(type, size)); + try { + setDomainParameters(getDefaultsDomainParameters(type, size)); + } catch (CryptoException e) { + clearKeyInternal(); + } } /** @@ -79,18 +83,23 @@ public ECKeyImpl(ECKeyParameters parameters) { setDomainParameters(parameters.getParameters()); } - public void clearKey() { + private void clearKeyInternal() { a.clear(); b.clear(); g.clear(); r.clear(); fp.clear(); k = 0; + isKInitialized = false; e1 = 0; e2 = 0; e3 = 0; } + public void clearKey() { + clearKeyInternal(); + } + protected boolean isDomainParametersInitialized() { return (a.isInitialized() && b.isInitialized() && g.isInitialized() && r.isInitialized() && isKInitialized && (fp.isInitialized() || k != 0));