AzureMXChip/MXCHIPAZ3166/core/lib/netxduo/nx_secure/src/nx_secure_x509_local_certificate_find.c
UINT _nx_secure_x509_local_certificate_find(NX_SECURE_X509_CERTIFICATE_STORE *store,
                                            NX_SECURE_X509_CERT **certificate, UINT cert_id)
{
NX_SECURE_X509_CERT *list_head;
NX_SECURE_X509_CERT *current_cert;

    /* Get the first certificate in the local store. */
    list_head = store -> nx_secure_x509_local_certificates;

    if (list_head == NX_NULL)
    {
        /* No certificates in this store! */
        return(NX_SECURE_TLS_CERTIFICATE_NOT_FOUND);
    }

    /* Walk the list until we find a certificate that has a matching ID. */
    current_cert = list_head;

    while (current_cert != NX_NULL)
    {
        if (current_cert -> nx_secure_x509_cert_identifier == cert_id)
        {
            /* We found a match, return it. */
            if (certificate != NX_NULL)
            {
                /* If certificate is NULL, just return that one was found, but nothing to return. */
                *certificate = current_cert;
            }

            /* We are OK to quit now, we found the certificate. */
            return(NX_SUCCESS);
        }

        /* Advance our current certificate pointer. */
        current_cert = current_cert -> nx_secure_x509_next_certificate;
    }

    /* No matching certificates in this store! */
    return(NX_SECURE_TLS_CERTIFICATE_NOT_FOUND);
}
/**************************************************************************/
/*                                                                        */
/*  FUNCTION                                               RELEASE        */
/*                                                                        */
/*    _nx_secure_x509_local_certificate_find              PORTABLE C      */
/*                                                           6.1          */
/*  AUTHOR                                                                */
/*                                                                        */
/*    Timothy Stapko, Microsoft Corporation                               */
/*                                                                        */
/*  DESCRIPTION                                                           */
/*                                                                        */
/*    This function searches a given certificate store for a specific     */
/*    certificate. This is decided by searching the "local" certificate   */
/*    list in the given store for a certificate based on a specific       */
/*    unique ID in case multiple certificates share the same name.        */
/*                                                                        */
/*  INPUT                                                                 */
/*                                                                        */
/*    store                                 Pointer to certificate store  */
/*    certificate                           Pointer to cert pointer       */
/*    cert_id                               Unique certificate identifier */
/*                                                                        */
/*  OUTPUT                                                                */
/*                                                                        */
/*    status                                Completion status             */
/*                                                                        */
/*  CALLS                                                                 */
/*                                                                        */
/*    None                                                                */
/*                                                                        */
/*  CALLED BY                                                             */
/*                                                                        */
/*    _nx_secure_tls_server_certificate_find                              */
/*                                          Find server certificate       */
/*                                                                        */
/*  RELEASE HISTORY                                                       */
/*                                                                        */
/*    DATE              NAME                      DESCRIPTION             */
/*                                                                        */
/*  05-19-2020     Timothy Stapko           Initial Version 6.0           */
/*  09-30-2020     Timothy Stapko           Modified comment(s),          */
/*                                            resulting in version 6.1    */
/*                                                                        */
/**************************************************************************/
FUNCTION                                               RELEASE

_nx_secure_x509_local_certificate_find              PORTABLE C
6.1
AUTHOR

Timothy Stapko, Microsoft Corporation

DESCRIPTION

This function searches a given certificate store for a specific
certificate. This is decided by searching the "local" certificate
list in the given store for a certificate based on a specific
unique ID in case multiple certificates share the same name.

INPUT

store                                 Pointer to certificate store
certificate                           Pointer to cert pointer
cert_id                               Unique certificate identifier

OUTPUT

status                                Completion status

CALLS

None

CALLED BY

_nx_secure_tls_server_certificate_find
Find server certificate

RELEASE HISTORY

DATE              NAME                      DESCRIPTION

05-19-2020     Timothy Stapko           Initial Version 6.0
09-30-2020     Timothy Stapko           Modified comment(s),
resulting in version 6.1
FUNCTION RELEASE _nx_secure_x509_local_certificate_find PORTABLE C 6 . 1 AUTHOR Timothy Stapko Microsoft Corporation DESCRIPTION This function searches a given certificate store for a specific certificate . This is decided by searching the " local " certificate list in the given store for a certificate based on a specific unique ID in case multiple certificates share the same name . INPUT store Pointer to certificate store certificate Pointer to cert pointer cert_id Unique certificate identifier OUTPUT status Completion status CALLS None CALLED BY _nx_secure_tls_server_certificate_find Find server certificate RELEASE HISTORY DATE NAME DESCRIPTION 05 - 19 - 2020 Timothy Stapko Initial Version 6 . 0 09 - 30 - 2020 Timothy Stapko Modified comment ( s ) resulting in version 6 . 1
UINT _nx_secure_x509_local_certificate_find(NX_SECURE_X509_CERTIFICATE_STORE *store,
                                            NX_SECURE_X509_CERT **certificate, UINT cert_id)
{
NX_SECURE_X509_CERT *list_head;
NX_SECURE_X509_CERT *current_cert;
    list_head = store -> nx_secure_x509_local_certificates;
    if (list_head == NX_NULL)
    {
        return(NX_SECURE_TLS_CERTIFICATE_NOT_FOUND);
    }
    current_cert = list_head;
    while (current_cert != NX_NULL)
    {
        if (current_cert -> nx_secure_x509_cert_identifier == cert_id)
        {
            if (certificate != NX_NULL)
            {
                *certificate = current_cert;
            }
            return(NX_SUCCESS);
        }
        current_cert = current_cert -> nx_secure_x509_next_certificate;
    }
    return(NX_SECURE_TLS_CERTIFICATE_NOT_FOUND);
}
UINT _nx_secure_x509_local_certificate_find ( NX_SECURE_X509_CERTIFICATE_STORE * store , NX_SECURE_X509_CERT * * certificate , UINT cert_id ) { NX_SECURE_X509_CERT * list_head ; NX_SECURE_X509_CERT * current_cert ; list_head = store -> nx_secure_x509_local_certificates ; if ( list_head == NX_NULL ) { return ( NX_SECURE_TLS_CERTIFICATE_NOT_FOUND ) ; } current_cert = list_head ; while ( current_cert != NX_NULL ) { if ( current_cert -> nx_secure_x509_cert_identifier == cert_id ) { if ( certificate != NX_NULL ) { * certificate = current_cert ; } return ( NX_SUCCESS ) ; } current_cert = current_cert -> nx_secure_x509_next_certificate ; } return ( NX_SECURE_TLS_CERTIFICATE_NOT_FOUND ) ; }
FUNCTION                                               RELEASE
FUNCTION RELEASE
/* Get the first certificate in the local store. */ /* No certificates in this store! */ /* Walk the list until we find a certificate that has a matching ID. */ /* We found a match, return it. */ /* If certificate is NULL, just return that one was found, but nothing to return. */ /* We are OK to quit now, we found the certificate. */ /* Advance our current certificate pointer. */ /* No matching certificates in this store! */