int rsa_sign(struct image_sign_info *info, const struct image_region region[], int region_count, uint8_t **sigp, uint *sig_len) { RSA *rsa; int ret; ret = rsa_init(); if (ret) return ret; ret = rsa_get_priv_key(info->keydir, info->keyname, &rsa); if (ret) goto err_priv; ret = rsa_sign_with_key(rsa, info->checksum, region, region_count, sigp, sig_len); if (ret) goto err_sign; RSA_free(rsa); rsa_remove(); return ret; err_sign: RSA_free(rsa); err_priv: rsa_remove(); return ret; }
int rsa_sign(const char *private_path, const void *data, const int size, uint8_t **sigp, uint *sig_len) { RSA *rsa; int ret; ret = rsa_init(); if (ret) return ret; ret = rsa_get_priv_key(private_path, &rsa); if (ret) goto err_priv; ret = rsa_sign_with_key(rsa, data, size, sigp, sig_len); if (ret) goto err_sign; RSA_free(rsa); rsa_remove(); return ret; err_sign: RSA_free(rsa); err_priv: rsa_remove(); return ret; }