Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/animo/expo-secure-environment


https://github.com/animo/expo-secure-environment

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# expo-secure-environment

Cryptographic operations using the devices Secure Environment (HSM,SE,etc.) locked behind biometric authentication

Currently Android API 30+ is supported and the minimum supported version of iOS for Expo.

## Supported cryptographic algorithms

**key algorithm**: Secp256r1

**signature algorithm**: ECDSA with SHA256

## Create a key pair

```typescript
import { generateKeypair } from "@animo-id/expo-secure-environment";

const myId = "keypair-id";

// Make sure it is backed by biometrics
generateKeypair(myId, true);
```

## Get the public bytes by the id

Returns the compressed form of a P-256 public key (and not the DER-encoded SubjectPublicKeyInfo)

```typescript
import {
generateKeypair,
getPublicBytesForKeyId,
} from "@animo-id/expo-secure-environment";

const myId = "keypair-id";

// Make sure it is backed by biometrics
generateKeypair(myId, true);

const publicBytes: Uint8Array = getPublicBytesForKeyId(myId);
```

## Sign data

Returns the raw signature (and not a DER-Encoded ECDA-Sig-Value)

```typescript
import {
generateKeypair,
sign
} from "@animo-id/expo-secure-environment";

const myId = "keypair-id";

// Make sure it is backed by biometrics
generateKeypair(myId, true);

// Make sure that when we sign we pass the third argument as true to indicate we would like to use biometrics
const signature = sign(myId, new Uint8Array(10).fill(7), true);
```