Re: RTSP/SRTP in gstreamer (MIKEY vrl2rtspserver)
Manikandan Valaguru via gstreamer-devel <[email protected]> Mon, 31 Mar 2025 06:07:07 +0000
| Newsgroups | gmane.comp.video.gstreamer.devel |
|---|---|
| Message-ID | <KL1PR03MB8117A55879DA175D6F43884FB5AD2@KL1PR03MB8117.apcprd03.prod.outlook.com> |
--_000_KL1PR03MB8117A55879DA175D6F43884FB5AD2KL1PR03MB8117apcp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, Thanks for your reply we could not use GstRtspServer because we have our ow= n live555 server which we have modified for our use case Also we have already tested client-managed-mikey<https://gstreamer.freedesk= top.org/documentation/rtsp/rtspsrc.html?gi-language=3Dc#rtspsrc:client-mana= ged-mikey> this with gstreamer 1.26 which is working fine but most of our= clients use gstreamer version 1.18 to 1.22 so we are currently devloping a= n application to take care of the mikey encrytion any examples or guidance= on this would be very helpful Regards, Manikandan ________________________________ From: Nicolas Dufresne <[email protected]> Sent: Saturday, March 29, 2025 1:34 AM To: Discussion of the development of and with GStreamer <gstreamer-devel@li= sts.freedesktop.org> Cc: Manikandan Valaguru <[email protected]> Subject: Re: RTSP/SRTP in gstreamer (MIKEY vrl2rtspserver) You don't often get email from [email protected]. Learn why this is impo= rtant<https://aka.ms/LearnAboutSenderIdentification> Le jeudi 27 mars 2025 =E0 06:24 +0000, Manikandan Valaguru via gstreamer-de= vel a =E9crit : Hi, I am currently working with a custom v4l2rtspserver built on Live555, aimin= g to enable RTSPS (RTSP over TLS) and SRTP (Secure RTP) for secure video st= reaming. My objective is to stream encrypted video and successfully decode = it in GStreamer. You may have used GstRtspServer library instead, which already implement al= l this security. Based on my understanding: RTSPS encryption and decryption rely on TLS certificates. SRTP requires a decryption key, which can be extracted from the MIKEY d= ata in the SDP (Session Description Protocol) of the RTSP response. Using this key, I need to construct a GStreamer pipeline to decrypt SRT= P packets. Could you confirm if this approach is correct? Currently, I am extracting the SRTP key from the SDP session and embedding = it into the GStreamer pipeline as follows: GST_DEBUG=3D3 gst-launch-1.0 rtspsrc location=3Drtsps://econ:[email protected]= .23:5005/routecam tls-validation-flags=3D4 protocols=3Dudp \ ! application/x-srtp, srtp-key=3Da053ace0edcaba09192bff35fa01da6170317c= d36af12b87be015f416701, \ srtp-cipher=3Daes-128-icm, srtp-auth=3Dhmac-sha1-80, roc=3D0 \ ! srtpdec \ ! rtph264depay \ ! avdec_h264 \ ! xvimagesink -v Decryption is implemented inside rtspsrc element. In the RFC defined protoc= ol, the keys are provision by the server. Though we also have a non-complia= nt mode where the keys are managed by the client. Here's pointer to the do= c. Note that there is very little to no activity on the mailing. We encoura= ge to use discourse.gstreamer.org for future questions. - https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-lang= uage=3Dc#rtspsrc:client-managed-mikey - https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-lang= uage=3Dc#example-launch-line However, I am encountering issues during playback. I have attached the erro= r logs and MIKEY data for reference. Could you please review them and let m= e know if I am missing anything? Looking forward to your insights. Regards, Manikandan This email and any files transmitted with it are confidential and intended = solely for the use of the individual or entity to whom they are addressed. = If you are not the named addressee you should not disseminate, distribute o= r copy this e-mail. Taking any action in reliance on the contents of this i= nformation is strictly prohibited. Please notify the sender immediately by = e-mail if you have received this e-mail by mistake and delete this e-mail f= rom your system. WARNING: Although the company has taken reasonable precaut= ions to ensure no viruses are present in this email, e-con cannot accept re= sponsibility for any loss or damage arising from the use of this email or a= ttachment. This email and any files transmitted with it are confidential and intended = solely for the use of the individual or entity to whom they are addressed. = If you are not the named addressee you should not disseminate, distribute o= r copy this e-mail. Taking any action in reliance on the contents of this i= nformation is strictly prohibited. Please notify the sender immediately by = e-mail if you have received this e-mail by mistake and delete this e-mail f= rom your system. WARNING: Although the company has taken reasonable precaut= ions to ensure no viruses are present in this email, e-con cannot accept re= sponsibility for any loss or damage arising from the use of this email or a= ttachment. --_000_KL1PR03MB8117A55879DA175D6F43884FB5AD2KL1PR03MB8117apcp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <html> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-= 1"> <style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo= ttom:0;} </style> </head> <body dir=3D"ltr"> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Hi,</div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Thanks for your reply we could not use GstRtspServer because we have our ow= n live555 server which we have modified for our use case<br> <br> </div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Also we have already tested<a href=3D"https://gstreamer.freedesktop.org/doc= umentation/rtsp/rtspsrc.html?gi-language=3Dc#rtspsrc:client-managed-mikey" = target=3D"_blank" id=3D"LPlnkOWA7de2df05-6c6e-7505-8045-e03dd346c584" class= =3D"OWAAutoLink elementToProof" title=3D"https://gstreamer.freedesktop.org/= documentation/rtsp/rtspsrc.html?gi-language=3Dc#rtspsrc:client-managed-mike= y" rel=3D"noopener noreferrer" data-linkindex=3D"0" data-auth=3D"NotApplica= ble"> client-managed-mikey</a> this with gstreamer 1.26 which is working fine but most of our clie= nts use gstreamer version 1.18 to 1.22 so we are currently devloping an app= lication to take care of the mikey encrytion any examples or guidance= on this would be very helpful<br> <br> Regards,<br> Manikandan<br> <br> <br> <br> <br> </div> <div id=3D"appendonsend"></div> <hr style=3D"display:inline-block;width:98%" tabindex=3D"-1"> <div id=3D"divRplyFwdMsg" dir=3D"ltr"><font face=3D"Calibri, sans-serif" st= yle=3D"font-size:11pt" color=3D"#000000"><b>From:</b> Nicolas Dufresne <= [email protected]><br> <b>Sent:</b> Saturday, March 29, 2025 1:34 AM<br> <b>To:</b> Discussion of the development of and with GStreamer <gstreame= [email protected]><br> <b>Cc:</b> Manikandan Valaguru <[email protected]><br> <b>Subject:</b> Re: RTSP/SRTP in gstreamer (MIKEY vrl2rtspserver)</font> <div> </div> </div> <style type=3D"text/css" style=3D"display:none"> <!-- p {margin-top:0; margin-bottom:0} --> </style><style> <!-- pre, code, address {margin:0px} h1, h2, h3, h4, h5, h6 {margin-top:0.2em; margin-bottom:0.2em} ol, ul {margin-top:0em; margin-bottom:0em} blockquote {margin-top:0em; margin-bottom:0em} --> </style> <div dir=3D"ltr"> <table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D"100%" alig= n=3D"left" style=3D"background:revert!important; border:revert!important; b= ottom:revert!important; color:revert!important; direction:revert!important;= display:revert!important; font-size:revert!important; height:revert!import= ant; letter-spacing:revert!important; line-height:revert!important; margin:= revert!important; opacity:revert!important; order:revert!important; outline= :revert!important; overflow:revert!important; padding:revert!important; pos= ition:revert!important; tab-size:revert!important; table-layout:revert!impo= rtant; text-align:revert!important; text-indent:revert!important; text-orie= ntation:revert!important; text-overflow:revert!important; text-transform:re= vert!important; top:revert!important; vertical-align:revert!important; visi= bility:revert!important; white-space:revert!important; width:revert!importa= nt; word-break:revert!important; word-spacing:revert!important; writing-mod= e:revert!important; zoom:revert!important; border:0!important; display:tabl= e!important; width:100%!important; table-layout:fixed!important; border-col= lapse:seperate!important; float:none!important; border-spacing:0px 0px!impo= rtant"> <tbody style=3D"background:revert!important; border:revert!important; botto= m:revert!important; color:revert!important; direction:revert!important; dis= play:revert!important; font-size:revert!important; height:revert!important;= letter-spacing:revert!important; line-height:revert!important; margin:reve= rt!important; opacity:revert!important; order:revert!important; outline:rev= ert!important; overflow:revert!important; padding:revert!important; positio= n:revert!important; tab-size:revert!important; table-layout:revert!importan= t; text-align:revert!important; text-indent:revert!important; text-orientat= ion:revert!important; text-overflow:revert!important; text-transform:revert= !important; top:revert!important; vertical-align:revert!important; visibili= ty:revert!important; white-space:revert!important; width:revert!important; = word-break:revert!important; word-spacing:revert!important; writing-mode:re= vert!important; zoom:revert!important; display:block!important"> <tr style=3D"background:revert!important; border:revert!important; bottom:r= evert!important; color:revert!important; direction:revert!important; displa= y:revert!important; font-size:revert!important; height:revert!important; le= tter-spacing:revert!important; line-height:revert!important; margin:revert!= important; opacity:revert!important; order:revert!important; outline:revert= !important; overflow:revert!important; padding:revert!important; position:r= evert!important; tab-size:revert!important; table-layout:revert!important; = text-align:revert!important; text-indent:revert!important; text-orientation= :revert!important; text-overflow:revert!important; text-transform:revert!im= portant; top:revert!important; vertical-align:revert!important; visibility:= revert!important; white-space:revert!important; width:revert!important; wor= d-break:revert!important; word-spacing:revert!important; writing-mode:rever= t!important; zoom:revert!important"> <td valign=3D"middle" width=3D"1px" bgcolor=3D"#A6A6A6" cellpadding=3D"7px = 2px 7px 2px" style=3D"background:revert!important; border:revert!important;= bottom:revert!important; color:revert!important; direction:revert!importan= t; display:revert!important; font-size:revert!important; height:revert!impo= rtant; letter-spacing:revert!important; line-height:revert!important; margi= n:revert!important; opacity:revert!important; order:revert!important; outli= ne:revert!important; overflow:revert!important; padding:revert!important; p= osition:revert!important; tab-size:revert!important; table-layout:revert!im= portant; text-align:revert!important; text-indent:revert!important; text-or= ientation:revert!important; text-overflow:revert!important; text-transform:= revert!important; top:revert!important; vertical-align:revert!important; vi= sibility:revert!important; white-space:revert!important; width:revert!impor= tant; word-break:revert!important; word-spacing:revert!important; writing-m= ode:revert!important; zoom:revert!important; padding:7px 2px 7px 2px!import= ant; background-color:#A6A6A6!important; width:0px!important"> </td> <td valign=3D"middle" width=3D"100%" bgcolor=3D"#EAEAEA" cellpadding=3D"7px= 5px 7px 15px" color=3D"#212121" style=3D"background:revert!important; bord= er:revert!important; bottom:revert!important; color:revert!important; direc= tion:revert!important; display:revert!important; font-size:revert!important= ; height:revert!important; letter-spacing:revert!important; line-height:rev= ert!important; margin:revert!important; opacity:revert!important; order:rev= ert!important; outline:revert!important; overflow:revert!important; padding= :revert!important; position:revert!important; tab-size:revert!important; ta= ble-layout:revert!important; text-align:revert!important; text-indent:rever= t!important; text-orientation:revert!important; text-overflow:revert!import= ant; text-transform:revert!important; top:revert!important; vertical-align:= revert!important; visibility:revert!important; white-space:revert!important= ; width:revert!important; word-break:revert!important; word-spacing:revert!= important; writing-mode:revert!important; zoom:revert!important; width:100%= !important; background-color:#EAEAEA!important; padding:7px 5px 7px 15px!im= portant; font-family:wf_segoe-ui_normal,Segoe UI,Segoe WP,Tahoma,Arial,sans= -serif!important; font-size:12px!important; font-weight:normal!important; c= olor:#212121!important; text-align:left!important; word-wrap:break-word!imp= ortant"> <div style=3D"background:revert!important; border:revert!important; bottom:= revert!important; color:revert!important; direction:revert!important; displ= ay:revert!important; font-size:revert!important; height:revert!important; l= etter-spacing:revert!important; line-height:revert!important; margin:revert= !important; opacity:revert!important; order:revert!important; outline:rever= t!important; overflow:revert!important; padding:revert!important; position:= revert!important; tab-size:revert!important; table-layout:revert!important;= text-align:revert!important; text-indent:revert!important; text-orientatio= n:revert!important; text-overflow:revert!important; text-transform:revert!i= mportant; top:revert!important; vertical-align:revert!important; visibility= :revert!important; white-space:revert!important; width:revert!important; wo= rd-break:revert!important; word-spacing:revert!important; writing-mode:reve= rt!important; zoom:revert!important"> You don't often get email from [email protected]. <a href=3D"https://aka= .ms/LearnAboutSenderIdentification" style=3D"background:revert!important; c= olor:revert!important; direction:revert!important; display:revert!important= ; font-size:revert!important; opacity:revert!important; visibility:revert!i= mportant"> Learn why this is important</a> </div> </td> <td valign=3D"middle" align=3D"left" width=3D"75px" bgcolor=3D"#EAEAEA" cel= lpadding=3D"7px 5px 7px 5px" color=3D"#212121" style=3D"background:revert!i= mportant; border:revert!important; bottom:revert!important; color:revert!im= portant; direction:revert!important; display:revert!important; font-size:re= vert!important; height:revert!important; letter-spacing:revert!important; l= ine-height:revert!important; margin:revert!important; opacity:revert!import= ant; order:revert!important; outline:revert!important; overflow:revert!impo= rtant; padding:revert!important; position:revert!important; tab-size:revert= !important; table-layout:revert!important; text-align:revert!important; tex= t-indent:revert!important; text-orientation:revert!important; text-overflow= :revert!important; text-transform:revert!important; top:revert!important; v= ertical-align:revert!important; visibility:revert!important; white-space:re= vert!important; width:revert!important; word-break:revert!important; word-s= pacing:revert!important; writing-mode:revert!important; zoom:revert!importa= nt; width:75px!important; background-color:#EAEAEA!important; padding:7px 5= px 7px 5px!important; font-family:wf_segoe-ui_normal,Segoe UI,Segoe WP,Taho= ma,Arial,sans-serif!important; font-size:12px!important; font-weight:normal= !important; color:#212121!important; text-align:left!important; word-wrap:b= reak-word!important"> </td> </tr> </tbody> </table> <div> <div>Le jeudi 27 mars 2025 =E0 06:24 +0000, Manikandan Valaguru via gstream= er-devel a =E9crit :</div> <blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729f= cf solid; padding-left:1ex"> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Hi,<br> I am currently working with a custom v4l2rtspserver built on Live555, aimin= g to enable RTSPS (RTSP over TLS) and SRTP (Secure RTP) for secure video st= reaming. My objective is to stream encrypted video and successfully decode = it in GStreamer.</div> </blockquote> <div><br> </div> <div>You may have used GstRtspServer library instead, which already impleme= nt all this security.</div> <div><br> </div> <blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729f= cf solid; padding-left:1ex"> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Based on my understanding:</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> RTSPS encryption and decryption rely on TLS certificates.</di= v> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> SRTP requires a decryption key, which can be extracted from t= he MIKEY data in the SDP (Session Description Protocol) of the RTSP respons= e.</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Using this key, I need to construct a GStreamer pipeline to d= ecrypt SRTP packets.</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Could you confirm if this approach is correct?</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Currently, I am extracting the SRTP key from the SDP session and embedding = it into the GStreamer pipeline as follows:</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> GST_DEBUG=3D3 gst-launch-1.0 rtspsrc location=3Drtsps://econ:[email protected]= .23:5005/routecam tls-validation-flags=3D4 protocols=3Dudp \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> ! application/x-srtp, srtp-key=3Da053ace0edcaba09192bff35fa01= da6170317cd36af12b87be015f416701, \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> srtp-cipher=3Daes-128-icm, srtp-auth=3Dhmac-sha1-80, r= oc=3D0 \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> ! srtpdec \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> ! rtph264depay \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> ! avdec_h264 \</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> ! xvimagesink -v</div> </blockquote> <div><br> </div> <div>Decryption is implemented inside rtspsrc element. In the RFC defined p= rotocol, the keys are provision by the server. Though we also have a non-co= mpliant mode where the keys are managed by the client. Here's pointer= to the doc. Note that there is very little to no activity on the mailing. We encourage to use discourse.gstrea= mer.org for future questions.</div> <div><br> </div> <div>- <a href=3D"https://gstreamer.freedesktop.org/documentation/rtsp= /rtspsrc.html?gi-language=3Dc#rtspsrc:client-managed-mikey">https://gstream= er.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=3Dc#rtspsrc:= client-managed-mikey</a></div> <div>- <a href=3D"https://gstreamer.freedesktop.org/documentation/rtsp= /rtspsrc.html?gi-language=3Dc#example-launch-line">https://gstreamer.freede= sktop.org/documentation/rtsp/rtspsrc.html?gi-language=3Dc#example-launch-li= ne</a></div> <div><br> </div> <div><br> </div> <div><br> </div> <blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729f= cf solid; padding-left:1ex"> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> However, I am encountering issues during playback. I have attached the erro= r logs and MIKEY data for reference. Could you please review them and let m= e know if I am missing anything?</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Looking forward to your insights.<br> <br> Regards,</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Manikandan</div> <div>This email and any files transmitted with it are confidential and inte= nded solely for the use of the individual or entity to whom they are addres= sed. If you are not the named addressee you should not disseminate, distrib= ute or copy this e-mail. Taking any action in reliance on the contents of this information is strictly pro= hibited. Please notify the sender immediately by e-mail if you have receive= d this e-mail by mistake and delete this e-mail from your system. WARNING: = Although the company has taken reasonable precautions to ensure no viruses are present in this email, e-con cannot a= ccept responsibility for any loss or damage arising from the use of this em= ail or attachment.</div> </blockquote> <div><br> </div> <div><span></span></div> </div> </div> This email and any files transmitted with it are confidential and intended = solely for the use of the individual or entity to whom they are addressed. = If you are not the named addressee you should not disseminate, distribute o= r copy this e-mail. Taking any action in reliance on the contents of this information is strictly prohibited. Pl= ease notify the sender immediately by e-mail if you have received this e-ma= il by mistake and delete this e-mail from your system. WARNING: Although th= e company has taken reasonable precautions to ensure no viruses are present in this email, e-con cannot accept respon= sibility for any loss or damage arising from the use of this email or attac= hment. </body> </html> --_000_KL1PR03MB8117A55879DA175D6F43884FB5AD2KL1PR03MB8117apcp_--