/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/askpass-fifo.xml

  • Committer: Teddy Hogeborn
  • Date: 2021-03-21 20:46:40 UTC
  • Revision ID: teddy@recompile.se-20210321204640-lpsyen8jr9lw1jma
Some cleanup of GnuTLS interface

Rename opaque internal GnuTLS structures named *_int to also start
with underscore (_), as is the custom in Python programs.

Decode byte strings from UTF-8 where needed.  (Fixing, among other
things, all "DEBUG: GnuTLS" lines having a "b'" prefix in Python 3.)

Simplify calling C functions by:
1. Using the "_as_parameter_" attribute to store the ctypes object.
2. Creating and using helper classes to automatically create pointers
   or cast typed pointers to pointers to void.
3. Providing the "from_param()" method on relevant classes.

Remove "restype" attribute on C functions where "errcheck" attribute
is already set.

* mandos (gnutls.session_int): Rename to start with "_".
  (gnutls.openpgp_crt_int): - '' -
  (gnutls.Error.__init__): Decode byte string from gnutls.strerror().
  (gnutls.PointerTo): New helper class.
  (gnutls.CastToVoidPointer): - '' -
  (gnutls.With_from_param): - '' -
  (gnutls.Credentials): Inherit from "With_from_param" and store the
  ctypes object in the "_as_parameter_" attribute instead of
  "_c_object".
  (gnutls._error_code): Use "gnutls.E_SUCCESS" instead of the unadorned
  numerical constant "0".
  (gnutls._retry_on_error): - '' -
  (gnutls.priority_set_direct.argtypes): Use "ClientSession" instead
  of "session_t", and change all callers to match.
  (gnutls.init.argtypes): Use "PointerTo(ClientSession)" instead of
  "ctypes.POINTER(session_t)", and change all callers to match.
  (gnutls.set_default_priority.argtypes): Use "ClientSession" instead
  of "session_t", and change all callers to match.
  (gnutls.record_send.argtypes): - '' -
  (gnutls.certificate_allocate_credentials.argtypes): Use
  "PointerTo(Credentials)" instead of
  "ctypes.POINTER(certificate_credentials_t)", and change all callers
  to match.
  (gnutls.certificate_free_credentials.argtypes): Use "Credentials"
  instead of "certificate_credentials_t", and change all callers to
  match.
  (gnutls.handshake_set_private_extensions.argtypes): Use
  "ClientSession" instead of "session_t", and change all callers to
  match.
  (gnutls.credentials_set.argtypes): Use
  "CastToVoidPointer(Credentials)" instead of "ctypes.c_void_p", and
  change all callers to match.
  (gnutls.certificate_type_get.argtypes): Use "ClientSession" instead
  of "session_t", and change all callers to match.
  (gnutls.certificate_get_peers.argtypes): - '' -
  (gnutls.deinit.argtypes): - '' -
  (gnutls.handshake.argtypes): - '' -
  (gnutls.handshake.restype): Change from "_error_code" to
  "ctypes.c_int".
  (gnutls.transport_set_ptr.argtypes): Use "ClientSession" instead of
  "session_t", and change all callers to match.
  (gnutls.bye.argtypes): - '' -
  (gnutls.bye.restype): Change from "_error_code" to "ctypes.c_int".
  (gnutls.certificate_type_get2.argtypes): Use "ClientSession" instead
  of "session_t", and change all callers to match.
  (ClientHandler.handle): Decode "key_id" bytes to string before
  logging it in the debug log.
  (main.debug_gnutls): Decode GnuTLS log message from bytes to string
  before logging it in the debug log.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 
3
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 
4
<!ENTITY COMMANDNAME "askpass-fifo">
 
5
<!ENTITY TIMESTAMP "2019-02-10">
 
6
<!ENTITY % common SYSTEM "../common.ent">
 
7
%common;
 
8
]>
 
9
 
 
10
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
 
11
  <refentryinfo>
 
12
    <title>Mandos Manual</title>
 
13
    <!-- NWalsh’s docbook scripts use this to generate the footer: -->
 
14
    <productname>Mandos</productname>
 
15
    <productnumber>&version;</productnumber>
 
16
    <date>&TIMESTAMP;</date>
 
17
    <authorgroup>
 
18
      <author>
 
19
        <firstname>Björn</firstname>
 
20
        <surname>Påhlsson</surname>
 
21
        <address>
 
22
          <email>belorn@recompile.se</email>
 
23
        </address>
 
24
      </author>
 
25
      <author>
 
26
        <firstname>Teddy</firstname>
 
27
        <surname>Hogeborn</surname>
 
28
        <address>
 
29
          <email>teddy@recompile.se</email>
 
30
        </address>
 
31
      </author>
 
32
    </authorgroup>
 
33
    <copyright>
 
34
      <year>2008</year>
 
35
      <year>2009</year>
 
36
      <year>2010</year>
 
37
      <year>2011</year>
 
38
      <year>2012</year>
 
39
      <year>2013</year>
 
40
      <year>2014</year>
 
41
      <year>2015</year>
 
42
      <year>2016</year>
 
43
      <year>2017</year>
 
44
      <year>2018</year>
 
45
      <year>2019</year>
 
46
      <holder>Teddy Hogeborn</holder>
 
47
      <holder>Björn Påhlsson</holder>
 
48
    </copyright>
 
49
  </refentryinfo>
 
50
  
 
51
  <refmeta>
 
52
    <refentrytitle>&COMMANDNAME;</refentrytitle>
 
53
    <manvolnum>8mandos</manvolnum>
 
54
  </refmeta>
 
55
  
 
56
  <refnamediv>
 
57
    <refname><command>&COMMANDNAME;</command></refname>
 
58
    <refpurpose>Mandos plugin to get a password from a
 
59
    FIFO.</refpurpose>
 
60
  </refnamediv>
 
61
  
 
62
  <refsynopsisdiv>
 
63
    <cmdsynopsis>
 
64
      <command>&COMMANDNAME;</command>
 
65
    </cmdsynopsis>
 
66
  </refsynopsisdiv>
 
67
  
 
68
  <refsect1 id="description">
 
69
    <title>DESCRIPTION</title>
 
70
    <para>
 
71
      This program reads a password from a <acronym>FIFO</acronym> and
 
72
      outputs it to standard output.
 
73
    </para>
 
74
    <para>
 
75
      This program is not very useful on its own.  This program is
 
76
      really meant to run as a plugin in the <application
 
77
      >Mandos</application> client-side system, where it is used as a
 
78
      fallback and alternative to retrieving passwords from a
 
79
      <application >Mandos</application> server.
 
80
    </para>
 
81
    <para>
 
82
      This program is meant to be imitate a feature of the
 
83
      <command>askpass</command> program, so that programs written to
 
84
      interface with it can keep working under the
 
85
      <application>Mandos</application> system.
 
86
    </para>
 
87
  </refsect1>
 
88
  
 
89
  <refsect1 id="options">
 
90
    <title>OPTIONS</title>
 
91
    <para>
 
92
      This program takes no options.
 
93
    </para>
 
94
  </refsect1>
 
95
  
 
96
  <refsect1 id="exit_status">
 
97
    <title>EXIT STATUS</title>
 
98
    <para>
 
99
      If exit status is 0, the output from the program is the password
 
100
      as it was read.  Otherwise, if exit status is other than 0, the
 
101
      program was interrupted or encountered an error, and any output
 
102
      so far could be corrupt and/or truncated, and should therefore
 
103
      be ignored.
 
104
    </para>
 
105
  </refsect1>
 
106
  
 
107
  <refsect1 id="files">
 
108
    <title>FILES</title>
 
109
    <variablelist>
 
110
      <varlistentry>
 
111
        <term><filename>/lib/cryptsetup/passfifo</filename></term>
 
112
        <listitem>
 
113
          <para>
 
114
            This is the <acronym>FIFO</acronym> where this program
 
115
            will read the password.  If it does not exist, it will be
 
116
            created.
 
117
          </para>
 
118
        </listitem>
 
119
      </varlistentry>
 
120
    </variablelist>
 
121
  </refsect1>
 
122
  
 
123
  <refsect1 id="bugs">
 
124
    <title>BUGS</title>
 
125
    <xi:include href="../bugs.xml"/>
 
126
  </refsect1>
 
127
  
 
128
  <refsect1 id="example">
 
129
    <title>EXAMPLE</title>
 
130
    <para>
 
131
      Note that normally, this program will not be invoked directly,
 
132
      but instead started by the Mandos <citerefentry><refentrytitle
 
133
      >plugin-runner</refentrytitle><manvolnum>8mandos</manvolnum>
 
134
      </citerefentry>.
 
135
    </para>
 
136
    <informalexample>
 
137
      <para>
 
138
        This program takes no options.
 
139
      </para>
 
140
      <para>
 
141
        <userinput>&COMMANDNAME;</userinput>
 
142
      </para>
 
143
    </informalexample>
 
144
  </refsect1>
 
145
  
 
146
  <refsect1 id="security">
 
147
    <title>SECURITY</title>
 
148
    <para>
 
149
      The only thing that could be considered worthy of note is
 
150
      this:  This program is meant to be run by <citerefentry>
 
151
      <refentrytitle>plugin-runner</refentrytitle><manvolnum
 
152
      >8mandos</manvolnum></citerefentry>, and will, when run
 
153
      standalone, outside, in a normal environment, immediately output
 
154
      on its standard output any presumably secret password it just
 
155
      received.  Therefore, when running this program standalone
 
156
      (which should never normally be done), take care not to type in
 
157
      any real secret password by force of habit, since it would then
 
158
      immediately be shown as output.
 
159
    </para>
 
160
  </refsect1>
 
161
  
 
162
  <refsect1 id="see_also">
 
163
    <title>SEE ALSO</title>
 
164
    <para>
 
165
      <citerefentry><refentrytitle>intro</refentrytitle>
 
166
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
167
      <citerefentry><refentrytitle>fifo</refentrytitle>
 
168
      <manvolnum>7</manvolnum></citerefentry>,
 
169
      <citerefentry><refentrytitle>plugin-runner</refentrytitle>
 
170
      <manvolnum>8mandos</manvolnum></citerefentry>
 
171
    </para>
 
172
  </refsect1>
 
173
</refentry>
 
174
<!-- Local Variables: -->
 
175
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
 
176
<!-- time-stamp-end: "[\"']>" -->
 
177
<!-- time-stamp-format: "%:y-%02m-%02d" -->
 
178
<!-- End: -->