Changeset 7513


Ignore:
Timestamp:
24/09/10 13:55:36 (9 years ago)
Author:
pjkersha
Message:

Incomplete - task 12: ESG Yadis identity service discovery

  • Tidied up DnWhitelistX509TrustMgr - make sub-method for whitelist, fixed dn check - use explicit check based on X500OPrincipal.getName() as X500OPrincipal.equals gives canonical name and so may not render name equal to whitelist representation
  • Adding this code to esgf Git repo.
Location:
TI12-security/trunk/EsgYadisParser/src/esg/security
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/EsgYadisParser/src/esg/security/DnWhitelistX509TrustMgr.java

    r7506 r7513  
    296296                // If chain is OK following previous check, then execute whitelisting of  
    297297        // DN 
    298                 X500Principal peerCertDN = null; 
    299                  
    300                 if (certificateDnWhiteList == null) 
    301                         return; 
    302                  
    303                 for (X509Certificate cert : chain) 
    304                 { 
    305                         peerCertDN = cert.getSubjectX500Principal(); 
    306                          
    307                         for (Principal dn : certificateDnWhiteList) 
    308                                 if (peerCertDN.equals(dn)) 
    309                                         return; 
    310                 } 
    311                 throw new CertificateException("No match for peer certificate " +  
    312                                 peerCertDN + "against Certificate DN whitelist"); 
     298        checkPeerCertDN(chain); 
    313299    } 
    314300 
     
    328314                // If chain is OK following previous check, then execute whitelisting of  
    329315        // DN 
    330                 X500Principal peerCertDN = null; 
    331                  
     316                checkPeerCertDN(chain); 
     317        } 
     318 
     319    /** 
     320     * Check peer certificate DN against whitelist - use in checkServerTrusted 
     321     * and checkClientTrusted 
     322     *  
     323     * @param chain 
     324     * @param peerCertDN 
     325     * @throws CertificateException  
     326     */ 
     327        protected void checkPeerCertDN(X509Certificate[] chain)  
     328                throws CertificateException { 
    332329                if (certificateDnWhiteList == null || certificateDnWhiteList.isEmpty()) 
    333330                        return; 
    334331                 
    335                 for (X509Certificate cert : chain) 
    336                 { 
     332                X500Principal peerCertDN = null; 
     333                int basicConstraints = -1; 
     334                 
     335                for (X509Certificate cert : chain) { 
     336                        // Check for CA certificate first - ignore if this is the case 
     337                        basicConstraints = cert.getBasicConstraints(); 
     338                        if (basicConstraints > -1) 
     339                                continue; 
     340 
    337341                        peerCertDN = cert.getSubjectX500Principal(); 
    338342                         
    339                         for (Principal dn : certificateDnWhiteList) 
    340                                 if (peerCertDN.equals(dn)) 
     343                        // Nb. direct X500Principal type equality test may fail as it's  
     344                        // based on the canonical names of the two principals 
     345                        for (X500Principal dn : certificateDnWhiteList) 
     346                                if (peerCertDN.getName().equals(dn.getName())) 
    341347                                        return; 
    342348                } 
  • TI12-security/trunk/EsgYadisParser/src/esg/security/openid2emailresolution/OpenId2EmailAddrResolution.java

    r7506 r7513  
    277277                                        attributeServiceClientPropertiesFile); 
    278278                 
    279 //              URL yadisURL = new URL("https://ceda.ac.uk/openid/Philip.Kershaw"); 
    280279                URL yadisURL = new URL("https://localhost:7443/openid/philip.kershaw"); 
    281280 
  • TI12-security/trunk/EsgYadisParser/src/esg/security/yadis/YadisRetrieval.java

    r7462 r7513  
    154154        } 
    155155         
    156         public static void main(String[] args) throws IOException 
    157         { 
     156        public static void main(String[] args) throws IOException { 
    158157                // Input Whitelist DNs as a string array 
    159158                //      X500Principal [] whitelist = { 
Note: See TracChangeset for help on using the changeset viewer.