Open waterbang opened 1 month ago
public_key
{
"crv": "P-256",
"ext": true,
"key_ops": [
"verify"
],
"kty": "EC",
"x": "U7uuf8JvwW1Ph5yuQk-4jRuHdBPb3Me_koP22CskEKw",
"y": "er0piIbBzGKI8yXt3Jt53Bhr4TyuTx8WGMpOtk5xN_k"
}
private_key
{
"crv": "P-256",
"d": "1eQRkpP_wpVPIT0ksrihZFQSmCZyODQhxZcKnbagFAA",
"ext": true,
"key_ops": [
"sign"
],
"kty": "EC",
"x": "N-kwtatqOClcrN56MUgGdKsMaq7B8fc7a7ks05URaO0",
"y": "w3cM8fmuD53ZnOdTcSaNdyH8k6pDj5RrnZpo9VcmZV8"
}
dweb://install
添加原生的 i18n 支持
i18n
时,会根据当前 DwebBrowser 所处的语言环境进行自动选择manifest
,意味着将 url 输入的链接当作 manifest 来处理IDWebView.UserAgentBrandData("install", "2")
,来告知浏览器 dweb://install
支持 mode 配置dwebkeygen [--version=1] [--payload=] *.dwebkey.json
interface DwebKeyV1 {
version: 1;
public_key: "HEX";
private_key: "HEX";
}
type DwebKey = DwebKeyV1;
dwebsign [--format=json] *.json [-o *.json] --key=hex|*.dwebkey.json [--version=1]
签名工具的目的是让 dweb 知道这个文件没有被篡改
- 以上参数都可以写在配置文件中,我们会调用翻译服务进行,翻译服务可以进行配置,也可以用命令行参数来支持
- 支持
-c custom-config.json
,并读取指定配置文件中的dwebsign
字段来应用配置。- 如果没有
dwebsign
字段,那么会直接尝试读取 key 等配置字段- 默认读取 dwebsignrc.json 文件
- format 参数意味着如何解析输入文件,默认会根据文件后缀进行切换。目前默认只支持 json
- json 格式下,签名工具会在文件内添加
dweb_sign
字段interface DwebSignatureV1 { version: 1; public_key: "HEX"; signature: "HEX"; } type DwebSignature = DwebSignatureV1; interface JsonWithDwebSignature { dweb_sign: DwebSignature; }
目前第一版本,使用 Ed25519 算法进行签名
dwebtranslate --mode=manifest *.json --from=zh --to=en,ja --outdir=i18ndir [--server-api-key=]
-c custom-config.json
,并读取指定配置文件中的dwebtranslate
字段来应用配置。
dwebtranslate
字段,那么会直接尝试读取 to/from 等配置字段--mode=manifest
意味着翻译模式,就是将 json 文件当成 manifest 格式来处理,那么就会只针对该文件中必要的字段进行翻译manifest.i18n.json
的文件,它会枚举这个文件夹中的其它多语言文件
type ISO_6391_1 = "zh_CN" | "en_US" | "...";
interface ManifestI18n extends JsonWithDwebSignature {
".": {
version: 1;
baseUrl?: string;
};
}
ISO 639-1
标准来制定 lang
@dweb-browser/dweb-install
:
import { dwebInstall } from "@dweb-browser/dweb-install";
dwebInstall.manifest("./manifest.json");
dwebInstall.i18n("./manifest.i18n.json");
dwebInstall.manifest
会自动补全链接,并拼接成 dweb://install?url=https://xxx.json
dwebInstall.i18n
会判断当前 dwebBrowser 是否支持 dweb://install?mode=i18n
dweb://install?mode=i18n&url=https://xxx.json
manifest.i18n.json
文件,然后解析出所需的manifest.lang.json
文件,再去调用 dweb://install?url
manifest.i18n.json
的签名合法性plaoc bundle
会自己完成 dwebkeygen dwebtranslate dwebsign 一系列的工作。install --url=xxx
dwebkeygen --payload=xxx # dweb://dwebkeygen?payload=xxx
dweb://install?url=xxx
app进行安全限制
正式应用只允许挂载到有IPC备案应用安装中心进行安装。
bundle_signature
格式为
hex:{signature}
生成方式为:signature = sign(algorithm, "{app_id}:{bundle_hash}", private_key)
验证方式为:success = verifiy(algorithm, "{app_id}:{bundle_hash}" , public_key,signature)
public_key_url
该字段将会用于验证应用持有者的身份 该链接必须使用和app-id同域名的网站链接,
请求回来是一个“算法+公钥地址”的格式 "{algorithm}:hex;{publicKey}",比如说请求回来的是公钥json。rsa-sha256:hex;5394efaada3a24b624f098385496a85044a9ebb40dbc5f3ce945d3466d899121
dweb_signature
新增dweb_signature:string,
metadata.json
内容进行签名。 该字段也是通过 私钥对hash
签名,通过public_key_url
请求的公钥验证上述签名算法将使用
ECDSA (Elliptic Curve Digital Signature Algorithm)
(基于椭圆曲线密码学 (ECC) 的数字签名算法)