-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add support for enumerating all certificates COMPASS-4105
This is conceptually very similar to the functionality exposed by https://github.com/ukoloff/win-ca, but this variant doesn't crash, leak memory, break when used by multiple threads, etc. Since this package already accesses the Windows system CA stores, it feels like a natural place to add this here.
- Loading branch information
Showing
6 changed files
with
227 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,50 @@ | ||
# win-export-certificate-and-key | ||
|
||
Export a certificate and its corresponding private key from the Windows CA store. | ||
Access the Windows system certificate and key store. | ||
This module is a native addon. It will only successfully work on Windows. | ||
No prebuilt binaries are currently provided. | ||
|
||
This module returns a single certificate (and by default its private key) | ||
## API | ||
|
||
### `exportCertificateAndPrivateKey(opts?)` | ||
|
||
Export a certificate and its corresponding private key from the Windows CA store. | ||
|
||
Valid options are: | ||
|
||
- `subject`: Subject line of the certificate/key as a string. | ||
- `thumbprint`: Thumbprint of the certificate/key as a Uint8Array. | ||
Either `subject` or `thumbprint` must be provided. | ||
- `store`: Optional Windows certificate store name. Default: `MY`. | ||
- `storeTypeList`: Optional array of Windows certificate store types | ||
to try. Default: `['CERT_SYSTEM_STORE_LOCAL_MACHINE', 'CERT_SYSTEM_STORE_CURRENT_USER']`. | ||
- `requirePrivKey`: Boolean. If set, the | ||
`REPORT_NO_PRIVATE_KEY | REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY` flags will | ||
be passed to the wincrypt API. | ||
|
||
This function returns a single certificate (and by default its private key) | ||
combination as a .pfx file, along with a random passphrase that has been | ||
used for encrypting the file. | ||
It will throw an exception if no relevant certificate could be found. | ||
The certificate in question can be specified either through its subject line | ||
string or its thumbprint. | ||
|
||
### `exportSystemCertificates(opts?)` | ||
|
||
Export all system certificates (no private keys) matching the given | ||
options. | ||
|
||
Valid options are: | ||
|
||
- `store`: Optional Windows certificate store name. Default: `ROOT`. | ||
- `storeTypeList`: Optional array of Windows certificate store types | ||
to try. Default: `['CERT_SYSTEM_STORE_LOCAL_MACHINE', 'CERT_SYSTEM_STORE_CURRENT_USER']`. | ||
|
||
This functions returns an array of PEM-formatted certificates. | ||
(Note that this can be a fairly slow operation.) | ||
|
||
## Testing | ||
|
||
You need to import `testkeys\certificate.pfx` manually into your local | ||
You need to import `testkeys\certificate.pfx` manually into your local | ||
CA store in order for the tests to pass. Make sure to import that certificate | ||
with the "exportable private key" option. The password for the file is `pass`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.