summaryrefslogtreecommitdiff
path: root/perl/Wallet/Object/Keytab.pm
AgeCommit message (Collapse)Author
2013-01-30Moved the Perl wallet modules and tests to DBIx::ClassJon Robertson
Moved all the Perl code to use DBIx::Class for the database interface. This includes updating all database calls, how the schema is generated and maintained, and the tests in places where some output has changed. We also remove the schema.t test, as the tests for it are more covered in the admin.t tests now. Change-Id: Ie5083432d09a0d9fe364a61c31378b77aa7b3cb7 Reviewed-on: https://gerrit.stanford.edu/598 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2012-08-30Fix POD stopwords and formattingRuss Allbery
Fix a formatting error in Wallet::ACL::LDAP::Attribute and add new stopwords required by the latest aspell.
2010-03-03Use L<> links instead of man page references for modulesRuss Allbery
Do this only in the main text, not in the SEE ALSO section, since the latter is more for conventional man pages. This will produce better results for some POD to HTML converters (although not mine, yet).
2010-02-18Refactor Wallet::Kadmin keytab_rekey to return keytabRuss Allbery
Change the API for keytab_rekey to match keytab, returning the keytab as data instead of writing it to a file. This simplifies the wallet object implementation and moves the logic for reading the temporary file into Wallet::Kadmin and its child classes. (Eventually, there may be a kadmin backend that doesn't require using a temporary file.) Setting KEYTAB_TMP is now required to instantiate either the ::MIT or ::Heimdal Wallet::Kadmin classes.
2010-02-18Support unchanging keytabs with Heimdal without remctlRuss Allbery
Heimdal supports retrieving a keytab containing the existing keys over the kadmin protocol. Move the support for using remctl to retrieve an existing keytab into Wallet::Kadmin::MIT and provide two separate methods in the Wallet::Kadmin interface: one which rekeys and one which doesn't. Implement the non-rekeying interface for Heimdal. Expand the test suite for the unchanging keytabs to include tests for the Heimdal method.
2010-02-18Refactor sync handling in Wallet::Object::KeytabRuss Allbery
Pull the sync code out into separate methods to avoid a really long and awkward attr method. Document the limited object support for the sync attribute.
2010-02-18Rename functions in Wallet::Kadmin APIRuss Allbery
Now that we support multiple versions of Kerberos, use generic names for the functions in the Wallet::Kadmin interface rather than the commands from the MIT kadmin interface.
2010-02-09Check spelling of server API POD and tweak server docsRuss Allbery
Also update the POD syntax check to the current version of that check I use elsewhere. Since I'm touching all the POD anyway, also rewrap all of the POD to 74 columns. Fix some references to MIT in the Wallet::Kadmin::Heimdal module documentation.
2010-02-09Remove kaserver synchronization support from the wallet backendRuss Allbery
Remove kaserver synchronization support. It is no longer tested, and retaining the code was increasing the complexity of wallet, and some specific requirements (such as different realm names between kaserver and Kerberos v5 and the kvno handling) were Stanford-specific. Rather than using this support, AFS sites running kaserver will probably find deploying Heimdal with its internal kaserver compatibility is probably an easier transition approach.
2010-02-08Coding style and whitespace fixesRuss Allbery
Combine a long series of eval blocks into a single block and a single error check. Remove trailing whitespace, and in some cases remove trailing () on method calls where the parens aren't useful.
2010-01-26Added way to clean things during a fork for kadminJon Robertson
The MIT kadmin module currently directly runs the MIT kadmin program. Some data needs to be cleaned during the forks for this. This provides a callback that can be registered and is called during the fork process, currently just to mark database handles inactive. It was added to both the MIT and Heimdal modules, though it's only a stub in the Heimdal module. Heimdal is not forking kadmin, but the stub is there in order to allow the caller to not care which module is being used and just always register the callbacks.
2010-01-26Improved error handling for Kadmin sub-modulesJon Robertson
Improved error handling by adding an error function to the Kadmin sub-modules which will copy errors down to the Wallet::Object::Keytab error function rather than relying on too many dies and evals. There still needs to be more cleanup here, but that will rely on work on Heimdal::Kadm5 as well, to clean up its own error handling to not spam warnings when called without RaiseError. Also caught a few more un-evaled error cases where Heimdal::Kadm5 was called, and fixed an error where RaiseErrors was being set rather than RaiseError due to an error in Heimdal::Kadm5 docs.
2010-01-21Removed valid_principal as a Kadmin API functionJon Robertson
valid_principal has been removed from Wallet::Kadmin and Wallet::Kadmin::Heimdal. An accessor for it in Wallet::Object::Keytab has also been removed, as have the tests in perl/t/keytab.t for the function. It still remains within Wallet::Kadmin::MIT and is used there, but only as a private method for flagging what the kadmin command-line interface cannot handle.
2010-01-19Coding style fixes for Perl wallet codeRuss Allbery
Strip trailing whitespace, convert tabs to spaces, add newlines to exceptions, and remove a few stray blank lines and a few other minor coding style oddities. Make the SQL style consistent.
2009-12-16Provided path to call valid_principal directlyJon Robertson
valid_principal used to reside in Wallet::Object::Keytab, but was moved to the individual Wallet::Kadmin::* modules. This isn't necessary currently and may not ever be, but it's there just in case we do ever need to differentiate. To simplify testing, a way to still call it directly from Wallet::Object::Keytab has been added.
2009-12-10Added support for Heimdal KDCJon Robertson
Added support for Heimdal as an alternative to MIT Kerberos. This involved separating out the kadmin-specific code into its own set of modules, and changing the existing Wallet::Object::Keytab code to branch based on which module is loaded.
2009-06-09Remove Subversion Id stringsRuss Allbery
2008-02-20Report the correct error message when addprinc fails while creating aRuss Allbery
keytab object.
2008-02-09Minor documentation fixes.Russ Allbery
2008-02-08No unnecessary ; after __END__.Russ Allbery
2008-02-07The current version of Net::Remctl can't handle explicit undef or theRuss Allbery
empty string as a principal argument. Be careful not to provide a principal argument if no principal was set. This workaround can be removed once we depend on a later version of Net::Remctl.
2007-12-07Get rid of more return undefs.Russ Allbery
2007-12-07Bump version numbers appropriately.Russ Allbery
2007-12-06Fix the keytab principal validation regex to allow instancesRuss Allbery
containing periods. Otherwise, it's hard to manage host keytabs. Add a missing test suite for that method.
2007-12-05Various coding style fixes and cleanup based on a much-appreciatedRuss Allbery
code audit by Simon Cozens. I didn't take all of his advise, and he shouldn't be blamed for any remaining issues.
2007-12-05Coding style improvements.Russ Allbery
2007-12-01Set InactiveDestroy to the right thing. Doh.Russ Allbery
2007-12-01Make sure we always have a valid object and access to our databaseRuss Allbery
handle when calling kadmin so that we can do our database handle mangling.
2007-12-01Don't use die when forking kasetkey fails and similarly don't close theRuss Allbery
database connection on a failed fork.
2007-12-01Don't close our open database handles after a failed fork.Russ Allbery
2007-11-30Initial work on supporting testing with MySQL.Russ Allbery
Add a drop() method to Wallet::Schema to destroy the wallet database. Add a test suite for it. Add a reinitialize() method to Wallet;:Server that drops the database before creating it. Modify the wallet object test cases to call reinitialize() to create the initial database and drop() to clean up the database after the test is complete. Fix a bug preventing Wallet::Schema from being initialized multiple times. We now stash the schema in a class static variable and reuse it for subsequent initializations, since re-reading DATA doesn't work.
2007-10-10Make enctype changes in sorted order so that the history trace is reliableRuss Allbery
and can be tested.
2007-10-09Bump version number for the keytab changes.Russ Allbery
2007-10-09Add NEWS entry for enctypes. Clarify in the documentation the behaviorRuss Allbery
of the enctypes attribute when the unchanging flag is set.
2007-10-09Add user documentation for the enctypes attribute on keytabs. MentionRuss Allbery
that the enctype must be in the database in the keytab object API documentation. The README and NEWS files are now done.
2007-10-09We have to check the validity of enctypes ourselves since SQLite doesn'tRuss Allbery
enforce referential integrity.
2007-10-09Initial implementation of enctype restriction with a basic test suite.Russ Allbery
Still needs a more comprehensive test suite. Remove all attributes for a keytab object when it is destroyed so that when the object is recreated, it doesn't inherit attributes from its previous self. Add a test case for that for the sync attribute.
2007-10-05Add comprehensive license information in LICENSE and update the copyrightRuss Allbery
and license statements in all files. Make sure that some files that were missing copyright information now have them. Reference LICENSE rather than README in all notices.
2007-10-04Fix error handling if we cannot dup stdout.Russ Allbery
2007-09-26Include the synchronization configuration in show() output. Provide aRuss Allbery
new object method that subclasses can override to add attribute information to show() and remove the documentation about overriding show().
2007-09-26Add tests for the Kerberos v5 to Kerberos v4 name mapping and do moreRuss Allbery
tests of the machinery around kaserver synchronization even if we don't have a full configuration.
2007-09-26Add support for deleting principals out of the AFS kaserver (optionally)Russ Allbery
if synchronization is not set.
2007-09-25If synchronization is enabled, destroy the principal out of K4 when theRuss Allbery
keytab object is destroyed.
2007-09-25Add support for synchronizing a key with an AFS kaserver in the keytabRuss Allbery
object implementation, extracting the DES key with Authen::Krb5 (since ktutil doesn't work). Rename the KEYTAB_CACHE variable to KEYTAB_REMCTL_CACHE to match the rest of the keytab retrieval configuration and reorganize the Wallet::Config documentation to group related configuration options for the keytab backend. Fix a column name in the keytab_enctypes table to be more consistent with the rest of the schema.
2007-09-19Implement unchanging support in the keytab object backend, which retrievesRuss Allbery
keytabs via remctl from the KDC.
2007-09-19Allow creation of a keytab object for a principal that already exists.Russ Allbery
Catch more errors when checking the existence of a principal. Add a test for creating a principal for which we don't have permissions.
2007-09-19Drop the leading underscore for internal methods. I haven't been usingRuss Allbery
that convention elsewhere.
2007-09-18Implement the locked flag.Russ Allbery
2007-08-31Use a better method of setting the internal error that automaticallyRuss Allbery
adjusts for trailing newlines and exception detritus, saving duplicate code. Standardize the documentation of the error() method and document using this in child classes of the generic ACL and Object classes. Disable printing of errors during connect in Wallet::Server since we're going to throw our own exception.
2007-08-31Be considerably more robust in the face of configuration errors. CheckRuss Allbery
our configuration and die if it isn't correct. Catch all the exceptions thrown by the _kadmin method and do something with them. Print a warning and then rethrow the exception in the parent when running a non-existent kadmin binary rather than throwing an exception in the child, which doesn't close things down cleanly. Be robust against an undefined KEYTAB_FLAGS setting. Ensure KEYTAB_TMP is set. Also some minor doc improvements.