allow testing on sha1 hash in cert queries
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24049 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -3348,6 +3348,40 @@ _hx509_cert_to_env(hx509_context context, hx509_cert cert, hx509_env *env)
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
hx509_env envhash = NULL;
|
||||
heim_octet_string os, sig;
|
||||
char *buf;
|
||||
Certificate *c = _hx509_get_cert(cert);
|
||||
|
||||
os.data = c->tbsCertificate.subjectPublicKeyInfo.subjectPublicKey.data;
|
||||
os.length =
|
||||
c->tbsCertificate.subjectPublicKeyInfo.subjectPublicKey.length / 8;
|
||||
|
||||
ret = _hx509_create_signature(context,
|
||||
NULL,
|
||||
hx509_signature_sha1(),
|
||||
&os,
|
||||
NULL,
|
||||
&sig);
|
||||
if (ret != 0)
|
||||
goto out;
|
||||
|
||||
hex_encode(sig.data, sig.length, &buf);
|
||||
der_free_octet_string(&sig);
|
||||
|
||||
ret = hx509_env_add(context, &envhash, "sha1", buf);
|
||||
free(buf);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = hx509_env_add_binding(context, &envcert, "hash", envhash);
|
||||
if (ret) {
|
||||
hx509_env_free(&envhash);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
ret = hx509_env_add_binding(context, env, "certificate", envcert);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
@@ -194,4 +194,10 @@ ${hxtool} query \
|
||||
--expr='"1.3.6.1.5.2.3.5" IN %{certificate.eku} AND %{certificate.subject} TAILMATCH "C=SE"' \
|
||||
FILE:$srcdir/data/kdc.crt > /dev/null || exit 1
|
||||
|
||||
echo "make sure entry match with hash.sha1"
|
||||
${hxtool} query \
|
||||
--expr='"%{certificate.hash.sha1}EQ "412120212A2CBFD777DE5499ECB4724345F33F16"' \
|
||||
FILE:$srcdir/data/kdc.crt > /dev/null || exit 1
|
||||
|
||||
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user