正在查看: St.John's v1.0.9 应用的 OtpActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: St.John's v1.0.9 应用的 OtpActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.yubico.yubikit.android.ui;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import com.yubico.yubikit.android.R;
import com.yubico.yubikit.android.transport.nfc.NfcYubiKeyDevice;
import com.yubico.yubikit.android.transport.usb.UsbConfiguration;
import com.yubico.yubikit.android.transport.usb.UsbYubiKeyDevice;
import com.yubico.yubikit.android.ui.OtpKeyListener;
import com.yubico.yubikit.core.YubiKeyDevice;
import com.yubico.yubikit.core.application.CommandState;
import com.yubico.yubikit.core.util.Callback;
import com.yubico.yubikit.core.util.NdefUtils;
import com.yubico.yubikit.core.util.Pair;
import java.io.IOException;
import javax.annotation.Nullable;
public class OtpActivity extends YubiKeyPromptActivity {
public static final String EXTRA_ERROR = "error";
public static final String EXTRA_OTP = "otp";
public static final int RESULT_ERROR = 1;
private OtpKeyListener keyListener;
private int usbSessionCounter = 0;
@Override
protected void onCreate(@Nullable Bundle bundle) {
getIntent().putExtra(YubiKeyPromptActivity.ARG_ACTION_CLASS, YubiKeyNdefAction.class);
getIntent().putExtra(YubiKeyPromptActivity.ARG_ALLOW_USB, false);
super.onCreate(bundle);
getYubiKitManager().startUsbDiscovery(new UsbConfiguration().handlePermissions(false), new Callback() {
@Override
public final void invoke(Object obj) {
OtpActivity.this.m49lambda$onCreate$3$comyubicoyubikitandroiduiOtpActivity((UsbYubiKeyDevice) obj);
}
});
this.keyListener = new OtpKeyListener(new OtpKeyListener.OtpListener() {
@Override
public void onCaptureStarted() {
OtpActivity.this.helpTextView.setText(R.string.yubikit_prompt_wait);
}
@Override
public void onCaptureComplete(String str) {
Intent intent = new Intent();
intent.putExtra(OtpActivity.EXTRA_OTP, str);
OtpActivity.this.setResult(-1, intent);
OtpActivity.this.finish();
}
});
}
void m49lambda$onCreate$3$comyubicoyubikitandroiduiOtpActivity(UsbYubiKeyDevice usbYubiKeyDevice) {
this.usbSessionCounter++;
usbYubiKeyDevice.setOnClosed(new Runnable() {
@Override
public final void run() {
OtpActivity.this.m47lambda$onCreate$1$comyubicoyubikitandroiduiOtpActivity();
}
});
runOnUiThread(new Runnable() {
@Override
public final void run() {
OtpActivity.this.m48lambda$onCreate$2$comyubicoyubikitandroiduiOtpActivity();
}
});
}
void m47lambda$onCreate$1$comyubicoyubikitandroiduiOtpActivity() {
int i = this.usbSessionCounter - 1;
this.usbSessionCounter = i;
if (i == 0) {
runOnUiThread(new Runnable() {
@Override
public final void run() {
OtpActivity.this.m46lambda$onCreate$0$comyubicoyubikitandroiduiOtpActivity();
}
});
}
}
void m46lambda$onCreate$0$comyubicoyubikitandroiduiOtpActivity() {
this.helpTextView.setText(isNfcEnabled() ? R.string.yubikit_prompt_plug_in_or_tap : R.string.yubikit_prompt_plug_in);
}
void m48lambda$onCreate$2$comyubicoyubikitandroiduiOtpActivity() {
this.helpTextView.setText(R.string.yubikit_otp_touch);
}
@Override
protected void onDestroy() {
getYubiKitManager().stopUsbDiscovery();
super.onDestroy();
}
@Override
public boolean onKeyUp(int i, KeyEvent keyEvent) {
return this.keyListener.onKeyEvent(keyEvent);
}
static class YubiKeyNdefAction extends YubiKeyPromptAction {
YubiKeyNdefAction() {
}
@Override
void onYubiKey(YubiKeyDevice yubiKeyDevice, Bundle bundle, CommandState commandState, Callback<Pair<Integer, Intent>> callback) {
if (yubiKeyDevice instanceof NfcYubiKeyDevice) {
Intent intent = new Intent();
try {
intent.putExtra(OtpActivity.EXTRA_OTP, NdefUtils.getNdefPayload(((NfcYubiKeyDevice) yubiKeyDevice).readNdef()));
callback.invoke(new Pair<>(-1, intent));
} catch (IOException e) {
intent.putExtra("error", e);
callback.invoke(new Pair<>(1, intent));
}
}
}
}
}