mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 17:11:15 +02:00
9d4649ca49
Backpatch-through: certain files through 9.3
47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* crypt.h
|
|
* Interface to libpq/crypt.c
|
|
*
|
|
* Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/libpq/crypt.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PG_CRYPT_H
|
|
#define PG_CRYPT_H
|
|
|
|
#include "datatype/timestamp.h"
|
|
|
|
/*
|
|
* Types of password hashes or verifiers.
|
|
*
|
|
* Plaintext passwords can be passed in by the user, in a CREATE/ALTER USER
|
|
* command. They will be encrypted to MD5 or SCRAM-SHA-256 format, before
|
|
* storing on-disk, so only MD5 and SCRAM-SHA-256 passwords should appear
|
|
* in pg_authid.rolpassword. They are also the allowed values for the
|
|
* password_encryption GUC.
|
|
*/
|
|
typedef enum PasswordType
|
|
{
|
|
PASSWORD_TYPE_PLAINTEXT = 0,
|
|
PASSWORD_TYPE_MD5,
|
|
PASSWORD_TYPE_SCRAM_SHA_256
|
|
} PasswordType;
|
|
|
|
extern PasswordType get_password_type(const char *shadow_pass);
|
|
extern char *encrypt_password(PasswordType target_type, const char *role,
|
|
const char *password);
|
|
|
|
extern char *get_role_password(const char *role, char **logdetail);
|
|
|
|
extern int md5_crypt_verify(const char *role, const char *shadow_pass,
|
|
const char *client_pass, const char *md5_salt,
|
|
int md5_salt_len, char **logdetail);
|
|
extern int plain_crypt_verify(const char *role, const char *shadow_pass,
|
|
const char *client_pass, char **logdetail);
|
|
|
|
#endif
|