use of org.openecard.gui.definition.UserConsentDescription in project open-ecard by ecsec.
the class EacGuiImplTest method testPinOkFirstTime.
@Test
public void testPinOkFirstTime() throws InterruptedException {
new Expectations() {
{
eacData.passwordType = "PIN";
paceMarker.getMinLength();
result = 6;
paceMarker.getMaxLength();
result = 6;
}
};
final GuiIfaceReceiver<EacGuiImpl> guiRec = new GuiIfaceReceiver<>();
final EacGuiImpl anyGuiImpl = new EacGuiImpl();
guiRec.setUiInterface(anyGuiImpl);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
UserConsentDescription uc = new UserConsentDescription("Test");
uc.getSteps().addAll(createInitialSteps());
EacNavigator nav = new EacNavigator(uc, guiRec);
ExecutionEngine exe = new ExecutionEngine(nav);
exe.process();
}
}, "GUI-Executor");
t.start();
// use the Binders API to access the values
ServerData sd = anyGuiImpl.getServerData();
assertEquals(sd.getSubject(), "Test Subject");
anyGuiImpl.selectAttributes(sd.getReadAccessAttributes(), sd.getWriteAccessAttributes());
assertEquals(anyGuiImpl.getPinStatus(), PinStatus.RC3);
assertTrue(anyGuiImpl.enterPin(null, "123456"));
// wait for executor to finish
t.join();
}
use of org.openecard.gui.definition.UserConsentDescription in project open-ecard by ecsec.
the class UnblockPINDialog method createUserConsentDescription.
private UserConsentDescription createUserConsentDescription() {
UserConsentDescription uc = new UserConsentDescription(lang.translationForKey(TITLE, AppVersion.getName()));
uc.getSteps().addAll(createSteps());
return uc;
}
use of org.openecard.gui.definition.UserConsentDescription 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