package de.persosim.simulator.cardobjects; import java.util.Collection; import de.persosim.simulator.exception.AccessDeniedException; import de.persosim.simulator.seccondition.SecCondition; import de.persosim.simulator.tlv.ConstructedTlvDataObject; import de.persosim.simulator.tlv.PrimitiveTlvDataObject; import de.persosim.simulator.tlv.TlvTag; /** * Implementation for an ISO7816 DF in the file hierarchy. * * @author mboonk * */ public class DedicatedFile extends AbstractFile { protected DedicatedFileIdentifier dedicatedFileName; private SecCondition createFiles; public DedicatedFile(FileIdentifier fileIdentifier, DedicatedFileIdentifier dedicatedFileName) { this(fileIdentifier, dedicatedFileName, SecCondition.ALLOWED); } public DedicatedFile(FileIdentifier fileIdentifier, DedicatedFileIdentifier dedicatedFileName, SecCondition createFilesAccess){ super(fileIdentifier); this.dedicatedFileName = dedicatedFileName; this.createFiles = createFilesAccess; } @Override public void addChild(CardObject newChild) throws AccessDeniedException { if (securityStatus == null || securityStatus.checkAccessConditions(getLifeCycleState(), createFiles)){ super.addChild(newChild); } else { throw new AccessDeniedException("The access conditions for add file were not fulfilled"); } } @Override public ConstructedTlvDataObject getFileControlParameterDataObject() { ConstructedTlvDataObject result = super.getFileControlParameterDataObject(); result.addTlvDataObject(new PrimitiveTlvDataObject(new TlvTag((byte)0x84), dedicatedFileName.getDedicatedFileName())); return result; } @Override public Collection<CardObjectIdentifier> getAllIdentifiers() { Collection<CardObjectIdentifier> result = super.getAllIdentifiers(); result.add(dedicatedFileName); return result; } }