Arun,

One way is to register a nsIStreamListener using the
nsITraceableChannel interface of the HTTP channel.  Your
nsIStreamListener will need to implement onStartRequest(),
onStopRequest() and onDataAvailable().  In your case, however, the
last two will just be almost empty methods.  In onStartRequest(), you
can get the nsISSLStatus from the HTTP channel.

You can register your nsIStreamListener using the "http-on-examine-
response".  When the event fires, you get the nsITraceableChannel
interface from the HTTP channel and and replace the original stream
listener with your own.  Be sure to keep a pointer to the original
stream listeners.  Each of your methods above must call in the end the
corresponding method from the original listener.  Otherwise whatever
initiated the the request (e.g. the docshell) will be out-of-sync with
the networking library.

Ideally, you shouldn't do anything in onDataAvailable() but call the
original stream listener.  Otherwise, performance may degrade
noticeably.

You can find more info and sample code here:
http://www.softwareishard.com/blog/firebug/nsitraceablechannel-intercept-http-traffic/

Note that nsITraceableChannel was introduced in Firefox 3.0.3..  For
earlier versions, I don't know if there is a way to get the
nsISSLStatus.  From what I can see in the Firefox source code, only
the module that initiated the HTTPS request can get this information.

I hope this helps.

Best Regards,
Peter Djalaliev


On Jun 26, 2:40 am, MAK <arungene...@gmail.com> wrote:
> Thankx Peter,
>
>    But how is the registration for nsIRequestObserver done. I tried
> out many options, but in no way I'm able to query the nsISSLStatus
> interface through nsIRequestObserver.
>
> regards,
> Arun
>
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to