@@ -311,6 +311,8 @@ SSLObservatory.prototype = {
311311 } ,
312312
313313 // onSecurity is used to listen for bad cert warnings
314+ // There is also onSecurityStateChange, but it does not handle subdocuments. See git
315+ // history for an implementation stub.
314316 onStateChange : function ( aProgress , aRequest , aState , aStatus ) {
315317 if ( ! aRequest ) return ;
316318 var chan = null ;
@@ -330,29 +332,6 @@ SSLObservatory.prototype = {
330332 }
331333 } ,
332334
333- // onSecurityStateChange is used to listen for bad cert warnings
334- // XXX: This is disabled. It does not handle subdocuments, but onStateChange does.
335- onSecurityChange : function ( aProgress , aRequest , aState ) {
336- if ( ! aRequest ) return ;
337- var chan = null ;
338- try {
339- chan = aRequest . QueryInterface ( Ci . nsIHttpChannel ) ;
340- } catch ( e ) {
341- return ;
342- }
343- if ( chan ) {
344- if ( ! this . observatoryActive ( chan ) ) return ;
345- this . log ( INFO , "Got security state change for "
346- + chan . originalURI . spec + "->" + chan . URI . spec + ", state: " + aState ) ;
347- var certchain = this . getSSLCertChain ( chan ) ;
348- if ( certchain ) {
349- this . log ( INFO , "Got cert chain for "
350- + chan . originalURI . spec + "->" + chan . URI . spec + ", state: " + aState ) ;
351- this . submitCertChainForChannel ( certchain , chan ) ;
352- }
353- }
354- } ,
355-
356335 observe : function ( subject , topic , data ) {
357336 if ( topic == "cookie-changed" && data == "cleared" ) {
358337 this . already_submitted = { } ;
@@ -390,46 +369,47 @@ SSLObservatory.prototype = {
390369 } ,
391370
392371 submitCertChainForChannel : function ( certchain , channel ) {
393- if ( certchain ) {
394- var host_ip = "-1" ;
395- var httpchannelinternal = channel . QueryInterface ( Ci . nsIHttpChannelInternal ) ;
396- try {
397- host_ip = httpchannelinternal . remoteAddress ;
398- } catch ( e ) {
399- this . log ( INFO , "Could not get server IP address." ) ;
400- }
372+ if ( ! certchain ) {
373+ return ;
374+ }
375+ var host_ip = "-1" ;
376+ var httpchannelinternal = channel . QueryInterface ( Ci . nsIHttpChannelInternal ) ;
377+ try {
378+ host_ip = httpchannelinternal . remoteAddress ;
379+ } catch ( e ) {
380+ this . log ( INFO , "Could not get server IP address." ) ;
381+ }
401382
402- channel . QueryInterface ( Ci . nsIHttpChannel ) ;
403- var chainEnum = certchain . getChain ( ) ;
404- var chainArray = [ ] ;
405- var chainArrayFpStr = '' ;
406- var fps = [ ] ;
407- for ( var i = 0 ; i < chainEnum . length ; i ++ ) {
408- var cert = chainEnum . queryElementAt ( i , Ci . nsIX509Cert ) ;
409- chainArray . push ( cert ) ;
410- var fp = this . ourFingerprint ( cert ) ;
411- fps . push ( fp ) ;
412- chainArrayFpStr = chainArrayFpStr + fp ;
413- }
414- var chain_hash = sha256_digest ( chainArrayFpStr ) . toUpperCase ( ) ;
415- this . log ( INFO , "SHA-256 hash of cert chain for " + new String ( channel . URI . host ) + " is " + chain_hash ) ;
383+ channel . QueryInterface ( Ci . nsIHttpChannel ) ;
384+ var chainEnum = certchain . getChain ( ) ;
385+ var chainArray = [ ] ;
386+ var chainArrayFpStr = '' ;
387+ var fps = [ ] ;
388+ for ( var i = 0 ; i < chainEnum . length ; i ++ ) {
389+ var cert = chainEnum . queryElementAt ( i , Ci . nsIX509Cert ) ;
390+ chainArray . push ( cert ) ;
391+ var fp = this . ourFingerprint ( cert ) ;
392+ fps . push ( fp ) ;
393+ chainArrayFpStr = chainArrayFpStr + fp ;
394+ }
395+ var chain_hash = sha256_digest ( chainArrayFpStr ) . toUpperCase ( ) ;
396+ this . log ( INFO , "SHA-256 hash of cert chain for " + new String ( channel . URI . host ) + " is " + chain_hash ) ;
416397
417- if ( ! this . myGetBoolPref ( "use_whitelist" ) ) {
418- this . log ( WARN , "Not using whitelist to filter cert chains." ) ;
419- }
420- else if ( this . isChainWhitelisted ( chain_hash ) ) {
421- this . log ( INFO , "This cert chain is whitelisted. Not submitting." ) ;
422- return ;
423- }
424- else {
425- this . log ( INFO , "Cert chain is NOT whitelisted. Proceeding with submission." ) ;
426- }
398+ if ( ! this . myGetBoolPref ( "use_whitelist" ) ) {
399+ this . log ( WARN , "Not using whitelist to filter cert chains." ) ;
400+ }
401+ else if ( this . isChainWhitelisted ( chain_hash ) ) {
402+ this . log ( INFO , "This cert chain is whitelisted. Not submitting." ) ;
403+ return ;
404+ }
405+ else {
406+ this . log ( INFO , "Cert chain is NOT whitelisted. Proceeding with submission." ) ;
407+ }
427408
428- if ( channel . URI . port == - 1 ) {
429- this . submitChainArray ( chainArray , fps , new String ( channel . URI . host ) , channel , host_ip , false ) ;
430- } else {
431- this . submitChainArray ( chainArray , fps , channel . URI . host + ":" + channel . URI . port , channel , host_ip , false ) ;
432- }
409+ if ( channel . URI . port == - 1 ) {
410+ this . submitChainArray ( chainArray , fps , new String ( channel . URI . host ) , channel , host_ip , false ) ;
411+ } else {
412+ this . submitChainArray ( chainArray , fps , channel . URI . host + ":" + channel . URI . port , channel , host_ip , false ) ;
433413 }
434414 } ,
435415
0 commit comments