@hxa-rn/react-native-quick-crypto 1.1.0-beta.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -1
- package/README.md +172 -171
- package/dist/commonjs/blake3.js +1 -1
- package/dist/commonjs/blake3.js.map +1 -1
- package/dist/commonjs/cipher.js +1 -1
- package/dist/commonjs/cipher.js.map +1 -1
- package/dist/commonjs/dhKeyPair.js +1 -1
- package/dist/commonjs/dhKeyPair.js.map +1 -1
- package/dist/commonjs/diffie-hellman.js +1 -1
- package/dist/commonjs/diffie-hellman.js.map +1 -1
- package/dist/commonjs/dsa.js +1 -1
- package/dist/commonjs/dsa.js.map +1 -1
- package/dist/commonjs/ec.js +1 -1
- package/dist/commonjs/ec.js.map +1 -1
- package/dist/commonjs/ecdh.js +1 -1
- package/dist/commonjs/ecdh.js.map +1 -1
- package/dist/commonjs/ed.js +1 -1
- package/dist/commonjs/ed.js.map +1 -1
- package/dist/commonjs/hash.js +1 -1
- package/dist/commonjs/hash.js.map +1 -1
- package/dist/commonjs/hmac.js +1 -1
- package/dist/commonjs/hmac.js.map +1 -1
- package/dist/commonjs/index.js +2 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/keys/classes.js +1 -1
- package/dist/commonjs/keys/classes.js.map +1 -1
- package/dist/commonjs/keys/signVerify.js +1 -1
- package/dist/commonjs/keys/signVerify.js.map +1 -1
- package/dist/commonjs/mldsa.js +1 -1
- package/dist/commonjs/mldsa.js.map +1 -1
- package/dist/commonjs/mlkem.js +1 -1
- package/dist/commonjs/mlkem.js.map +1 -1
- package/dist/commonjs/rsa.js +1 -1
- package/dist/commonjs/rsa.js.map +1 -1
- package/dist/commonjs/x509certificate.js +1 -1
- package/dist/commonjs/x509certificate.js.map +1 -1
- package/dist/module/blake3.js +1 -1
- package/dist/module/cipher.js +1 -1
- package/dist/module/dhKeyPair.js +1 -1
- package/dist/module/diffie-hellman.js +1 -1
- package/dist/module/dsa.js +1 -1
- package/dist/module/ec.js +1 -1
- package/dist/module/ecdh.js +1 -1
- package/dist/module/ed.js +1 -1
- package/dist/module/hash.js +1 -1
- package/dist/module/hmac.js +1 -1
- package/dist/module/keys/classes.js +1 -1
- package/dist/module/keys/signVerify.js +1 -1
- package/dist/module/mldsa.js +1 -1
- package/dist/module/mlkem.js +1 -1
- package/dist/module/rsa.js +1 -1
- package/dist/module/x509certificate.js +1 -1
- package/harmony/quick_crypto/LICENSE +9 -2
- package/harmony/quick_crypto.har +0 -0
- package/package.json +87 -87
package/LICENSE
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
**react-native-quick-crypto**
|
|
2
|
+
|
|
1
3
|
MIT License
|
|
2
4
|
|
|
3
|
-
Copyright (c)
|
|
5
|
+
Copyright (c) 2021 Margelo GmbH
|
|
6
|
+
Modifications Copyright (c) 2026 HarmonyOS X-platform Alliance
|
|
4
7
|
|
|
5
8
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
9
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -19,3 +22,7 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
22
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
23
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
24
|
SOFTWARE.
|
|
25
|
+
|
|
26
|
+
**NodeJS Crypto**
|
|
27
|
+
|
|
28
|
+
See https://github.com/nodejs/node/blob/main/LICENSE
|
package/README.md
CHANGED
|
@@ -1,171 +1,172 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
|
96
|
-
|
|
97
|
-
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
git
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
1
|
+
# react-native-quick-crypto
|
|
2
|
+
|
|
3
|
+
本项目基于 [react-native-quick-crypto](https://github.com/margelo/react-native-quick-crypto)开发。如果在使用过程中有任何问题,欢迎在AtomGit提交Issue,会及时跟进。
|
|
4
|
+
|
|
5
|
+
## 项目介绍
|
|
6
|
+
|
|
7
|
+
`@hxa-rn/react-native-quick-crypto` 是 `react-native-quick-crypto` 的鸿蒙(OpenHarmony / HarmonyOS)适配包,基于 Nitro Modules 与预编译 OpenSSL,在 RN 鸿蒙运行时提供接近 Node.js `crypto` 的能力。当前版本:`1.1.2`。
|
|
8
|
+
|
|
9
|
+
## 集成指南
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @hxa-rn/react-native-quick-crypto
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
业务代码仍按上游包名导入(`package.json` 中 `harmony.alias` 为 `react-native-quick-crypto`):
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import crypto from 'react-native-quick-crypto';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
鸿蒙工程侧通过 autolinking 引入 HAR(示例见 `example` / `example_auto` 的 `oh-package.json5`)。
|
|
22
|
+
|
|
23
|
+
### Demo 编译(Windows 注意)
|
|
24
|
+
|
|
25
|
+
在 `example` 或 `example_auto` 中编译鸿蒙工程前,请按下列顺序执行:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 1) 安装 JS 依赖(含 @react-native-oh/react-native-harmony / harmony-cli)
|
|
29
|
+
cd example_auto
|
|
30
|
+
npm install
|
|
31
|
+
|
|
32
|
+
# 2) 安装 ohpm 依赖
|
|
33
|
+
cd harmony
|
|
34
|
+
ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/
|
|
35
|
+
|
|
36
|
+
# 3) 打包 JS bundle(会自动先执行 ohpm:materialize)
|
|
37
|
+
cd ..
|
|
38
|
+
npm run dev
|
|
39
|
+
|
|
40
|
+
# 4) DevEco:Sync and Refresh → Run
|
|
41
|
+
# Sync 会再次 ohpm install 并重建 Junction;工程已在 hvigorfile.ts 启动时自动 materialize,一般无需再手跑脚本
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
说明:
|
|
45
|
+
|
|
46
|
+
- **根因**:`ohpm install` / DevEco「同步并刷新」会把 `oh_modules/@rnoh/...` 建成 **Junction**,指向 `oh_modules/.ohpm/@pkg@<超长哈希>/...`。ninja 解析真实路径后超过 Windows 260 字符限制。
|
|
47
|
+
- **为何 `npm run dev` 后又失败**:`dev` 只打 JS bundle;随后 DevEco Sync 会重新装 ohpm 依赖,把刚才落地的短目录又改回长路径 Junction,所以 Run 原生编译再次报 260。
|
|
48
|
+
- **自动修复**:`harmony/hvigorfile.ts` 加载时会调用 `materialize-ohpm.js`(仅 Windows):把 Junction 落成短目录;若 `entry/.cxx` 里仍缓存着 `.ohpm` 超长绝对路径会自动清掉,避免「目录已短但 ninja 仍报 260」。
|
|
49
|
+
- **手动命令**(排查或脚本失败时):
|
|
50
|
+
|
|
51
|
+
```powershell
|
|
52
|
+
npm run ohpm:materialize
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
然后重新 DevEco Run(不要只用增量;清过 `.cxx` 后首次原生编译会稍慢)。
|
|
56
|
+
|
|
57
|
+
- **改用例 JS**:只需 `npm run dev` 更新 bundle,不必为改文件而重复 materialize。
|
|
58
|
+
|
|
59
|
+
## 使用说明
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import { install } from 'react-native-quick-crypto';
|
|
63
|
+
|
|
64
|
+
// 可选:将 global.crypto / global.Buffer 安装为 QuickCrypto 实现
|
|
65
|
+
install();
|
|
66
|
+
|
|
67
|
+
import crypto from 'react-native-quick-crypto';
|
|
68
|
+
|
|
69
|
+
const hash = crypto.createHash('sha256').update('hello').digest('hex');
|
|
70
|
+
const bytes = crypto.randomBytes(16);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
更完整场景见 `example_auto` 中的自动化用例页。
|
|
74
|
+
|
|
75
|
+
## 接口文档
|
|
76
|
+
|
|
77
|
+
公开能力与上游 `react-native-quick-crypto` 对齐,主要包括:
|
|
78
|
+
|
|
79
|
+
| 模块 | 说明 |
|
|
80
|
+
|------|------|
|
|
81
|
+
| `createHash` / `createHmac` | 摘要与 HMAC |
|
|
82
|
+
| `createCipheriv` / `createDecipheriv` | 对称加解密 |
|
|
83
|
+
| `randomBytes` / `randomFill` 等 | 随机数 |
|
|
84
|
+
| `pbkdf2` / `scrypt` / `hkdf` | 密钥派生 |
|
|
85
|
+
| `generateKeyPair` / 各类 KeyObject | 非对称密钥 |
|
|
86
|
+
| `subtle` | WebCrypto 子集 |
|
|
87
|
+
| `install()` | 注入 `global.crypto` / `global.Buffer` |
|
|
88
|
+
|
|
89
|
+
具体类型定义见包内 `dist/typescript`。
|
|
90
|
+
|
|
91
|
+
## 快速验证(运行 Example)
|
|
92
|
+
|
|
93
|
+
### 前置条件
|
|
94
|
+
|
|
95
|
+
| 依赖 | 版本要求 |
|
|
96
|
+
|------|----------|
|
|
97
|
+
| Node.js | >= 18 |
|
|
98
|
+
| DevEco Studio | 5.0+ |
|
|
99
|
+
| HarmonyOS SDK | API 13+ |
|
|
100
|
+
|
|
101
|
+
### 运行步骤
|
|
102
|
+
|
|
103
|
+
**1. 克隆仓库**
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
git clone https://gitcode.com/hxa-rn/react-native-quick-crypto.git
|
|
107
|
+
cd react-native-quick-crypto
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**2. 安装仓库开发依赖**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npm install --legacy-peer-deps
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Example 已改为从 npm 公仓安装 `@hxa-rn/react-native-quick-crypto@1.1.2`,不再使用本地 `file:../xxx.tgz`,运行 Example 不必再执行 `npm pack`。
|
|
117
|
+
|
|
118
|
+
**3. 进入 example 目录,安装依赖**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cd example # 或 example_auto
|
|
122
|
+
npm install --legacy-peer-deps
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**4. 生成 JS Bundle**
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm run dev
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
产物:`harmony/entry/src/main/resources/rawfile/bundle.harmony.js`
|
|
132
|
+
|
|
133
|
+
**5. 用 DevEco Studio 打开鸿蒙工程**
|
|
134
|
+
|
|
135
|
+
- 打开 DevEco Studio
|
|
136
|
+
- 选择 `example/harmony`(或 `example_auto/harmony`)目录
|
|
137
|
+
- 等待 Sync 完成
|
|
138
|
+
|
|
139
|
+
**6. 编译并运行 HAP**
|
|
140
|
+
|
|
141
|
+
在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。
|
|
142
|
+
|
|
143
|
+
> **注意**:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。
|
|
144
|
+
|
|
145
|
+
## 约束与限制
|
|
146
|
+
|
|
147
|
+
**兼容性**
|
|
148
|
+
|
|
149
|
+
- 鸿蒙 SDK:API 13+(与当前 Demo / HAR 配置一致)
|
|
150
|
+
- 上游 RN:`react-native-quick-crypto` 1.x 能力面
|
|
151
|
+
- React Native / RNOH:RN `0.77.x` + `@react-native-oh/react-native-harmony` `0.77.x`(以 Demo `package.json` 为准)
|
|
152
|
+
- 原生依赖:仓库内 vendored 的 OpenSSL 3.6.0 预编译静态库(`aarch64-linux-ohos`),见 `harmony/quick_crypto/src/main/cpp/third_party/openssl/`
|
|
153
|
+
|
|
154
|
+
**权限**
|
|
155
|
+
|
|
156
|
+
- 无额外系统权限。
|
|
157
|
+
|
|
158
|
+
**Windows 路径**
|
|
159
|
+
|
|
160
|
+
- Windows:DevEco Sync 会重建 ohpm Junction(超长路径)。工程已在 `harmony/hvigorfile.ts` 启动时自动 `materialize`;若仍报 260,手动执行 `npm run ohpm:materialize` 后再 Run。仅改 JS/TS 时只需 `npm run dev`。
|
|
161
|
+
|
|
162
|
+
## 开源license
|
|
163
|
+
|
|
164
|
+
本项目基于 MIT 协议,详见 [LICENSE](LICENSE) 文件。
|
|
165
|
+
|
|
166
|
+
## 问题反馈渠道
|
|
167
|
+
|
|
168
|
+
使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:
|
|
169
|
+
|
|
170
|
+
https://gitcode.com/hxa-rn/react-native-quick-crypto
|
|
171
|
+
|
|
172
|
+
https://gitcode.com/hxa-rn/react-native-quick-crypto/issues
|
package/dist/commonjs/blake3.js
CHANGED
|
@@ -13,7 +13,7 @@ var _utils = require("./utils");
|
|
|
13
13
|
var _conversion = require("./utils/conversion");
|
|
14
14
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
15
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
16
|
-
function _toPrimitive(t,
|
|
16
|
+
function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
17
17
|
const BLAKE3_KEY_LEN = 32;
|
|
18
18
|
const BLAKE3_OUT_LEN = 32;
|
|
19
19
|
class Blake3 {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_utils","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BLAKE3_KEY_LEN","BLAKE3_OUT_LEN","Blake3","constructor","opts","native","NitroModules","createHybridObject","key","context","Error","length","mode","keyData","initKeyed","toArrayBuffer","undefined","contextData","initDeriveKey","initHash","update","data","inputEncoding","buffer","binaryLikeToArrayBuffer","digest","encodingOrLength","encoding","result","ab2str","Buffer","from","digestLength","reset","copy","copied","getVersion","exports","createBlake3","blake3","hasher","dkLen","Uint8Array","create","blake3Exports"],"sources":["blake3.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { Blake3 as NativeBlake3 } from './specs/v1/blake3.nitro';\r\nimport type { BinaryLike, Encoding } from './utils';\r\nimport { binaryLikeToArrayBuffer, ab2str } from './utils';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nconst BLAKE3_KEY_LEN = 32;\r\nconst BLAKE3_OUT_LEN = 32;\r\n\r\nexport interface Blake3Options {\r\n dkLen?: number;\r\n key?: Uint8Array;\r\n context?: string;\r\n}\r\n\r\nexport class Blake3 {\r\n private native: NativeBlake3;\r\n private mode: 'hash' | 'keyed' | 'deriveKey';\r\n private keyData?: Uint8Array;\r\n private contextData?: string;\r\n\r\n constructor(opts?: Blake3Options) {\r\n this.native = NitroModules.createHybridObject<NativeBlake3>('Blake3');\r\n\r\n if (opts?.key && opts?.context) {\r\n throw new Error(\r\n 'BLAKE3: cannot use both key and context options together',\r\n );\r\n }\r\n\r\n if (opts?.key) {\r\n if (opts.key.length !== BLAKE3_KEY_LEN) {\r\n throw new Error(`BLAKE3: key must be exactly ${BLAKE3_KEY_LEN} bytes`);\r\n }\r\n this.mode = 'keyed';\r\n this.keyData = opts.key;\r\n this.native.initKeyed(toArrayBuffer(opts.key));\r\n } else if (opts?.context !== undefined) {\r\n if (typeof opts.context !== 'string' || opts.context.length === 0) {\r\n throw new Error('BLAKE3: context must be a non-empty string');\r\n }\r\n this.mode = 'deriveKey';\r\n this.contextData = opts.context;\r\n this.native.initDeriveKey(opts.context);\r\n } else {\r\n this.mode = 'hash';\r\n this.native.initHash();\r\n }\r\n }\r\n\r\n update(data: BinaryLike, inputEncoding?: Encoding): this {\r\n const buffer = binaryLikeToArrayBuffer(data, inputEncoding ?? 'utf8');\r\n this.native.update(buffer);\r\n return this;\r\n }\r\n\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(length: number): Buffer;\r\n digest(encodingOrLength?: Encoding | number): Buffer | string {\r\n let length: number | undefined;\r\n let encoding: Encoding | undefined;\r\n\r\n if (typeof encodingOrLength === 'number') {\r\n length = encodingOrLength;\r\n } else if (encodingOrLength) {\r\n encoding = encodingOrLength;\r\n }\r\n\r\n const result = this.native.digest(length);\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(result, encoding);\r\n }\r\n\r\n return Buffer.from(result);\r\n }\r\n\r\n digestLength(length: number): Buffer {\r\n return Buffer.from(this.native.digest(length));\r\n }\r\n\r\n reset(): this {\r\n this.native.reset();\r\n return this;\r\n }\r\n\r\n copy(): Blake3 {\r\n const copied = new Blake3();\r\n // Replace the native with a copy\r\n copied.native = this.native.copy() as NativeBlake3;\r\n copied.mode = this.mode;\r\n copied.keyData = this.keyData;\r\n copied.contextData = this.contextData;\r\n return copied;\r\n }\r\n\r\n static getVersion(): string {\r\n const native = NitroModules.createHybridObject<NativeBlake3>('Blake3');\r\n native.initHash();\r\n return native.getVersion();\r\n }\r\n}\r\n\r\nexport function createBlake3(opts?: Blake3Options): Blake3 {\r\n return new Blake3(opts);\r\n}\r\n\r\nexport function blake3(data: BinaryLike, opts?: Blake3Options): Uint8Array {\r\n const hasher = new Blake3(opts);\r\n hasher.update(data);\r\n const length = opts?.dkLen ?? BLAKE3_OUT_LEN;\r\n const result = hasher.digestLength(length);\r\n return new Uint8Array(result);\r\n}\r\n\r\nblake3.create = createBlake3;\r\n\r\nexport const blake3Exports = {\r\n Blake3,\r\n createBlake3,\r\n blake3,\r\n};\r\n"],"mappings":";;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAAmD,SAAAI,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,
|
|
1
|
+
{"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_utils","_conversion","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BLAKE3_KEY_LEN","BLAKE3_OUT_LEN","Blake3","constructor","opts","native","NitroModules","createHybridObject","key","context","Error","length","mode","keyData","initKeyed","toArrayBuffer","undefined","contextData","initDeriveKey","initHash","update","data","inputEncoding","buffer","binaryLikeToArrayBuffer","digest","encodingOrLength","encoding","result","ab2str","Buffer","from","digestLength","reset","copy","copied","getVersion","exports","createBlake3","blake3","hasher","dkLen","Uint8Array","create","blake3Exports"],"sources":["blake3.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { Blake3 as NativeBlake3 } from './specs/v1/blake3.nitro';\r\nimport type { BinaryLike, Encoding } from './utils';\r\nimport { binaryLikeToArrayBuffer, ab2str } from './utils';\r\nimport { toArrayBuffer } from './utils/conversion';\r\n\r\nconst BLAKE3_KEY_LEN = 32;\r\nconst BLAKE3_OUT_LEN = 32;\r\n\r\nexport interface Blake3Options {\r\n dkLen?: number;\r\n key?: Uint8Array;\r\n context?: string;\r\n}\r\n\r\nexport class Blake3 {\r\n private native: NativeBlake3;\r\n private mode: 'hash' | 'keyed' | 'deriveKey';\r\n private keyData?: Uint8Array;\r\n private contextData?: string;\r\n\r\n constructor(opts?: Blake3Options) {\r\n this.native = NitroModules.createHybridObject<NativeBlake3>('Blake3');\r\n\r\n if (opts?.key && opts?.context) {\r\n throw new Error(\r\n 'BLAKE3: cannot use both key and context options together',\r\n );\r\n }\r\n\r\n if (opts?.key) {\r\n if (opts.key.length !== BLAKE3_KEY_LEN) {\r\n throw new Error(`BLAKE3: key must be exactly ${BLAKE3_KEY_LEN} bytes`);\r\n }\r\n this.mode = 'keyed';\r\n this.keyData = opts.key;\r\n this.native.initKeyed(toArrayBuffer(opts.key));\r\n } else if (opts?.context !== undefined) {\r\n if (typeof opts.context !== 'string' || opts.context.length === 0) {\r\n throw new Error('BLAKE3: context must be a non-empty string');\r\n }\r\n this.mode = 'deriveKey';\r\n this.contextData = opts.context;\r\n this.native.initDeriveKey(opts.context);\r\n } else {\r\n this.mode = 'hash';\r\n this.native.initHash();\r\n }\r\n }\r\n\r\n update(data: BinaryLike, inputEncoding?: Encoding): this {\r\n const buffer = binaryLikeToArrayBuffer(data, inputEncoding ?? 'utf8');\r\n this.native.update(buffer);\r\n return this;\r\n }\r\n\r\n digest(): Buffer;\r\n digest(encoding: Encoding): string;\r\n digest(length: number): Buffer;\r\n digest(encodingOrLength?: Encoding | number): Buffer | string {\r\n let length: number | undefined;\r\n let encoding: Encoding | undefined;\r\n\r\n if (typeof encodingOrLength === 'number') {\r\n length = encodingOrLength;\r\n } else if (encodingOrLength) {\r\n encoding = encodingOrLength;\r\n }\r\n\r\n const result = this.native.digest(length);\r\n\r\n if (encoding && encoding !== 'buffer') {\r\n return ab2str(result, encoding);\r\n }\r\n\r\n return Buffer.from(result);\r\n }\r\n\r\n digestLength(length: number): Buffer {\r\n return Buffer.from(this.native.digest(length));\r\n }\r\n\r\n reset(): this {\r\n this.native.reset();\r\n return this;\r\n }\r\n\r\n copy(): Blake3 {\r\n const copied = new Blake3();\r\n // Replace the native with a copy\r\n copied.native = this.native.copy() as NativeBlake3;\r\n copied.mode = this.mode;\r\n copied.keyData = this.keyData;\r\n copied.contextData = this.contextData;\r\n return copied;\r\n }\r\n\r\n static getVersion(): string {\r\n const native = NitroModules.createHybridObject<NativeBlake3>('Blake3');\r\n native.initHash();\r\n return native.getVersion();\r\n }\r\n}\r\n\r\nexport function createBlake3(opts?: Blake3Options): Blake3 {\r\n return new Blake3(opts);\r\n}\r\n\r\nexport function blake3(data: BinaryLike, opts?: Blake3Options): Uint8Array {\r\n const hasher = new Blake3(opts);\r\n hasher.update(data);\r\n const length = opts?.dkLen ?? BLAKE3_OUT_LEN;\r\n const result = hasher.digestLength(length);\r\n return new Uint8Array(result);\r\n}\r\n\r\nblake3.create = createBlake3;\r\n\r\nexport const blake3Exports = {\r\n Blake3,\r\n createBlake3,\r\n blake3,\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/cipher.js
CHANGED
|
@@ -17,7 +17,7 @@ var _cipher = require("./utils/cipher");
|
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
18
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
19
19
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
20
|
-
function _toPrimitive(t,
|
|
20
|
+
function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); } // @types/node
|
|
21
21
|
class CipherUtils {
|
|
22
22
|
static getSupportedCiphers() {
|
|
23
23
|
return this.native.getSupportedCiphers();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeNitroModules","require","_readableStream","_interopRequireDefault","_string_decoder","_reactNativeBuffer","_utils","_cipher","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CipherUtils","getSupportedCiphers","native","getCipherInfo","name","keyLength","ivLength","NitroModules","createHybridObject","getCiphers","options","length","undefined","CipherCommon","Stream","Transform","constructor","isCipher","cipherType","cipherKey","iv","streamOptions","transformKeys","key","authTagLen","getUIntOption","factory","createCipher","binaryLikeToArrayBuffer","getDecoder","encoding","normalized","normalizeEncoding","_decoder","StringDecoder","_decoderEncoding","Error","update","data","inputEncoding","outputEncoding","defaultEncoding","getDefaultEncoding","validateEncoding","ArrayBuffer","isView","ret","write","Buffer","from","final","end","_transform","chunk","callback","push","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sources":["cipher.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport Stream, { type TransformOptions } from 'readable-stream';\r\nimport { StringDecoder } from 'string_decoder';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { BinaryLike, BinaryLikeNode, Encoding } from './utils';\r\nimport type {\r\n CipherCCMOptions,\r\n CipherCCMTypes,\r\n CipherGCMTypes,\r\n CipherGCMOptions,\r\n CipherOCBOptions,\r\n CipherOCBTypes,\r\n} from 'crypto'; // @types/node\r\nimport type {\r\n Cipher as NativeCipher,\r\n CipherFactory,\r\n} from './specs/v1/cipher.nitro';\r\nimport { binaryLikeToArrayBuffer } from './utils';\r\nimport {\r\n getDefaultEncoding,\r\n getUIntOption,\r\n normalizeEncoding,\r\n validateEncoding,\r\n} from './utils/cipher';\r\n\r\nexport type CipherOptions =\r\n | CipherCCMOptions\r\n | CipherOCBOptions\r\n | CipherGCMOptions\r\n | TransformOptions;\r\n\r\nexport interface CipherInfoResult {\r\n name: string;\r\n nid: number;\r\n mode: string;\r\n keyLength: number;\r\n blockSize?: number;\r\n ivLength?: number;\r\n}\r\n\r\nclass CipherUtils {\r\n private static native =\r\n NitroModules.createHybridObject<NativeCipher>('Cipher');\r\n public static getSupportedCiphers(): string[] {\r\n return this.native.getSupportedCiphers();\r\n }\r\n public static getCipherInfo(\r\n name: string,\r\n keyLength?: number,\r\n ivLength?: number,\r\n ): CipherInfoResult | undefined {\r\n return this.native.getCipherInfo(name, keyLength, ivLength);\r\n }\r\n}\r\n\r\nexport function getCiphers(): string[] {\r\n return CipherUtils.getSupportedCiphers();\r\n}\r\n\r\nexport function getCipherInfo(\r\n name: string,\r\n options?: { keyLength?: number; ivLength?: number },\r\n): CipherInfoResult | undefined {\r\n if (typeof name !== 'string' || name.length === 0) return undefined;\r\n return CipherUtils.getCipherInfo(name, options?.keyLength, options?.ivLength);\r\n}\r\n\r\ninterface CipherArgs {\r\n isCipher: boolean;\r\n cipherType: string;\r\n cipherKey: BinaryLikeNode;\r\n iv: BinaryLike;\r\n options?: CipherOptions;\r\n}\r\n\r\nclass CipherCommon extends Stream.Transform {\r\n private native: NativeCipher;\r\n private _decoder: StringDecoder | null = null;\r\n private _decoderEncoding: string | undefined = undefined;\r\n\r\n constructor({ isCipher, cipherType, cipherKey, iv, options }: CipherArgs) {\r\n // Explicitly create TransformOptions for super()\r\n const streamOptions: TransformOptions = {};\r\n if (options) {\r\n // List known TransformOptions keys (adjust if needed)\r\n const transformKeys: Array<keyof TransformOptions> = [\r\n 'readableHighWaterMark',\r\n 'writableHighWaterMark',\r\n 'decodeStrings',\r\n 'defaultEncoding',\r\n 'objectMode',\r\n 'destroy',\r\n 'read',\r\n 'write',\r\n 'writev',\r\n 'final',\r\n 'transform',\r\n 'flush',\r\n // Add any other relevant keys from readable-stream's TransformOptions\r\n ];\r\n for (const key of transformKeys) {\r\n if (key in options) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (streamOptions as any)[key] = (options as any)[key];\r\n }\r\n }\r\n }\r\n super(streamOptions); // Pass filtered options\r\n\r\n const authTagLen: number =\r\n getUIntOption(options ?? {}, 'authTagLength') !== -1\r\n ? getUIntOption(options ?? {}, 'authTagLength')\r\n : 16; // defaults to 16 bytes\r\n\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n this.native = factory.createCipher({\r\n isCipher,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n authTagLen,\r\n });\r\n }\r\n\r\n private getDecoder(encoding: string): StringDecoder {\r\n const normalized = normalizeEncoding(encoding);\r\n if (!this._decoder) {\r\n this._decoder = new StringDecoder(encoding as BufferEncoding);\r\n this._decoderEncoding = normalized;\r\n } else if (this._decoderEncoding !== normalized) {\r\n throw new Error('Cannot change encoding');\r\n }\r\n return this._decoder;\r\n }\r\n\r\n update(data: Buffer): Buffer;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Buffer;\r\n update(\r\n data: BinaryLike,\r\n inputEncoding: Encoding,\r\n outputEncoding: Encoding,\r\n ): string;\r\n update(\r\n data: BinaryLike,\r\n inputEncoding?: Encoding,\r\n outputEncoding?: Encoding,\r\n ): Buffer | string {\r\n const defaultEncoding = getDefaultEncoding();\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n outputEncoding = outputEncoding ?? defaultEncoding;\r\n\r\n if (typeof data === 'string') {\r\n validateEncoding(data, inputEncoding);\r\n } else if (!ArrayBuffer.isView(data)) {\r\n throw new Error('Invalid data argument');\r\n }\r\n\r\n const ret = this.native.update(\r\n binaryLikeToArrayBuffer(data, inputEncoding),\r\n );\r\n\r\n if (outputEncoding && outputEncoding !== 'buffer') {\r\n return this.getDecoder(outputEncoding).write(Buffer.from(ret));\r\n }\r\n\r\n return Buffer.from(ret);\r\n }\r\n\r\n final(): Buffer;\r\n final(outputEncoding: BufferEncoding | 'buffer'): string;\r\n final(outputEncoding?: BufferEncoding | 'buffer'): Buffer | string {\r\n const ret = this.native.final();\r\n\r\n if (outputEncoding && outputEncoding !== 'buffer') {\r\n return this.getDecoder(outputEncoding).end(Buffer.from(ret));\r\n }\r\n\r\n return Buffer.from(ret);\r\n }\r\n\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.push(this.update(chunk, normalizeEncoding(encoding)));\r\n callback();\r\n }\r\n\r\n _flush(callback: () => void) {\r\n this.push(this.final());\r\n callback();\r\n }\r\n\r\n public setAutoPadding(autoPadding?: boolean): this {\r\n const res = this.native.setAutoPadding(!!autoPadding);\r\n if (!res) {\r\n throw new Error('setAutoPadding failed');\r\n }\r\n return this;\r\n }\r\n\r\n public setAAD(\r\n buffer: Buffer,\r\n options?: {\r\n plaintextLength: number;\r\n },\r\n ): this {\r\n // Check if native parts are initialized\r\n if (!this.native || typeof this.native.setAAD !== 'function') {\r\n throw new Error('Cipher native object or setAAD method not initialized.');\r\n }\r\n const res = this.native.setAAD(buffer.buffer, options?.plaintextLength);\r\n if (!res) {\r\n throw new Error('setAAD failed (native call returned false)');\r\n }\r\n return this;\r\n }\r\n\r\n public getAuthTag(): Buffer {\r\n return Buffer.from(this.native.getAuthTag());\r\n }\r\n\r\n public setAuthTag(tag: Buffer): this {\r\n const res = this.native.setAuthTag(binaryLikeToArrayBuffer(tag));\r\n if (!res) {\r\n throw new Error('setAuthTag failed');\r\n }\r\n return this;\r\n }\r\n\r\n public getSupportedCiphers(): string[] {\r\n return this.native.getSupportedCiphers();\r\n }\r\n}\r\n\r\nclass Cipheriv extends CipherCommon {\r\n constructor(\r\n cipherType: string,\r\n cipherKey: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n ) {\r\n super({\r\n isCipher: true,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n options,\r\n });\r\n }\r\n}\r\n\r\nexport type Cipher = Cipheriv;\r\n\r\nclass Decipheriv extends CipherCommon {\r\n constructor(\r\n cipherType: string,\r\n cipherKey: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n ) {\r\n super({\r\n isCipher: false,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n options,\r\n });\r\n }\r\n}\r\n\r\nexport type Decipher = Decipheriv;\r\n\r\nexport function createDecipheriv(\r\n algorithm: CipherCCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherCCMOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: CipherOCBTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherOCBOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: CipherGCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherGCMOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: TransformOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n): Decipher {\r\n return new Decipheriv(algorithm, key, iv, options);\r\n}\r\n\r\nexport function createCipheriv(\r\n algorithm: CipherCCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherCCMOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: CipherOCBTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherOCBOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: CipherGCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherGCMOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: TransformOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n): Cipher {\r\n return new Cipheriv(algorithm, key, iv, options);\r\n}\r\n\r\n/**\r\n * xsalsa20 stream encryption with @noble/ciphers compatible API\r\n *\r\n * @param key - 32 bytes\r\n * @param nonce - 24 bytes\r\n * @param data - data to encrypt\r\n * @param output - unused\r\n * @param counter - unused\r\n * @returns encrypted data\r\n */\r\nexport function xsalsa20(\r\n key: Uint8Array,\r\n nonce: Uint8Array,\r\n data: Uint8Array,\r\n // @ts-ignore haven't implemented this part of @noble/ciphers API\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n output?: Uint8Array | undefined,\r\n // @ts-ignore haven't implemented this part of @noble/ciphers API\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n counter?: number,\r\n): Uint8Array {\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const native = factory.createCipher({\r\n isCipher: true,\r\n cipherType: 'xsalsa20',\r\n cipherKey: binaryLikeToArrayBuffer(key),\r\n iv: binaryLikeToArrayBuffer(nonce),\r\n });\r\n const result = native.update(binaryLikeToArrayBuffer(data));\r\n return new Uint8Array(result);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNativeNitroModules","require","_readableStream","_interopRequireDefault","_string_decoder","_reactNativeBuffer","_utils","_cipher","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CipherUtils","getSupportedCiphers","native","getCipherInfo","name","keyLength","ivLength","NitroModules","createHybridObject","getCiphers","options","length","undefined","CipherCommon","Stream","Transform","constructor","isCipher","cipherType","cipherKey","iv","streamOptions","transformKeys","key","authTagLen","getUIntOption","factory","createCipher","binaryLikeToArrayBuffer","getDecoder","encoding","normalized","normalizeEncoding","_decoder","StringDecoder","_decoderEncoding","Error","update","data","inputEncoding","outputEncoding","defaultEncoding","getDefaultEncoding","validateEncoding","ArrayBuffer","isView","ret","write","Buffer","from","final","end","_transform","chunk","callback","push","_flush","setAutoPadding","autoPadding","res","setAAD","buffer","plaintextLength","getAuthTag","setAuthTag","tag","Cipheriv","Decipheriv","createDecipheriv","algorithm","createCipheriv","xsalsa20","nonce","output","counter","result","Uint8Array"],"sources":["cipher.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport Stream, { type TransformOptions } from 'readable-stream';\r\nimport { StringDecoder } from 'string_decoder';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport type { BinaryLike, BinaryLikeNode, Encoding } from './utils';\r\nimport type {\r\n CipherCCMOptions,\r\n CipherCCMTypes,\r\n CipherGCMTypes,\r\n CipherGCMOptions,\r\n CipherOCBOptions,\r\n CipherOCBTypes,\r\n} from 'crypto'; // @types/node\r\nimport type {\r\n Cipher as NativeCipher,\r\n CipherFactory,\r\n} from './specs/v1/cipher.nitro';\r\nimport { binaryLikeToArrayBuffer } from './utils';\r\nimport {\r\n getDefaultEncoding,\r\n getUIntOption,\r\n normalizeEncoding,\r\n validateEncoding,\r\n} from './utils/cipher';\r\n\r\nexport type CipherOptions =\r\n | CipherCCMOptions\r\n | CipherOCBOptions\r\n | CipherGCMOptions\r\n | TransformOptions;\r\n\r\nexport interface CipherInfoResult {\r\n name: string;\r\n nid: number;\r\n mode: string;\r\n keyLength: number;\r\n blockSize?: number;\r\n ivLength?: number;\r\n}\r\n\r\nclass CipherUtils {\r\n private static native =\r\n NitroModules.createHybridObject<NativeCipher>('Cipher');\r\n public static getSupportedCiphers(): string[] {\r\n return this.native.getSupportedCiphers();\r\n }\r\n public static getCipherInfo(\r\n name: string,\r\n keyLength?: number,\r\n ivLength?: number,\r\n ): CipherInfoResult | undefined {\r\n return this.native.getCipherInfo(name, keyLength, ivLength);\r\n }\r\n}\r\n\r\nexport function getCiphers(): string[] {\r\n return CipherUtils.getSupportedCiphers();\r\n}\r\n\r\nexport function getCipherInfo(\r\n name: string,\r\n options?: { keyLength?: number; ivLength?: number },\r\n): CipherInfoResult | undefined {\r\n if (typeof name !== 'string' || name.length === 0) return undefined;\r\n return CipherUtils.getCipherInfo(name, options?.keyLength, options?.ivLength);\r\n}\r\n\r\ninterface CipherArgs {\r\n isCipher: boolean;\r\n cipherType: string;\r\n cipherKey: BinaryLikeNode;\r\n iv: BinaryLike;\r\n options?: CipherOptions;\r\n}\r\n\r\nclass CipherCommon extends Stream.Transform {\r\n private native: NativeCipher;\r\n private _decoder: StringDecoder | null = null;\r\n private _decoderEncoding: string | undefined = undefined;\r\n\r\n constructor({ isCipher, cipherType, cipherKey, iv, options }: CipherArgs) {\r\n // Explicitly create TransformOptions for super()\r\n const streamOptions: TransformOptions = {};\r\n if (options) {\r\n // List known TransformOptions keys (adjust if needed)\r\n const transformKeys: Array<keyof TransformOptions> = [\r\n 'readableHighWaterMark',\r\n 'writableHighWaterMark',\r\n 'decodeStrings',\r\n 'defaultEncoding',\r\n 'objectMode',\r\n 'destroy',\r\n 'read',\r\n 'write',\r\n 'writev',\r\n 'final',\r\n 'transform',\r\n 'flush',\r\n // Add any other relevant keys from readable-stream's TransformOptions\r\n ];\r\n for (const key of transformKeys) {\r\n if (key in options) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (streamOptions as any)[key] = (options as any)[key];\r\n }\r\n }\r\n }\r\n super(streamOptions); // Pass filtered options\r\n\r\n const authTagLen: number =\r\n getUIntOption(options ?? {}, 'authTagLength') !== -1\r\n ? getUIntOption(options ?? {}, 'authTagLength')\r\n : 16; // defaults to 16 bytes\r\n\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n this.native = factory.createCipher({\r\n isCipher,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n authTagLen,\r\n });\r\n }\r\n\r\n private getDecoder(encoding: string): StringDecoder {\r\n const normalized = normalizeEncoding(encoding);\r\n if (!this._decoder) {\r\n this._decoder = new StringDecoder(encoding as BufferEncoding);\r\n this._decoderEncoding = normalized;\r\n } else if (this._decoderEncoding !== normalized) {\r\n throw new Error('Cannot change encoding');\r\n }\r\n return this._decoder;\r\n }\r\n\r\n update(data: Buffer): Buffer;\r\n update(data: BinaryLike, inputEncoding?: Encoding): Buffer;\r\n update(\r\n data: BinaryLike,\r\n inputEncoding: Encoding,\r\n outputEncoding: Encoding,\r\n ): string;\r\n update(\r\n data: BinaryLike,\r\n inputEncoding?: Encoding,\r\n outputEncoding?: Encoding,\r\n ): Buffer | string {\r\n const defaultEncoding = getDefaultEncoding();\r\n inputEncoding = inputEncoding ?? defaultEncoding;\r\n outputEncoding = outputEncoding ?? defaultEncoding;\r\n\r\n if (typeof data === 'string') {\r\n validateEncoding(data, inputEncoding);\r\n } else if (!ArrayBuffer.isView(data)) {\r\n throw new Error('Invalid data argument');\r\n }\r\n\r\n const ret = this.native.update(\r\n binaryLikeToArrayBuffer(data, inputEncoding),\r\n );\r\n\r\n if (outputEncoding && outputEncoding !== 'buffer') {\r\n return this.getDecoder(outputEncoding).write(Buffer.from(ret));\r\n }\r\n\r\n return Buffer.from(ret);\r\n }\r\n\r\n final(): Buffer;\r\n final(outputEncoding: BufferEncoding | 'buffer'): string;\r\n final(outputEncoding?: BufferEncoding | 'buffer'): Buffer | string {\r\n const ret = this.native.final();\r\n\r\n if (outputEncoding && outputEncoding !== 'buffer') {\r\n return this.getDecoder(outputEncoding).end(Buffer.from(ret));\r\n }\r\n\r\n return Buffer.from(ret);\r\n }\r\n\r\n _transform(\r\n chunk: BinaryLike,\r\n encoding: BufferEncoding,\r\n callback: () => void,\r\n ) {\r\n this.push(this.update(chunk, normalizeEncoding(encoding)));\r\n callback();\r\n }\r\n\r\n _flush(callback: () => void) {\r\n this.push(this.final());\r\n callback();\r\n }\r\n\r\n public setAutoPadding(autoPadding?: boolean): this {\r\n const res = this.native.setAutoPadding(!!autoPadding);\r\n if (!res) {\r\n throw new Error('setAutoPadding failed');\r\n }\r\n return this;\r\n }\r\n\r\n public setAAD(\r\n buffer: Buffer,\r\n options?: {\r\n plaintextLength: number;\r\n },\r\n ): this {\r\n // Check if native parts are initialized\r\n if (!this.native || typeof this.native.setAAD !== 'function') {\r\n throw new Error('Cipher native object or setAAD method not initialized.');\r\n }\r\n const res = this.native.setAAD(buffer.buffer, options?.plaintextLength);\r\n if (!res) {\r\n throw new Error('setAAD failed (native call returned false)');\r\n }\r\n return this;\r\n }\r\n\r\n public getAuthTag(): Buffer {\r\n return Buffer.from(this.native.getAuthTag());\r\n }\r\n\r\n public setAuthTag(tag: Buffer): this {\r\n const res = this.native.setAuthTag(binaryLikeToArrayBuffer(tag));\r\n if (!res) {\r\n throw new Error('setAuthTag failed');\r\n }\r\n return this;\r\n }\r\n\r\n public getSupportedCiphers(): string[] {\r\n return this.native.getSupportedCiphers();\r\n }\r\n}\r\n\r\nclass Cipheriv extends CipherCommon {\r\n constructor(\r\n cipherType: string,\r\n cipherKey: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n ) {\r\n super({\r\n isCipher: true,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n options,\r\n });\r\n }\r\n}\r\n\r\nexport type Cipher = Cipheriv;\r\n\r\nclass Decipheriv extends CipherCommon {\r\n constructor(\r\n cipherType: string,\r\n cipherKey: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n ) {\r\n super({\r\n isCipher: false,\r\n cipherType,\r\n cipherKey: binaryLikeToArrayBuffer(cipherKey),\r\n iv: binaryLikeToArrayBuffer(iv),\r\n options,\r\n });\r\n }\r\n}\r\n\r\nexport type Decipher = Decipheriv;\r\n\r\nexport function createDecipheriv(\r\n algorithm: CipherCCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherCCMOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: CipherOCBTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherOCBOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: CipherGCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherGCMOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: TransformOptions,\r\n): Decipher;\r\nexport function createDecipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n): Decipher {\r\n return new Decipheriv(algorithm, key, iv, options);\r\n}\r\n\r\nexport function createCipheriv(\r\n algorithm: CipherCCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherCCMOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: CipherOCBTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options: CipherOCBOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: CipherGCMTypes,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherGCMOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: TransformOptions,\r\n): Cipher;\r\nexport function createCipheriv(\r\n algorithm: string,\r\n key: BinaryLikeNode,\r\n iv: BinaryLike,\r\n options?: CipherOptions,\r\n): Cipher {\r\n return new Cipheriv(algorithm, key, iv, options);\r\n}\r\n\r\n/**\r\n * xsalsa20 stream encryption with @noble/ciphers compatible API\r\n *\r\n * @param key - 32 bytes\r\n * @param nonce - 24 bytes\r\n * @param data - data to encrypt\r\n * @param output - unused\r\n * @param counter - unused\r\n * @returns encrypted data\r\n */\r\nexport function xsalsa20(\r\n key: Uint8Array,\r\n nonce: Uint8Array,\r\n data: Uint8Array,\r\n // @ts-ignore haven't implemented this part of @noble/ciphers API\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n output?: Uint8Array | undefined,\r\n // @ts-ignore haven't implemented this part of @noble/ciphers API\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n counter?: number,\r\n): Uint8Array {\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const native = factory.createCipher({\r\n isCipher: true,\r\n cipherType: 'xsalsa20',\r\n cipherKey: binaryLikeToArrayBuffer(key),\r\n iv: binaryLikeToArrayBuffer(nonce),\r\n });\r\n const result = native.update(binaryLikeToArrayBuffer(data));\r\n return new Uint8Array(result);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ var _utils = require("./utils");
|
|
|
13
13
|
var _dhGroups = require("./dh-groups");
|
|
14
14
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
15
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
16
|
-
function _toPrimitive(t,
|
|
16
|
+
function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
17
17
|
class DhKeyPairGen {
|
|
18
18
|
constructor(options) {
|
|
19
19
|
_defineProperty(this, "native", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_dhGroups","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DhKeyPairGen","constructor","options","native","NitroModules","createHybridObject","groupName","prime","primeLength","generator","group","DH_GROUPS","Error","primeBuf","Buffer","from","setPrime","buffer","slice","byteOffset","byteLength","gen","parseInt","setGenerator","setPrimeLength","generateKeyPair","generateKeyPairSync","exports","dh_prepareKeyGenParams","dh_formatKeyPairOutput","dh","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Uint8Array","toString","dh_generateKeyPairNode","dh_generateKeyPairNodeSync"],"sources":["dhKeyPair.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { KeyObject, PublicKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport type { DhKeyPair } from './specs/v1/dhKeyPair.nitro';\r\nimport type { GenerateKeyPairOptions, KeyPairGenConfig } from './utils/types';\r\nimport { KFormatType, KeyEncoding } from './utils';\r\nimport { DH_GROUPS } from './dh-groups';\r\n\r\nexport class DhKeyPairGen {\r\n native: DhKeyPair;\r\n\r\n constructor(options: GenerateKeyPairOptions) {\r\n this.native = NitroModules.createHybridObject<DhKeyPair>('DhKeyPair');\r\n\r\n const { groupName, prime, primeLength, generator } = options;\r\n\r\n if (groupName) {\r\n // Resolve named group to prime + generator\r\n const group = DH_GROUPS[groupName];\r\n if (!group) {\r\n throw new Error(`Unknown DH group: ${groupName}`);\r\n }\r\n const primeBuf = Buffer.from(group.prime, 'hex');\r\n this.native.setPrime(\r\n primeBuf.buffer.slice(\r\n primeBuf.byteOffset,\r\n primeBuf.byteOffset + primeBuf.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n const gen = parseInt(group.generator, 16);\r\n this.native.setGenerator(gen);\r\n } else if (prime) {\r\n // Custom prime as Buffer\r\n const primeBuf = Buffer.from(prime);\r\n this.native.setPrime(\r\n primeBuf.buffer.slice(\r\n primeBuf.byteOffset,\r\n primeBuf.byteOffset + primeBuf.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n this.native.setGenerator(generator ?? 2);\r\n } else if (primeLength) {\r\n this.native.setPrimeLength(primeLength);\r\n this.native.setGenerator(generator ?? 2);\r\n } else {\r\n throw new Error(\r\n 'DH key generation requires one of: groupName, prime, or primeLength',\r\n );\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair();\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync();\r\n }\r\n}\r\n\r\nfunction dh_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): DhKeyPairGen {\r\n if (!options) {\r\n throw new Error('Options are required for DH key generation');\r\n }\r\n\r\n return new DhKeyPairGen(options);\r\n}\r\n\r\nfunction dh_formatKeyPairOutput(\r\n dh: DhKeyPairGen,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n\r\n const publicKeyData = dh.native.getPublicKey();\r\n const privateKeyData = dh.native.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function dh_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const dh = dh_prepareKeyGenParams(options);\r\n await dh.generateKeyPair();\r\n return dh_formatKeyPairOutput(dh, encoding);\r\n}\r\n\r\nexport function dh_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const dh = dh_prepareKeyGenParams(options);\r\n dh.generateKeyPairSync();\r\n return dh_formatKeyPairOutput(dh, encoding);\r\n}\r\n"],"mappings":";;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAGA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAAwC,SAAAK,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEjC,MAAMgB,YAAY,CAAC;EAGxBC,WAAWA,CAACC,OAA+B,EAAE;IAAArB,eAAA;IAC3C,IAAI,CAACsB,MAAM,GAAGC,qCAAY,CAACC,kBAAkB,CAAY,WAAW,CAAC;IAErE,MAAM;MAAEC,SAAS;MAAEC,KAAK;MAAEC,WAAW;MAAEC;IAAU,CAAC,GAAGP,OAAO;IAE5D,IAAII,SAAS,EAAE;MACb;MACA,MAAMI,KAAK,GAAGC,mBAAS,CAACL,SAAS,CAAC;MAClC,IAAI,CAACI,KAAK,EAAE;QACV,MAAM,IAAIE,KAAK,CAAC,qBAAqBN,SAAS,EAAE,CAAC;MACnD;MACA,MAAMO,QAAQ,GAAGC,yBAAM,CAACC,IAAI,CAACL,KAAK,CAACH,KAAK,EAAE,KAAK,CAAC;MAChD,IAAI,CAACJ,MAAM,CAACa,QAAQ,CAClBH,QAAQ,CAACI,MAAM,CAACC,KAAK,CACnBL,QAAQ,CAACM,UAAU,EACnBN,QAAQ,CAACM,UAAU,GAAGN,QAAQ,CAACO,UACjC,CACF,CAAC;MACD,MAAMC,GAAG,GAAGC,QAAQ,CAACZ,KAAK,CAACD,SAAS,EAAE,EAAE,CAAC;MACzC,IAAI,CAACN,MAAM,CAACoB,YAAY,CAACF,GAAG,CAAC;IAC/B,CAAC,MAAM,IAAId,KAAK,EAAE;MAChB;MACA,MAAMM,QAAQ,GAAGC,yBAAM,CAACC,IAAI,CAACR,KAAK,CAAC;MACnC,IAAI,CAACJ,MAAM,CAACa,QAAQ,CAClBH,QAAQ,CAACI,MAAM,CAACC,KAAK,CACnBL,QAAQ,CAACM,UAAU,EACnBN,QAAQ,CAACM,UAAU,GAAGN,QAAQ,CAACO,UACjC,CACF,CAAC;MACD,IAAI,CAACjB,MAAM,CAACoB,YAAY,CAACd,SAAS,IAAI,CAAC,CAAC;IAC1C,CAAC,MAAM,IAAID,WAAW,EAAE;MACtB,IAAI,CAACL,MAAM,CAACqB,cAAc,CAAChB,WAAW,CAAC;MACvC,IAAI,CAACL,MAAM,CAACoB,YAAY,CAACd,SAAS,IAAI,CAAC,CAAC;IAC1C,CAAC,MAAM;MACL,MAAM,IAAIG,KAAK,CACb,qEACF,CAAC;IACH;EACF;EAEA,MAAMa,eAAeA,CAAA,EAAkB;IACrC,MAAM,IAAI,CAACtB,MAAM,CAACsB,eAAe,CAAC,CAAC;EACrC;EAEAC,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAACvB,MAAM,CAACuB,mBAAmB,CAAC,CAAC;EACnC;AACF;AAACC,OAAA,CAAA3B,YAAA,GAAAA,YAAA;AAED,SAAS4B,sBAAsBA,CAC7B1B,OAA2C,EAC7B;EACd,IAAI,CAACA,OAAO,EAAE;IACZ,MAAM,IAAIU,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,OAAO,IAAIZ,YAAY,CAACE,OAAO,CAAC;AAClC;AAEA,SAAS2B,sBAAsBA,CAC7BC,EAAgB,EAChBC,QAA0B,EAI1B;EACA,MAAM;IAAEC,YAAY;IAAEC,aAAa;IAAEC,MAAM;IAAEC;EAAW,CAAC,GAAGJ,QAAQ;EAEpE,MAAMK,aAAa,GAAGN,EAAE,CAAC3B,MAAM,CAACkC,YAAY,CAAC,CAAC;EAC9C,MAAMC,cAAc,GAAGR,EAAE,CAAC3B,MAAM,CAACoC,aAAa,CAAC,CAAC;EAEhD,MAAMC,GAAG,GAAGC,kBAAS,CAACC,eAAe,CACnC,QAAQ,EACRN,aAAa,EACbO,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACC,IACd,CAAoB;EAEpB,MAAMC,IAAI,GAAGN,kBAAS,CAACC,eAAe,CACpC,SAAS,EACTJ,cAAc,EACdK,kBAAW,CAACC,GAAG,EACfC,kBAAW,CAACG,KACd,CAAqB;EAErB,IAAIC,SAA0D;EAC9D,IAAIC,UAA4D;EAEhE,IAAIlB,YAAY,KAAK,CAAC,CAAC,EAAE;IACvBiB,SAAS,GAAGT,GAAG;EACjB,CAAC,MAAM;IACL,MAAMW,MAAM,GACVnB,YAAY,KAAKW,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACC,GAAG;IACtE,MAAMS,QAAQ,GAAGb,GAAG,CAACc,MAAM,CAACC,SAAS,CAACJ,MAAM,EAAEN,kBAAW,CAACC,IAAI,CAAC;IAC/D,IAAIK,MAAM,KAAKR,kBAAW,CAACS,GAAG,EAAE;MAC9BH,SAAS,GAAGnC,yBAAM,CAACC,IAAI,CAAC,IAAIyC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACrE,CAAC,MAAM;MACLR,SAAS,GAAGI,QAAQ;IACtB;EACF;EAEA,IAAIpB,aAAa,KAAK,CAAC,CAAC,EAAE;IACxBiB,UAAU,GAAGH,IAAI;EACnB,CAAC,MAAM;IACL,MAAMI,MAAM,GACVlB,aAAa,KAAKU,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACS,GAAG,GAAGT,kBAAW,CAACC,GAAG;IACvE,MAAMS,QAAQ,GAAGN,IAAI,CAACO,MAAM,CAACC,SAAS,CACpCJ,MAAM,EACNN,kBAAW,CAACG,KAAK,EACjBd,MAAM,EACNC,UACF,CAAC;IACD,IAAIgB,MAAM,KAAKR,kBAAW,CAACS,GAAG,EAAE;MAC9BF,UAAU,GAAGpC,yBAAM,CAACC,IAAI,CAAC,IAAIyC,UAAU,CAACH,QAAQ,CAAC,CAAC,CAACI,QAAQ,CAAC,OAAO,CAAC;IACtE,CAAC,MAAM;MACLP,UAAU,GAAGG,QAAQ;IACvB;EACF;EAEA,OAAO;IAAEJ,SAAS;IAAEC;EAAW,CAAC;AAClC;AAEO,eAAeQ,sBAAsBA,CAC1CxD,OAA2C,EAC3C6B,QAA0B,EAIzB;EACD,MAAMD,EAAE,GAAGF,sBAAsB,CAAC1B,OAAO,CAAC;EAC1C,MAAM4B,EAAE,CAACL,eAAe,CAAC,CAAC;EAC1B,OAAOI,sBAAsB,CAACC,EAAE,EAAEC,QAAQ,CAAC;AAC7C;AAEO,SAAS4B,0BAA0BA,CACxCzD,OAA2C,EAC3C6B,QAA0B,EAI1B;EACA,MAAMD,EAAE,GAAGF,sBAAsB,CAAC1B,OAAO,CAAC;EAC1C4B,EAAE,CAACJ,mBAAmB,CAAC,CAAC;EACxB,OAAOG,sBAAsB,CAACC,EAAE,EAAEC,QAAQ,CAAC;AAC7C","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNativeNitroModules","require","_reactNativeBuffer","_classes","_utils","_dhGroups","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DhKeyPairGen","constructor","options","native","NitroModules","createHybridObject","groupName","prime","primeLength","generator","group","DH_GROUPS","Error","primeBuf","Buffer","from","setPrime","buffer","slice","byteOffset","byteLength","gen","parseInt","setGenerator","setPrimeLength","generateKeyPair","generateKeyPairSync","exports","dh_prepareKeyGenParams","dh_formatKeyPairOutput","dh","encoding","publicFormat","privateFormat","cipher","passphrase","publicKeyData","getPublicKey","privateKeyData","getPrivateKey","pub","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","priv","PKCS8","publicKey","privateKey","format","PEM","exported","handle","exportKey","Uint8Array","toString","dh_generateKeyPairNode","dh_generateKeyPairNodeSync"],"sources":["dhKeyPair.ts"],"sourcesContent":["import { NitroModules } from 'react-native-nitro-modules';\r\nimport { Buffer } from '@craftzdog/react-native-buffer';\r\nimport { KeyObject, PublicKeyObject, PrivateKeyObject } from './keys/classes';\r\nimport type { DhKeyPair } from './specs/v1/dhKeyPair.nitro';\r\nimport type { GenerateKeyPairOptions, KeyPairGenConfig } from './utils/types';\r\nimport { KFormatType, KeyEncoding } from './utils';\r\nimport { DH_GROUPS } from './dh-groups';\r\n\r\nexport class DhKeyPairGen {\r\n native: DhKeyPair;\r\n\r\n constructor(options: GenerateKeyPairOptions) {\r\n this.native = NitroModules.createHybridObject<DhKeyPair>('DhKeyPair');\r\n\r\n const { groupName, prime, primeLength, generator } = options;\r\n\r\n if (groupName) {\r\n // Resolve named group to prime + generator\r\n const group = DH_GROUPS[groupName];\r\n if (!group) {\r\n throw new Error(`Unknown DH group: ${groupName}`);\r\n }\r\n const primeBuf = Buffer.from(group.prime, 'hex');\r\n this.native.setPrime(\r\n primeBuf.buffer.slice(\r\n primeBuf.byteOffset,\r\n primeBuf.byteOffset + primeBuf.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n const gen = parseInt(group.generator, 16);\r\n this.native.setGenerator(gen);\r\n } else if (prime) {\r\n // Custom prime as Buffer\r\n const primeBuf = Buffer.from(prime);\r\n this.native.setPrime(\r\n primeBuf.buffer.slice(\r\n primeBuf.byteOffset,\r\n primeBuf.byteOffset + primeBuf.byteLength,\r\n ) as ArrayBuffer,\r\n );\r\n this.native.setGenerator(generator ?? 2);\r\n } else if (primeLength) {\r\n this.native.setPrimeLength(primeLength);\r\n this.native.setGenerator(generator ?? 2);\r\n } else {\r\n throw new Error(\r\n 'DH key generation requires one of: groupName, prime, or primeLength',\r\n );\r\n }\r\n }\r\n\r\n async generateKeyPair(): Promise<void> {\r\n await this.native.generateKeyPair();\r\n }\r\n\r\n generateKeyPairSync(): void {\r\n this.native.generateKeyPairSync();\r\n }\r\n}\r\n\r\nfunction dh_prepareKeyGenParams(\r\n options: GenerateKeyPairOptions | undefined,\r\n): DhKeyPairGen {\r\n if (!options) {\r\n throw new Error('Options are required for DH key generation');\r\n }\r\n\r\n return new DhKeyPairGen(options);\r\n}\r\n\r\nfunction dh_formatKeyPairOutput(\r\n dh: DhKeyPairGen,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const { publicFormat, privateFormat, cipher, passphrase } = encoding;\r\n\r\n const publicKeyData = dh.native.getPublicKey();\r\n const privateKeyData = dh.native.getPrivateKey();\r\n\r\n const pub = KeyObject.createKeyObject(\r\n 'public',\r\n publicKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n ) as PublicKeyObject;\r\n\r\n const priv = KeyObject.createKeyObject(\r\n 'private',\r\n privateKeyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n ) as PrivateKeyObject;\r\n\r\n let publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n let privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n\r\n if (publicFormat === -1) {\r\n publicKey = pub;\r\n } else {\r\n const format =\r\n publicFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = pub.handle.exportKey(format, KeyEncoding.SPKI);\r\n if (format === KFormatType.PEM) {\r\n publicKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n publicKey = exported;\r\n }\r\n }\r\n\r\n if (privateFormat === -1) {\r\n privateKey = priv;\r\n } else {\r\n const format =\r\n privateFormat === KFormatType.PEM ? KFormatType.PEM : KFormatType.DER;\r\n const exported = priv.handle.exportKey(\r\n format,\r\n KeyEncoding.PKCS8,\r\n cipher,\r\n passphrase,\r\n );\r\n if (format === KFormatType.PEM) {\r\n privateKey = Buffer.from(new Uint8Array(exported)).toString('utf-8');\r\n } else {\r\n privateKey = exported;\r\n }\r\n }\r\n\r\n return { publicKey, privateKey };\r\n}\r\n\r\nexport async function dh_generateKeyPairNode(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): Promise<{\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n}> {\r\n const dh = dh_prepareKeyGenParams(options);\r\n await dh.generateKeyPair();\r\n return dh_formatKeyPairOutput(dh, encoding);\r\n}\r\n\r\nexport function dh_generateKeyPairNodeSync(\r\n options: GenerateKeyPairOptions | undefined,\r\n encoding: KeyPairGenConfig,\r\n): {\r\n publicKey: PublicKeyObject | Buffer | string | ArrayBuffer;\r\n privateKey: PrivateKeyObject | Buffer | string | ArrayBuffer;\r\n} {\r\n const dh = dh_prepareKeyGenParams(options);\r\n dh.generateKeyPairSync();\r\n return dh_formatKeyPairOutput(dh, encoding);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ var _dhGroups = require("./dh-groups");
|
|
|
12
12
|
var _conversion = require("./utils/conversion");
|
|
13
13
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
14
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
15
|
-
function _toPrimitive(t,
|
|
15
|
+
function _toPrimitive(t, e) { if ("object" != typeof t || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
16
16
|
class DiffieHellman {
|
|
17
17
|
constructor(sizeOrPrime, generator, encoding) {
|
|
18
18
|
_defineProperty(this, "_hybrid", void 0);
|