static void test_certificate_fingerprint(void) { char *fingerprint; belle_sip_certificates_chain_t *cert; /* check underlying bctoolbox function availability */ if (bctoolbox_x509_certificate_get_fingerprint(NULL, NULL, 0, 0) == BCTOOLBOX_ERROR_UNAVAILABLE_FUNCTION) { belle_sip_warning("Test skipped, certificate fingerprint generation not available."); return; } /* parse certificate defined in belle_sip_register_tester.c */ cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); /* generate fingerprint */ fingerprint = belle_sip_certificates_chain_get_fingerprint(cert); BC_ASSERT_TRUE_FATAL(fingerprint!=NULL); BC_ASSERT_STRING_EQUAL(fingerprint, belle_sip_tester_client_cert_fingerprint); belle_sip_free(fingerprint); belle_sip_object_unref(cert); /* parse certificate defined above, signing algo is sha256 */ cert = belle_sip_certificates_chain_parse(belle_sip_tester_fingerprint256_cert,strlen(belle_sip_tester_fingerprint256_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); /* generate fingerprint */ fingerprint = belle_sip_certificates_chain_get_fingerprint(cert); BC_ASSERT_TRUE_FATAL(fingerprint!=NULL); BC_ASSERT_STRING_EQUAL(fingerprint, belle_sip_tester_fingerprint256_cert_fingerprint); belle_sip_free(fingerprint); belle_sip_object_unref(cert); }
static void process_auth_requested(void *data, belle_sip_auth_event_t *event){ if (belle_sip_auth_event_get_mode(event)==BELLE_SIP_AUTH_MODE_TLS){ belle_sip_certificates_chain_t* cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t* key = belle_sip_signing_key_parse(belle_sip_tester_private_key,strlen(belle_sip_tester_private_key),belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event,cert); belle_sip_auth_event_set_signing_key(event,key); belle_sip_message("process_auth_requested requested for DN [%s]" ,belle_sip_auth_event_get_distinguished_name(event)); } }
static void process_auth_requested(void *user_ctx, belle_sip_auth_event_t *event){ BELLESIP_UNUSED(user_ctx); if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_HTTP_DIGEST) { const char *username = belle_sip_auth_event_get_username(event); const char *realm = belle_sip_auth_event_get_realm(event); belle_sip_message("process_auth_requested requested for [%s@%s]" ,username?username:"" ,realm?realm:""); belle_sip_auth_event_set_passwd(event,"secret"); } else if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_TLS) { const char *distinguished_name = NULL; belle_sip_certificates_chain_t* cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t* key = belle_sip_signing_key_parse(belle_sip_tester_private_key,strlen(belle_sip_tester_private_key),belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event,cert); belle_sip_auth_event_set_signing_key(event,key); distinguished_name = belle_sip_auth_event_get_distinguished_name(event); belle_sip_message("process_auth_requested requested for DN[%s]",distinguished_name?distinguished_name:""); } else { belle_sip_error("Unexpected auth mode"); } }