Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/akiojin/keychain


https://github.com/akiojin/keychain

Last synced: 20 days ago
JSON representation

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 |