mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-01 08:03:31 +01:00
Helper functions to perform our truncated base64 encoding on hexdigests.
svn:r5087
This commit is contained in:
parent
312af36126
commit
f8a80e8d59
@ -1688,6 +1688,31 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
digest_to_base64(char *d64, const char *digest)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
base64_encode(buf, sizeof(buf), digest, DIGEST_LEN);
|
||||||
|
buf[BASE64_DIGEST_LEN] = '\0';
|
||||||
|
memcpy(d64, buf, BASE64_DIGEST_LEN+1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
digest_from_base64(char *digest, const char *d64)
|
||||||
|
{
|
||||||
|
char buf_in[BASE64_DIGEST_LEN+3];
|
||||||
|
char buf[256];
|
||||||
|
if (strlen(d64) != BASE64_DIGEST_LEN)
|
||||||
|
return -1;
|
||||||
|
memcpy(buf_in, d64, BASE64_DIGEST_LEN);
|
||||||
|
memcpy(buf_in+BASE64_DIGEST_LEN, "=\n\0", 3);
|
||||||
|
if (base64_decode(buf, sizeof(buf), buf_in, strlen(buf_in)) != DIGEST_LEN)
|
||||||
|
return -1;
|
||||||
|
memcpy(digest, buf, DIGEST_LEN);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Implements base32 encoding as in rfc3548. Limitation: Requires
|
/** Implements base32 encoding as in rfc3548. Limitation: Requires
|
||||||
* that srclen*8 is a multiple of 5.
|
* that srclen*8 is a multiple of 5.
|
||||||
*/
|
*/
|
||||||
|
@ -24,6 +24,9 @@
|
|||||||
/** Length of our DH keys. */
|
/** Length of our DH keys. */
|
||||||
#define DH_BYTES (1024/8)
|
#define DH_BYTES (1024/8)
|
||||||
|
|
||||||
|
/* DOCDOC */
|
||||||
|
#define BASE64_DIGEST_LEN 27
|
||||||
|
|
||||||
/** Constants used to indicate no padding for public-key encryption */
|
/** Constants used to indicate no padding for public-key encryption */
|
||||||
#define PK_NO_PADDING 60000
|
#define PK_NO_PADDING 60000
|
||||||
/** Constants used to indicate PKCS1 padding for public-key encryption */
|
/** Constants used to indicate PKCS1 padding for public-key encryption */
|
||||||
@ -155,6 +158,9 @@ int base64_decode(char *dest, size_t destlen, const char *src, size_t srclen);
|
|||||||
#define BASE32_CHARS "abcdefghijklmnopqrstuvwxyz234567"
|
#define BASE32_CHARS "abcdefghijklmnopqrstuvwxyz234567"
|
||||||
void base32_encode(char *dest, size_t destlen, const char *src, size_t srclen);
|
void base32_encode(char *dest, size_t destlen, const char *src, size_t srclen);
|
||||||
|
|
||||||
|
int digest_to_base64(char *d64, const char *digest);
|
||||||
|
int digest_from_base64(char *digest, const char *d64);
|
||||||
|
|
||||||
#define S2K_SPECIFIER_LEN 9
|
#define S2K_SPECIFIER_LEN 9
|
||||||
void secret_to_key(char *key_out, size_t key_out_len, const char *secret,
|
void secret_to_key(char *key_out, size_t key_out_len, const char *secret,
|
||||||
size_t secret_len, const char *s2k_specifier);
|
size_t secret_len, const char *s2k_specifier);
|
||||||
|
Loading…
Reference in New Issue
Block a user