예제 #1
0
/*
 *  get a X.509 authority certificate with a given subject or keyid
 */
x509cert_t *get_authcert(chunk_t subject, chunk_t serial, chunk_t keyid,
			u_char auth_flags)
{
	x509cert_t *cert = x509authcerts;
	x509cert_t *prev_cert = NULL;

	while (cert != NULL) {
		if (cert->authority_flags & auth_flags &&
			((keyid.ptr != NULL) ?
				same_keyid(keyid, cert->subjectKeyID) :
				(same_dn(subject, cert->subject) &&
					same_serial(serial,
						cert->serialNumber)))) {
			if (cert != x509authcerts) {
				/* bring the certificate up front */
				prev_cert->next = cert->next;
				cert->next = x509authcerts;
				x509authcerts = cert;
			}
			return cert;
		}
		prev_cert = cert;
		cert = cert->next;
	}
	return NULL;
}
예제 #2
0
파일: x509.c 프로젝트: OPSF/uClinux
/*
 *  get the X.509 CRL with a given issuer
 */
static x509crl_t*
get_x509crl(chunk_t issuer, chunk_t serial, chunk_t keyid)
{
    x509crl_t *crl = x509crls;
    x509crl_t *prev_crl = NULL;

    while(crl != NULL)
    {
	if ((keyid.ptr != NULL && crl->authKeyID.ptr != NULL)
	? same_keyid(keyid, crl->authKeyID)
	: (same_dn(crl->issuer, issuer) && same_serial(serial, crl->authKeySerialNumber)))
	{
	    if (crl != x509crls)
	    {
		/* bring the CRL up front */
		prev_crl->next = crl->next;
		crl->next = x509crls;
		x509crls = crl;
	    }
	    return crl;
	}
	prev_crl = crl;
	crl = crl->next;
    }
    return NULL;
}
void temp_sens_load_logical_numbers()
{
    uint8_t record[EEPROM_MAP_REC_SZ];
    uint8_t i,s;


    for(s = 0; s < N_TEMPERATURE_IN; s++)
    {
        gTempSensorLogicalNumber[s] = 0xFF; // unknown
    }

    for(i = 0; i < N_TEMP_SENS_EEPROM_RECORDS; i++)
    {
        temp_sens_read_record( i, record );


        for(s = 0; s < N_TEMPERATURE_IN; s++)
            if( same_serial( record, gTempSensorIDs[s] ) )
            {
                gTempSensorLogicalNumber[s] = record[SENS_ID_BYTE];
            }

    }


}
예제 #4
0
/*
 * compare two ocsp locations for equality
 */
static bool
same_ocsp_location(const ocsp_location_t *a, const ocsp_location_t *b)
{
    return ((a->authKeyID.ptr != NULL)
		? same_keyid(a->authKeyID, b->authKeyID)
		: (same_dn(a->issuer, b->issuer)
		    && same_serial(a->authKeySerialNumber, b->authKeySerialNumber)))
	    && same_chunk(a->uri, b->uri);
}
예제 #5
0
파일: x509.c 프로젝트: mkj/libreswan
/*
 *  get a X.509 certificate with a given issuer found at a certain position
 */
x509cert_t *get_x509cert(chunk_t issuer, chunk_t serial, chunk_t keyid,
			 x509cert_t *chain)
{
	x509cert_t *cert = (chain != NULL) ? chain->next : x509certs;

	while (cert != NULL) {
		if ((keyid.ptr != NULL) ? same_keyid(keyid, cert->authKeyID) :
		    (same_dn(issuer, cert->issuer) &&
		     same_serial(serial, cert->authKeySerialNumber)))
			return cert;

		cert = cert->next;
	}
	return NULL;
}
예제 #6
0
/*
 * get a cacert with a given subject or keyid from an alternative list
 */
static const x509cert_t*get_alt_cacert(chunk_t subject, chunk_t serial,
				       chunk_t keyid,
				       const x509cert_t *cert)
{
	while (cert != NULL) {
		if ((keyid.ptr != NULL) ? same_keyid(keyid,
						     cert->subjectKeyID) :
		    (same_dn(subject, cert->subject) &&
		     same_serial(serial, cert->serialNumber)))
			return cert;

		cert = cert->next;
	}
	return NULL;
}