use of org.openecard.gui.UserConsent in project open-ecard by ecsec.
the class GenericCryptographyProtocolTest method setUp.
@BeforeMethod
public void setUp() throws Exception {
env = new ClientEnv();
Dispatcher d = new MessageDispatcher(env);
env.setDispatcher(d);
ifd = new IFD();
ifd.setGUI(new SwingUserConsent(new SwingDialogWrapper()));
env.setIFD(ifd);
states = new CardStateMap();
EstablishContextResponse ecr = env.getIFD().establishContext(new EstablishContext());
final CardRecognitionImpl cr = new CardRecognitionImpl(env);
ListIFDs listIFDs = new ListIFDs();
CIFProvider cp = new CIFProvider() {
@Override
public CardInfoType getCardInfo(ConnectionHandleType type, String cardType) {
return cr.getCardInfo(cardType);
}
@Override
public boolean needsRecognition(byte[] atr) {
return true;
}
@Override
public CardInfoType getCardInfo(String cardType) throws RuntimeException {
return cr.getCardInfo(cardType);
}
@Override
public InputStream getCardImage(String cardType) {
return cr.getCardImage(cardType);
}
};
env.setCIFProvider(cp);
listIFDs.setContextHandle(ecr.getContextHandle());
ListIFDsResponse listIFDsResponse = ifd.listIFDs(listIFDs);
RecognitionInfo recognitionInfo = cr.recognizeCard(ecr.getContextHandle(), listIFDsResponse.getIFDName().get(0), BigInteger.ZERO);
SALStateCallback salCallback = new SALStateCallback(env, states);
ConnectionHandleType connectionHandleType = new ConnectionHandleType();
connectionHandleType.setContextHandle(ecr.getContextHandle());
connectionHandleType.setRecognitionInfo(recognitionInfo);
connectionHandleType.setIFDName(listIFDsResponse.getIFDName().get(0));
connectionHandleType.setSlotIndex(new BigInteger("0"));
salCallback.signalEvent(EventType.CARD_RECOGNIZED, new IfdEventObject(connectionHandleType));
instance = new TinySAL(env, states);
env.setSAL(instance);
// init AddonManager
UserConsent uc = new SwingUserConsent(new SwingDialogWrapper());
AddonManager manager = new AddonManager(env, uc, states, null);
instance.setAddonManager(manager);
}
use of org.openecard.gui.UserConsent in project open-ecard by ecsec.
the class BackgroundTaskTest method testWait.
@Test()
public void testWait() {
UserConsent uc = new SwingUserConsent(new SwingDialogWrapper());
UserConsentDescription ucd = new UserConsentDescription("Test background wait");
Step s = new Step("Wait Step");
s.getInputInfoUnits().add(new Text("Please wait for the background task to complete ..."));
s.setBackgroundTask(new BackgroundTask() {
@Override
public StepActionResult call() throws Exception {
// first wait
Thread.sleep(1000);
// then repeat ;-)
Step replacement = new Step("Replacement Step");
replacement.getInputInfoUnits().add(new Text("Super cool it works."));
replacement.setInstantReturn(true);
return new StepActionResult(StepActionResultStatus.REPEAT, replacement);
}
});
ucd.getSteps().add(s);
ExecutionEngine e = new ExecutionEngine(uc.obtainNavigator(ucd));
e.process();
}
use of org.openecard.gui.UserConsent in project open-ecard by ecsec.
the class UpdateDialogTest method testUpdateDialog.
@Test(enabled = false)
public void testUpdateDialog() throws MalformedURLException, InterruptedException {
String dlUrl = "https://drivers.luxtrust.lu";
UserConsent gui = new SwingUserConsent(new SwingDialogWrapper());
final UpdateDialog ud = new UpdateDialog(gui, dlUrl, true);
new Thread(new Runnable() {
@Override
public void run() {
ud.display();
}
}).start();
Thread.sleep(500);
final UpdateDialog ud2 = new UpdateDialog(gui, dlUrl, false);
new Thread(new Runnable() {
@Override
public void run() {
ud2.display();
}
}).start();
Thread.sleep(500000);
}
use of org.openecard.gui.UserConsent in project open-ecard by ecsec.
the class TCTokenRequest method findCard.
/**
* Finds a card which matches one of the give types.
*
* @param types String array containing valid card types.
* @param disp Dispatcher used to query cards and terminals.
* @param gui User consent to display messages to the user.
* @return ConnectionHandleType object of the chosen card.
*/
private static ConnectionHandleType findCard(@Nonnull String[] types, @Nonnull Context ctx) throws MissingActivationParameterException, UserCancellationException {
CardRecognition rec = ctx.getRecognition();
Map<String, String> namesAndType = new HashMap<>();
for (String type : types) {
namesAndType.put(rec.getTranslatedCardName(type), type);
}
InsertCardDialog insCardDiag = new InsertCardDialog(ctx.getUserConsent(), ctx.getCardStates(), namesAndType, ctx.getEventDispatcher());
List<ConnectionHandleType> usableCards = insCardDiag.show();
if (usableCards == null) {
// user aborted the card insertion dialog
throw new UserCancellationException(null, LANG.translationForKey(CARD_INSERTION_ABORT));
}
ConnectionHandleType handle;
if (usableCards.size() > 1) {
UserConsentDescription ucd = new UserConsentDescription(LANG.translationForKey("card.selection.heading.uc", AppVersion.getName()));
String stepTitle = LANG.translationForKey("card.selection.heading.step");
CardSelectionStep step = new CardSelectionStep(stepTitle, usableCards, ctx.getRecognition());
ArrayList<String> types2 = new ArrayList<>();
types2.addAll(namesAndType.values());
CardMonitorTask task = new CardMonitorTask(types2, step);
ctx.getEventDispatcher().add(task, EventType.CARD_REMOVED, EventType.CARD_RECOGNIZED);
step.setBackgroundTask(task);
CardSelectionAction action = new CardSelectionAction(step, usableCards, types2, ctx);
step.setAction(action);
ucd.getSteps().add(step);
UserConsent uc = ctx.getUserConsent();
UserConsentNavigator ucNav = uc.obtainNavigator(ucd);
ExecutionEngine exec = new ExecutionEngine(ucNav);
ResultStatus resStatus = exec.process();
if (resStatus != ResultStatus.OK) {
throw new MissingActivationParameterException(CARD_SELECTION_ABORT);
}
handle = action.getResult();
ctx.getEventDispatcher().del(task);
} else {
handle = usableCards.get(0);
}
return handle;
}
Aggregations