创建TrueLicense许可文件的Python库。
truep的Python项目详细描述
与TrueLicense兼容的Python许可证管理器
这个包支持管理许可证一种java包使用的格式 TrueLicense。只有版本1格式是 支持。
有关 许可证格式,或下面的Quick license format description。
快速许可证格式说明
许可证在时间上有一个有效期,一个颁发者,一个持有者和各种元 数据。
由持证人签名,可由发卡机构验证签名 证书。
许可证文件也使用从密码派生的密钥进行加密。
快速库参考
由truepy导出的主类是truepy.License。
- 要生成新许可证,请使用类方法truepy.License.issue。
- 要从文件或流加载许可证,请使用Class方法 truepy.License.load。
- 要将许可证保存到文件或流,请使用以下方法 truepy.License.store。
- 要验证许可证的签名,请使用以下方法 truepy.License.verify。
- 要读取许可证信息,请使用truepy.License.license_data 属性;这是类型truepy.LicenseData。
加载和存储许可证只需要许可证密码;这些 操作不执行签名和签名验证。
颁发新许可证需要颁发者证书的私钥。
验证许可证签名需要颁发者证书。
快速应用参考
有关详细信息,请使用python -m truepy -h运行应用程序。
使用量
本节介绍如何将系统配置为使用truepy。
配置包括安装truepy,生成颁发者证书, 生成许可证并验证许可证。
安装
要安装truepy,请运行以下命令:
pip install truepy
生成颁发者证书
此功能不包含在truepy中。建议使用的工具是 OpenSSL。颁发证书并生成 私钥,运行以下命令:
openssl req -x509 \ -newkey rsa:4096 \ -keyout key.pem \ -out certificate.pem \ -days $VALIDITY
这将提示您输入密码以保护私钥,以及其他 证书中包含的信息。
最重要的信息是密码,您需要 稍后,还有$VALIDITY。命令行参数-days传递给 openssl确定证书有效的天数。一定不要 设置一个太低的值,因为在此之后您将无法使用证书 已经过去的天数。
颁发许可证
一旦您拥有证书和私钥,就可以开始颁发许可证。 下面的代码显示了所需的最低步骤:
from cryptography.hazmat import backends from cryptography.hazmat.primitives import serialization from truepy import LicenseData, License # Load the certificate with open('certificate.pem', 'rb') as f: certificate = f.read() # Load the private key with open('key.pem', 'rb') as f: key = serialization.load_pem_private_key( f.read(), password=b'MySecretPassword', backend=backends.default_backend()) # Issue the license license = License.issue( certificate, key, license_data=LicenseData( '2016-10-01T00:00:00', '2020-10-01T00:00:00')) # Store the license with open('license.key', 'wb') as f: license.store(f, b'LicensePassword')
请注意License.store的第二个参数。它是一个密码,用于 派生加密密钥以加密最终许可证数据。这不是秘密,因为 它需要可用于验证许可证的应用程序。
验证许可证
要验证许可证,您需要上面步骤中使用的证书,如 以及用于加密最终许可证数据的密码。下面的代码 显示所需的最小步骤:
from truepy import License # Load the certificate with open('certificate.pem', 'rb') as f: certificate = f.read() # Load the license with open('license.key', 'rb') as f: license = License.load(f, b'LicensePassword') # Verify the license; this will raise License.InvalidSignatureException if # the signature is incorrect license.verify(certificate)
发行说明
2.0.3-更新文件
- 更新的文档与python 3兼容。
2.0.2-正确处理dsa密钥
- 更正了读取dsa密钥的错误。
- 更新文件。
2.0.1-更正文件
- 已将声明的参数类型更改为License.issue。
2.0-不依赖于openssl
更改的证书要使用的证书和签名验证例程 cryptography而不是pyOpenSSL。
这将更改所有将证书或密钥作为参数的方法。
1.0.1-许可证数据错误修复
- 已将truepy.LicenseData.information更改为info以与兼容 truelicense。
1.0-初始释放
- 支持TrueLicense版本1许可证的基本许可证操作