예제 #1
0
파일: wincert.c 프로젝트: shpedoikal/pesign
ssize_t calculate_signature_space(pesign_context *ctx)
{
	int rc;

	SECItem sig = { 0, };

	rc = generate_spc_signed_data(&sig, &ctx->cms_ctx);
	if (rc < 0) {
err:
		fprintf(stderr, "Could not generate signature.\n");
		exit(1);
	}

	data_directory *dd = NULL;
	rc = pe_getdatadir(ctx->outpe, &dd);
	if (rc < 0)
		goto err;

	ssize_t ret = sig.len + dd->certs.size + sizeof(win_certificate) -
						available_cert_space(ctx);

	//free(sig.data);

	return ret;
}
예제 #2
0
파일: actions.c 프로젝트: Caesius31/pesign
void
check_signature_space(pesign_context *ctx)
{
	ssize_t available = available_cert_space(ctx->outpe);

	if (available < ctx->cms_ctx->newsig.len) {
		fprintf(stderr, "Could not add new signature: insufficient space.\n");
		exit(1);
	}
}