
# 同态加密库的使用
介绍同态加密库的使用。
#### 操作步骤
1. 实例订购及文件下载。 
   订购BCS实例时，安全机制选择使用"ECDSA"同态加密。完成订购后，下载同态加密库ahex.x.x.tar.gz，客户端开发套件国密SDK包sdkx.x.x.tar.gz，peer与orderer用户证书，配置文件等。
   
   
2. 安装客户端SDK库。 
   将下载的国密SDK包sdkx.x.x.tar.gz解压到用户的$GOPATH目录下。
   
   
3. 安装同态加密库。 
   将下载的ahex.x.x.tar.gz解压到用户的$GOPATH目录下。
   
   
4. 安装依赖库（仅针对Fabric1.1）。 
   依赖的库文件位于同态加密库目录下，当同态加密库被解压到用户的$GOPATH目录后，该文件位于$GOPATH/src/ahe/PSW/deps/lib，请将该目录下的所有文件复制至本地的/usr/local/include/openssl/目录下（如果没有该目录，请自行创建该目录），然后设置环境变量：
   ```
   export LD_LIBRARY_PATH=/usr/local/include/openssl:$LD_LIBRARY_PATH 
   //以项目路径为/usr/local/include/openssl为例，若自行创建目录，请以实际创建目录为准
   ```
   ![](https://support.huaweicloud.com/devg-bcs/public_sys-resources/note_3.0-zh-cn.png)
   若提示缺少libgmp，则需要用户安装gmp库。安装方法可以参考linux操作系统包管理工具（例如ubuntu系统可以使用apt-get install libgmp10命令来安装，也可在https://gmplib.org/下载源码进行编译安装）。
   
   
5. 开发Client程序与链代码。 
   请参考[AHE Lib库接口](https://support.huaweicloud.com/devg-bcs/bcs_devg_0022.html)和[Chaincode库接口](https://support.huaweicloud.com/devg-bcs/bcs_devg_0023.html)进行具体的应用和链代码（智能合约）的开发。
   例如App客户端和链代码端的逻辑过程参考如下：
   - App客户端的典型逻辑过程是：
     1. 注册用户 注册用户时可以调用密钥生成函数为用户生成公私钥。
        
     
     2. 初始化余额 初始化余额时可以调用初始余额准备函数生成具有隐私保护的初始余额信息。
        
     
     3. 发起交易 交易时可以调用交易准备函数生成具有隐私保护的交易数据。
        
      
   
   - 链代码端对应的逻辑过程是：
     1. 保存用户公钥与地址的映射关系。
     
     2. 验证初始余额的有效性并生成初始交易。
     
     3. 验证交易数据的有效性并生成交易结果。
        ![](https://support.huaweicloud.com/devg-bcs/public_sys-resources/note_3.0-zh-cn.png)
        - 链码端可以通过调用初始余额校验函数来验证初始余额的有效性。
        
        - 调用交易校验函数来验证交易数据的有效性。
          
      
   
   
   
   
6. 安装链代码。 
   通过管理界面，将开发的链代码安装到用户订购的BCS实例中并实例化。
   
   
7. 部署应用。 
   用户根据业务需求开发app应用，app应用可以调用同态加密库来对交易信息进行隐私保护。开发完成后，将app部署在购买的服务器上。app部署完成后，确保环境中具有配置文件、证书文件（peer和orderer的用户证书）、openssl库。
   
   
 
