Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/akiojin/keychain
https://github.com/akiojin/keychain
Last synced: 20 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/akiojin/keychain
- Owner: akiojin
- Created: 2022-03-15T14:38:33.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T16:38:52.000Z (12 months ago)
- Last Synced: 2024-10-12T05:04:58.999Z (about 1 month ago)
- Language: TypeScript
- Size: 453 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# keychain
This package uses the security command to manipulate the keychain.
## Usage
### Import
```js
import { Keychain, KeychainFile } from '@akiojin/keychain'
```### `Keychain`
```js
const keychain = Keychain.GenerateKeychainPath('test')await Keychain.CreateKeychain(keychain, '')
await Keychain.UnlockKeychain(keychain, '')
await Keychain.SetKeychainTimeout(keychain, 21600)
await Keychain.SetDefaultKeychain(keychain)
await Keychain.SetLoginKeychain(keychain)
await Keychain.SetListKeychain(keychain)
await Keychain.DeleteKeychain(keychain)await Keychain.SetDefaultKeychain(Keychain.GetDefaultLoginKeychainPath())
```### `KeychainFile`
```js
const keychainPath = await Keychain.CreateKeychain('', '')
const keychain = new KeychainFile(keychainPath)
keychain.SetPassword('')
keychain.Lock()
keychain.Unlock()
keychain.SetDefault()
``````js
const keychain = await KeychainFile.Open('')
keychain.Lock()
keychain.Unlock('')
keychain.SetDefault()
```## Reference
### class `Keychain`
#### `static GenerateKeychainPath(name: string): string`
##### Description
Returns the keychain path given the keychain name.
This method does not create the keychain, only generates the path.##### Arguments
| Name | Type | Description |
| ------ | -------- | ------------------ |
| `name` | `string` | The keychain name. |##### Return
| Type | Description |
| -------- | ------------- |
| `string` | keychain path |#### `static GetDefaultLoginKeychainPath(): string`
##### Description
Returns the path to `login.keychain-db`, which exists by default.
##### Return
| Type | Description |
| -------- | ------------- |
| `string` | keychain path |#### `static CreateKeychain(keychain: string, password: string): Promise`
##### Description
Create a new keychain and set a password.
Immediately after creation, the keychain is unlocked.##### Arguments
| Name | Type | Description |
| ---------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `keychain` | `string` | Path of the keychain. If only the keychain name is specified, it will be placed in `~/Library/Keychains`. |
| `password` | `string` | Keychain password |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static ImportCertificateFromFile(keychain: string, certificate: string, passphrase: string): Promise`
##### Description
Import the certificate into the specified keychain.
The keychain must be unlocked.##### Arguments
| Name | Type | Description |
| ------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |
| `certificate` | `string` | Certificate Path |
| `passphrase` | `string` | Certificate passphrase |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static ChangeKeychainPassword(keychain: string, oldPassword: string, newPassword: string): Promise`
##### Description
Change the password set for the keychain.
##### Arguments
| Name | Type | Description |
| ------------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `keychain` | `string` | Path of the keychain. If only the keychain name is specified, it will be placed in `~/Library/Keychains`. |
| `oldPassword` | `string` | Old password |
| `newPassword` | `string` | New password |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static LockKeychain(keychain?: string): Promise`
##### Description
Lock keychain.
If `keychain` is omitted, locks default keychains.##### Arguments
| Name | Type | Description |
| ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain?` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static LockKeychainAll(): Promise`
##### Description
Locks all keychains.
##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static UnlockKeychain(keychain: string, password: string): Promise`
#### `static UnlockKeychain(password: string): Promise`
#### `static UnlockKeychain(keychain?: string, password?: string): Promise`
##### Description
Unlock the keychain.
Unlock the default keychain if the keyholder is omitted.##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |
| `password` | `string` | Keychain password |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static SetKeychainTimeout(keychain: string, seconds: number)`
##### Description
Sets the number of timeout seconds before the keychain locks without operation.
This setting also sets the lock at sleep at the same time.##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |
| `seconds` | `number` | Timeout in seconds (omitting this option specifies "no timeout") |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static DeleteKeychain(keychain: string): Promise`
##### Description
Deletes the specified keychain.
##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static async GetDefaultKeychain(): Promise`
##### Description
Returns the default keychain.
##### Return
| Type | Description |
| ---------- | ----------------------- |
| `string[]` | Array of keychain paths |#### `static SetDefaultKeychain(keychain: string): Promise`
##### Description
Sets the specified keychain as the default keychain.
##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static ShowDefaultKeychain(): Promise`
##### Description
Display the default keychain on the console.
##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static SetLoginKeychain(keychain: string): Promise`
##### Description
Set the specified keychain as the login keychain.
##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static ShowLoginKeychain(): Promise`
##### Description
Display the login keychain on the console.
##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static SetListKeychain(keychain: string): Promise`
##### Description
Set in the key chain list.
This method overrides any other keychain list that may have been set.##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static SetListKeychains(keychains: string[]): Promise`
##### Description
Set in the key chain list.
This method overrides any other keychain list that may have been set.##### Arguments
| Name | Type | Description |
| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychains` | `string[]` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static AllowAccessForAppleTools(keychain: string, password: string): Promise`
##### Description
Set permissions for Apple tools for the keychain.
Since this method is an access permission to the signature, the signature must have been imported in advance.##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |
| `password` | `string` | Keychain password |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static FindGenericPassword(service: string): Promise`
##### Description
Retrieves passwords for specified services and displays them in the console.
##### Arguments
| Name | Type | Description |
| --------- | -------- | ------------------ |
| `service` | `string` | Services to search |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |#### `static ShowCodeSigning(keychain: string): Promise`
##### Description
Displays a list of certificates imported into the specified keychain.
##### Arguments
| Name | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `keychain` | `string` | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from `~/Library/Keychains/`. |##### Return
| Type | Description |
| -------- | ----------- |
| `number` | Exit code |