Try Hardware Security SDK in your app today.
Security Keys

FIDO Security Keys

Supports a wide range of Security Keys, such as the YubiKeys 4 and 5 series as well as Nitrokeys. Security Keys can be directly connected over USB-C and NFC. USB-A keys require an additional USB OTG cable.

NFC Sweetspot

Each smartphone has a different sweetspot where the NFC connection works best. Our Hardware Security SDK shows this spot to make it easy for the user to place their NFC Security Key.
Hardware Security SDK

No Additional Cloud Services
No Google Play Services

We are not selling yet another SaaS login solution. Our SDK is a standard-compliant clean-room implementation that works with any FIDO server. In contrast to Google's FIDO APIs, our SDK works without Google Play Services. Thus, it also works in countries where phones do not ship with Google Play.

Standards Compliant

The FIDO Alliance does not certify native FIDO clients. However, our SDK has been successfully tested with a wide variety of FIDO authenticators. It has been implemented by carefully following the FIDO standards.

Add FIDO U2F to Your App

public class MainActivity extends AppCompatActivity implements OnFidoAuthenticateCallback {

    private void showFidoAuthenticateDialog() {
        // Make an authentication request to the server. In a real application, this would perform
        // an HTTP request. The server will send us a challenge based on the FIDO key we registered
        // before, asking us to prove we still have the same key.
        FidoAuthenticateRequest authenticateRequest =
                FidoAuthenticateRequest.create(fidoAppId, fidoFacetId, authChallenge, keyHandle);

        // This opens a UI fragment, which takes care of the user interaction as well as all FIDO internal
        // operations for us, and triggers a callback to onAuthenticateResponse(FidoAuthenticateResponse).
        FidoDialogFragment fidoDialogFragment = FidoDialogFragment.newInstance(authenticateRequest);
        fidoDialogFragment.show(getSupportFragmentManager());
    }

    @Override
    public void onFidoAuthenticateResponse(@NonNull FidoAuthenticateResponse authenticateResponse) {
        // Forward the authentication response from the FIDO Security Key to our server application.
        // The server will check that the signature matches the FIDO key we registered with, and if
        // so we have successfully logged in.
    }

}
Complete Guide
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView webView = findViewById(R.id.webview);

        // Installs the FIDO WebView Bridge into your login WebView
        webView.getSettings().setJavaScriptEnabled(true);
        WebViewFidoBridge webViewFidoBridge = WebViewFidoBridge.createInstanceForWebView(this, webView);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
                webViewFidoBridge.delegateShouldInterceptRequest(view, request);
                return super.shouldInterceptRequest(view, request);
            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                webViewFidoBridge.delegateOnPageStarted(view, url, favicon);
            }
        });

        webView.loadUrl("https://u2f.hwsecurity.dev");
    }

}
Complete Guide

Technical Support

If you ever need help, you get direct access to the developers and cryptographers who built the product. Whether you have questions getting started or you want to know how to best integrate SDK features into your app, we’re here to help you find a solution.