@hxa-rn/react-native-quick-crypto 1.1.0-beta.1 → 1.1.1

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/README.md CHANGED
@@ -1,171 +1,173 @@
1
- 本项目基于 [react-native-quick-crypto](https://github.com/margelo/react-native-quick-crypto)开发。如果在使用过程中有任何问题,欢迎在AtomGit提交Issue,会及时跟进。
2
-
3
- ## 项目介绍
4
-
5
- `@hxa-rn/react-native-quick-crypto` 是 `react-native-quick-crypto` 的鸿蒙(OpenHarmony / HarmonyOS)适配包,基于 Nitro Modules 与预编译 OpenSSL,在 RN 鸿蒙运行时提供接近 Node.js `crypto` 的能力。当前版本:`1.1.0-beta.1`。
6
-
7
- ## 集成指南
8
-
9
- ```bash
10
- npm install @hxa-rn/react-native-quick-crypto
11
- ```
12
-
13
- 业务代码仍按上游包名导入(`package.json` 中 `harmony.alias` 为 `react-native-quick-crypto`):
14
-
15
- ```ts
16
- import crypto from 'react-native-quick-crypto';
17
- ```
18
-
19
- 鸿蒙工程侧通过 autolinking 引入 HAR(示例见 `example` / `example_auto` 的 `oh-package.json5`)。
20
-
21
- ### Demo 编译(Windows 注意)
22
-
23
- 在 `example` 或 `example_auto` 中编译鸿蒙工程前,请按下列顺序执行:
24
-
25
- ```bash
26
- # 1) 安装 JS 依赖(含 @react-native-oh/react-native-harmony / harmony-cli)
27
- cd example_auto
28
- npm install
29
-
30
- # 2) 安装 ohpm 依赖
31
- cd harmony
32
- ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/
33
-
34
- # 3) 打包 JS bundle(会自动先执行 ohpm:materialize)
35
- cd ..
36
- npm run dev
37
-
38
- # 4) DevEco:Sync and Refresh → Run
39
- # Sync 会再次 ohpm install 并重建 Junction;工程已在 hvigorfile.ts 启动时自动 materialize,一般无需再手跑脚本
40
- ```
41
-
42
- 说明:
43
-
44
- - **根因**:`ohpm install` / DevEco「同步并刷新」会把 `oh_modules/@rnoh/...` 建成 **Junction**,指向 `oh_modules/.ohpm/@pkg@<超长哈希>/...`。ninja 解析真实路径后超过 Windows 260 字符限制。
45
- - **为何 `npm run dev` 后又失败**:`dev` 只打 JS bundle;随后 DevEco Sync 会重新装 ohpm 依赖,把刚才落地的短目录又改回长路径 Junction,所以 Run 原生编译再次报 260。
46
- - **自动修复**:`harmony/hvigorfile.ts` 加载时会调用 `materialize-ohpm.js`(仅 Windows):把 Junction 落成短目录;若 `entry/.cxx` 里仍缓存着 `.ohpm` 超长绝对路径会自动清掉,避免「目录已短但 ninja 仍报 260」。
47
- - **手动命令**(排查或脚本失败时):
48
-
49
- ```powershell
50
- npm run ohpm:materialize
51
- ```
52
-
53
- 然后重新 DevEco Run(不要只用增量;清过 `.cxx` 后首次原生编译会稍慢)。
54
-
55
- - **改用例 JS**:只需 `npm run dev` 更新 bundle,不必为改文件而重复 materialize。
56
-
57
- ## 使用说明
58
-
59
- ```ts
60
- import { install } from 'react-native-quick-crypto';
61
-
62
- // 可选:将 global.crypto / global.Buffer 安装为 QuickCrypto 实现
63
- install();
64
-
65
- import crypto from 'react-native-quick-crypto';
66
-
67
- const hash = crypto.createHash('sha256').update('hello').digest('hex');
68
- const bytes = crypto.randomBytes(16);
69
- ```
70
-
71
- 更完整场景见 `example_auto` 中的自动化用例页。
72
-
73
- ## 接口文档
74
-
75
- 公开能力与上游 `react-native-quick-crypto` 对齐,主要包括:
76
-
77
- | 模块 | 说明 |
78
- |------|------|
79
- | `createHash` / `createHmac` | 摘要与 HMAC |
80
- | `createCipheriv` / `createDecipheriv` | 对称加解密 |
81
- | `randomBytes` / `randomFill` 等 | 随机数 |
82
- | `pbkdf2` / `scrypt` / `hkdf` | 密钥派生 |
83
- | `generateKeyPair` / 各类 KeyObject | 非对称密钥 |
84
- | `subtle` | WebCrypto 子集 |
85
- | `install()` | 注入 `global.crypto` / `global.Buffer` |
86
-
87
- 具体类型定义见包内 `dist/typescript`。
88
-
89
- ## 快速验证(运行 Example)
90
-
91
- ### 前置条件
92
-
93
- | 依赖 | 版本要求 |
94
- |------|----------|
95
- | Node.js | >= 18 |
96
- | DevEco Studio | 5.0+ |
97
- | HarmonyOS SDK | API 13+ |
98
-
99
- ### 运行步骤
100
-
101
- **1. 克隆仓库**
102
-
103
- ```bash
104
- git clone https://gitcode.com/hxa-rn/react-native-quick-crypto.git
105
- cd react-native-quick-crypto
106
- git checkout br_rnoh0.72
107
- ```
108
-
109
- **2. 安装仓库开发依赖**
110
-
111
- ```bash
112
- npm install --legacy-peer-deps
113
- ```
114
-
115
- Example 已改为从 npm 公仓安装 `@hxa-rn/react-native-quick-crypto@1.1.0-beta.1`,不再使用本地 `file:../xxx.tgz`,运行 Example 不必再执行 `npm pack`。
116
-
117
- **3. 进入 example 目录,安装依赖**
118
-
119
- ```bash
120
- cd example # 或 example_auto
121
- npm install --legacy-peer-deps
122
- ```
123
-
124
- **4. 生成 JS Bundle**
125
-
126
- ```bash
127
- npm run dev
128
- ```
129
-
130
- 产物:`harmony/entry/src/main/resources/rawfile/bundle.harmony.js`
131
-
132
- **5. 用 DevEco Studio 打开鸿蒙工程**
133
-
134
- - 打开 DevEco Studio
135
- - 选择 `example/harmony`(或 `example_auto/harmony`)目录
136
- - 等待 Sync 完成
137
-
138
- **6. 编译并运行 HAP**
139
-
140
- 在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。
141
-
142
- > **注意**:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。
143
-
144
- ## 约束与限制
145
-
146
- **兼容性**
147
-
148
- - 鸿蒙 SDK:API 13+(与当前 Demo / HAR 配置一致)
149
- - 上游 RN:`react-native-quick-crypto` 1.x 能力面
150
- - React Native / RNOH:RN `0.77.x` + `@react-native-oh/react-native-harmony` `0.77.x`(以 Demo `package.json` 为准)
151
- - 原生依赖:仓库内 vendored 的 OpenSSL 3.6.0 预编译静态库(`aarch64-linux-ohos`),见 `harmony/quick_crypto/src/main/cpp/third_party/openssl/`
152
-
153
- **权限**
154
-
155
- - 无额外系统权限。
156
-
157
- **Windows 路径**
158
-
159
- - Windows:DevEco Sync 会重建 ohpm Junction(超长路径)。工程已在 `harmony/hvigorfile.ts` 启动时自动 `materialize`;若仍报 260,手动执行 `npm run ohpm:materialize` 后再 Run。仅改 JS/TS 时只需 `npm run dev`。
160
-
161
- ## 开源license
162
-
163
- 本项目基于 MIT 协议,详见 [LICENSE](LICENSE) 文件。
164
-
165
- ## 问题反馈渠道
166
-
167
- 使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:
168
-
169
- https://gitcode.com/hxa-rn/react-native-quick-crypto
170
-
171
- https://gitcode.com/hxa-rn/react-native-quick-crypto/issues
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.1`。
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
+ git checkout br_rnoh0.72
109
+ ```
110
+
111
+ **2. 安装仓库开发依赖**
112
+
113
+ ```bash
114
+ npm install --legacy-peer-deps
115
+ ```
116
+
117
+ Example 已改为从 npm 公仓安装 `@hxa-rn/react-native-quick-crypto@1.1.1`,不再使用本地 `file:../xxx.tgz`,运行 Example 不必再执行 `npm pack`。
118
+
119
+ **3. 进入 example 目录,安装依赖**
120
+
121
+ ```bash
122
+ cd example # 或 example_auto
123
+ npm install --legacy-peer-deps
124
+ ```
125
+
126
+ **4. 生成 JS Bundle**
127
+
128
+ ```bash
129
+ npm run dev
130
+ ```
131
+
132
+ 产物:`harmony/entry/src/main/resources/rawfile/bundle.harmony.js`
133
+
134
+ **5. 用 DevEco Studio 打开鸿蒙工程**
135
+
136
+ - 打开 DevEco Studio
137
+ - 选择 `example/harmony`(或 `example_auto/harmony`)目录
138
+ - 等待 Sync 完成
139
+
140
+ **6. 编译并运行 HAP**
141
+
142
+ 在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。
143
+
144
+ > **注意**:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。
145
+
146
+ ## 约束与限制
147
+
148
+ **兼容性**
149
+
150
+ - 鸿蒙 SDK:API 13+(与当前 Demo / HAR 配置一致)
151
+ - 上游 RN:`react-native-quick-crypto` 1.x 能力面
152
+ - React Native / RNOH:RN `0.77.x` + `@react-native-oh/react-native-harmony` `0.77.x`(以 Demo `package.json` 为准)
153
+ - 原生依赖:仓库内 vendored 的 OpenSSL 3.6.0 预编译静态库(`aarch64-linux-ohos`),见 `harmony/quick_crypto/src/main/cpp/third_party/openssl/`
154
+
155
+ **权限**
156
+
157
+ - 无额外系统权限。
158
+
159
+ **Windows 路径**
160
+
161
+ - Windows:DevEco Sync 会重建 ohpm Junction(超长路径)。工程已在 `harmony/hvigorfile.ts` 启动时自动 `materialize`;若仍报 260,手动执行 `npm run ohpm:materialize` 后再 Run。仅改 JS/TS 时只需 `npm run dev`。
162
+
163
+ ## 开源license
164
+
165
+ 本项目基于 MIT 协议,详见 [LICENSE](LICENSE) 文件。
166
+
167
+ ## 问题反馈渠道
168
+
169
+ 使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:
170
+
171
+ https://gitcode.com/hxa-rn/react-native-quick-crypto
172
+
173
+ https://gitcode.com/hxa-rn/react-native-quick-crypto/issues