HEX
Server: Apache/2
System: Linux jingle.dotvndns.vn 2.6.32-754.17.1.el6.x86_64 #1 SMP Tue Jul 2 12:42:48 UTC 2019 x86_64
User: chuahuehuong (1863)
PHP: 7.3.16
Disabled: apache_note,apache_setenv,proc_get_status,exec,passthru,proc_nice,proc_terminate,shell_exec,system,ini_restore,syslog,define_syslog_variables,symlink,link,error_log,leak,dbmopen,closelog,stream_socket_server,execl,escapeshellcmd,ini_alter,dl,show_source,posix_getpwuid,posix_geteuid,posix_getegid,posix_getgrgid,open_basedir,safe_mode_include_dir,pcntl_exec,pcntl_fork,pclose,virtual,openlog,popen,escapeshellarg,eval,calo,posix_getpwuid,symlinks,symlink,getpwuid,mail
Upload Files
File: //usr/include/dovecot/pkcs5.h
#ifndef PKCS5_H
#define PKCS5_H 1

enum pkcs5_pbkdf_mode {
	PKCS5_PBKDF1,
	PKCS5_PBKDF2
};

/*

 mode         - v1.0 or v2.0
 hash         - hash_method_lookup return value
 password     - private password for generation
 password_len - length of password in octets
 salt         - salt for generation
 salt_len     - length of salt in octets
 iterations   - number of iterations to hash (use at least 1000, a very large number => very very slow)
 dk_len       - number of bytes to return from derived key
 result       - buffer_t to hold the result, either use dynamic or make sure it fits dk_len

 non-zero return value indicates that either iterations was less than 1 or dk_len was too large

 Sample code:

 buffer_t *result = t_buffer_create(256);
 if (pkcs5_pbkdf(PKCS5_PBKDF2, hash_method_lookup("sha256"), "password", 8, "salt", 4, 4096, 256, result) != 0) { // error }

*/

int pkcs5_pbkdf(enum pkcs5_pbkdf_mode mode, const struct hash_method *hash,
	const unsigned char *password, size_t password_len,
	const unsigned char *salt, size_t salt_len,
	unsigned int iterations, uint32_t dk_len,
	buffer_t *result);
#endif