Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

General

The UAF Client App API is a wrapper for all calls to the SurePasID FIDO Server and to the FIDO UAF Client.

SurePassID Server Initialization

Before using theĀ UAF Client App API, the SurePassID Server must be configured. The SurePassID server name must be set. The tenant account name and key are optional.

Code Block
languagejava
themeEclipse
titleSurePassID Server Initialization
import com.surepassid.server.task.SurePassServerTask;

public class UafDemoApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        SurePassServerTask.setSurePassServer("sandbox.surepassid.com");
        SurePassServerTask.setSurePassAccountName("TENANT_ACCOUNT_NAME");
        SurePassServerTask.setSurePassAccountKey("TENANT_ACCOUNT_KEY");
    }
}

UAF Registration


Code Block
languagejava
themeEclipse
titleUAF Registration
linenumberstrue
import com.surepassid.fido.uaf.application.SurePassIdUaf;
import com.surepassid.fido.uaf.client.UafClientErrorCode;
import com.surepassid.fido.uaf.client.UafClientIntent;

public class UafRegistrationFragment extends Fragment {
    private SurePassIdUaf mUaf;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.uaf_register_fragment, container, false);

        final Button button = view.findViewById(R.id.uaf_register_button);

        button.setOnClickListener(v -> {
            /**
             * Register a new UAF authenticator for the current user.
             */
            mUaf.processRegistration(
                    new SurePassIdUaf.ErrorCallback() {
                        /**
                         * This operation always triggers the error callback and return NO_ERROR if the
                         * registration was successful. Otherwise, the appropriate ErrorCode is returned.
                         *
                         * If the registration was successful and the user signed in with their uanename
                         * and password, the sessionToken obtained from validate user is invalidated.
                         * The user must re-authenticate via UAF.processAuthentication.
                         *
                         * @param errorCode ErrorCode as defined in the FIDO UAF Application API and
                         *                  Transport Binding Specification
                         */
                        @Override
                        public void onErrorResult(UafClientErrorCode errorCode) {

                        }
                    }
            );
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mUaf = new SurePassIdUaf(this.getActivity());
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case UafClientIntent.REQUEST_CODE_UAF_OPERATION:
                // Forward the result to SurePassIdUaf.onActivityResult
                mUaf.onActivityResult(requestCode, resultCode, intent);
                break;
        }
    }
}

UAF Authentication


Code Block
languagejava
themeEclipse
titleUAF Authentication
linenumberstrue
import com.surepassid.fido.uaf.application.SurePassIdUaf;
import com.surepassid.fido.uaf.client.UafClientErrorCode;
import com.surepassid.fido.uaf.client.UafClientIntent;

public class UafAuthenticationFragment extends Fragment {
    private SurePassIdUaf mUaf;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.uaf_authenticate_fragment, container, false);

        final Button button = view.findViewById(R.id.uaf_authenticate_button);

        button.setOnClickListener(v -> {

            /**
             * Perform a UAF Authentication operation.
             */
            mUaf.processAuthentication(
                    new SurePassIdUaf.AuthenticationCallback() {
                        /**
                         * If the authentication operation was successful, the session token is returned.
                         *
                         * @param sessionToken
                         */
                        @Override
                        public void onAuthenticationResult(String sessionToken) {

                        }
                    },
                    new SurePassIdUaf.ErrorCallback() {
                        /**
                         * If this operation failed, the appropriate ErrorCode is returned.
                         *
                         * @param errorCode ErrorCode as defined in the FIDO UAF Application API and
                         *                  Transport Binding Specification
                         */
                        @Override
                        public void onErrorResult(UafClientErrorCode errorCode) {

                        }
                    }
            );
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mUaf = new SurePassIdUaf(this.getActivity());
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case UafClientIntent.REQUEST_CODE_UAF_OPERATION:
                // Forward the result to SurePassIdUaf.onActivityResult
                mUaf.onActivityResult(requestCode, resultCode, intent);
                break;
        }
    }
}

UAF Transaction Confirmation


Code Block
languagejava
themeEclipse
titleUAF Transaction Confirmation
linenumberstrue
import com.surepassid.fido.uaf.application.SurePassIdUaf;
import com.surepassid.fido.uaf.client.UafClientErrorCode;
import com.surepassid.fido.uaf.client.UafClientIntent;

public class UafTransactionConfirmationFragment extends Fragment {
    private SurePassIdUaf mUaf;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.uaf_transaction_fragment, container, false);

        final Button button = view.findViewById(R.id.uaf_transaction_button);

        button.setOnClickListener(v -> {
            /**
             * Perform a UAF Transaction Confirmation operation.
             *
             * TODO: This may require a parameter to specify the desired transaction.
             */
            mUaf.processTransactionConfirmation(
                    new SurePassIdUaf.ErrorCallback() {
                        /**
                         * This operation always triggers the error callback and return NO_ERROR if the
                         * transaction confirmation was successful. Otherwise, the appropriate
                         * ErrorCode is returned.
                         *
                         * @param errorCode ErrorCode as defined in the FIDO UAF Application API and
                         *                  Transport Binding Specification
                         */
                        @Override
                        public void onErrorResult(UafClientErrorCode errorCode) {

                        }
                    }
            );
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mUaf = new SurePassIdUaf(this.getActivity());
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case UafClientIntent.REQUEST_CODE_UAF_OPERATION:
                // Forward the result to SurePassIdUaf.onActivityResult
                mUaf.onActivityResult(requestCode, resultCode, intent);
                break;
        }
    }
}

UAF Deregistration


Code Block
languagejava
themeEclipse
titleUAF Deregistration
linenumberstrue
import com.surepassid.fido.uaf.application.SurePassIdUaf;
import com.surepassid.fido.uaf.client.UafClientErrorCode;
import com.surepassid.fido.uaf.client.UafClientIntent;

public class UafDeregistrationFragment extends Fragment {
    private SurePassIdUaf mUaf;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.uaf_deregister_fragment, container, false);

        final Button button = view.findViewById(R.id.uaf_deregister_button);

        button.setOnClickListener(v -> {
            /**
             * Used to deregister UAF Authenticators.
             */
            mUaf.processDeregistration(
                    new SurePassIdUaf.ErrorCallback() {
                        /**
                         * This operation always triggers the error callback and return NO_ERROR if the
                         * transaction confirmation was successful. Otherwise, the appropriate
                         * ErrorCode is returned.
                         *
                         * @param errorCode ErrorCode as defined in the FIDO UAF Application API and
                         *                  Transport Binding Specification
                         */
                        @Override
                        public void onErrorResult(UafClientErrorCode errorCode) {

                        }
                    }
            );
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mUaf = new SurePassIdUaf(this.getActivity());
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case UafClientIntent.REQUEST_CODE_UAF_OPERATION:
                // Forward the result to SurePassIdUaf.onActivityResult
                mUaf.onActivityResult(requestCode, resultCode, intent);
                break;
        }
    }
}