MCPcopy Create free account
hub / github.com/OpenPrinting/cups / httpCredentialsString

Function httpCredentialsString

cups/tls-gnutls.c:648–701  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

646 */
647
648size_t /* O - Total size of credentials string */
649httpCredentialsString(
650 cups_array_t *credentials, /* I - Credentials */
651 char *buffer, /* I - Buffer or @code NULL@ */
652 size_t bufsize) /* I - Size of buffer */
653{
654 http_credential_t *first; /* First certificate */
655 gnutls_x509_crt_t cert; /* Certificate */
656
657
658 DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", credentials, buffer, CUPS_LLCAST bufsize));
659
660 if (!buffer)
661 return (0);
662
663 if (bufsize > 0)
664 *buffer = '\0';
665
666 if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
667 (cert = http_gnutls_create_credential(first)) != NULL)
668 {
669 char name[256], /* Common name associated with cert */
670 issuer[256]; /* Issuer associated with cert */
671 size_t len; /* Length of string */
672 time_t expiration; /* Expiration date of cert */
673 int sigalg; /* Signature algorithm */
674 unsigned char md5_digest[16]; /* MD5 result */
675
676 len = sizeof(name) - 1;
677 if (gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, name, &len) >= 0)
678 name[len] = '\0';
679 else
680 strlcpy(name, "unknown", sizeof(name));
681
682 len = sizeof(issuer) - 1;
683 if (gnutls_x509_crt_get_issuer_dn_by_oid(cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, issuer, &len) >= 0)
684 issuer[len] = '\0';
685 else
686 strlcpy(issuer, "unknown", sizeof(issuer));
687
688 expiration = gnutls_x509_crt_get_expiration_time(cert);
689 sigalg = gnutls_x509_crt_get_signature_algorithm(cert);
690
691 cupsHashData("md5", first->data, first->datalen, md5_digest, sizeof(md5_digest));
692
693 snprintf(buffer, bufsize, "%s (issued by %s) / %s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, issuer, httpGetDateString(expiration), gnutls_sign_get_name((gnutls_sign_algorithm_t)sigalg), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
694
695 gnutls_x509_crt_deinit(cert);
696 }
697
698 DEBUG_printf(("1httpCredentialsString: Returning \"%s\".", buffer));
699
700 return (strlen(buffer));
701}
702
703
704/*

Callers 1

httpCredentialsGetTrustFunction · 0.70

Calls 4

cupsArrayFirstFunction · 0.85
cupsHashDataFunction · 0.85
httpGetDateStringFunction · 0.85

Tested by

no test coverage detected