Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 5906)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 5907)
@@ -37,5 +37,5 @@
 from waeup.sirp.applicants.interfaces import (
     IApplicantPrincipalInfo, IApplicantPrincipal, IApplicantSessionCredentials,
-    IJAMBApplicantSessionCredentials)
+    )
 from waeup.sirp.applicants import get_applicant_data
 from waeup.sirp.interfaces import IAuthPluginUtility
@@ -135,12 +135,4 @@
         return None
     
-class JAMBApplicantCredentials(ApplicantCredentials):
-    """Credentials class for JAMB-screened applicants.
-    """
-    grok.implements(IJAMBApplicantSessionCredentials)
-
-    def __init__(self, access_code):
-        self.access_code = access_code
-
 class WAeUPApplicantCredentialsPlugin(grok.GlobalUtility,
                                       SessionCredentialsPlugin):
@@ -189,7 +181,4 @@
             # its structure.
             return None
-
-        # Entered credentials are ordinary applicant credentials,
-        # not JAMB-screened applicant credentials
         return {'accesscode': credentials.getAccessCode()}
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 5906)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 5907)
@@ -710,17 +710,4 @@
         )
 
-class IJAMBApplicantsFormChallenger(IApplicantsFormChallenger):
-    """A challenger that uses a browser form to collect applicant
-       credentials for applicants in JAMB process.
-
-       JAMB-screened applicants have to provide an extra registration
-       no. provided by JAMB.
-    """
-    jamb_reg_no_field = schema.TextLine(
-        title = u'JAMB registration no.',
-        description = u'''Field of the login page which is looked up for
-                          the JAMB registration number.''',
-        default = u'jamb_reg_no',
-        )
 
 class IApplicantSessionCredentials(Interface):
@@ -735,15 +722,4 @@
         """Return the access code."""
 
-
-class IJAMBApplicantSessionCredentials(IApplicantSessionCredentials):
-    """Interface for storing and accessing JAMB applicant credentials in a
-       session.
-    """
-
-    def __init__(access_code, jamb_reg_no):
-        """Create credentials for JAMB screened applicants."""
-
-    def getJAMBRegNo():
-        """Return the JAMB registration no."""
 
 class IApplicantsContainerProvider(Interface):
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/authentication.py	(revision 5907)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/authentication.py	(revision 5907)
@@ -0,0 +1,37 @@
+##
+## authentication.py
+## Login : <uli@pu.smp.net>
+## Started on  Fri Apr  1 00:51:48 2011 Uli Fouquet
+## $Id$
+## 
+## Copyright (C) 2011 Uli Fouquet
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+## 
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+## 
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""
+Authentication components for JAMB-based applicants.
+"""
+import grok
+from waeup.sirp.applicants.authentication import ApplicantCredentials
+from waeup.sirp.applicants.jambtables.interfaces import (
+    IJAMBApplicantSessionCredentials,
+    )
+
+class JAMBApplicantCredentials(ApplicantCredentials):
+    """Credentials class for JAMB-screened applicants.
+    """
+    grok.implements(IJAMBApplicantSessionCredentials)
+
+    def __init__(self, access_code):
+        self.access_code = access_code
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/interfaces.py	(revision 5906)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/jambtables/interfaces.py	(revision 5907)
@@ -24,5 +24,8 @@
 from zope import schema
 from waeup.sirp.interfaces import IWAeUPObject
-from waeup.sirp.applicants.interfaces import IApplicantBaseData
+from waeup.sirp.applicants.interfaces import (
+    IApplicantBaseData, IApplicantsFormChallenger,
+    IApplicantSessionCredentials,
+    )
 
 
@@ -86,2 +89,27 @@
         required = True,
         )
+
+class IJAMBApplicantsFormChallenger(IApplicantsFormChallenger):
+    """A challenger that uses a browser form to collect applicant
+       credentials for applicants in JAMB process.
+
+       JAMB-screened applicants have to provide an extra registration
+       no. provided by JAMB.
+    """
+    jamb_reg_no_field = schema.TextLine(
+        title = u'JAMB registration no.',
+        description = u'''Field of the login page which is looked up for
+                          the JAMB registration number.''',
+        default = u'jamb_reg_no',
+        )
+
+class IJAMBApplicantSessionCredentials(IApplicantSessionCredentials):
+    """Interface for storing and accessing JAMB applicant credentials in a
+       session.
+    """
+
+    def __init__(access_code, jamb_reg_no):
+        """Create credentials for JAMB screened applicants."""
+
+    def getJAMBRegNo():
+        """Return the JAMB registration no."""
