---
name: "openpam"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd", "macos"]
url: "https://new.carta.tech/openpam"
---

# openpam(3)

Pluggable Authentication Modules Library

## NAME

**openpam\_borrow\_cred**, **openpam\_free\_data**, **openpam\_free\_envlist**, **openpam\_get\_feature**, **openpam\_get\_option**, **openpam\_log**, **openpam\_nullconv**, **openpam\_readline**, **openpam\_readlinev**, **openpam\_readword**, **openpam\_restore\_cred**, **openpam\_set\_feature**, **openpam\_set\_option**, **openpam\_straddch**, **openpam\_subst**, **openpam\_ttyconv**, **pam\_error**, **pam\_get\_authtok**, **pam\_info**, **pam\_prompt**, **pam\_setenv**, **pam\_verror**, **pam\_vinfo**, **pam\_vprompt** – Pluggable Authentication Modules Library

## LIBRARY

library “libpam”

## SYNOPSIS

**#include \<security/openpam.h\>**

*int*\

**openpam\_borrow\_cred**(*pam\_handle\_t \*pamh*, *const struct passwd \*pwd*);

*void*\

**openpam\_free\_data**(*pam\_handle\_t \*pamh*, *void \*data*, *int status*);

*void*\

**openpam\_free\_envlist**(*char \*\*envlist*);

*int*\

**openpam\_get\_feature**(*int feature*, *int \*onoff*);

*const char \**\

**openpam\_get\_option**(*pam\_handle\_t \*pamh*, *const char \*option*);

*void*\

**openpam\_log**(*int level*, *const char \*fmt*, *...*);

*int*\

**openpam\_nullconv**(*int n*, *const struct pam\_message \*\*msg*, *struct pam\_response \*\*resp*, *void \*data*);

*char \**\

**openpam\_readline**(*FILE \*f*, *int \*lineno*, *size\_t \*lenp*);

*char \*\**\

**openpam\_readlinev**(*FILE \*f*, *int \*lineno*, *int \*lenp*);

*char \**\

**openpam\_readword**(*FILE \*f*, *int \*lineno*, *size\_t \*lenp*);

*int*\

**openpam\_restore\_cred**(*pam\_handle\_t \*pamh*);

*int*\

**openpam\_set\_feature**(*int feature*, *int onoff*);

*int*\

**openpam\_set\_option**(*pam\_handle\_t \*pamh*, *const char \*option*, *const char \*value*);

*int*\

**openpam\_straddch**(*char \*\*str*, *size\_t \*size*, *size\_t \*len*, *int ch*);

*int*\

**openpam\_subst**(*const pam\_handle\_t \*pamh*, *char \*buf*, *size\_t \*bufsize*, *const char \*template*);

*int*\

**openpam\_ttyconv**(*int n*, *const struct pam\_message \*\*msg*, *struct pam\_response \*\*resp*, *void \*data*);

*int*\

**pam\_error**(*const pam\_handle\_t \*pamh*, *const char \*fmt*, *...*);

*int*\

**pam\_get\_authtok**(*pam\_handle\_t \*pamh*, *int item*, *const char \*\*authtok*, *const char \*prompt*);

*int*\

**pam\_info**(*const pam\_handle\_t \*pamh*, *const char \*fmt*, *...*);

*int*\

**pam\_prompt**(*const pam\_handle\_t \*pamh*, *int style*, *char \*\*resp*, *const char \*fmt*, *...*);

*int*\

**pam\_setenv**(*pam\_handle\_t \*pamh*, *const char \*name*, *const char \*value*, *int overwrite*);

*int*\

**pam\_verror**(*const pam\_handle\_t \*pamh*, *const char \*fmt*, *va\_list ap*);

*int*\

**pam\_vinfo**(*const pam\_handle\_t \*pamh*, *const char \*fmt*, *va\_list ap*);

*int*\

**pam\_vprompt**(*const pam\_handle\_t \*pamh*, *int style*, *char \*\*resp*, *const char \*fmt*, *va\_list ap*);

## DESCRIPTION

These functions are OpenPAM extensions to the PAM API. Those named **pam\_\***() are, in the author's opinion, logical and necessary extensions to the standard API, while those named **openpam\_\***() are either simple convenience functions, or functions intimately tied to OpenPAM implementation details, and therefore not well suited to standardization.

## SEE ALSO

[openpam\_borrow\_cred(3)](/openpam_borrow_cred/3.md), [openpam\_free\_data(3)](/openpam_free_data/3.md), [openpam\_free\_envlist(3)](/openpam_free_envlist/3.md), [openpam\_get\_feature(3)](/openpam_get_feature/3.md), [openpam\_get\_option(3)](/openpam_get_option/3.md), [openpam\_log(3)](/openpam_log/3.md), [openpam\_nullconv(3)](/openpam_nullconv/3.md), [openpam\_readline(3)](/openpam_readline/3.md), [openpam\_readlinev(3)](/openpam_readlinev/3.md), [openpam\_readword(3)](/openpam_readword/3.md), [openpam\_restore\_cred(3)](/openpam_restore_cred/3.md), [openpam\_set\_feature(3)](/openpam_set_feature/3.md), [openpam\_set\_option(3)](/openpam_set_option/3.md), [openpam\_straddch(3)](/openpam_straddch/3.md), [openpam\_subst(3)](/openpam_subst/3.md), [openpam\_ttyconv(3)](/openpam_ttyconv/3.md), [pam\_error(3)](/pam_error/3.md), [pam\_get\_authtok(3)](/pam_get_authtok/3.md), [pam\_info(3)](/pam_info/3.md), [pam\_prompt(3)](/pam_prompt/3.md), [pam\_setenv(3)](/pam_setenv/3.md), [pam\_verror(3)](/pam_verror/3.md), [pam\_vinfo(3)](/pam_vinfo/3.md), [pam\_vprompt(3)](/pam_vprompt/3.md)

## STANDARDS

*X/Open Single Sign-On Service (XSSO) - Pluggable Authentication Modules*, June 1997.

## AUTHORS

The OpenPAM library and this manual page were developed for the FreeBSD Project by ThinkSec AS and Network Associates Laboratories, the Security Research Division of Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 (“CBOSS”), as part of the DARPA CHATS research program.

The OpenPAM library is maintained by Dag-Erling Smørgrav ⟨*des@des.dev*⟩.
