21static const uint8_t *
_salt = NULL;
31 NONE, CBC, ECB, CFB, OFB
35 char *fpart = strchr(algoname,
'-');
36 char *lpart = strrchr(algoname,
'-');
59 return GNUTLS_CIPHER_AES_128_CBC;
61 return GNUTLS_CIPHER_AES_256_CBC;
63 return GNUTLS_CIPHER_AES_192_CBC;
65 return GNUTLS_CIPHER_ARCFOUR_128;
67 return GNUTLS_CIPHER_DES_CBC;
69 return GNUTLS_CIPHER_3DES_CBC;
71 return GNUTLS_CIPHER_RC2_40_CBC;
73 return GNUTLS_CIPHER_IDEA_PGP_CFB;
75 return GNUTLS_CIPHER_TWOFISH_PGP_CFB;
77 return GNUTLS_CIPHER_BLOWFISH_PGP_CFB;
80 return GNUTLS_CIPHER_CAST5_PGP_CFB;
85 if(atoi(fpart) == 128)
86 return GNUTLS_CIPHER_AES128_PGP_CFB;
87 if(atoi(fpart) == 192)
88 return GNUTLS_CIPHER_AES192_PGP_CFB;
89 if(atoi(fpart) == 256)
90 return GNUTLS_CIPHER_AES256_PGP_CFB;
95 return GNUTLS_CIPHER_IDEA_PGP_CFB;
97 return GNUTLS_CIPHER_3DES_PGP_CFB;
99 return GNUTLS_CIPHER_CAST5_PGP_CFB;
101 return GNUTLS_CIPHER_TWOFISH_PGP_CFB;
102 if(
eq_case(algoname,
"blowfish"))
103 return GNUTLS_CIPHER_BLOWFISH_PGP_CFB;
105 return GNUTLS_CIPHER_SAFER_SK128_PGP_CFB;
109 if(atoi(fpart) == 128)
110 return GNUTLS_CIPHER_AES_128_CBC;
111 if(atoi(fpart) == 192)
112 return GNUTLS_CIPHER_AES_192_CBC;
113 if(atoi(fpart) == 256)
114 return GNUTLS_CIPHER_AES_256_CBC;
117 if(
eq_case(algoname,
"camellia")) {
118 if(atoi(fpart) == 128)
119 return GNUTLS_CIPHER_CAMELLIA_128_CBC;
120 if(atoi(fpart) == 256)
121 return GNUTLS_CIPHER_CAMELLIA_256_CBC;
125 return GNUTLS_CIPHER_3DES_CBC;
127 return GNUTLS_CIPHER_DES_CBC;
129 return GNUTLS_CIPHER_RC2_40_CBC;
133 if(atoi(fpart) == 40)
134 return GNUTLS_CIPHER_ARCFOUR_40;
135 if(atoi(fpart) == 128)
136 return GNUTLS_CIPHER_ARCFOUR_128;
149 size_t kpos = 0, ivpos = 0;
151 size_t tlen = strlen(text);
175 gnutls_hash(mdc, previous, mdlen);
177 gnutls_hash(mdc, text, tlen);
180 gnutls_hash(mdc, salt, 8);
182 gnutls_hash_deinit(mdc, previous);
184 for(loop = 1; loop < count; ++loop) {
185 memcpy(
temp, previous, mdlen);
222 blksize = gnutls_cipher_get_block_size((
CIPHER_ID)algoid);
223 keysize = gnutls_cipher_get_key_size((
CIPHER_ID)algoid);
257 gnutls_datum_t keyinfo, ivinfo;
275 count +=
put(data, diff);
315 ep = data +
size - 1;
323 memcpy(padbuf, data +
size - padsz, padsz);
Cipher key formed by hash algorithm.
void assign(const char *key, size_t size, const uint8_t *salt, unsigned rounds)
void set(const char *cipher)
size_t iosize(void) const
static void options(const uint8_t *salt=NULL, unsigned rounds=1)
static bool has(const char *name)
Check if a specific cipher is supported.
size_t flush(void)
Push a final cipher block.
size_t pad(const uint8_t *address, size_t size)
This is used to process any data unaligned to the blocksize at the end of a cipher session.
void set(uint8_t *address, size_t size=0)
virtual void push(uint8_t *address, size_t size)
size_t put(const uint8_t *data, size_t size)
Process cipher data.
void set(const char *text)
Set string object to text of a null terminated string.
static int map_cipher(const char *type)
static int map_digest(const char *type)
static const uint8_t * _salt
static void digest(const char *path=NULL)
Common namespace for all ucommon objects.
gnutls_digest_algorithm_t MD_ID
gnutls_cipher_algorithm_t CIPHER_ID
bool eq_case(char const *s1, char const *s2)
Compare two null terminated strings if equal ignoring case.
gnutls_cipher_hd_t CIPHER_CTX
#define MAX_DIGEST_HASHSIZE
static void zerofill(void)