package de.persosim.simulator.protocols; import java.security.GeneralSecurityException; import java.security.Key; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; import java.security.spec.ECParameterSpec; import de.persosim.simulator.crypto.DomainParameterSet; import de.persosim.simulator.crypto.DomainParameterSetEcdh; import de.persosim.simulator.crypto.certificates.CvEcPublicKey; import de.persosim.simulator.crypto.certificates.CvPublicKey; import de.persosim.simulator.tlv.ConstructedTlvDataObject; public class Tr03110UtilsDefaultProvider implements Tr03110UtilsProvider { @Override public CvPublicKey parseCvPublicKey(ConstructedTlvDataObject publicKeyData) { try{ return new CvEcPublicKey(publicKeyData); } catch(IllegalArgumentException | GeneralSecurityException e) { return null; } } @Override public DomainParameterSet getDomainParameterSetFromKey(Key key) { if((key instanceof ECPublicKey) || (key instanceof ECPrivateKey)) { ECParameterSpec ecParameterSpec; if(key instanceof ECPublicKey) { ecParameterSpec = ((ECPublicKey) key).getParams(); } else{ ecParameterSpec = ((ECPrivateKey) key).getParams(); } return new DomainParameterSetEcdh(ecParameterSpec.getCurve(), ecParameterSpec.getGenerator(), ecParameterSpec.getOrder(), ecParameterSpec.getCofactor()); } return null; } }