Index: subversion/svn/auth-cmd.c =================================================================== --- subversion/svn/auth-cmd.c (revision 1616447) +++ subversion/svn/auth-cmd.c (working copy) @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include "svn_private_config.h" @@ -167,6 +169,34 @@ return SVN_NO_ERROR; } +static const char * +format_cert_fingerprint(const svn_checksum_t *fingerprint, + apr_pool_t *pool) +{ + apr_size_t digest_size; + apr_size_t i; + svn_stringbuf_t *buf; + static const char *hex = "0123456789ABCDEF"; + + if (fingerprint->kind == svn_checksum_md5) + digest_size = APR_MD5_DIGESTSIZE; + else if(fingerprint->kind == svn_checksum_sha1) + digest_size = APR_SHA1_DIGESTSIZE; + else + return NULL; + + buf = svn_stringbuf_create_ensure(digest_size * 3, pool); + + for (i = 0; i < digest_size; i++) + { + svn_stringbuf_appendbyte(buf, hex[fingerprint->digest[i] >> 4]); + svn_stringbuf_appendbyte(buf, hex[fingerprint->digest[i] & 0x0f]); + svn_stringbuf_appendbyte(buf, ':'); + } + + return buf->data; +} + static svn_error_t * show_cert(const svn_string_t *pem_cert, apr_pool_t *scratch_pool) { @@ -193,10 +223,8 @@ SVN_ERR(svn_cmdline_printf(scratch_pool, _("Issuer: %s\n"), svn_x509_certinfo_get_issuer(certinfo))); SVN_ERR(svn_cmdline_printf(scratch_pool, _("Fingerprint: %s\n"), - svn_checksum_to_cstring_display2( + format_cert_fingerprint( svn_x509_certinfo_get_digest(certinfo), - SVN_CHECKSUM_CSTRING_UPPER | - SVN_CHECKSUM_CSTRING_COLONS, scratch_pool))); hostnames = svn_x509_certinfo_get_hostnames(certinfo);