Как декодировать данные OID X509 в mbedTLS?

Я отлаживаю рукопожатие TLS между клиентом и сервером. Оба сертификата были подписаны одним и тем же центром сертификации через openssl, Процесс терпит неудачу в этой функции в mbedtls:

/*
 * Compare two X.509 Names (aka rdnSequence).
 *
 * See RFC 5280 section 7.1, though we don't implement the whole algorithm:
 * we sometimes return unequal when the full algorithm would return equal,
 * but never the other way. (In particular, we don't do Unicode normalisation
 * or space folding.)
 *
 * Return 0 if equal, -1 otherwise.
 */
static int x509_name_cmp( const mbedtls_x509_name *a, const mbedtls_x509_name *b )
{
    /* Avoid recursion, it might not be optimised by the compiler */
    while( a != NULL || b != NULL )
    {
        if( a == NULL || b == NULL )
            return( -1 );

        /* type */
        if( a->oid.tag != b->oid.tag ||
            a->oid.len != b->oid.len ||
            memcmp( a->oid.p, b->oid.p, b->oid.len ) != 0 )
        {
            // *** FAIL ***
            return( -1 );
        }

        /* value */
        if( x509_string_cmp( &a->val, &b->val ) != 0 )
            return( -1 );

        /* structure of the list of sets */
        if( a->next_merged != b->next_merged )
            return( -1 );

        a = a->next;
        b = b->next;
    }

    /* a == NULL == b */
    return( 0 );
}

Мне интересно о mbedtls_x509_name структура и ее oid.p поле:

/**
 * Type-length-value structure that allows for ASN1 using DER.
 */
typedef struct mbedtls_asn1_buf
{
    int tag;                /**< ASN1 type, e.g. MBEDTLS_ASN1_UTF8_STRING. */
    size_t len;             /**< ASN1 length, in octets. */
    unsigned char *p;       /**< ASN1 data, e.g. in ASCII. */
}
mbedtls_asn1_buf;

В моем случае оба tag 6 (MBEDTLS_ASN1_OID), len 3 и у меня есть следующие буферы: 0x55 0x40 0x70 а также 0x55 0x40 0xA0

Что означают эти значения (т. Е. Какой информации из сертификата они соответствуют)? Почему последний байт отличается?

0 ответов

Другие вопросы по тегам