Navigation


Changeset 805:fb5e0fd923ff in freeDiameter for libfdcore/fdd.y


Ignore:
Timestamp:
Aug 23, 2012, 5:56:22 AM (12 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Updated verification of the local certificate following GnuTLS 3.x guideline

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdcore/fdd.y

    r756 r805  
    529529                        {
    530530                                FILE * fd;
    531                                 fd = fopen($3, "r");
     531                                fd = fopen($3, "rb");
    532532                                if (fd == NULL) {
    533533                                        int ret = errno;
     
    536536                                        YYERROR;
    537537                                }
     538                                #ifdef GNUTLS_VERSION_300
     539                                {
     540                                        /* We import these CA in the trust list */
     541                                        gnutls_x509_crt_t * calist;
     542                                        unsigned int cacount;
     543                                        gnutls_datum_t cafile;
     544                                       
     545                                        CHECK_FCT_DO( fd_conf_stream_to_gnutls_datum(fd, &cafile),
     546                                                        { yyerror (&yylloc, conf, "Error reading CA file."); YYERROR; } );
     547                                                       
     548                                        CHECK_GNUTLS_DO( gnutls_x509_crt_list_import2(&calist, &cacount, &cafile, GNUTLS_X509_FMT_PEM,
     549                                                                                GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED),
     550                                                        { yyerror (&yylloc, conf, "Error importing CA file."); YYERROR; } );
     551                                        free(cafile.data);
     552                                       
     553                                        CHECK_GNUTLS_DO( gnutls_x509_trust_list_add_cas (fd_g_config->cnf_sec_data.trustlist, calist, cacount, 0),
     554                                                        { yyerror (&yylloc, conf, "Error saving CA in trust list."); YYERROR; } );
     555                                }
     556                                #endif /* GNUTLS_VERSION_300 */
    538557                                fclose(fd);
    539558                                conf->cnf_sec_data.ca_file = $3;
     
    543562                                                        GNUTLS_X509_FMT_PEM),
    544563                                                { yyerror (&yylloc, conf, "Error setting CA parameters."); YYERROR; } );
     564                                               
    545565                        }
    546566                        ;
     
    549569                        {
    550570                                FILE * fd;
    551                                 fd = fopen($3, "r");
     571                                fd = fopen($3, "rb");
    552572                                if (fd == NULL) {
    553573                                        int ret = errno;
     
    556576                                        YYERROR;
    557577                                }
     578                                #ifdef GNUTLS_VERSION_300
     579                                {
     580                                        /* We import these CRL in the trust list */
     581                                        gnutls_x509_crl_t * crllist;
     582                                        unsigned int crlcount;
     583                                        gnutls_datum_t crlfile;
     584                                       
     585                                        CHECK_FCT_DO( fd_conf_stream_to_gnutls_datum(fd, &crlfile),
     586                                                        { yyerror (&yylloc, conf, "Error reading CRL file."); YYERROR; } );
     587                                                       
     588                                        CHECK_GNUTLS_DO( gnutls_x509_crl_list_import2(&crllist, &crlcount, &crlfile, GNUTLS_X509_FMT_PEM, 0),
     589                                                        { yyerror (&yylloc, conf, "Error importing CRL file."); YYERROR; } );
     590                                        free(crlfile.data);
     591                                       
     592                                        CHECK_GNUTLS_DO( gnutls_x509_trust_list_add_crls (fd_g_config->cnf_sec_data.trustlist, crllist, crlcount,
     593                                                                        GNUTLS_TL_VERIFY_CRL,
     594                                                                        0),
     595                                                        { yyerror (&yylloc, conf, "Error importing CRL in trust list."); YYERROR; } );
     596                                }
     597                                #endif /* GNUTLS_VERSION_300 */
    558598                                fclose(fd);
    559599                                conf->cnf_sec_data.crl_file = $3;
Note: See TracChangeset for help on using the changeset viewer.