对QR码的可验证演示文稿 JS Lib (@digitalbazaar/vpqr) (中文(简体) )
一个异形JS(针对Node.js和浏览器)库,它取一个可验证的演示文稿,通过CBOR-LD来压缩,并变成QR代码.
目录
背景情况
传统发展
警卫
传统发展
安装
- 浏览器和Node.js 14+得到支持.
从国家预防机制安装:
npm install @digitalbazaar/vpqr
在当地安装(用于开发):
git clone https://github.com/digitalbazaar/vpqr.git
cd vpqr
npm install
使用量
作为 QR 代码图像的可验证演示文稿编码
import vpqr from '@digitalbazaar/vpqr';
const vp = {
"@context": "https://www.w3.org/2018/credentials/v1",
"type": "VerifiablePresentation",
"verifiableCredential": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/cit/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"id": "urn:uuid:188e8450-269e-11eb-b545-d3692cf35398",
"type": [
"VerifiableCredential",
"ConcealedIdTokenCredential"
],
"issuer": "did:key:z6Mku2yHBpMvm13KqtupN7MNEj7Y7AREUWsFfGBRhyP9YZf7",
"issuanceDate": "2021-03-24T20:03:03Z",
"expirationDate": "2021-06-24T20:03:03Z",
"credentialSubject": {
"concealedIdToken": "zo58FV8vqzY2ZqLT4fSaVhe7CsdBKsUikBMbKridqSyc7LceLmgWcNTeHm2gfvgjuNjrVif1G2A5EKx2eyNkSu5ZBc6gNnjF8ZkV3P8dPrX8o46SF"
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2021-03-24T20:03:03Z",
"verificationMethod": "did:key:z6Mku2yHBpMvm13KqtupN7MNEj7Y7AREUWsFfGBRhyP9YZf7#z6Mku2yHBpMvm13KqtupN7MNEj7Y7AREUWsFfGBRhyP9YZf7",
"proofPurpose": "assertionMethod",
"proofValue": "z5Z33Pi9zWUWMHdxhG1Ko7ssgeHsuT3ocyg46pJTTjbwk1YjjtSCa4CQ5UyjnkQ6ar5ohY5Kv2mncWbfgEqWcVrTQ"
}
}
};
// Set up your documentLoader
const documentLoader = {/*...*/};
const {imageDataUrl} = await vpqr.toQrCode({vp, documentLoader});
// data:image/gif;base64,R0lGODdhqgCqAIAAAAAAAP///ywAAAAAqgCqAAAC/4yPqcvt...
当扫描这些 QR 代码时, 它们被读取为字母模式文本,
VP1-R3ECQDIYBCEMDGEAYG2UADAYRCV4DA2DUORYHGOR...
格式中:
<format and version, 'VP1-'><multibase prefix, 'R'><base45 RFC9285 encoded CBOR-LD>
将 QR 代码文本解码为可验证的演示文稿
// Alphanumeric text from a QR Code Reader lib
const qrCodeText = 'VP1-R3ECQDIYBCEMDGEAYG2UADAYRCV4DA2DUORYHGOR...';
// Set up your documentLoader
const documentLoader = {/*...*/};
const {vp} = await vqpr.fromQrCode({text: qrCodeText, documentLoader});
// { "@context": "https://www.w3.org/2018/credentials/v1", ... }
// becomes a JSON object with the VP in the example above.
编码选项
qrMultibaseEncoding: QR数据编码.B页:1 RFC4648 (法语) 基数32,R页:1 RFC9285 (法语) 基础45. 基础45更有效率. 默认为基数45.qrErrorCorrectionLevel: QR 代码中使用的错误校正级别。“ L” 低 7%,"M"中15%,"Q"中25%,"H"高30%. 默认为"L".qrVersion:QR版本. 1-40或0为自動. 默认为自动 .
高级选项
更高级的使用大小写可以使用额外选项和较低级别的API
util数字 :
- 编码和解码可验证的证书.
- 使用自定义编码头像
VP1-财务报告和审定财务报表VC1-。 。 。 . - 查阅其他相关产出.
- 使用选项来控制输出模块大小( 小像素大小) 平方)和图像静区边距大小.
- 控制 QR 选项, 如错误校正级别 .
- 提供诊断功能.
- 传承遗产
cborldappContextMap或现代registryEntryId, (中文(简体) ),typeTable,以及typeTableLoader选项.
import {util} from '@digitalbazaar/vpqr';
const {toQrCode} = util;
// setup options as needed
// encode QR code
const {
version, payload, imageDataUrl, encodedCborld, rawCborldBytes
} = await toQrCode({
header: 'VC1-',
jsondldDocument: verifiableCredential,
documentLoader,
registryEntryId: 2000,
typeTableLoader,
moduleSize: 4,
margin: 16,
qrErrorCorrectionLevel: 'H'
});
// decode QR code text
const {
jsondldDocument
} = await fromQrCode({
expectedHeader = 'VC1-',
text,
decodeCborld: true,
documentLoader,
typeTableLoader
});
贡献
见 贡献文件来啊!
公关接受.
请遵照 标准读取 规格.
商业支助
该图书馆的商务支助可应下列请求提供: 数字集市: 支持@ digitalbazaar.com