草庐IT

浅谈hks_ipc_serialization中的函数KeyInfoListInit

浅谈hks_ipc_serialization中的函数KeyInfoListInit1.函数分析2.函数改进在阅读源代码的时候看到这个函数时,有些疑惑,在此表达自己一点点的看法,由于知识水平的不足,还望大家批评指正,一起交流!1.函数分析首先我们贴上源代码跟我自己的注释:分析:先从参数分析:structHksKeyInfo*keyInfoList:用于存储keyInfo的列表uint32_tlistCount:列表的项数conststructHksBlob*srcData:需要添加入list的数据来源uint32_t*offset:调用函数时需要传入的偏移量函数的基本流程:for循环,调用两个

security_huks/services/huks_standard/huks_engine/core/src/hks_upgrade_key_info解读(二)

keyInfo信息的提取与封装添加总体概述代码讲解1.CopyToNewBlob2.ConvertEd25519ToNewFormat3.ConvertToNewFormat4.GetNewFormatKey5.AddKeyInfoParams6.AddParams7.GetParamSet8.HksUpgradeKeyInfo总体概述主要是对于keyInfo中的数据进行处理和提取,对于其中的密钥进行解密,公钥私钥的提取和类型的转换,参数集合的更新与添加代码讲解1.CopyToNewBlob函数功能:进行密钥的拷贝将密钥进行一次数据和大小的复制函数实现:同样时通过memcpy_s将key中的信

security_huks/huks_standard/common/hks_base_check源码分析(一)

各种加密算法参数和模式的校对和检查知识总结总体概述代码详解hks_base_check.hhks_base_check.c知识总结关于各种加密算法的大致描述可以从我的另一篇博客入手鸿蒙涉及的各种加密算法概述总体概述下面介绍的函数主要封装了对于单个参数结构体的有效性的检查以及从参数集合中根据tag取值取得输入参数并进行唯一性和有效性检查的功能函数代码详解hks_base_check.h通过枚举变量定义了密钥的类型封装了参数和期望参数的结构体用于参数的check//参数的格式:两个参数一个布尔型标识该参数是否需要检查,一个是参数本身的值structParams{boolneedCheck;uint

security_huks/services/huks_standard/huks_engine/core/hks_keyblob代码解读

密钥的封装加密再加密总体概述代码解读HksFreeKeyNodeGetEncryptKeyGetDeriveKeyEncryptAndDecryptKeyBlobInitKeyBlobInfoBuildClearKeyBlobHksGenerateKeyNodeHksGetRawKeyHksBuildKeyBlob总体概述代码围绕着密钥的安全性进行封装和加密,分为不同情况下对keyBlob的封装加密和解密;还有对于ParamSet中key的获取本地存储与加解密代码解读HksFreeKeyNode函数功能:释放所传参数所占空间和数据函数实现:首先调用CleanKey清除keyParam->blo

security_huks/service/huks_service/src/hks_client_service_adapter_lite解读

密钥生成和适配转换的各类函数知识分享X509总体概述代码解读1.密钥的生成相关函数1.1PkCtxToX5091.2InitRsaPkCtx1.3RsaToX509PublicKey1.4EccToX509PublicKey1.5Curve25519ToX509PublicKey1.6TranslateToX509PublicKey2.对于各类型密钥载体的检查函数2.1CheckRsaCtx2.2CheckEccXySize3.从X509标准Key转换为各个类型算法公钥的函数3.1X509PublicKeyToRsa3.2X509PublicKeyToEcc3.3TranslateFromX5

security_huks/services/huks_standard/huks_engine/core/hks_keyblob_lite解读

hks_keyblob_lite版本解读知识总结总体概述代码解读GetSaltGetDeriveMaterialBuildKeyBlobUsageSpecEncryptAndDecryptKeyBlobEd25519BlobToKeyMaterialEd25519KeyMaterialToBlobGetRawKeyMaterialHksGenerateKeyNodeFillBaseInfoFillStoreKeyInfoAdjustKeyHksBuildKeyBlob知识总结为什么需要lite版本?Lite使用运行于移动端,有些设备资源非常有限,因此在内存和解析方面必须尽可能减少开销,所以需要

security_huks/frameworks/huks_standard/common/hks_crypto_adapter代码解读

各种加密算法和参数的适配模块总体概述代码解读1.根据tag填充相应数据的函数1.1HksFillKeySpec1.2HksFillUsageSpec1.3HksFillKeyDerivationParam1.4HksFillAeadParam1.5HksFillIvParam2.HksBuildCipherUsageSpec3.HksGetEncryptAeTag4.关于curve25519的函数4.1SetCurve25519KeyMaterial4.2CheckCurve25519KeySize4.3CheckFormatCurve25519Key4.4FormatCurve25519Ke

security_huks/frameworks/huks_standard/common/hks_param.c解读

对于paramSet的操作函数封装知识总结总体概述代码解读1.g_validTags[]2.IsValidTag3.HksCheckParamSetTag4.CheckBeforeAddParams5.关于paramSet的更新和检查函数5.1BuildParamSet5.2FreshParamSet5.3HksFreshParamSet5.4HksCheckParamSet5.5HksInitParamSet5.6HksAddParams5.7HksBuildParamSet5.7HksFreeParamSet5.8HksGetParam5.9HksGetParamSet5.10HksChe

security_huks/framework/huks_standard/common/hks_check_paramset解读(二)

对于不同类型的参数core封装检查函数知识总结总结概述代码解读1.Pbkdf2算法相关2.封装函数对GenKey参数的检查3.对于importKey参数检查函数4.对于SignVerify参数的检查5.agreeKey的size检查函数6.对加密参数和数据封装检查函数7.本地加密参数的检查8.对于DeriveKey参数的检查函数9.MAC相关检查知识总结这里出现了一种新的加密函数PBKDF2它的基本原理是通过一个伪随机函数(例如HMAC函数),把明文和一个SALT值作为输入参数,然后重复进行运算,并最终产生密钥。如果重复的次数足够大,破解的成本就会变得很高。那么信息也就更加安全总结概述封装了对

security_huks/services/huks_service/core/hks_storage文件读写相关解读(二)

fileInfo结构体的填充以及文件内容的提取、存储与删除1.小小疑问2.总体概述3.代码解读3.1GetKeyBlobFromFile3.2SaveKeyBlob3.3DeleteKeyBlob3.4GetKeyBlob3.5GetKeyBlobSize3.6fileInfo的初始化和释放3.7GetStorePath3.8GetFileInfo1.小小疑问1.这里有一个小疑问——就是文件存储时需要的两个name——一个是processName另一个是pathName,pathName表示目标存储的位置,那么为什么需要processName呢?processName是功能是什么呢?2.总体概
12