请求多个索赔
在某些情况下,您可能需要在一次 DID Connect 中进行多次签名,以获得更顺畅的体验。请参阅本文,了解如何通过 DID Connect 进行多项声明。
基本流程与“快速入门”章节一致,请按如下方式更改处理程序中的代码:
const { fromBase58, toBase58 } = require('@ocap/util');
const { getHasher, types } = require('@ocap/mcrypto');
const { getRandomMessage } = require('../../libs/utils');
const logger = require('../../libs/logger');
const hasher = getHasher(types.HashType.SHA3);
const data = 'abcdefghijklmnopqrstuvwxyz'.repeat(32);
const action = 'request-multiple-claims';
module.exports = {
action,
onConnect() {
return {
signText: [
'signature',
() => {
return {
type: 'mime:text/plain',
data: getRandomMessage(),
description: 'Please sign the text',
};
},
],
signDigest: [
'signature',
() => {
return {
description: 'Please sign the digest',
digest: toBase58(hasher(data, 1)),
};
},
],
};
},
onAuth: ({ userDid, userPk, claims, updateSession }) => {
logger.info(`${action}.onAuth`, { userPk, userDid, claims });
updateSession({
result: [
{
origin: fromBase58(claims[0].origin).toString(),
sig: claims[0].sig,
},
{
origin: data,
digest: claims[1].digest,
sig: claims[1].sig,
},
],
});
},
};
将调用 DID Connect 代码的前端部分更改为如下内容:
connectApi.open({
locale: 'en',
action: 'request-multiple-claims',
onSuccess({ result }) {
// multi claims data will be in result, result would be an array
},
messages: {
title: 'Request Multiple Claims',
scan: 'In this session, you will do both text signing and summary signing',
},
});