Commit Graph

7 Commits

Author SHA1 Message Date
Lars Scheibling 5d43b022cb Change to v1 2024-01-12 09:32:51 +00:00
Lars Scheibling c1a0f72fa1 Updated path 2024-01-12 09:20:18 +00:00
Marco Trevisan (Treviño) 04ad7bdc73 module-transaction: Do not allow parallel conversations by default
Pam conversations per se may also run in parallel, but this implies that
the application supports this.

Since this normally not the case, do not create modules that may invoke
the pam conversations in parallel by default, adding a mutex to protect
such calls.
2023-12-14 22:07:50 +01:00
Marco Trevisan (Treviño) c1b7ee1623 tests: Add a module implementation with dynamic control from the app
In order to properly test the interaction of a module transaction from
the application point of view, we need to perform operation in the
module and ensure that the expected values are returned and handled

In order to do this, without using the PAM apis that we want to test,
use a simple trick:
 - Create an application that works as server using an unix socket
 - Create a module that connects to it
 - Pass the socket to the module via the module service file arguments
 - Add some basic protocol that allows the application to send a request
   and to the module to reply to that.
 - Use reflection and serialization to automatically call module methods
   and return the values to the application where we do the check
2023-12-14 22:07:50 +01:00
Marco Trevisan (Treviño) 6f3af6e9b2 moduler: Move module transaction invoke handling to transaction itself
So we can reduce the generated code and add more unit tests
2023-12-14 22:07:50 +01:00
Marco Trevisan (Treviño) 05f676c233 transaction, moduler: Do not export PAM conv handler function to modules
This function is only needed when using go PAM for creating applications
so it's not something we expect to have exported to library modules.

To prevent this use an `asPamModule` tag to prevent compilation of
application-only features.
2023-12-14 22:07:50 +01:00
Marco Trevisan (Treviño) a8c4a14150 pam-moduler: Add first implementation of a Go PAM Module generator
A PAM module can be generated using pam-moduler and implemented fully in
go without having to manually deal with the C setup.

Module can be compiled using go generate, so go:generate directives can be
used to make this process automatic, with a single go generate call as shown
in the example.
2023-12-14 22:07:48 +01:00