@akanass/nestjsx-crypto
Version:
NestJS crypto module provides some functions for security features like AES key, Key pair, RSA key, PKCS12, Certificate, PEM and more
156 lines (122 loc) • 5.35 kB
Markdown
<div style="margin-bottom:20px;">
<div>
<a href="https://www.typescriptlang.org/docs/tutorial.html">
<img src="https://cdn-images-1.medium.com/max/800/1*8lKzkDJVWuVbqumysxMRYw.png"
align="right" alt="Typescript logo" width="50" height="50" style="border:none;" />
</a>
<a href="http://reactivex.io/rxjs">
<img src="http://reactivex.io/assets/Rx_Logo_S.png"
align="right" alt="ReactiveX logo" width="50" height="50" style="border:none;" />
</a>
<a href="https://nestjs.com/" target="blank">
<img src="https://nestjs.com/img/logo_text.svg" height="50" alt="Nest Logo" align="right" style="border:none;" />
</a>
</div>
</div>
# NestJSX-Crypto
`Crypto` module for [NestJS](https://nestjs.com/) framework provides some functions for security features like `AES key`, `Key pair`, `PKCS12`, `RSA key`, `Certificate`, `JWT` and more.
This module is a wrapper to use [@akanass-rx-crypto](https://github.com/akanass/rx-crypto) library inside [NestJS](https://nestjs.com/) `application` in an easy way.
**All most important crypto features in only one module.**
## Table of contents
* [Using crypto module inside NestJS application](#using-crypto-module-inside-nestjs-application)
* [Yarn or NPM it in your package.json](#yarn-or-npm-it-in-your-packagejson)
* [Import CryptoModule](#import-cryptomodule)
* [Use it anywhere](#use-it-anywhere)
* [API in Detail](#api-in-detail)
* [Contributing](#contributing)
* [Change History](#change-history)
* [Maintainers](#maintainers)
* [License](#license)
## Using crypto module inside NestJS application
### `yarn` or `npm` it in your `package.json`
```bash
$ npm install --save @akanass/nestjsx-crypto @nestjs/common rxjs reflect-metadata
or
$ yarn add @akanass/nestjsx-crypto @nestjs/common rxjs reflect-metadata
```
```javascript
"dependencies": {
"@akanass/nestjsx-crypto": "^3.0.0",
"@nestjs/common": "^8.0.11",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.4.0"
//...
}
//...
```
### import `CryptoModule`
```typescript
import { CryptoModule } from '@akanass/nestjsx-crypto';
import { Module } from '@nestjs/common';
import { NestJSServiceWithCrypto } from './crypto.service.ts';
@Module({
imports: [
CryptoModule
],
providers: [
NestJSServiceWithCrypto
]
})
export class NestJSModuleNeedsCryptoModule {}
```
### use it anywhere
You can use `AesService`, `HashService`, `PemService`, `RandomStringService`, `JwtService` and `RsaService` anywhere in your module with **dependency injection**.
```typescript
import { RsaService, NodeRSA } from '@akanass/nestjsx-crypto';
import { Injectable } from '@nestjs/common';
@Injectable()
export class NestJSServiceWithCrypto {
constructor(private readonly _rsaService: RsaService) {}
createRsaKey(): void {
this._rsaService.createKey().subscribe(
(k: NodeRSA) => console.log(k), // Show NodeRSA instance in console
e => console.error(e) // Show error in console
);
}
}
```
[Back to top](#table-of-contents)
## API in Detail
We implemented some services and to see their details go to documentation folder:
* [./documentation/AesService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/AesService.md)
* [./documentation/HashService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/HashService.md)
* [./documentation/JwtService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/JwtService.md)
* [./documentation/PemService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/PemService.md)
* [./documentation/RandomStringService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/RandomStringService.md)
* [./documentation/RsaService.md](https://github.com/akanass/nestjsx-crypto/blob/master/documentation/RsaService.md)
[Back to top](#table-of-contents)
## Contributing
To set up your development environment:
1. clone the repo to your workspace,
2. in the shell `cd` to the main folder,
3. hit `npm or yarn install`,
4. run `npm or yarn run test`.
* It will lint the code and execute all tests.
* The test coverage report can be viewed from `./coverage/lcov-report/index.html`.
[Back to top](#table-of-contents)
## Change History
* v4.0.0 (2022-07-11)
* Update packages' versions
* Latest `nestjs` version `9.0.2`
* v3.0.0 (2021-10-08)
* Update packages' versions
* Latest `@akanass/rx-crypto` version `2.2.0`
* Latest `rxjs` version `7.4.0`
* Latest `nestjs` version `8.0.11`
* Update tests
* v2.0.0 (2021-06-07)
* Update packages' versions
* Latest `@akanass/rx-crypto` version `2.0.0`
* Latest `rxjs` version `7.1.0`
* v1.1.0 (2021-01-31)
* Update packages' versions
* Fix tests
* Fix `tslint`
* v1.0.0 (2019-09-12)
* Implementation of `CryptoModule` with `AesService`, `HashService`, `JwtService`, `PemService`, `RandomStringService` and `RsaService`
* Implementation of `Observable's` operators for `AesService` and `RsaService` features.
* Related tests.
* Documentation.
## License
Copyright (c) 2021 **Nicolas Jessel** Licensed under the [MIT license](https://github.com/akanass/nestjsx-crypto/blob/master/LICENSE.md).
[Back to top](#table-of-contents)