自我主权身份是任何人,组织或不取决于任何集中权威并且永远无法被带走的人的终身便携性身份。自我主持的身份是一个两党关系模型,在您和组织之间没有第三方,现在被认为是您的“同伴”。
如今,SSI可以使用DIDS和可验证的凭证。
DID是一种新型的全球唯一标识符(URI),不需要集中式注册机构,因为可以使用密码学证明对标识符的控制。您可以将其视为我们更熟悉的标识符之一(一个域名或电话号码),而没有ICANN或NANP等中央注册商。
可验证的凭据(VC)是可互操作数字凭据的新格式,该格式由W3C可验证的索赔工作组定义。可验证的凭证符合W3C可验证的凭据数据模型,它们可以使用称为“信任三角形的模式”来促进交互:
发行人通常通过以特殊方式将JSON文档数字签名来创建凭据。持有人存储它们,验证者要求根据它们进行证明。持有人向验证者提供的可验证演示文稿是由持有人构建的证据,即凭证或从一个或多个凭证中得出的数据,以满足验证者的要求。验证者可以肯定地学习发行人通过检查可验证的数据注册表(通常是区块链)来证明某些内容。
React MSDK是使用Evernym Mobile SDK作为ARIES兼容React本机软件包构建的,该包装允许快速构建自定义的数字钱包(完全在您控制的下方),代表可验证的凭据模型中的持有人方面。
使用React-Native Mobile SDK,您的应用程序可以:
身份钱包应用程序可实现无数用例,包括证明您已经超过特定的法定年龄,而没有透露您的确切出生日期,私下,安全地共享健康记录,并一劳永逸地取消用户名和password概念。
对于您的身份钱包的测试,您可以使用代表相反通信方面的Verity SDK。
在Evernym移动SDK和Verity SDK存储库中,您可以找到有关构建身份钱包和可验证的凭据交换过程的许多有用信息。
要创建一个新项目,您需要仔细研究以下步骤。
创建新的React本地项目。我们将其称为本指南的awesomeMsdkProject 。
npx react-native init awesomeMsdkProject --version 0.65.1注意:您需要使用与evernym react-native-sdk的package.json文件中指定的相同版本的react-native peerDependencies当前推荐的反应本版本为0.65.1 。通过使用不同的版本,您可能会与SDK有问题。
要在新应用程序中包括SDK,您需要设置其依赖项。
替换依赖项部分,仅留下@evernym/react-native-white-label-app依赖项到您的package.json 。
"dependencies" : {
"@evernym/react-native-white-label-app" : " https://gitlab.com/evernym/mobile/react-native-white-label-app.git " ,
},本地依赖性应放在应用程序依赖项中(请参阅问题)。它们被列为SDK中的同行依赖。
将来自@evernym/react-native-white-label-app所有同伴依赖项添加到应用程序package.json的dependencies项部分中。
"dependencies" : {
"@react-native-community/async-storage" : " x " ,
...
"react-native-zip-archive" : " x " ,
"react-native" : " 0.65.1 " ,
"rn-fetch-blob" : " x " ,
...
},将来自@evernym/react-native-white-label-app的所有devDependencies添加到应用程序package.json的devDependencies部分中。
"devDependencies" : {
...
"copyfiles" : " x "
},将以下命令添加到您的应用程序package.json的scripts部分。
"scripts" : {
...
"evernym-sdk:configure" : " yarn --cwd node_modules/@evernym/react-native-white-label-app run configure "
},此命令将通过evernym-sdk添加为将来的应用程序自定义的必要模块。
现在,您可以安装所有依赖项并进行自动配置,在项目目录中运行以下命令:
yarn
yarn evernym-sdk:configure这将安装所有依赖关系,并将所需的模块添加到awesomeMsdkProject/app/evernym-sdk目录中。
删除默认的App.js ,然后将以下内容放入index.js中:
import * as EvernymSdk from '@evernym/react-native-white-label-app' ;
import { name as appName } from './app.json' ;
EvernymSdk . createApp ( appName ) ;导航到app/evernym-sdk/provision.js文件,并定义您的应用程序和函数使用的环境,以便被要求获取配置令牌。
请注意,应用程序环境必须匹配注册赞助商服务器的环境。
例如,如果在DEMO环境上注册了赞助商服务器,则该应用程序必须使用DEMO。
DEFAULT_SERVER_ENVIRONMENT要使用的环境名称。
有几个预定义的环境:
// use default combination - DEMO for debug and PROD for releases builds
export const DEFAULT_SERVER_ENVIRONMENT = null
// use Demo env
// Agency: `https://agency.pps.evernym.com` and `Sovrin Staging Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'DEMO'
// use Production env
// Agency: `https://agency.evernym.com` and `Sovrin Live Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'PROD'
// use Staging env
// Agency: `https://agency.pstg.evernym.com` and `Sovrin Staging Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'STAGING' 您还可以使用SERVER_ENVIRONMENTS和DEFAULT_SERVER_ENVIRONMENT变量的组合提供和使用自定义环境:
export const SERVER_ENVIRONMENTS = {
'CUSTOM' : {
agencyUrl : 'ahency_url' ,
agencyDID : 'did' ,
agencyVerificationKey : 'verkey' ,
poolConfig : [ { key : 'staging' , genesis : 'genesis_transactions' } ] ,
}
}
export const DEFAULT_SERVER_ENVIRONMENT = 'CUSTOM' GET_PROVISION_TOKEN_FUNC将调用函数,以便为您的应用程序获取代理配置令牌。
/// example
export const GET_PROVISION_TOKEN_FUNC = async (): [error: string | null, token: string | null] => {
try {
// call your sponsor server endpoint
const response = fetch_api(your_endpoint)
// process response
// return result in format [error, token]
return [null, response.token]
} catch (error) {
return [error.message, null]
}
}
恭喜!现在我们已经准备好JS的一部分。作为下一步,我们需要为目标平台配置构建。
注意:此时,您应该已经完成了基本应用程序配置部分。
为了配置Android平台的应用程序的构建,请参阅文档。
注意:此时,您应该已经完成了基本应用程序配置部分。
为了配置iOS平台应用程序的构建,请参阅文档。
请参阅文档以获取可用配置选项的概述。
这项工作是一个项目的一部分,该项目已通过我们参与Essif-Lab提供的871932协议获得了欧盟Horizon 2020研究与创新计划的资金,该协议旨在推动对所有人的利益的广泛采用。