use of iso.std.iso_iec._24727.tech.schema.CardApplicationDelete in project open-ecard by ecsec.
the class TinySAL method cardApplicationDelete.
/**
* The CardApplicationDelete function deletes a card application as well as all corresponding
* data sets, DSIs, DIDs and services.
* See BSI-TR-03112-4, version 1.1.2, section 3.3.3.
*
* @param request CardApplicationDelete
* @return CardApplicationDeleteResponse
*/
@Override
public CardApplicationDeleteResponse cardApplicationDelete(CardApplicationDelete request) {
CardApplicationDeleteResponse response = WSHelper.makeResponse(CardApplicationDeleteResponse.class, WSHelper.makeResultOK());
try {
ConnectionHandleType connectionHandle = SALUtils.getConnectionHandle(request);
CardStateEntry cardStateEntry = SALUtils.getCardStateEntry(states, connectionHandle, false);
byte[] cardApplicationName = request.getCardApplicationName();
Assert.assertIncorrectParameter(cardApplicationName, "The parameter CardApplicationName is empty.");
Assert.securityConditionApplication(cardStateEntry, connectionHandle.getCardApplication(), CardApplicationServiceActionName.CARD_APPLICATION_DELETE);
// TODO: determine how the deletion have to be performed. A card don't have to support the Deletion by
// application identifier. Necessary attributes should be available in the ATR or EF.ATR.
DeleteFile delFile = new DeleteFile.Application(cardApplicationName);
delFile.transmit(env.getDispatcher(), connectionHandle.getSlotHandle());
} catch (ECardException e) {
response.setResult(e.getResult());
} catch (Exception e) {
LOG.error(e.getMessage(), e);
throwThreadKillException(e);
response.setResult(WSHelper.makeResult(e));
}
return response;
}
use of iso.std.iso_iec._24727.tech.schema.CardApplicationDelete in project open-ecard by ecsec.
the class TinySALTest method testCardApplicationDelete.
/**
* Test of cardApplicationDelete method, of class TinySAL.
*/
@Test(enabled = TESTS_ENABLED)
public void testCardApplicationDelete() {
System.out.println("cardApplicationDelete");
Set<CardStateEntry> cHandles = states.getMatchingEntries(new ConnectionHandleType());
byte[] appName = { (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74 };
CardApplicationDelete parameters = new CardApplicationDelete();
parameters.setConnectionHandle(cHandles.iterator().next().handleCopy());
parameters.setCardApplicationName(appName);
CardApplicationDeleteResponse result = instance.cardApplicationDelete(parameters);
assertEquals(ECardConstants.Major.OK, result.getResult().getResultMajor());
// get path to esign
CardApplicationPath cardApplicationPath = new CardApplicationPath();
CardApplicationPathType cardApplicationPathType = new CardApplicationPathType();
cardApplicationPathType.setCardApplication(appIdentifier_ESIGN);
cardApplicationPath.setCardAppPathRequest(cardApplicationPathType);
CardApplicationPathResponse cardApplicationPathResponse = instance.cardApplicationPath(cardApplicationPath);
// connect to esign
CardApplicationConnect cardApplicationConnect = new CardApplicationConnect();
cardApplicationConnect.setCardApplicationPath(cardApplicationPathResponse.getCardAppPathResultSet().getCardApplicationPathResult().get(0));
CardApplicationConnectResponse resultConnect = instance.cardApplicationConnect(cardApplicationConnect);
assertEquals(ECardConstants.Major.OK, resultConnect.getResult().getResultMajor());
CardApplicationList cardApplicationList = new CardApplicationList();
cardApplicationList.setConnectionHandle(cHandles.iterator().next().handleCopy());
CardApplicationListResponse cardApplicationListResponse = instance.cardApplicationList(cardApplicationList);
Iterator<byte[]> it = cardApplicationListResponse.getCardApplicationNameList().getCardApplicationName().iterator();
boolean appFound = false;
try {
while (it.hasNext()) {
byte[] val = it.next();
if (Arrays.equals(val, appName)) {
appFound = true;
}
}
assertTrue(!appFound);
} catch (Exception e) {
assertTrue(!appFound);
System.out.println(e);
}
}
Aggregations