CodeMeter Core API
CodeMeter Core API 支持开发者在应用程序中直接调用 CodeMeter 的底层功能。其核心应用场景主要涵盖以下三个方面:
-
授权管控: 授权的使用与统一管理。
-
数据操作: 安全数据的读取与写入。
-
安全加密: 密码学运算功能的调用。
多语言接口支持
在 CodeMeter Runtime 环境下,该 API 标配动态链接库 (Dynamic Library)、.NET 程序集与 Java 接口。凭借这些标准组件,系统几乎兼容所有主流编程语言,具体包括 C/C++、C#、C++/CLI、Delphi、Java、Fortran、VB、VB.NET 以及 Python(注:已修复原英文文案中重复的 Fortran)。
跨平台与多形态部署
作为 CodeMeter SDK 的重要组成部分,该 API 提供多种灵活的部署形态以适配不同层级的硬件环境:
-
针对 CodeMeter Runtime 与 CodeMeter Embedded,提供静态 C 语言库。
-
针对资源受限的 CodeMeter Embedded 与 CodeMeter µEmbedded 环境,提供底层源代码 (Source Code)。
同时,CodeMeter Core API 已全面打通所有兼容 CodeMeter 架构的操作系统,包括 Windows、macOS、Linux、Android、VxWorks 以及 QNX。
| API 形态 | CodeMeter 版本 | 所属组件包 | 操作系统与平台环境 | 支持的开发语言 |
|---|---|---|---|---|
| 静态库 | CodeMeter Runtime | CodeMeter SDK | Windows (x86, x86-64), macOS (x86-64), Linux (x86, x86-64, ARM) | C/C++ |
| 静态库 | CodeMeter Embedded | CodeMeter Embedded SDK | Windows (x86, x86-64), macOS (x86-64), Linux (x86, x86-64, ARM), QNX (x86, ARM), VxWorks (x86, x86-64, ARM, PowerPC), Android (ARM) | C/C++ |
| 动态链接库 | CodeMeter Runtime | CodeMeter Runtime | Windows (x86, x86-64), macOS (x86-64), Linux (x86, x86-64, ARM) | C/C++, Delphi, VB, Fortran, Python 等 |
| .NET 程序集 | CodeMeter Runtime | CodeMeter Runtime | Windows (x86, x86-64) | C#, C++/CLI, VB .NET |
| .NET Standard 程序集 | CodeMeter Runtime | CodeMeter Runtime | Windows (x86, x86-64), macOS (x86-64), Linux (x86, x86-64, ARM) | C#, VB.NET |
| Java 接口 | CodeMeter Runtime | CodeMeter Runtime | Windows (x86, x86-64), macOS (x86-64), Linux (x86, x86-64, ARM) | Java |
| 源代码 | CodeMeter Embedded | CodeMeter Embedded SDK | 任意系统 (Any OS) | C/C++ |
| 源代码 | CodeMeter µEmbedded | CodeMeter µEmbedded SDK | 任意系统 (Any OS) | C/C++ |
使用和管理许可证
CodeMeter核心接口为软件开发人员提供了决定如何在其软件中使用许可证的功能。可以在启动软件时检查许可证,然后可以根据可用许可激活,停用或隐藏各个功能。开发人员还可以决定是否在启动过程中或相应功能的首次使用时分配了许可。他们还可以确定许可是在软件终止时发布还是在相应功能结束时发布。CodeMeter自动检查许可是否有效;过期的许可证或其他软件版本的许可证将被自动拒绝。如果有多个有效许可,CodeMeter就会自动选择最合适的选项。
许可发布后,将通知CodeMeter该许可将再次可用于其他应用程序,这很重要,例如,在使用浮动网络(并行使用)许可时。如果在许可发行之前应用程序崩溃或终止,CodeMeter将自动处理并释放最终的孤立许可。
为了提高安全性,CodeMeter核心接口允许使用存储在许可中的密钥对数据进行加密。没有正确的许可,数据无法解密和使用。
除了使应用程序能够有效使用许可之外,CodeMeter还允许开发人员管理许可并创建自己的许可管理器。然后,他们可以访问,读取或列出过期或无效的许可。可以通过CodeMeter许可中心离线或在线激活和停用许可。用户还可以根据需要简单地借用和归还许可。

读写数据
CodeMeter提供了将数据存储在许可中并使这些数据可在应用程序中使用的机会。软件开发人员可以在原始创建过程中将此数据写入许可。取决于所选的数据字段,对数据的访问在运行时是开放的,或者受特殊加密操作(用作密码)的限制。开发人员还决定是否可以在运行时覆盖数据,这将限于特定的编程顺序(用作另一个密码),因此同样只适用于特定的软件应用程序。
使用带有闪存的加密锁,CodeMeter核心接口还可以在闪存的特殊隐藏分区(安全光盘)中读取和写入数据。与许可中包含的数据(范围可能从几个字节到几千字节)形成对比,这为加密锁提供了几GB的数据空间。此选项特别用于日志文件的安全存储。
数据类型 | 大小 | 带闪存的加密锁 | 不含闪存的加密锁 / 软锁 | 运行时读取 | 运行时写入 | 关键来源 |
用户数据 | 256字节 | 是 | 是 | 是 | 是 | 没有 |
受保护的数据 | 256字节 | 是 | 是 | 是 | 可配置(密码**,否) | 没有 |
扩展保护数据 | 128 x 256字节 | 是 | 是 | 是 | 可配置(密码**,否) | 没有 |
隐藏数据 | 128 x 256字节 | 是 | 是 | 密码* | 可配置(密码**,否) | AES 128,ECC 224 |
隐秘数据 | 128 x 256字节 | 是 | 是 | 没有 | 可配置(密码**,否) | AES 128,ECC 224,RSA 1024,RSA 2048 |
通用数据 | 受智能卡芯片大小的限制 | 是 | 是 | 没有 | 没有 | AES 256,RSA 4096 |
安全磁盘 | 受闪存大小限制 | 是 | 没有 | 密码 | 密码** | 没有 |
*隐藏数据访问代码
** 编程顺序
使用加密功能
CodeMeter允许用于加密操作的密钥安全地存储在许可中,包括用于加密的OPC UA通信的私钥。这些键通常无法读取,但可用于CodeMeter核心接口。可以直接在加密狗中创建密钥,以确保密钥永远不会离开安全的加密狗。
可通过CodeMeter核心接口使用以下功能:
- 计算哈希值(SHA 256)
- 对称地加密和解密数据(AES 128,AES 256)
- 非对称地加密和解密数据(ECIES 224,RSA 1024,RSA 2048,RSA 4096)
- 签名数据(ECDSA 224,RSA 1024,RSA 2048,RSA 4096)
- 计算存储私钥的公钥(ECDSA 224,ECIES 224)
这些功能可广泛应用于不同应用软件:
- 加密的设置和数据可以存储在软件中,以实现更高级别的保护
- 由受保护的应用程序创建的数据可以进行加密,以将访问权限限制为拥有有效许可的授权用户
- 数据和日志文件可以签名来证明其真实性和完整性
- 密钥可用于启动加密通信