@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
|
-
|
|
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
|
-
https://gitcode.com/hxa-rn/react-native-quick-crypto
|
|
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
|