Logo
中文版
详情联系: neusar-support@reachauto.com
ara::crypto::cryp::CryptoProvider类 参考abstract

加密Provider是所有受支持的加密算法主接口,也是它们之间内部通信的“可信环境” 更多...

#include <crypto_provider.h>

ara::crypto::cryp::CryptoProvider 的协作图:
Collaboration graph

Public 类型

using Uptr = std::unique_ptr< CryptoProvider >
 加密服务Provider唯一智能指针类型 更多...
 
using AlgId = CryptoPrimitiveId::AlgId
 该别名用于算法 ID 类型定义 更多...
 

Public 成员函数

virtual ~CryptoProvider () noexcept=default
 析构函数 更多...
 
CryptoProvideroperator= (const CryptoProvider &other)=default
 将另一个CryptoProvider实例拷贝赋值给此实例 更多...
 
CryptoProvideroperator= (CryptoProvider &&other)=default
 将另一个CryptoProvider实例移动赋值给此实例 更多...
 
virtual AlgId ConvertToAlgId (ara::core::StringView primitiveName) const noexcept=0
 将密码算法的通用名称转换为相应的供应商指定的算法ID 更多...
 
virtual ara::core::Result< ara::core::String > ConvertToAlgName (AlgId algId) const noexcept=0
 将供应商指定的算法ID转换为加密算法的对应通用名称 更多...
 
virtual ara::core::Result< SymmetricKey::UptrcGenerateSymmetricKey (AlgId algId, AllowedUsageFlags allowedUsage, bool isSession=true, bool isExportable=false) noexcept=0
 分配一个新的对称密钥对象,并用一个随机生成的新值填充它 更多...
 
virtual ara::core::Result< PrivateKey::UptrcGeneratePrivateKey (AlgId algId, AllowedUsageFlags allowedUsage, bool isSession=false, bool isExportable=false) noexcept=0
 生成私钥对象 更多...
 
virtual ara::core::Result< SecretSeed::UptrcGenerateSeed (AlgId algId, SecretSeed::Usage allowedUsage, bool isSession=true, bool isExportable=false) noexcept=0
 生成请求算法的随机秘密种子对象 更多...
 
virtual ara::core::Result< VolatileTrustedContainer::UptrAllocVolatileContainer (std::size_t capacity=0U) noexcept=0
 根据直接指定的容量分配易失(虚拟)可信容器 更多...
 
virtual ara::core::Result< VolatileTrustedContainer::UptrAllocVolatileContainer (std::pair< AlgId, CryptoObjectType > theObjectDef) noexcept=0
 根据指定的密钥类型和算法ID分配一个易失性可信容器 更多...
 
virtual ara::core::Result< ara::core::Vector< ara::core::Byte > > ExportSecuredObject (const CryptoObject &object, SymmetricKeyWrapperCtx &transportContext) noexcept=0
 密文导出加密对象 更多...
 
virtual ara::core::Result< ara::core::Vector< ara::core::Byte > > ExportSecuredObject (const IOInterface &container, SymmetricKeyWrapperCtx &transportContext) noexcept=0
 密文导出加密对象 更多...
 
virtual ara::core::Result< void > ImportSecuredObject (IOInterface &container, ReadOnlyMemRegion serialized, SymmetricKeyWrapperCtx &transportContext, bool isExportable=false, CryptoObjectType expectedObject=CryptoObjectType::kUndefined) noexcept=0
 密文导入数据到永久性存储区或者易失性存储区 更多...
 
virtual ara::core::Result< ara::core::Vector< ara::core::Byte > > ExportPublicObject (const IOInterface &container, Serializable::FormatId formatId=Serializable::kFormatDefault) noexcept=0
 从IOInterface明文导出对象 更多...
 
virtual ara::core::Result< void > ImportPublicObject (IOInterface &container, ReadOnlyMemRegion serialized, CryptoObjectType expectedObject=CryptoObjectType::kUndefined) noexcept=0
 将明文序列化的对象导入到IOInterface指向的存储位置 更多...
 
virtual ara::core::Result< CryptoObject::UptrcLoadObject (const IOInterface &container) noexcept=0
 从提供的IOInterface加载密钥对象 更多...
 
virtual ara::core::Result< SymmetricKey::UptrcLoadSymmetricKey (const IOInterface &container) noexcept=0
 从提供的IOInterface加载对称密钥 更多...
 
virtual ara::core::Result< PublicKey::UptrcLoadPublicKey (const IOInterface &container) noexcept=0
 从提供的IOInterface公钥对象. 更多...
 
virtual ara::core::Result< PrivateKey::UptrcLoadPrivateKey (const IOInterface &container) noexcept=0
 从提供的IOInterface私钥对象. 更多...
 
virtual ara::core::Result< SecretSeed::UptrcLoadSecretSeed (const IOInterface &container) noexcept=0
 从提供的IOInterface加载秘密种子 更多...
 
virtual ara::core::Result< RandomGeneratorCtx::UptrCreateRandomGeneratorCtx (AlgId algId=kAlgIdDefault, bool initialize=true) noexcept=0
 创建一个随机数生成器(RNG)上下文 更多...
 
virtual ara::core::Result< SymmetricBlockCipherCtx::UptrCreateSymmetricBlockCipherCtx (AlgId algId) noexcept=0
 创建一个对称块加密上下文 更多...
 
virtual ara::core::Result< SymmetricKeyWrapperCtx::UptrCreateSymmetricKeyWrapperCtx (AlgId algId) noexcept=0
 创建对称密钥包装上下文 更多...
 
virtual ara::core::Result< StreamCipherCtx::UptrCreateStreamCipherCtx (AlgId algId) noexcept=0
 创建一个对称流加密上下文 更多...
 
virtual ara::core::Result< MessageAuthnCodeCtx::UptrCreateMessageAuthCodeCtx (AlgId algId) noexcept=0
 创建消息认证码上下文 更多...
 
virtual ara::core::Result< HashFunctionCtx::UptrCreateHashFunctionCtx (AlgId algId) noexcept=0
 创建一个散列计算上下文 更多...
 
virtual ara::core::Result< KeyDerivationFunctionCtx::UptrCreateKeyDerivationFunctionCtx (AlgId algId) noexcept=0
 创建密钥派生上下文 更多...
 
virtual ara::core::Result< EncryptorPublicCtx::UptrCreateEncryptorPublicCtx (AlgId algId) noexcept=0
 创建公钥加密上下文 更多...
 
virtual ara::core::Result< DecryptorPrivateCtx::UptrCreateDecryptorPrivateCtx (AlgId algId) noexcept=0
 创建私钥解密上下文 更多...
 
virtual ara::core::Result< KeyEncapsulatorPublicCtx::UptrCreateKeyEncapsulatorPublicCtx (AlgId algId) noexcept=0
 创建密钥封装机制 (KEM) 的密钥封装器公钥上下文。 更多...
 
virtual ara::core::Result< KeyDecapsulatorPrivateCtx::UptrCreateKeyDecapsulatorPrivateCtx (AlgId algId) noexcept=0
 创建密钥封装机制 (KEM) 的密钥解封装器私钥上下文 更多...
 
virtual ara::core::Result< SignerPrivateCtx::UptrCreateSignerPrivateCtx (AlgId algId) noexcept=0
 创建私钥签名上下文 更多...
 
virtual ara::core::Result< VerifierPublicCtx::UptrCreateVerifierPublicCtx (AlgId algId) noexcept=0
 创建公钥验签上下文 更多...
 
virtual ara::core::Result< KeyAgreementPrivateCtx::UptrCreateKeyAgreementPrivateCtx (AlgId algId) noexcept=0
 创建密钥协商上下文 更多...
 
virtual ara::core::Result< Signature::UptrcCreateSignature (AlgId signAlgId, ReadOnlyMemRegion value, const RestrictedUseObject &key, AlgId hashAlgId=kAlgIdNone) noexcept=0
 创建签名对象 更多...
 

详细描述

加密Provider是所有受支持的加密算法主接口,也是它们之间内部通信的“可信环境”

Swsid
SWS_CRYPT_20700
符合标准
yes
非标原因
N/A
种类
class
符号
ara::crypto::cryp::CryptoProvider
范围
namespace ara::crypto::cryp
基类
N/A
分类
ara
头文件
注解
N/A
模板参数
N/A

在文件 第 行定义.

成员类型定义说明

◆ AlgId

该别名用于算法 ID 类型定义

Swsid
SWS_CRYPT_20703
符合标准
yes
非标原因
N/A
种类
type alias
符号
ara::crypto::cryp::CryptoProvider::AlgId
范围
class ara::crypto::cryp::CryptoProvider
派生来源
CryptoPrimitiveId::AlgId
分类
ara
头文件
注解
N/A

在文件 第 行定义.

◆ Uptr

加密服务Provider唯一智能指针类型

Swsid
SWS_CRYPT_20701
符合标准
yes
非标原因
N/A
种类
type alias
符号
ara::crypto::cryp::CryptoProvider::Uptr
范围
class ara::crypto::cryp::CryptoProvider
派生来源
std::unique_ptr<CryptoProvider>
分类
ara
头文件
注解
N/A

在文件 第 行定义.

构造及析构函数说明

◆ ~CryptoProvider()

virtual ara::crypto::cryp::CryptoProvider::~CryptoProvider ( )
virtualdefaultnoexcept

析构函数

模板参数
N/A
参数
[in]N/A
[out]N/A
[in,out]N/A
返回
N/A
注解
N/A
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20710
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

成员函数说明

◆ AllocVolatileContainer() [1/2]

virtual ara::core::Result<VolatileTrustedContainer::Uptr> ara::crypto::cryp::CryptoProvider::AllocVolatileContainer ( std::pair< AlgId, CryptoObjectType theObjectDef)
pure virtualnoexcept

根据指定的密钥类型和算法ID分配一个易失性可信容器

模板参数
N/A
参数
[in]theObjectDef加密对象二元组
[out]N/A
[in,out]N/A
返回
已分配的易失性可信容器的智能指针
注解
[Error]: CryptoErrc::kInvalidArgument 不支持的密钥对象类型和算法ID二元组
[Error]: CryptoErrc::kInsufficientResource 没有足够的易失性内存可用于分配(限制128个易失性槽)
[二元组说明]:
1.CryptoObjectType = kUndefined不支持
2.CryptoObjectType = kSymmetricKey或kSecretSeed,AlgId 支持 kNID_aes_256_xxx,kNID_aes_128_xxx,kNID_sm4_xxx
3.CryptoObjectType = kPrivateKey或kPrivateKey,AlgId 支持kNID_sm2_secp256,kNID_sm2_secp256_xxx, kNID_ecc_secp256k1,kNID_ecdsa_secp256k1_xxx,kNID_rsa_2048, kNID_rsa_2048_xxx, kNID_rsa_4096, kNID_rsa_4096_xx
4.CryptoObjectType = kSignature,AlgId 支持kNID_sm2_secp256_xxx, kNID_ecc_secp256k1,kNID_ecdsa_secp256k1_xxx, kNID_rsa_2048_xxx,kNID_rsa_4096_xxx
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20727
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ AllocVolatileContainer() [2/2]

virtual ara::core::Result<VolatileTrustedContainer::Uptr> ara::crypto::cryp::CryptoProvider::AllocVolatileContainer ( std::size_t  capacity = 0U)
pure virtualnoexcept

根据直接指定的容量分配易失(虚拟)可信容器

模板参数
N/A
参数
[in]capacity创建易失可信容器的大小(字节)缺省0,默认创建可分配4096字节的存储数据,不支持创建大于4096字节的容器
[out]N/A
[in,out]N/A
返回
创建的易失可信容器的唯一智能指针
注解
[Error]: CryptoErrc::kInvalidInputSize 如果输入参数大小的为无效值
[Error]: CryptoErrc::kInsufficientResource 没有足够的易失性内存可用于分配(限制128个易失性槽)
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20726
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ConvertToAlgId()

virtual AlgId ara::crypto::cryp::CryptoProvider::ConvertToAlgId ( ara::core::StringView  primitiveName) const
pure virtualnoexcept

将密码算法的通用名称转换为相应的供应商指定的算法ID

模板参数
N/A
参数
[in]primitiveName密码算法的通用名称
[out]N/A
[in,out]N/A
返回
供应商指定的算法ID 或 kAlgIdUndefined(表示提供的算法名称不支持)
注解
N/A
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20711
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ConvertToAlgName()

virtual ara::core::Result<ara::core::String> ara::crypto::cryp::CryptoProvider::ConvertToAlgName ( AlgId  algId) const
pure virtualnoexcept

将供应商指定的算法ID转换为加密算法的对应通用名称

模板参数
N/A
参数
[in]algId供应商指定的算法ID
[out]N/A
[in,out]N/A
返回
加密算法的通用名称
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数algId值不支持
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20712
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateDecryptorPrivateCtx()

virtual ara::core::Result<DecryptorPrivateCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateDecryptorPrivateCtx ( AlgId  algId)
pure virtualnoexcept

创建私钥解密上下文

模板参数
N/A
参数
[in]algId解密算法标识符 (目前支持的算法id:kNID_rsa_2048_pkcs1, kNID_rsa_4096_pkcs1, kNID_sm2_secp256)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数输入的值不受支持
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20751
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateEncryptorPublicCtx()

virtual ara::core::Result<EncryptorPublicCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateEncryptorPublicCtx ( AlgId  algId)
pure virtualnoexcept

创建公钥加密上下文

模板参数
N/A
参数
[in]algId加密算法标识符 (目前支持的算法id:kNID_rsa_2048_pkcs1, kNID_rsa_4096_pkcs1, kNID_sm2_secp256)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数输入的值不受支持
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20750
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateHashFunctionCtx()

virtual ara::core::Result<HashFunctionCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateHashFunctionCtx ( AlgId  algId)
pure virtualnoexcept

创建一个散列计算上下文

模板参数
N/A
参数
[in]algId目标加密算法的标识符 (目前支持的算法id: kNID_sha1 kNID_sha256 kNID_sm3 kNID_md5)
[out]N/A
[in,out]N/A
返回
指向被创建的上下文对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 参数 algId 值无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20747
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateKeyAgreementPrivateCtx()

virtual ara::core::Result<KeyAgreementPrivateCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateKeyAgreementPrivateCtx ( AlgId  algId)
pure virtualnoexcept

创建密钥协商上下文

模板参数
N/A
参数
[in]algId密钥协商算法标识符 (目前支持的算法id:kNID_ecdhe)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数 algId 输入的值无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20758
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateKeyDecapsulatorPrivateCtx()

virtual ara::core::Result<KeyDecapsulatorPrivateCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateKeyDecapsulatorPrivateCtx ( AlgId  algId)
pure virtualnoexcept

创建密钥封装机制 (KEM) 的密钥解封装器私钥上下文

模板参数
N/A
参数
[in]algId目标 KEM 加密算法的标识符(目前支持的算法id:kNID_rsa_2048_pkcs1 kNID_rsa_4096_pkcs1)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数具有不受支持的值
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20753
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateKeyDerivationFunctionCtx()

virtual ara::core::Result<KeyDerivationFunctionCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateKeyDerivationFunctionCtx ( AlgId  algId)
pure virtualnoexcept

创建密钥派生上下文

模板参数
N/A
参数
[in]algId目标加密算法的标识符 (目前只支持kNID_hkdf)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 参数 algId 值无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20748
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateKeyEncapsulatorPublicCtx()

virtual ara::core::Result<KeyEncapsulatorPublicCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateKeyEncapsulatorPublicCtx ( AlgId  algId)
pure virtualnoexcept

创建密钥封装机制 (KEM) 的密钥封装器公钥上下文。

模板参数
N/A
参数
[in]algId目标 KEM 加密算法的标识符(目前支持的算法id:kNID_rsa_2048_pkcs1 kNID_rsa_4096_pkcs1)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数具有不受支持的值
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20752
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateMessageAuthCodeCtx()

virtual ara::core::Result<MessageAuthnCodeCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateMessageAuthCodeCtx ( AlgId  algId)
pure virtualnoexcept

创建消息认证码上下文

模板参数
N/A
参数
[in]algId目标加密算法标识符(目前支持的算法id: kNID_hmac_sha1 kNID_hmac_sha256 kNID_hmac_md5 kNID_hmac_sm3 kNID_cmac_aes_128_cbc kNID_cmac_aes_256_cbc kNID_cmac_sm4_cbc)
[out]N/A
[in,out]N/A
返回
指向被创建的上下文对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 参数 algId 值无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20746
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateRandomGeneratorCtx()

virtual ara::core::Result<RandomGeneratorCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateRandomGeneratorCtx ( AlgId  algId = kAlgIdDefault,
bool  initialize = true 
)
pure virtualnoexcept

创建一个随机数生成器(RNG)上下文

模板参数
N/A
参数
[in]algId目标RNG算法的标识符,如果没有算法指定,使用默认RNG;
[in]initialize表示返回的上下文是否被stack初始化
[out]N/A
[in,out]N/A
返回
指向创建的RNG上下文唯一智能指针
注解
当前版本参数algId无效 initialize参数无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20741
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateSignature()

virtual ara::core::Result<Signature::Uptrc> ara::crypto::cryp::CryptoProvider::CreateSignature ( AlgId  signAlgId,
ReadOnlyMemRegion  value,
const RestrictedUseObject key,
AlgId  hashAlgId = kAlgIdNone 
)
pure virtualnoexcept

创建签名对象

模板参数
N/A
参数
[in]signAlgId签名算法标识符
[in]value签名数据或MAC数据
[in]key对称密钥对象或者非对称密钥对象
[in]hashAlgId与签名算法组合的哈希算法ID
[out]N/A
[in,out]N/A
返回
指向签名对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果签名算法ID不支持
[Error]: CryptoErrc::kIncompatibleArguments 如果key的类型与签名算法不匹配
[Error]: CryptoErrc::kInvalidInputSize 如果输入的数据与签名算法不匹配
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20760
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateSignerPrivateCtx()

virtual ara::core::Result<SignerPrivateCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateSignerPrivateCtx ( AlgId  algId)
pure virtualnoexcept

创建私钥签名上下文

模板参数
N/A
参数
[in]algId签名算法标识符 (目前支持的算法Id:kNID_rsa_2048_pkcs1,kNID_rsa_2048_pkcs1_sha1,kNID_rsa_2048_pkcs1_sha256, kNID_rsa_4096_pkcs1, kNID_rsa_4096_pkcs1_sha1,kNID_rsa_4096_pkcs1_sha256,kNID_ecc_secp256k1,kNID_ecdsa_secp256k1_sha1,kNID_ecdsa_secp256k1_sha256, kNID_sm2_secp256,kNID_sm2_secp256_sm3,kNID_sm2_secp256_sha1,kNID_sm2_secp256_sha256)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数输入的值不受支持
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20756
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateStreamCipherCtx()

virtual ara::core::Result<StreamCipherCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateStreamCipherCtx ( AlgId  algId)
pure virtualnoexcept

创建一个对称流加密上下文

模板参数
N/A
参数
[in]algId目标加密算法标识符 (目前支持的算法id: kNID_aes_128_ecb, kNID_aes_128_cbc, kNID_aes_128_cfb128, kNID_aes_128_ctr, kNID_aes_256_ecb, kNID_aes_256_cbc, kNID_aes_256_cfb128, kNID_aes_256_ctr, kNID_sm4_ecb, kNID_sm4_cbc, kNID_sm4_cfb128, kNID_sm4_ctr)
[out]N/A
[in,out]N/A
返回
指向被创建的上下文对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 参数 algId 值无效
[Error]: CryptoErrc::kLogicFault 处理逻辑错误
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20744
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateSymmetricBlockCipherCtx()

virtual ara::core::Result<SymmetricBlockCipherCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateSymmetricBlockCipherCtx ( AlgId  algId)
pure virtualnoexcept

创建一个对称块加密上下文

模板参数
N/A
参数
[in]algId目标加密算法的标识符 (目前支持的算法id: kNID_aes_128_ecb, kNID_aes_256_ecb, kNID_sm4_ecb)
[out]N/A
[in,out]N/A
返回
指向被创建的上下文对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 参数 algId 值无效
[Error]: CryptoErrc::kLogicFault 处理逻辑错误
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20742
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateSymmetricKeyWrapperCtx()

virtual ara::core::Result<SymmetricKeyWrapperCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateSymmetricKeyWrapperCtx ( AlgId  algId)
pure virtualnoexcept

创建对称密钥包装上下文

模板参数
N/A
参数
[in]algId目标加密算法标识符 (目前支持的算法id: kNID_aes_128_wrap, kNID_aes_128_wrap_pad, kNID_aes_256_wrap, kNID_aes_256_wrap_pad)
[out]N/A
[in,out]N/A
返回
指向被创建的上下文对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数 algId 值无效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20743
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ CreateVerifierPublicCtx()

virtual ara::core::Result<VerifierPublicCtx::Uptr> ara::crypto::cryp::CryptoProvider::CreateVerifierPublicCtx ( AlgId  algId)
pure virtualnoexcept

创建公钥验签上下文

模板参数
N/A
参数
[in]algId验签算法标识符 (目前支持的算法Id:kNID_rsa_2048_pkcs1,kNID_rsa_2048_pkcs1_sha1,kNID_rsa_2048_pkcs1_sha256, kNID_rsa_4096_pkcs1, kNID_rsa_4096_pkcs1_sha1,kNID_rsa_4096_pkcs1_sha256,kNID_ecc_secp256k1,kNID_ecdsa_secp256k1_sha1,kNID_ecdsa_secp256k1_sha256, kNID_sm2_secp256,kNID_sm2_secp256_sm3,kNID_sm2_secp256_sha1,kNID_sm2_secp256_sha256)
[out]N/A
[in,out]N/A
返回
指向已创建上下文的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier algId 参数输入的值不受支持
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20757
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ExportPublicObject()

virtual ara::core::Result<ara::core::Vector<ara::core::Byte> > ara::crypto::cryp::CryptoProvider::ExportPublicObject ( const IOInterface container,
Serializable::FormatId  formatId = Serializable::kFormatDefault 
)
pure virtualnoexcept

从IOInterface明文导出对象

模板参数
N/A
参数
[in]container包含要导出的对象的IOInterface
[in]formatId输出格式标识符
[out]N/A
[in,out]N/A
返回
导出的序列化数据
注解
[Error]: CryptoErrc::kLogicFault 处理流程错误
[Error]: CryptoErrc::kEmptyContainer 如果容器是空的
[Error]: CryptoErrc::kUnexpectedValue 如果对象是不可导出的
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20731
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ExportSecuredObject() [1/2]

virtual ara::core::Result<ara::core::Vector<ara::core::Byte> > ara::crypto::cryp::CryptoProvider::ExportSecuredObject ( const CryptoObject object,
SymmetricKeyWrapperCtx transportContext 
)
pure virtualnoexcept

密文导出加密对象

模板参数
N/A
参数
[in]object待导出的加密对象
[in]transportContext对称密钥包装上下文
[out]N/A
[in,out]N/A
返回
被包装的加密对象数据
注解
[Error]: CryptoErrc::kIncompatibleObject 如果目标加密对象是不可导出的
[Error]: CryptoErrc::kIncompleteArgState 参数 transportContext 没有被初始化
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20728
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ExportSecuredObject() [2/2]

virtual ara::core::Result<ara::core::Vector<ara::core::Byte> > ara::crypto::cryp::CryptoProvider::ExportSecuredObject ( const IOInterface container,
SymmetricKeyWrapperCtx transportContext 
)
pure virtualnoexcept

密文导出加密对象

模板参数
N/A
参数
[in]container待导出对象引用的IOInterface
[in]transportContext对称密钥包装上下文
[out]N/A
[in,out]N/A
返回
导出的对象数据
注解
[Error]: CryptoErrc::kEmptyContainer 如果参数 container 是空的
[Error]: CryptoErrc::kIncompleteArgState 如果参数 transportContext 没有被初始化
[Error]: CryptoErrc::kModifiedResource 在container被打开后,底层资源被被修改;
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20729
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ GeneratePrivateKey()

virtual ara::core::Result<PrivateKey::Uptrc> ara::crypto::cryp::CryptoProvider::GeneratePrivateKey ( AlgId  algId,
AllowedUsageFlags  allowedUsage,
bool  isSession = false,
bool  isExportable = false 
)
pure virtualnoexcept

生成私钥对象

模板参数
N/A
参数
[in]algId算法标识符 (支持的算法有:kNID_sm2_secp256系列, kNID_rsa_2048系列,kNID_rsa_4096系列, kNID_ecc_secp256k1系列)
[in]allowedUsage允许标识(支持kAllowDataEncryption | kAllowDataDecryption | kAllowSignature | kAllowKeyExporting | kAllowKeyImporting | kAllowVerification)
[in]isSession对称密钥的“会话”(或“临时”)属性(默认值为false)
[in]isExportable密钥的可导出性属性(默认false)
[out]N/A
[in,out]N/A
返回
指向创建的私钥对象的智能唯一指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数algId不支持
[Error]: CryptoErrc::kIncompatibleArguments 如果参数allowedUsage与指定的算法参数algId不匹配
[Error]: CryptoErrc::kLogicFault 处理逻辑错误
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20722
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ GenerateSeed()

virtual ara::core::Result<SecretSeed::Uptrc> ara::crypto::cryp::CryptoProvider::GenerateSeed ( AlgId  algId,
SecretSeed::Usage  allowedUsage,
bool  isSession = true,
bool  isExportable = false 
)
pure virtualnoexcept

生成请求算法的随机秘密种子对象

模板参数
N/A
参数
[in]algId算法标识符
[in]allowedUsage该标志定义了生成的秘密种子在使用中的允许转换类型(请参见RestrictedUseObject内的常量)
[in]isSession目标秘密种子的“会话”(或“临时”)属性(只支持true,默认值为true)
[in]isExportable目标种子的可导出性属性(如果为true)
[out]N/A
[in,out]N/A
返回
指向生成的秘密种子对象的唯一智能指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数algId不支持
[Error]: CryptoErrc::kIncompatibleArguments 如果参数allowedUsage与指定的算法参数algId不匹配
[Error]: CryptoErrc::kLogicFault 处理逻辑错误
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20723
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ GenerateSymmetricKey()

virtual ara::core::Result<SymmetricKey::Uptrc> ara::crypto::cryp::CryptoProvider::GenerateSymmetricKey ( AlgId  algId,
AllowedUsageFlags  allowedUsage,
bool  isSession = true,
bool  isExportable = false 
)
pure virtualnoexcept

分配一个新的对称密钥对象,并用一个随机生成的新值填充它

模板参数
N/A
参数
[in]algId算法标识符
[in]allowedUsage该标志定义了生成的密钥在使用中的允许转换类型(请参见RestrictedUseObject内的常量)
[in]isSession对称密钥的“会话”(或“临时”)属性(只支持true,默认值为true)
[in]isExportable密钥的可导出性属性(如果为true)
[out]N/A
[in,out]N/A
返回
指向创建的对称密钥对象的智能唯一指针
注解
[Error]: CryptoErrc::kUnknownIdentifier 如果参数algId不支持
[Error]: CryptoErrc::kIncompatibleArguments 如果参数allowedUsage与指定的算法参数algId不匹配
[Error]: CryptoErrc::kLogicFault 处理逻辑错误
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20721
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ImportPublicObject()

virtual ara::core::Result<void> ara::crypto::cryp::CryptoProvider::ImportPublicObject ( IOInterface container,
ReadOnlyMemRegion  serialized,
CryptoObjectType  expectedObject = CryptoObjectType::kUndefined 
)
pure virtualnoexcept

将明文序列化的对象导入到IOInterface指向的存储位置

模板参数
N/A
参数
[in]serialized包含安全序列化对象的内存区域,应将其导入IOInterface
[in]expectedObject预期的对象类型(默认值CryptoObjectType::kUndefined表示不检查)
[out]container用于存储导入的对象的IOInterface
[in,out]N/A
返回
N/A
注解
[Error]: CryptoErrc::kUnexpectedValue 输入的序列化对象的缓冲区为空
[Error]: CryptoErrc::kInsufficientCapacity 参数container空间不足存储对象
[Error]: CryptoErrc::kLogicFault 处理流程错误
[Error]: CryptoErrc::kBadObjectType 如果 expectedObject != CryptoObjectType::kUnknown, 但是对象的实际类型与期望的不同
[Error]: CryptoErrc::kUnreservedResource 如果 IOInterface 未打开可写
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20732
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ ImportSecuredObject()

virtual ara::core::Result<void> ara::crypto::cryp::CryptoProvider::ImportSecuredObject ( IOInterface container,
ReadOnlyMemRegion  serialized,
SymmetricKeyWrapperCtx transportContext,
bool  isExportable = false,
CryptoObjectType  expectedObject = CryptoObjectType::kUndefined 
)
pure virtualnoexcept

密文导入数据到永久性存储区或者易失性存储区

模板参数
N/A
参数
[in]serialized待导入数据
[in]transportContext对称密钥包装上下文
[in]isExportable目标对象的可导出属性
[in]expectedObject对象类型
[in]container存储导入数据关联的IOInterface
[out]N/A
[in,out]N/A
返回
N/A
注解
[Error]: CryptoErrc::kUnexpectedValue 待导入数据数据长度不合法
[Error]: CryptoErrc::kBadObjectType 如果(expectedObject != CryptoObjectType::kUnknown),但是实际对象类型与expectedObject指定的类型不同
[Error]: CryptoErrc::kIncompleteArgState 如果参数 transportContext 没有被初始化
[Error]: CryptoErrc::kInsufficientCapacity 如果参数 container 空间不足以存储待导入数据
[Error]: CryptoErrc::kModifiedResource 在container被打开后,底层资源被被修改;
[Error]: CryptoErrc::kUnreservedResource 如果参数container不是以可写的方式打开的
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20730
符合标准
no
非标原因
标准中定义container为出参,根据对接口理解,标准此处应该错误,实现按照入参定义
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ LoadObject()

virtual ara::core::Result<CryptoObject::Uptrc> ara::crypto::cryp::CryptoProvider::LoadObject ( const IOInterface container)
pure virtualnoexcept

从提供的IOInterface加载密钥对象

模板参数
N/A
参数
[in]container要加载的加密对象的IOInterface
[out]N/A
[in,out]N/A
返回
指向密钥对象的唯一指针
注解
[Error]: CryptoErrc::kEmptyContainer 容器为空
[Error]: CryptoErrc::kResourceFault if the container content is damaged
[Error]: CryptoErrc::kModifiedResource IOInterface打开后底层资源被修改,即IOInterface已经失效
[Error]: CryptoErrc::kIncompatibleObject 底层资源属于其他不匹配的CryptoProvider
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20733
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ LoadPrivateKey()

virtual ara::core::Result<PrivateKey::Uptrc> ara::crypto::cryp::CryptoProvider::LoadPrivateKey ( const IOInterface container)
pure virtualnoexcept

从提供的IOInterface私钥对象.

模板参数
N/A
参数
[in]container包含要加载的加密对象的IOInterface
[out]N/A
[in,out]N/A
返回
指向私钥对象的唯一指针
注解
[Error]: CryptoErrc::kEmptyContainer 如果容器为空
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
[Error]: CryptoErrc::kIncompatibleObject 如果底层资源属于其他不匹配的CryptoProvider
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20764
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ LoadPublicKey()

virtual ara::core::Result<PublicKey::Uptrc> ara::crypto::cryp::CryptoProvider::LoadPublicKey ( const IOInterface container)
pure virtualnoexcept

从提供的IOInterface公钥对象.

模板参数
N/A
参数
[in]container包含要加载的加密对象的IOInterface
[out]N/A
[in,out]N/A
返回
指向公钥对象的唯一指针
注解
[Error]: CryptoErrc::kEmptyContainer 如果容器为空
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
[Error]: CryptoErrc::kIncompatibleObject 如果底层资源属于其他不匹配的CryptoProvider
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20763
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ LoadSecretSeed()

virtual ara::core::Result<SecretSeed::Uptrc> ara::crypto::cryp::CryptoProvider::LoadSecretSeed ( const IOInterface container)
pure virtualnoexcept

从提供的IOInterface加载秘密种子

模板参数
N/A
参数
[in]container包含要加载的加密对象的IOInterface
[out]N/A
[in,out]N/A
返回
指向秘密种子对象的唯一指针
注解
[Error]: CryptoErrc::kIncompatibleObject 如果底层资源属于其他不匹配的CryptoProvider
[Error]: CryptoErrc::kUnreservedResource 如果 IOInterface 未打开可写
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
[Error]: CryptoErrc::kEmptyContainer 如果容器为空
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20765
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ LoadSymmetricKey()

virtual ara::core::Result<SymmetricKey::Uptrc> ara::crypto::cryp::CryptoProvider::LoadSymmetricKey ( const IOInterface container)
pure virtualnoexcept

从提供的IOInterface加载对称密钥

模板参数
N/A
参数
[in]container包含要加载的加密对象的IOInterface
[out]N/A
[in,out]N/A
返回
指向对称密钥对象的唯一指针
注解
[Error]: CryptoErrc::kIncompatibleObject 如果底层资源属于其他不匹配的CryptoProvider
[Error]: CryptoErrc::kModifiedResource 如果IOInterface打开后底层资源被修改,即IOInterface已经失效
[Error]: CryptoErrc::kEmptyContainer 如果容器为空
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_20762
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ operator=() [1/2]

CryptoProvider& ara::crypto::cryp::CryptoProvider::operator= ( const CryptoProvider other)
default

将另一个CryptoProvider实例拷贝赋值给此实例

模板参数
N/A
参数
[in]other其他实例
[out]N/A
[in,out]N/A
返回
*this 包含其他实例内容
注解
N/A
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_30216
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara

◆ operator=() [2/2]

CryptoProvider& ara::crypto::cryp::CryptoProvider::operator= ( CryptoProvider &&  other)
default

将另一个CryptoProvider实例移动赋值给此实例

模板参数
N/A
参数
[in]other其他实例
[out]N/A
[in,out]N/A
返回
*this 包含其他实例内容
注解
N/A
错误码偏差项
N/A
异常
N/A
Swsid
SWS_CRYPT_30217
符合标准
yes
非标原因
N/A
种类
function
可见
public
线程安全
reentrant
Fireandforget
no
错误
N/A
头文件
异常安全
noexcept
分类
ara