sr: add the base16 RSA identity digest to commit

Keep the base16 representation of the RSA identity digest in the commit object
so we can use it without using hex_str() or dynamically encoding it everytime
we need it. It's used extensively in the logs for instance.

Fixes #19561

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2016-07-04 12:05:48 -04:00
parent be78e9ff37
commit 267e16ea61
3 changed files with 18 additions and 3 deletions

View File

@ -140,6 +140,8 @@ commit_new(const char *rsa_identity)
commit = tor_malloc_zero(sizeof(*commit)); commit = tor_malloc_zero(sizeof(*commit));
commit->alg = SR_DIGEST_ALG; commit->alg = SR_DIGEST_ALG;
memcpy(commit->rsa_identity, rsa_identity, sizeof(commit->rsa_identity)); memcpy(commit->rsa_identity, rsa_identity, sizeof(commit->rsa_identity));
base16_encode(commit->rsa_identity_hex, sizeof(commit->rsa_identity_hex),
commit->rsa_identity, sizeof(commit->rsa_identity));
return commit; return commit;
} }

View File

@ -76,8 +76,10 @@ typedef struct sr_commit_t {
/* Commit owner info */ /* Commit owner info */
/* The RSA identity key of the authority. */ /* The RSA identity key of the authority and it's base16 representation
* which includes the NUL terminated byte. */
char rsa_identity[DIGEST_LEN]; char rsa_identity[DIGEST_LEN];
char rsa_identity_hex[HEX_DIGEST_LEN + 1];
/* Commitment information */ /* Commitment information */
@ -121,8 +123,7 @@ void sr_srv_encode(char *dst, size_t dst_len, const sr_srv_t *srv);
static inline static inline
const char *sr_commit_get_rsa_fpr(const sr_commit_t *commit) const char *sr_commit_get_rsa_fpr(const sr_commit_t *commit)
{ {
return hex_str((const char *) commit->rsa_identity, return commit->rsa_identity_hex;
sizeof(commit->rsa_identity));
} }
void sr_compute_srv(void); void sr_compute_srv(void);

View File

@ -702,6 +702,9 @@ test_sr_setup_commits(void)
/* Do some surgery on the commit */ /* Do some surgery on the commit */
memset(commit_a->rsa_identity, 'A', sizeof(commit_a->rsa_identity)); memset(commit_a->rsa_identity, 'A', sizeof(commit_a->rsa_identity));
base16_encode(commit_a->rsa_identity_hex,
sizeof(commit_a->rsa_identity_hex), commit_a->rsa_identity,
sizeof(commit_a->rsa_identity));
strlcpy(commit_a->encoded_reveal, strlcpy(commit_a->encoded_reveal,
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
sizeof(commit_a->encoded_reveal)); sizeof(commit_a->encoded_reveal));
@ -716,6 +719,9 @@ test_sr_setup_commits(void)
/* Do some surgery on the commit */ /* Do some surgery on the commit */
memset(commit_b->rsa_identity, 'B', sizeof(commit_b->rsa_identity)); memset(commit_b->rsa_identity, 'B', sizeof(commit_b->rsa_identity));
base16_encode(commit_b->rsa_identity_hex,
sizeof(commit_b->rsa_identity_hex), commit_b->rsa_identity,
sizeof(commit_b->rsa_identity));
strlcpy(commit_b->encoded_reveal, strlcpy(commit_b->encoded_reveal,
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
sizeof(commit_b->encoded_reveal)); sizeof(commit_b->encoded_reveal));
@ -730,6 +736,9 @@ test_sr_setup_commits(void)
/* Do some surgery on the commit */ /* Do some surgery on the commit */
memset(commit_c->rsa_identity, 'C', sizeof(commit_c->rsa_identity)); memset(commit_c->rsa_identity, 'C', sizeof(commit_c->rsa_identity));
base16_encode(commit_c->rsa_identity_hex,
sizeof(commit_c->rsa_identity_hex), commit_c->rsa_identity,
sizeof(commit_c->rsa_identity));
strlcpy(commit_c->encoded_reveal, strlcpy(commit_c->encoded_reveal,
"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",
sizeof(commit_c->encoded_reveal)); sizeof(commit_c->encoded_reveal));
@ -744,6 +753,9 @@ test_sr_setup_commits(void)
/* Do some surgery on the commit */ /* Do some surgery on the commit */
memset(commit_d->rsa_identity, 'D', sizeof(commit_d->rsa_identity)); memset(commit_d->rsa_identity, 'D', sizeof(commit_d->rsa_identity));
base16_encode(commit_d->rsa_identity_hex,
sizeof(commit_d->rsa_identity_hex), commit_d->rsa_identity,
sizeof(commit_d->rsa_identity));
strlcpy(commit_d->encoded_reveal, strlcpy(commit_d->encoded_reveal,
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",
sizeof(commit_d->encoded_reveal)); sizeof(commit_d->encoded_reveal));