最近搞TEE里面Crypto模块,遇到RSA2048 Private key(d因子)只有255byte
而在解密的时候我直接使用长度为256byte,导致解密失败(原因是末尾补零出现公私钥不匹配)
解决方法要么使用255byte,要么高位补零(比256小都需要高位补零)
TEE_GetObjectBufferAttribute(key, attributeID, d, &dL);
uint32_t cnt = 256 - dL;
if (cnt > 0) {
char tmp[512] = { 0 };
memcpy(tmp + cnt, d, dL);
memset(d, 0x00, 256);
memcpy(d, tmp, dL + cnt);
}