mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-10-20 23:11:24 +02:00
* feat: adding the ability to encrypt/decrypt data based on the biometric auth Adding the method biometricCipher() that allows to use the biometric authentication to use a generated key from android that can be accessed only through the biometric authentication. The method uses this key to encrypt/decrypt the data provided by the caller in the "options" parameter, with "dataToEncrypt" or "dataToDecrypt" filled. Changes were done both on Kotlin, Rust and JS sides. * Improving the way we encrypt data by allowing only if the biometric was successful. * Adding a warning on the JS side * Adding doc changes in readme.md * Adding doc changes in readme.md * Update README.md - it was updated incomplete * update docs * enhance error handling * update example --------- Co-authored-by: Lucas Nogueira <lucas@tauri.app>
149 lines
4.1 KiB
Markdown
149 lines
4.1 KiB
Markdown

|
|
|
|
Prompt the user for biometric authentication on Android, iOS and macOS. On Android, it also allows encrypting and decrypting data with keys protected by biometric authentication.
|
|
|
|
| Platform | Supported |
|
|
| -------- | ----------------------------- |
|
|
| Linux | x |
|
|
| Windows | x |
|
|
| macOS | ✓ |
|
|
| Android | ✓ |
|
|
| iOS | ✓ (no biometric cryptography) |
|
|
|
|
## Install
|
|
|
|
_This plugin requires a Rust version of at least **1.65**_
|
|
|
|
There are three general methods of installation that we can recommend.
|
|
|
|
1. Use crates.io and npm (easiest, and requires you to trust that our publishing pipeline worked)
|
|
2. Pull sources directly from Github using git tags / revision hashes (most secure)
|
|
3. Git submodule install this repo in your tauri project and then use file protocol to ingest the source (most secure, but inconvenient to use)
|
|
|
|
Install the Core plugin by adding the following to your `Cargo.toml` file:
|
|
|
|
`src-tauri/Cargo.toml`
|
|
|
|
```toml
|
|
[dependencies]
|
|
tauri-plugin-biometric = "2.0.0"
|
|
# alternatively with Git:
|
|
tauri-plugin-biometric = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
|
|
```
|
|
|
|
You can install the JavaScript Guest bindings using your preferred JavaScript package manager:
|
|
|
|
<!-- Add the branch for installations using git! -->
|
|
|
|
```sh
|
|
pnpm add @tauri-apps/plugin-biometric
|
|
# or
|
|
npm add @tauri-apps/plugin-biometric
|
|
# or
|
|
yarn add @tauri-apps/plugin-biometric
|
|
```
|
|
|
|
## Usage
|
|
|
|
First you need to register the core plugin with Tauri:
|
|
|
|
`src-tauri/src/lib.rs`
|
|
|
|
```rust
|
|
fn main() {
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_biometric::init())
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|
|
```
|
|
|
|
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
|
|
|
|
```javascript
|
|
import {
|
|
checkStatus,
|
|
authenticate,
|
|
biometricCipher
|
|
} from '@tauri-apps/plugin-biometric'
|
|
|
|
const status = await checkStatus()
|
|
if (status.isAvailable) {
|
|
await authenticate('Open your wallet')
|
|
}
|
|
|
|
// ... or using biometric-protected cryptography:
|
|
if (status.isAvailable) {
|
|
const encryptOptions = {
|
|
dataToEncrypt: getData()
|
|
}
|
|
const encrypted = await biometricCipher(
|
|
'Login without typing password',
|
|
encryptOptions
|
|
)
|
|
|
|
const decryptOptions = {
|
|
dataToDecrypt: encrypted.data
|
|
}
|
|
const originalData = await biometricCipher(
|
|
'Login without typing password',
|
|
decryptOptions
|
|
)
|
|
}
|
|
```
|
|
|
|
## Permissions
|
|
|
|
The default permission set (`biometric:default`) only allows `status` and `authenticate`. To use `biometricCipher`, add the `biometric:allow-biometric-cipher` permission to your capability:
|
|
|
|
```json
|
|
{
|
|
"permissions": ["biometric:default", "biometric:allow-biometric-cipher"]
|
|
}
|
|
```
|
|
|
|
## Contributing
|
|
|
|
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
|
|
|
|
## Contributed By
|
|
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<td align="center" valign="middle">
|
|
<a href="https://crabnebula.dev" target="_blank">
|
|
<img src="contributors/crabnebula.svg" alt="CrabNebula" width="283">
|
|
</a>
|
|
</td>
|
|
<td align="center" valign="middle">
|
|
<a href="https://impierce.com" target="_blank">
|
|
<img src="contributors/impierce.svg" alt="Impierce" width="283" height="90">
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
## Partners
|
|
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<td align="center" valign="middle">
|
|
<a href="https://crabnebula.dev" target="_blank">
|
|
<img src="https://github.com/tauri-apps/plugins-workspace/raw/v2/.github/sponsors/crabnebula.svg" alt="CrabNebula" width="283">
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).
|
|
|
|
## License
|
|
|
|
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
|
|
|
|
MIT or MIT/Apache 2.0 where applicable.
|