### GMT 0019-2012 通用密码服务接口规范
#### 1. 概述
《GMT 0019-2012 通用密码服务接口规范》是中国密码行业的标准之一,旨在为密码应用服务的开发、密码应用支撑平台的研制及检测提供一个统一的通用密码服务接口。该标准对于促进密码服务接口产品的开发、提高应用系统在密码服务过程中的集成和实施效率、实现各应用系统的互联互通等方面具有重要意义。
#### 2. 规范性引用文件
本标准引用了多个相关规范和标准,包括但不限于GM/T0006、GM/T0016、GM/T0018等,这些规范性文件提供了密码算法、数据结构、接口设计等方面的细节,确保了通用密码服务接口的设计能够满足实际需求。
#### 3. 术语和定义
- **数字证书**:由认证权威(CA)签发的包含公开密钥拥有者信息、公开密钥、签发者信息以及其他一些扩展信息的数字文件。
- **用户密钥**:存储在设备内部的用于进行密码运算的密钥,通常包含签名密钥对和加密密钥对。
- **容器**:密码设备中用于保存密钥的唯一性存储空间。
#### 4. 符号和缩略语
- **API (Application Program Interface)**:应用程序接口,指定了应用程序之间交互的方式。
- **CA (Certification Authority)**:证书认证机构,负责签发和管理数字证书。
- **CN (Common Name)**:通用名,用于标识实体的名称。
- **CRL (Certificate Revocation List)**:证书撤销列表,列出了已被撤销的数字证书。
- **DER (Distinguished Encoding Rules)**:可区分编码规则,是一种ASN.1的数据编码方式。
- **DN (Distinguished Name)**:可识别名,用于唯一标识一个主体的身份。
- **ECC (Elliptic Curve Cryptography)**:椭圆曲线密码,一种基于椭圆曲线数学特性的加密算法。
- **LDAP (Lightweight Directory Access Protocol)**:轻量级目录访问协议,一种访问和维护分布式目录信息的服务协议。
- **OID (Object Identifier)**:对象标识符,用于唯一标识对象的一种编码形式。
- **PKCS (Public Key Cryptography Standards)**:公钥密码标准,一系列定义公钥密码学算法的标准。
#### 5. 算法标识和数据结构
##### 5.1 算法标识与常量定义
本规范中使用的常量定义、算法标识和证书解析标识的具体定义遵循GM/T0006标准,这些定义确保了数据的一致性和兼容性。
##### 5.2 密码服务接口数据结构定义和说明
- **5.2.1 常量定义**
数据常量标识定义了在规范中使用的常量的取值。例如,可以定义一些用于表示特定密码算法或操作模式的标识符,以及与之相关的参数等。
表1给出了部分常量定义的例子:
| 常量标识 | 描述 |
|------------|--------------------------------------------------------------|
| GM_ALG_SM2 | 表示SM2椭圆曲线公钥密码算法 |
| GM_ALG_RSA | 表示RSA公钥密码算法 |
| GM_ALG_AES | 表示AES对称密钥算法 |
| ... | ... |
#### 6. 密码服务接口
##### 6.1 通用密码服务接口在公钥密码基础设施应用技术体系框架中的位置
通用密码服务接口位于公钥密码基础设施(PKI)的技术架构之中,向上层的应用系统提供密码服务,向下与密码设备接口对接。它在PKI中的位置决定了它可以有效地协调密码服务和应用之间的交互。
##### 6.2 密码服务接口组成和功能说明
- **环境类函数**:负责初始化密码服务环境、配置参数等。
- **证书类函数**:处理数字证书的操作,如创建、验证、撤销等。
- **密码运算类函数**:执行具体的密码运算,如加密、解密、签名、验签等。
- **消息类函数**:处理与消息相关的安全操作,如消息认证码(MAC)的生成和验证等。
#### 7. 密码服务接口函数定义
本节详细定义了密码服务接口中各个函数的功能和使用方法,包括但不限于环境类函数、证书类函数、密码运算类函数以及消息类函数等。通过这些函数,开发者可以方便地调用底层的密码服务来完成各种密码操作。
#### 8. 结论
《GMT 0019-2012 通用密码服务接口规范》为中国的密码应用领域提供了一个标准化的基础,有助于促进密码技术的发展和应用,同时也有利于保障信息安全。通过遵循这一标准,可以有效提高密码服务接口的一致性、可靠性和安全性,从而更好地服务于各种密码应用的需求。