UiccApplicationManagementService.java 7.02 KB
Newer Older
hanss's avatar
hanss committed
/**
 * @author SCP WG3, ETSI
 * @version 0.10
 * UiccApplicationManagementService defines methods to manage applications
 */
package org.etsi.scp.wg3.uicc.jcapi.userinterface;


public interface UiccApplicationManagementService {

    /**
     * load cap file in the card
     * @param relative path of the cap file, as String
     * @return ResponseAPDU Object
     */
    public APDUResponse loadPackage(String capFilePath);

    /**
     * install and makeSelectable an instance in the card
     * @param relative path of the cap file, as String
     * @param Aid of the class, as String
     * @param Aid of the instance, as String
     * @param UICC System Specific TLV as defined in 102 226 specification, as String
     * @return ResponseAPDU Object, corresponding to the GlobalPlatform command response.
     */
    default APDUResponse installApplet(String capFilePath, String classAID, String appAID, String uiccSystemSpecificParameters)
    {
        return installApplet(capFilePath, classAID, appAID, uiccSystemSpecificParameters, false);
    }

    /**
     * install and makeSelectable an instance in the card
     * @param relative path of the cap file, as String
     * @param Aid of the class, as String
     * @param Aid of the instance, as String
     * @param UICC System Specific TLV as defined in 102 226 specification, as String
     * @param immediate91XXExpected whether the card is expected to return 91XX immediately after this operation.
     *                              If {@code true}, this parameter is intended as a hint when using an SCP such as SCP80,
     *                              to NOT fetch the corresponding proactive command,
     *                              as it is expected to occur subsequently in the test case.
     * @return ResponseAPDU Object, corresponding to the GlobalPlatform command response.
     */
    APDUResponse installApplet(String capFilePath, String classAID, String appAID, String uiccSystemSpecificParameters, boolean immediate91XXExpected);
hanss's avatar
hanss committed

    /**
     * install an applet in installed state
     * @param relative path of the cap file, as String
     * @param AID of the class, as String
     * @param AID of the instance, as String
     * @param UICC System Specific TLV as defined in 102 226 specification, as String
     * @return ResponseAPDU Object, corresponding to the GlobalPlatform command response.
     */
    public APDUResponse installInstallApplet(String capFilePath, String classAID, String appAID, String uiccSystemSpecificParameters);

    /**
     * make an applet selectable (install for make selectable)
     * @param AID of the instance, as String
     * @return ResponseAPDU Object, corresponding to the GlobalPlatform command response.
     */
    default APDUResponse makeSelectableApplet(String appAID)
    {
        return makeSelectableApplet(appAID, false);
    }
    
    /**
     * make an applet selectable (install for make selectable)
     * @param AID of the instance, as String
     * @param immediate91XXExpected whether the card is expected to return 91XX immediately after this operation.
     *                              If {@code true}, this parameter is intended as a hint when using an SCP such as SCP80,
     *                              to NOT fetch the corresponding proactive command,
     *                              as it is expected to occur subsequently in the test case.
     * @return ResponseAPDU Object, corresponding to the GlobalPlatform command response.
     */
    APDUResponse makeSelectableApplet(String appAID, boolean immediate91XXExpected);
hanss's avatar
hanss committed
    
    /**
     * perform a SelectApplication APDU command
     * @param AID of instance, as String
     * @param Logical Channel number, as String
     * @return ResponseAPDU Object, containing the application response
     */
    public APDUResponse selectApplication(String AID);
	public APDUResponse selectApplication(String LogicalChannel, String AID);

    /**
     * lock an application
     * @param AID of application, as String
     * @return ResponseAPDU Object, containing the application response
     */
    default APDUResponse lockApplication(String appletAid)
    {
        return lockApplication(appletAid, false);
    }

    /**
     * lock an application
     * @param AID of application, as String
     * @param immediate91XXExpected whether the card is expected to return 91XX immediately after this operation.
     *                              If {@code true}, this parameter is intended as a hint when using an SCP such as SCP80,
     *                              to NOT fetch the corresponding proactive command,
     *                              as it is expected to occur subsequently in the test case.
     * @return ResponseAPDU Object, containing the application response
     */
    APDUResponse lockApplication(String appletAid, boolean immediate91XXExpected);

    /**
     * unlock an application
     * @param AID of application, as String
     * @return ResponseAPDU Object, containing the application response
     */
    default APDUResponse unlockApplication(String appletAid)
    {
        return unlockApplication(appletAid, false);
    }
hanss's avatar
hanss committed

    /**
     * unlock an application
     * @param AID of application, as String
     * @param immediate91XXExpected whether the card is expected to return 91XX immediately after this operation.
     *                              If {@code true}, this parameter is intended as a hint when using an SCP such as SCP80,
     *                              to NOT fetch the corresponding proactive command,
     *                              as it is expected to occur subsequently in the test case.
hanss's avatar
hanss committed
     * @return ResponseAPDU Object, containing the application response
     */
    APDUResponse unlockApplication(String appletAid, boolean immediate91XXExpected);

    /**
     * delete an applet specified by its AID
     * @param AID of applet, as String
     * @return ResponseAPDU Object
     */
    default APDUResponse deleteApplet(String AID)
    {
        return deleteApplet(AID, false);
    }
hanss's avatar
hanss committed

    /**
     * delete an applet specified by its AID
     * @param AID of applet, as String
     * @param immediate91XXExpected whether the card is expected to return 91XX immediately after this operation.
     *                              If {@code true}, this parameter is intended as a hint when using an SCP such as SCP80,
     *                              to NOT fetch the corresponding proactive command,
     *                              as it is expected to occur subsequently in the test case.
hanss's avatar
hanss committed
     * @return ResponseAPDU Object
     */
    APDUResponse deleteApplet(String AID, boolean immediate91XXExpected);
hanss's avatar
hanss committed

    /**
     * delete a package specified by its path
     * @param relative path of package, as String
     * @return ResponseAPDU Object
     */
    public APDUResponse deletePackage(String capFilePath);

    /**
     * delete a package specified by its path, and all its related applications
     * @param relative path of package, as String
     * @return APDUResponse Object
     */
    public APDUResponse deletePackageAndAllRelatedApplications(String capFilePath);
}