导航菜单

页面标题

页面副标题

St.John's v1.0.9 - OtpActivity.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));
                }
            }
        }
    }
}