add hx509_cert_get_{issuer,subject}_unique_id
This commit is contained in:
		@@ -1510,6 +1510,65 @@ hx509_cert_get_SPKI_AlgorithmIdentifier(hx509_context context,
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
get_x_unique_id(hx509_context context, const char *name, 
 | 
			
		||||
		const heim_bit_string *cert, heim_bit_string *subject)
 | 
			
		||||
{
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    if (cert == NULL) {
 | 
			
		||||
	ret = HX509_EXTENSION_NOT_FOUND;
 | 
			
		||||
	hx509_set_error_string(context, 0, ret, "%s unique id doesn't exists", name);
 | 
			
		||||
	return ret;
 | 
			
		||||
    }
 | 
			
		||||
    ret = der_copy_bit_string(cert, subject);
 | 
			
		||||
    if (ret) {
 | 
			
		||||
	hx509_set_error_string(context, 0, ret, "malloc out of memory", name);
 | 
			
		||||
	return ret;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get a copy of the Issuer Unique ID
 | 
			
		||||
 *
 | 
			
		||||
 * @param context a hx509_context
 | 
			
		||||
 * @param p a hx509 certificate
 | 
			
		||||
 * @param issuer the issuer id returned, free with der_free_bit_string()
 | 
			
		||||
 *
 | 
			
		||||
 * @return An hx509 error code, see hx509_get_error_string(). The
 | 
			
		||||
 * error code HX509_EXTENSION_NOT_FOUND is returned if the certificate
 | 
			
		||||
 * doesn't have a issuerUniqueID
 | 
			
		||||
 *
 | 
			
		||||
 * @ingroup hx509_cert
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
hx509_cert_get_issuer_unique_id(hx509_context context, hx509_cert p, heim_bit_string *issuer)
 | 
			
		||||
{
 | 
			
		||||
    return get_x_unique_id(context, "issuer", p->data->tbsCertificate.issuerUniqueID, issuer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get a copy of the Subect Unique ID
 | 
			
		||||
 *
 | 
			
		||||
 * @param context a hx509_context
 | 
			
		||||
 * @param p a hx509 certificate
 | 
			
		||||
 * @param subject the subject id returned, free with der_free_bit_string()
 | 
			
		||||
 *
 | 
			
		||||
 * @return An hx509 error code, see hx509_get_error_string(). The
 | 
			
		||||
 * error code HX509_EXTENSION_NOT_FOUND is returned if the certificate
 | 
			
		||||
 * doesn't have a subjectUniqueID
 | 
			
		||||
 *
 | 
			
		||||
 * @ingroup hx509_cert
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
hx509_cert_get_subject_unique_id(hx509_context context, hx509_cert p, heim_bit_string *subject)
 | 
			
		||||
{
 | 
			
		||||
    return get_x_unique_id(context, "subject", p->data->tbsCertificate.subjectUniqueID, subject);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
hx509_private_key
 | 
			
		||||
_hx509_cert_private_key(hx509_cert p)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user