1、概述TLS 后台 API 我们提供了 6 个包供开发者下载,内容分别是 windows 下 64 位预编译文件包、windows 下 32 位预编译文件包、linux 下 64 位预编译文件包、linux 下 32 位预编译文件包、zip 格式的源代码文件和 tar.gz 格式的源代码文件。linux 平台工具使用工具的主要作用是在本地手动生成公私钥,手动生成 sig 和验证 sig。进入预编译文件包的 tools 目录,可以看到下面的几个文件, genkey.sh 生成公私钥的批处理文件 f openssl配置文件,默认不要修改 openssl openssl工具可执行文件文件 tls_li
2、cence_tools 生成sig和校验sig 的工具生成公私钥进入 tools 目录,执行下面的命令,./genkey.sh输出read EC keywriting EC key表示生成公私钥成功,公私钥分别为当前目录下的 public.pem 和 ec_key.pem。下面是演示的截图,生成 sig 和校验 sig首先不带参数执行 tls_licence_tools,即执行下面的命令./tls_licence_tools输出current version: 1.7Usage:get sig: ./tls_licence_tools 1 pri_key_file sig_file expir
3、e sdkappid acctype appid3rd identifierget sig e.g.: ./tls_licence_tools 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_rootverify sig: ./tls_licence_tools 2 pub_key_file sig_file sdkappid acctype appid3rd identifierverify sig e.g.: ./tls_licence_tools 2 public.pem sig 1104620500 107 110462050
4、0 group_root下面是演示截图,输出实际上是参数模板和示例。执行类似于下面的命令可以生成 sig,./tls_licence_tools 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_root执行类似于下面的命令可以校验 sig,./tls_licence_tools 2 public.pem sig 1104620500 107 1104620500 group_root下面演示截图,下面解释下参数模板中参数的意义,pri_key_file:私钥文件的路径pub_key_file:公钥文件的路径sig_file:sig 文
5、件的路径,如果是生成 sig,那么会将 sig 写入这个文件,如果是校验 sig,那么会从这个文件读取 sig 的内容expire:sig 的有效期sdkappid:创建应用时页面上分配的 sdkappidacctype:账号集成管理页面上配置之后显示的 accounttypeappid3rd:独立模式下与 sdkappid 一样,集成模式下第三方开放平台账号的 appididentifier:用户标识,即用户 idC+接口首先包含 include/tls_sig_api 目录下的 tls_signature.h。头文件中包含的接口,tls_gen_signature_ex 和 tls_che
6、ck_signature_ex,前者是生成 sig 的接口,后者是校验 sig 的接口,详细的参数和返回值说明请参考头文件 tls_signature.h。然后是链接静态库,在 lib 目录下有下列目录, jni jsoncpp openssl tls_sig_api需要链接的静态库是libjsoncpp.a、openssl目录下的libcrypto.a和libtlsignature.a。另外还需要链接系统的-ldl和-lz ,典型的编译配置如下,假设我们的代码的目录结构如下,demo目录结构|-include|-lib|-srcMakefile和demo.cpp源文件在 src 中,典型的工
7、程配置如下CFLAGS= -I./include/tls_sig_api -Wall -fPICLIBS= ./lib/jsoncpp/libjsoncpp.a ./lib/openssl/libcrypto.a -ldl -lzg+ -o demo demo.cpp $(CFLAGS) $(LIBS)下面的截图是我们开发时编译tls_licence_tools的命令行,由于是我们这边的开发环境,链接库的路径可以按照开发者自己的实际情况给出,【特别注意】如果程序有多线程调用TLS 后台 API的用法,请在程序初始化时和结束时分别调用下面的接口,int multi_thread_setup(vo
8、id);void multi_thread_cleanup(void);Java 接口目前 java 接口使用 jni 的方式实现。Java 目录下 tls_sigcheck.class,是由 tls_sigcheck.java 编译得到,如果有 jdk 兼容性问题,开发者可自行重新编译此文件,编译命令为,javac -encoding utf-8 tls_sigcheck.java请注意接口的包路径为 com.tls.sigcheck,典型的使用方法是 example 目录下 java 版本demo 的组织方式, com tls sigcheck tls_sigcheck.class Dem
9、o.class Demo.java ec_key.pem public.pem README之前提到 java 接口目前使用的 jni 的方式,所以 Demo.java 调用了载入 so 的语句,demo.loadJniLib(“/home/jnisigcheck.so“);开发者根据自己的存放 jnisigcheck.so 实际路径进行修改,预编译的 jnisigcheck.so 存放在lib/jni 目录下。demo 的使用方式请参考 example/java/README。下面是演示截图,Java 原生接口1. 依赖的 jar 文件:Java 原生接口都封装在 5 个 jar 包中。在
10、tls_sig_api/java_native/jar 目录下: bcpkix-jdk15on-152.jar bcprov-jdk15on-152.jar commons-codec-1.10.jar Demo.java gson-2.3.1.jar json.jar tls_sigature.java tls_signature.jar2. API 说明tls_signature.jar 中含有 tls_sigature.java 这个源码文件,这个文件也是 API 的接口文件。里面有详细的接口说明,请开发者参考。【特别注意】接口中的 publicBase64Key 和 privateBa
11、se64Key 两个参数基本对应 TLS 官方网站公私钥生成页面上生成的公私钥。对于公钥:直接取公钥文件中的所有内容赋值给 publicBase64Key 参数即可;对于私钥,需要用 tls api 的 tools 目录下:openssl 命令行工具一点额外的格式转换:示例:./openssl pkcs8 -topk8 -in ec_key.pem -outform PEM -out p8_priv.pem -nocrypt格式转换后的,从 p8_priv.pem 取出所有的文件内容赋值给 privateBase64Key 参数就可以进行加密了。PHP 接口php 实现的方式较为简单,就是调用
12、命令行工具生成 sig,工具是 bin/signature,php 的调用方式如下,开发需要注意私钥是否可以被 php 访问,另外也请注意命令行工具的可执行权限。windows 平台工具使用工具的主要作用是在本地手动生成公私钥,手动生成 sig 和验证 sig。进入预编译文件包的 tools 目录,可以看到下面的几个文件, genkey.bat 生成公私钥的批处理文件 f openssl配置文件,默认不要修改 openssl.exe openssl工具可执行文件文件 tls_licence_tools.exe 生成sig和校验 sig的工具生成公私钥打开命令行工具,进入 tools 目录,执行
13、下面的命令,genkey.bat输出Loading screen into random state - doneread EC keywriting EC key表示生成公私钥成功,公私钥分别为当前目录下的 public.pem 和 ec_key.pem。下面是演示截图,生成 sig 和校验 sig首先不带参数执行 tls_licence_tools.exe,即执行下面的命令tls_licence_tools.exe输出current version: 1.7Usage:get sig: tls_licence_tools.exe 1 pri_key_file sig_file expire
14、 sdkappid acctype appid3rd identifierget sig e.g.: tls_licence_tools.exe 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_rootverify sig: tls_licence_tools.exe 2 pub_key_file sig_file sdkappid acctype appid3rd identifierverify sig e.g.: tls_licence_tools.exe 2 public.pem sig 1104620500 107 1104
15、620500 group_root下面是演示截图,输出实际上是参数模板和示例。执行类似于下面的命令可以生成 sig,tls_licence_tools.exe 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_root执行类似于下面的命令可以校验 sig,tls_licence_tools.exe 2 public.pem sig 1104620500 107 1104620500 group_root演示截图,sig 文件的内容如下图,校验 sig 演示截图,下面解释下参数模板中参数的意义,pri_key_file:私钥文件的路径pu
16、b_key_file:公钥文件的路径sig_file:sig 文件的路径,如果是生成 sig,那么会将 sig 写入这个文件,如果是校验 sig,那么会从这个文件读取 sig 的内容expire:sig 的有效期sdkappid:创建应用时页面上分配的 sdkappidacctype:账号集成管理页面上配置之后显示的 accounttypeappid3rd:独立模式下与 sdkappid 一样,集成模式下第三方开放平台账号的 appididentifier:用户标识,即用户 idC+接口windows 下 C+接口的使用方式我们采用 vs2012 来举例。首先包含 includetls_sig
17、_api 目录下的 tls_signature.h。头文件中包含的接口,tls_gen_signature_ex 和 tls_check_signature_ex,前者是生成 sig 的接口,后者是校验 sig 的接口,详细的参数和返回值说明请参考头文件 tls_signature.h。然后是链接静态库,在 lib 目录下有下列目录, jni jsoncpp libsigcheck openssl tls_sig_api zlib需要链接的静态库是 jsoncpp.lib、openssl 目录下的 libeay.lib、libtlsignature.lib 和 zlib 目录下的 zlibst
18、at.lib,典型的编译配置如下,【特别注意】如果程序有多线程调用TLS 后台 API的用法,请在程序初始化时和结束时分别调用下面的接口,int multi_thread_setup(void);void multi_thread_cleanup(void);Java 接口目前 java 接口使用 jni 的方式实现。Java 目录下 tls_sigcheck.class,是由 tls_sigcheck.java 编译得到,如果有 jdk 兼容性问题,开发者可自行重新编译此文件,编译命令为,javac -encoding utf-8 tls_sigcheck.java请注意接口的包路径为 com.tls.sigcheck,典型的使用方法是 example 目录下 java 版本demo 的组织方式, com tls sigcheck tls_sigcheck.class Demo.class