Skip to content

Commit

Permalink
Fixing the format
Browse files Browse the repository at this point in the history
  • Loading branch information
invisal committed Nov 14, 2022
1 parent 6bdfb7b commit 48dfbc2
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 111 deletions.
18 changes: 9 additions & 9 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"editor.tabSize": 2,
"deno.enable": true,
"files.eol": "\n",
"editor.formatOnSave": true,
"[typescript]": {
"editor.defaultFormatter": "denoland.vscode-deno"
}
}
{
"editor.tabSize": 2,
"deno.enable": true,
"files.eol": "\n",
"editor.formatOnSave": true,
"[typescript]": {
"editor.defaultFormatter": "denoland.vscode-deno"
}
}
187 changes: 96 additions & 91 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,91 +1,96 @@
# God Crypto

> **NO LONGER MAINTAIN**
> I have been very busy lately and can no longer maintain this project and since there is roadmap for Deno for standard crypto library: https://github.com/denoland/deno/issues/11690. I feel there is no longer need for this library.
<img src="https://repository-images.githubusercontent.com/285578879/a09a9880-e179-11ea-9b30-42d45ee638c1" width="500px">

![test](https://github.com/invisal/god-crypto/workflows/test//badge.svg)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=invisal_god_crypto&metric=alert_status)](https://sonarcloud.io/dashboard?id=invisal_god_crypto)

A pure Javascript/Typescript cryptography implementation for Deno. We will try to use WebCrypto if available, then fallback pure Javascript implementation.

## References

### Supported Algorithms

- [**AES (Advanced Encryption Standard)**](https://github.com/invisal/god_crypto/wiki/AES)

- Supports Block Ciper Mode: CBC, CFB, and ECB

- [**RSA (Rivest–Shamir–Adleman)**](https://github.com/invisal/god_crypto/wiki/RSA)

- Supports RSA-PKCS1 v1.5 and RSA-OAEP padding
- Supports RSASSA-PSS signature
- Supports RSASSA-PKCS1-v1_5 signature

- [**HMAC**](https://github.com/invisal/god_crypto/wiki/HMAC)

### Applications

- [**HOTP (HMAC-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/HOTP)
- [**TOTP (
Time-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/TOTP)

### Ultities

Some useful ultities that you can use

- [encode](https://github.com/invisal/god_crypto/wiki/encode)
- [BER Writer](https://github.com/invisal/god_crypto/wiki/BER)

Click here for complete document: [Complete Documents](https://github.com/invisal/god_crypto/wiki)

## Modules

You can choose to include the whole `god_crypto` implementation or just include module that you need.

```
// Load everything
import { AES, RSA, TOTP, hmac, encode } from "https://deno.land/x/god_crypto/mod.ts";
// Load what you need
import { AES } from "https://deno.land/x/god_crypto/aes.ts";
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";
import { TOTP } from "https://deno.land/x/god_crypto/otp.ts";
import { hmac } from "https://deno.land/x/god_crypto/hmac.ts";
```

---

## Examples

```typescript
import { AES } from "https://deno.land/x/god_crypto/aes.ts";

const aes = new AES("Hello World AES!", {
mode: "cbc",
iv: "random 16byte iv",
});
const cipher = await aes.encrypt("This is AES-128-CBC. It works.");
console.log(cipher.hex());
// 41393374609eaee39fbe57c96b43a9da0d547c290501be50f983ecaac6c5fd1c

const plain = await aes.decrypt(cipher);
console.log(plain.toString());
// This is AES-128-CBC. It works.
```

```typescript
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";

// Parsing public/private key
const publicKey = RSA.parseKey(Deno.readTextFileSync("./public.pem"));
const privateKey = RSA.parseKey(Deno.readTextFileSync("./private.pem"));

const cipher = await new RSA(publicKey).encrypt("Hello World");
console.log(ciper.base64());

const plain = await new RSA(privateKey).decrypt(cipher);
console.log(plain.toString());
```
# God Crypto

> **NO LONGER MAINTAIN** I have been very busy lately and can no longer maintain
> this project and since there is roadmap for Deno for standard crypto library:
> https://github.com/denoland/deno/issues/11690. I feel there is no longer need
> for this library.
<img src="https://repository-images.githubusercontent.com/285578879/a09a9880-e179-11ea-9b30-42d45ee638c1" width="500px">

![test](https://github.com/invisal/god-crypto/workflows/test//badge.svg)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=invisal_god_crypto&metric=alert_status)](https://sonarcloud.io/dashboard?id=invisal_god_crypto)

A pure Javascript/Typescript cryptography implementation for Deno. We will try
to use WebCrypto if available, then fallback pure Javascript implementation.

## References

### Supported Algorithms

- [**AES (Advanced Encryption Standard)**](https://github.com/invisal/god_crypto/wiki/AES)

- Supports Block Ciper Mode: CBC, CFB, and ECB

- [**RSA (Rivest–Shamir–Adleman)**](https://github.com/invisal/god_crypto/wiki/RSA)

- Supports RSA-PKCS1 v1.5 and RSA-OAEP padding
- Supports RSASSA-PSS signature
- Supports RSASSA-PKCS1-v1_5 signature

- [**HMAC**](https://github.com/invisal/god_crypto/wiki/HMAC)

### Applications

- [**HOTP (HMAC-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/HOTP)
- [**TOTP (
Time-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/TOTP)

### Ultities

Some useful ultities that you can use

- [encode](https://github.com/invisal/god_crypto/wiki/encode)
- [BER Writer](https://github.com/invisal/god_crypto/wiki/BER)

Click here for complete document:
[Complete Documents](https://github.com/invisal/god_crypto/wiki)

## Modules

You can choose to include the whole `god_crypto` implementation or just include
module that you need.

```
// Load everything
import { AES, RSA, TOTP, hmac, encode } from "https://deno.land/x/god_crypto/mod.ts";
// Load what you need
import { AES } from "https://deno.land/x/god_crypto/aes.ts";
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";
import { TOTP } from "https://deno.land/x/god_crypto/otp.ts";
import { hmac } from "https://deno.land/x/god_crypto/hmac.ts";
```

---

## Examples

```typescript
import { AES } from "https://deno.land/x/god_crypto/aes.ts";

const aes = new AES("Hello World AES!", {
mode: "cbc",
iv: "random 16byte iv",
});
const cipher = await aes.encrypt("This is AES-128-CBC. It works.");
console.log(cipher.hex());
// 41393374609eaee39fbe57c96b43a9da0d547c290501be50f983ecaac6c5fd1c

const plain = await aes.decrypt(cipher);
console.log(plain.toString());
// This is AES-128-CBC. It works.
```

```typescript
import { RSA } from "https://deno.land/x/god_crypto/rsa.ts";

// Parsing public/private key
const publicKey = RSA.parseKey(Deno.readTextFileSync("./public.pem"));
const privateKey = RSA.parseKey(Deno.readTextFileSync("./private.pem"));

const cipher = await new RSA(publicKey).encrypt("Hello World");
console.log(ciper.base64());

const plain = await new RSA(privateKey).decrypt(cipher);
console.log(plain.toString());
```
5 changes: 5 additions & 0 deletions deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"tasks": {
"test": "deno test --allow-read --allow-write"
}
}
8 changes: 4 additions & 4 deletions src/hmac/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import { digest } from "../hash.ts";

/**
* https://tools.ietf.org/html/rfc4868
*
* @param algorithm
* @param key
* @param data
*
* @param algorithm
* @param key
* @param data
*/
export function hmac(
algorithm: "sha1" | "sha256",
Expand Down
10 changes: 5 additions & 5 deletions src/rsa/eme_oaep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import { RSAHashAlgorithm } from "./common.ts";

/**
* https://tools.ietf.org/html/rfc3447#page-10
*
* @param label
* @param m
* @param k
* @param algorithm
*
* @param label
* @param m
* @param k
* @param algorithm
*/
export function eme_oaep_encode(
label: Uint8Array,
Expand Down
1 change: 0 additions & 1 deletion src/rsa/import_key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ function rsa_import_jwk(key: JSONWebKey): RSAKeyParams {
}

/**
*
* https://tools.ietf.org/html/rfc5280#section-4.1
*
* @param key
Expand Down
2 changes: 1 addition & 1 deletion src/rsa/primitives.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function os2ip(m: Uint8Array): bigint {
/**
* MGF1 is a Mask Generation Function based on a hash function.
* https://tools.ietf.org/html/rfc3447#appendix-B.2.1
*
*
* @param seed seed from which mask is generated, an octet string
* @param length intended length in octets of the mask
* @param hash Hash function
Expand Down

0 comments on commit 48dfbc2

Please sign in to comment.