(hx509_ocsp_request): Add nonce to ocsp request.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16908 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -701,12 +701,14 @@ hx509_ocsp_request(hx509_context context,
|
|||||||
hx509_certs pool,
|
hx509_certs pool,
|
||||||
hx509_cert signer,
|
hx509_cert signer,
|
||||||
const AlgorithmIdentifier *digest,
|
const AlgorithmIdentifier *digest,
|
||||||
heim_octet_string *request)
|
heim_octet_string *request,
|
||||||
|
heim_octet_string *nonce)
|
||||||
{
|
{
|
||||||
OCSPRequest req;
|
OCSPRequest req;
|
||||||
size_t size;
|
size_t size;
|
||||||
int ret;
|
int ret;
|
||||||
struct ocsp_add_ctx ctx;
|
struct ocsp_add_ctx ctx;
|
||||||
|
Extensions *es;
|
||||||
|
|
||||||
memset(&req, 0, sizeof(req));
|
memset(&req, 0, sizeof(req));
|
||||||
|
|
||||||
@@ -725,6 +727,39 @@ hx509_ocsp_request(hx509_context context,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nonce) {
|
||||||
|
|
||||||
|
req.tbsRequest.requestExtensions =
|
||||||
|
calloc(1, sizeof(*req.tbsRequest.requestExtensions));
|
||||||
|
if (req.tbsRequest.requestExtensions == NULL) {
|
||||||
|
free_OCSPRequest(&req);
|
||||||
|
return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
es = req.tbsRequest.requestExtensions;
|
||||||
|
|
||||||
|
es->len = 1;
|
||||||
|
es->val = calloc(es->len, sizeof(es->val[0]));
|
||||||
|
|
||||||
|
ret = copy_oid(oid_id_pkix_ocsp_nonce(), &es->val[0].extnID);
|
||||||
|
if (ret)
|
||||||
|
abort();
|
||||||
|
|
||||||
|
es->val[0].extnValue.data = malloc(10);
|
||||||
|
if (es->val[0].extnValue.data == NULL) {
|
||||||
|
free_OCSPRequest(&req);
|
||||||
|
return ENOMEM;
|
||||||
|
}
|
||||||
|
es->val[0].extnValue.length = 10;
|
||||||
|
|
||||||
|
ret = RAND_bytes(es->val[0].extnValue.data,
|
||||||
|
es->val[0].extnValue.length);
|
||||||
|
if (ret != 1) {
|
||||||
|
free_OCSPRequest(&req);
|
||||||
|
return HX509_CRYPTO_INTERNAL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ASN1_MALLOC_ENCODE(OCSPRequest, request->data, request->length,
|
ASN1_MALLOC_ENCODE(OCSPRequest, request->data, request->length,
|
||||||
&req, &size, ret);
|
&req, &size, ret);
|
||||||
free_OCSPRequest(&req);
|
free_OCSPRequest(&req);
|
||||||
|
Reference in New Issue
Block a user