JSPM

  • Created
  • Published
  • Downloads 22330
  • Score
    100M100P100Q161258F
  • License Apache-2.0

Passkey stamper for React Native

Package Exports

    Readme

    @turnkey/react-native-passkey-stamper

    npm

    This package contains a React Native passkey stamper. It uses react-native-passkey to do the heavy lifting. This stamper is meant to be used with @turnkey/http

    Installation

    • Install both react-native-passkey and @turnkey/react-native-passkey-stamper (this package) in your React Native project.
    • Set up provisioning correctly to make sure your app is signed (needed for passkey functionality)
    • Serve an apple-app-site-association file from your domain to reference your application. See more details here
    • Add a new "Associated Domains" capability for web credentials (webcredentials:your.site.com)

    Usage

    Create a new passkey

    import { createPasskey } from "@turnkey/react-native-passkey-stamper";
    
    // Returns authenticator params that can be used with sub-org creation, user creation, etc.
    const authenticatorParams = await createPasskey({
      // Won't be visible to users, this is the name of the Turnkey resource
      authenticatorName: "End-User Passkey",
      rp: {
        id: "your.site.com",
        name: "Your App",
      },
      user: {
        // This ID isn't visible to users
        id: String(Date.now()),
        // ...but name and display names are. This is what's shown in the passkey prompt
        name: "Some Name",
        // displayName should be the same as "name"
        displayName: "Some Name",
      },
    });

    Use an existing passkey

    import { PasskeyStamper } from "@turnkey/react-native-passkey-stamper";
    import { TurnkeyClient } from "@turnkey/http";
    
    const stamper = new PasskeyStamper({
      rpId: "your.site.com",
    });
    
    // New HTTP client able to sign with passkeys!
    const httpClient = new TurnkeyClient(
      { baseUrl: "https://api.turnkey.com" },
      stamper
    );
    
    // Now, send authenticated requests
    httpClient.signTransaction(...)

    Demo app

    Head over to this repository for a fully functional React Native app built with Expo.