<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;Ak4FQXszeyp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-6640189</id><updated>2011-11-28T05:38:30.583+05:30</updated><category term="firefox" /><category term="Germany" /><category term="theday" /><category term="device-driver" /><category term="tech" /><category term="android" /><category term="Health-card" /><category term="blogger" /><category term="tools" /><category term="japanese" /><category term="karate" /><category term="web" /><category term="tips" /><category term="browser" /><category term="martial-arts" /><category term="views" /><category term="windows" /><category term="experience" /><category term="world" /><category term="chennai" /><category term="google" /><category term="car" /><title>Walk with me</title><subtitle type="html">My daily walk of life, Linux, open source and more...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/vijairaj" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogspot/vijairaj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkACRn86fyp7ImA9WxBUE04.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-7512645249961629305</id><published>2010-02-28T11:58:00.002+05:30</published><updated>2010-02-28T12:02:47.117+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-28T12:02:47.117+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="car" /><title>My shortlist of diesel cars</title><content type="html">&lt;div&gt;&lt;b&gt;Looking to buy a diesel car with good safety features, comfort and a nice look.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;My short list:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;1. Fiat Punto - Emotion (~6.5 L on road chennai)&lt;/div&gt;&lt;div&gt;2. Volkswagen Polo - Comfortline (~6.5 L on road chennai)&lt;/div&gt;&lt;div&gt;3. Ford Figo - Titanium (~6 L on road chennai)&lt;/div&gt;&lt;div&gt;4. Maruti Ritz - ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Tata motors/Fiat showroom, Ambattur:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I was impressed at the solid build of the Punto. One can feel the solidness just by touching the doors. The seats are comfortable and it's easy to get in to  and out of the car - thanks to its height and ground clearance. I am very much impressed by this car but waiting to see the Polo before deciding. The only bad part is that sales and service are from Tata and I had a first hand bad experience when I walked in to the show room - There were no body to attend and 5-6 visitors who were looking at the cars. The booking amount is Rs.10K and it takes 15 days to deliver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Volkswagen showroom, CIT nagar:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Polo will be available in showroom during 2nd week of march. 80 cars have already been booked in chennai. Petrol car delivery starts from April. One have to wait till june for the diesel engine. 50 K is the booking amount and it takes one month for delivery.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;MPL Ford, Anna salai:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Figo is already available in showroom but one has to wait another week for a test  drive. The 1.4L diesel engine is the same one from Fiesta. The top end model Titanium has airbags and ABS, but no rear power windows. It has an excellent boot space and good leg room at the back. The car doesn't look stylish though. 25K is the booking amount and it takes one month for delivery. Already 240 Figo's are booked in Chennai. (There is also a new MPL showroom near SRP Tools OMR)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Yet to visit a Maruti showroom.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-7512645249961629305?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/7512645249961629305/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=7512645249961629305" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7512645249961629305?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7512645249961629305?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2010/02/my-shortlist-of-diesel-cars.html" title="My shortlist of diesel cars" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkUMQHw6fCp7ImA9WxVSFEw.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-973897372007767137</id><published>2009-01-08T15:50:00.000+05:30</published><updated>2009-01-08T15:54:41.214+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T15:54:41.214+05:30</app:edited><title>Parsing and using custom extension in X.509 certificates</title><content type="html"> &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;In the last two posts we saw how to create certificates with custom extensions and how to view extension in X.509 certificates, now it's time that we use them for some real purpose. The main purpose of placing custom extension is to express certain capabilities of the certificate holder. The receiving systems verifies the capabilities of the holder based on the presence of these extensions and the corresponding values in the extensions. &lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;In the current example we will see the parsing of a non-standard extension called &lt;/font&gt;&lt;a href="http://www.oid-info.com/get/1.3.36.8.3.3"&gt;&lt;font size=2 color=blue face="sans-serif"&gt;Admission with oid: 1.3.36.8.3.3&lt;/font&gt;&lt;/a&gt;&lt;font size=2 face="sans-serif"&gt; which is defined in the&lt;/font&gt;&lt;a href="http://www.teletrust.de/Dokumente/ISIS-MTT_Core_Specification_v1.1.pdf"&gt;&lt;font size=2 color=blue face="sans-serif"&gt; ISIS-MTT&lt;/font&gt;&lt;/a&gt;&lt;font size=2 face="sans-serif"&gt; document&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;The ASN.1 description of the extension is given below&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;AdmissionSyntax ::= SEQUENCE {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; admissionAuthority GeneralName OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; contentsOfAdmissions SEQUENCE OF Admissions }&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;Admissions ::= SEQUENCE {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; admissionAuthority [0] EXPLICIT GeneralName OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; professionInfos SEQUENCE OF ProfessionInfo }&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;NamingAuthority ::= SEQUENCE {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; namingAuthorityId OBJECT IDENTIFIER OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; namingAuthorityUrlQUENCE OF OBJECT IDENTIFIER OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; registrationNumber PrintableString (SIZE(1..128)) OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; addProfessionInfo OCTET STRING OPTIONAL }&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ProfessionInfo ::= SEQUENCE {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; professionOIDS SEQUENCE OF OBJECT IDENTIFIER,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; registrationNumber PrintableString (SIZE(1..128)) OPTIONAL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; addProfessionInfo OCTET STRING OPTIONAL }&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="sans-serif"&gt;If we build a certificate with this extension and try to display the contents using the method described in the previous post, we will not be able to see the particulars of this extension nor will we be able to query any of the fields from this extension. This is because OpenSSL doesn't &amp;nbsp;yet know to parse the contents of the extension. To help OpenSSL in parsing the data we have to define the structure of the extension. Which is done as follows.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;First, the needed data structures are defined:&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;typedef struct NamingAuthority_st {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OBJECT* namingAuthorityId;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_IA5STRING* namingAuthorityUrl;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_STRING* namingAuthorityText;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} NAMING_AUTHORITY;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;DECLARE_ASN1_ITEM(NAMING_AUTHORITY)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;typedef struct ProfessionInfo_st {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NAMING_AUTHORITY* namingAuthority;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STACK_OF(DIRECTORYSTRING)* professionItems;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STACK_OF(ASN1_OBJECT)* professionOIDs;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_PRINTABLESTRING* registrationNumber;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OCTET_STRING* addProfessionInfo;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} PROFESSION_INFO;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;DECLARE_ASN1_ITEM(PROFESSION_INFO)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;typedef struct Admissions_st {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GENERAL_NAME* admissionAuthority;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NAMING_AUTHORITY* namingAuthority;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STACK_OF(PROFESSION_INFO)* professionInfos;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ADMISSIONS;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;DECLARE_ASN1_ITEM(ADMISSIONS)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;typedef struct AdmissionSyntax_st {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GENERAL_NAME* admissionAuthority;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STACK_OF(ADMISSIONS)* contentsOfAdmissions;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ADMISSION_SYNTAX;&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;DECLARE_ASN1_ITEM(ADMISSION_SYNTAX)&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;and then the C translation of ASN.1 representation.&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ASN1_SEQUENCE(NAMING_AUTHORITY) = {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(NAMING_AUTHORITY, namingAuthorityId, ASN1_OBJECT),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(NAMING_AUTHORITY, namingAuthorityUrl, ASN1_IA5STRING),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(NAMING_AUTHORITY, namingAuthorityText, DIRECTORYSTRING),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ASN1_SEQUENCE_END(NAMING_AUTHORITY)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ASN1_SEQUENCE(PROFESSION_INFO) = {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_EXP_OPT(PROFESSION_INFO, namingAuthority, NAMING_AUTHORITY, 0),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_SEQUENCE_OF(PROFESSION_INFO, professionItems, DIRECTORYSTRING),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_SEQUENCE_OF(PROFESSION_INFO, professionOIDs, ASN1_OBJECT),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(PROFESSION_INFO, registrationNumber, ASN1_PRINTABLESTRING),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(PROFESSION_INFO, addProfessionInfo, ASN1_OCTET_STRING),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ASN1_SEQUENCE_END(PROFESSION_INFO)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ASN1_SEQUENCE(ADMISSIONS) = {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_EXP_OPT(ADMISSIONS, admissionAuthority, GENERAL_NAME, 0),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_EXP_OPT(ADMISSIONS, namingAuthority, NAMING_AUTHORITY, 1),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_SEQUENCE_OF(ADMISSIONS, professionInfos, PROFESSION_INFO),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ASN1_SEQUENCE_END(ADMISSIONS)&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ASN1_SEQUENCE(ADMISSION_SYNTAX) = {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_OPT(ADMISSION_SYNTAX, admissionAuthority, GENERAL_NAME),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ASN1_SEQUENCE_OF(ADMISSION_SYNTAX, contentsOfAdmissions, ADMISSIONS),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;} ASN1_SEQUENCE_END(ADMISSION_SYNTAX)&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="sans-serif"&gt;Once this is done we have to some how say about our new extension to openssl:&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;static X509V3_EXT_METHOD ext_admission = {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ext_nid = 0,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ext_flags = 0,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .it = ASN1_ITEM_ref(ADMISSION_SYNTAX),&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .i2s = NULL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .s2i = NULL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .i2v = NULL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .v2i = NULL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .r2i = NULL,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .i2r = i2r_AdmissionSyntax,&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;};&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;/*&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp;* Tell about our new extension to OpenSSL&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp;*/&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;void x509_add_custom_extensions()&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;{&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ext_admission.ext_nid&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= OBJ_create(&amp;quot;1.3.36.8.3.3&amp;quot;, &amp;quot;Admission&amp;quot;, &amp;quot;Admission&amp;quot;);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; X509V3_EXT_add(&amp;amp;ext_admission);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;}&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="sans-serif"&gt;Now if we have an extension we can convert it to the corresponding data structure and then play with fields / verify them.&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;ADMISSION_SYNTAX* x = (ADMISSION_SYNTAX*) X509V3_EXT_d2i(ext);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;sk_num(x-&amp;gt;contentsOfAdmissions)&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;sk_value(x-&amp;gt;contentsOfAdmissions, iAdmission);&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;i2r_AdmissionSyntax&lt;/font&gt;&lt;font size=2 color=#4f4f4f face="sans-serif"&gt; is a simple function (that you may write/or set to NULL) which converts the internal data structure to some human understandable form and is used when the function &lt;/font&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;X509V3_EXT_print_fp&lt;/font&gt;&lt;font size=2 color=#4f4f4f face="sans-serif"&gt; is called.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-973897372007767137?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/973897372007767137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=973897372007767137" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/973897372007767137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/973897372007767137?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2009/01/parsing-and-using-custom-extension-in.html" title="Parsing and using custom extension in X.509 certificates" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D0INSHwyeip7ImA9WxVSEk4.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-6142470299046561967</id><published>2009-01-06T15:19:00.000+05:30</published><updated>2009-01-06T15:23:19.292+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-06T15:23:19.292+05:30</app:edited><title>Viewing extensions in X.509 certificates</title><content type="html"> &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;In the last post we saw how to create certificates with custom extensions - as a second step let us see how we can access these extensions and make sense of them. The code below opens a certificate, counts the number of extensions in it and iterates over every extension and prints a representation of the extension understandable to, us, humans.&lt;/font&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;X509V3_add_standard_extensions();&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;inf = fopen(&amp;quot;mycrt.crt&amp;quot;, &amp;quot;r&amp;quot;);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;cert = (X509*) PEM_read_X509(inf, NULL, NULL)&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;count = X509_get_ext_count(cert);&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;for(i = 0; i &amp;lt; count; i++) {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ext = X509_get_ext(cert, i);&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&amp;quot;%s\n&amp;quot;, OBJ_nid2ln(OBJ_obj2nid(ext-&amp;gt;object)));&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!X509V3_EXT_print_fp(stdout, ext, 0, 0)) {&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERR_print_errors_fp(stderr);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&amp;quot;\n&amp;quot;);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; X509_EXTENSION_free(ext);&lt;/font&gt; &lt;br&gt;&lt;font size=2 color=#4f4f4f face="Courier New"&gt;}&lt;/font&gt;&lt;/table&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;It doesn't print the human representation of all the extensions found but only for the built in extensions, because the library doesn't yet know to represent the custom extensions that we have placed in the certificate.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;More about parsing custom extensions and making sense of the values in it in a later post.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-6142470299046561967?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/6142470299046561967/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=6142470299046561967" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6142470299046561967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6142470299046561967?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2009/01/viewing-extensions-in-x509-certificates_06.html" title="Viewing extensions in X.509 certificates" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEINSHw7fyp7ImA9WxVSEk4.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-5045971904503326461</id><published>2009-01-06T14:29:00.000+05:30</published><updated>2009-01-06T14:33:19.207+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-06T14:33:19.207+05:30</app:edited><title>Creating X.509 certificates with custom extensions</title><content type="html"> &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;Every time when I need to do something with OpenSSL, it involves searching lot of places including the library code itself to achieve my target - This time the requirement is to generate a X509 v3 certificate which contains non-standard/custom extensions. Luckily I found convincing documents early enough.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;Here the task is to generate a CA certificate with standard extensions and then to create another certificate containing custom extensions and sign it with the newly created CA. The code below achieves both of the tasks.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;1. To generate the ca certificate, run the script as ./genkey.sh myca ==&amp;gt; which generates myca.key and myca.crt&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;2. To generate the authentication certificate, run the script as ./genkey.sh myca mycrt ==&amp;gt; which generates mycrt.key and mycrt.crt and signs it with myca.key&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;The script is mostly self explanatory and contains an inline openssl config file - The main points to note are:&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;1. Extension are to be placed separately in a named section &lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;2. Custom extension are of the form oid=DER:&amp;lt;DER-Encode-Hex-Values&amp;gt;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;3. openssl command x509 should be given the extension file name and section name&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;table border width=100%&gt; &lt;tr valign=top&gt; &lt;td width=100% bgcolor=#f7f7f7&gt;&lt;font size=2 face="Courier New"&gt;#! /bin/sh&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;# Filename: genkey.sh&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;if [ $# -lt 1 ]; then&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;Usage: $0 ca-name [new-cert]&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit -1&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;fi&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;ca=&amp;quot;$1&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;new=${ca}&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;if [ $# -ge 2 ]; then&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new=&amp;quot;$2&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;fi&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;if [ -f ${new}.key ]; then&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;${new} already exists: Delete ${new}.key &amp;amp; ${new}.crt to proceed&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit -1&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;fi&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;#----[ inline config file ]--------------------------------------------&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;ca_extensions=&amp;quot;ca_extensions&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;cert_extensions=&amp;quot;cert_extensions&amp;quot;&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;config=.${new}.config&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;cat &amp;gt; ${config} &amp;lt;&amp;lt; EOF&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;[ req ]&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;default_bits &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 2048&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;default_keyfile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= ${new}.key&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;distinguished_name &amp;nbsp; &amp;nbsp; = req_distinguished_name&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;attributes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = req_attributes&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;prompt &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = no&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;[ req_distinguished_name ]&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;CN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = ${new}&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;OU &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = ouTest&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;O &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= oTest&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;C &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= IN&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;[ req_attributes ]&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;[ ${ca_extensions} ]&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;basicConstraints=critical,CA:true&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;subjectKeyIdentifier=hash&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;keyUsage=keyCertSign,cRLSign&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;authorityInfoAccess=OCSP;URI:&lt;/font&gt;&lt;a href=http://ocsp.test.com:8080/&gt;&lt;font size=2 face="Courier New"&gt;http://ocsp.test.com:8080/&lt;/font&gt;&lt;/a&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;[ ${cert_extensions} ]&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;subjectKeyIdentifier=hash&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;keyUsage=critical,digitalSignature,keyEncipherment&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;certificatePolicies=1.2.276.0.76.4.64&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;crlDistributionPoints=URI:ldap://ocsp.test.com:389/cn=test Komponenten Testreferenz CA01&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;authorityInfoAccess=OCSP;URI:&lt;/font&gt;&lt;a href=http://ocsp.test.com:8080/CMOCSP/OCSP&gt;&lt;font size=2 face="Courier New"&gt;http://ocsp.test.com:8080/CMOCSP/OCSP&lt;/font&gt;&lt;/a&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;authorityKeyIdentifier=keyid&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;1.3.36.8.3.3=DER:\&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;304DA421301F310B30090603550406130244453110300E060355\&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;040A130767656D6174696B302830263024302230150C13416E77\&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;656E64756E67736B6F6E6E656B746F72300906072A8214004C0477&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;extendedKeyUsage=clientAuth,serverAuth&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;EOF&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;#----[ Generate key and sign ]------------------------------------------&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;# 1. Generate Key &amp;amp; CSR&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;openssl req -new -nodes -config ${config} &amp;gt; ${new}.csr&lt;/font&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;# 2. Self sign (or) Sign with CA&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;if [ ${new} == ${ca} ]; then&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;Generating self signed CA: ${ca}.crt&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; openssl x509 -extfile ${config} -extensions ${ca_extensions} \&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -sha1 -req -signkey ${ca}.key &amp;lt; ${new}.csr &amp;gt; ${new}.crt&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;else&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;Signing ${new}.crt with ${ca}.crt&amp;quot;&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; openssl x509 -extfile ${config} -extensions ${cert_extensions} \&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -sha1 -req -CAkey ${ca}.key -CA ${ca}.crt &amp;lt; ${new}.csr &amp;gt; ${new}.crt&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;fi&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;rm ${new}.csr&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;rm ${config}&lt;/font&gt; &lt;br&gt;&lt;/table&gt; &lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-5045971904503326461?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/5045971904503326461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=5045971904503326461" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5045971904503326461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5045971904503326461?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2009/01/creating-x509-certificates-with-custom.html" title="Creating X.509 certificates with custom extensions" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0QHRX84cCp7ImA9WxVTGUs.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-393253934655348140</id><published>2009-01-03T11:12:00.001+05:30</published><updated>2009-01-03T11:12:14.138+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-03T11:12:14.138+05:30</app:edited><title>Resolutions for the year and after</title><content type="html">1. To overcome my laziness.&lt;br&gt;2. To be more focussed and ignore distraction.&lt;br&gt;&lt;br&gt;Top two things needed to shape myself in to a better person.&lt;br&gt;Hopefully I will be able to overpower laziness and distraction.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-393253934655348140?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/393253934655348140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=393253934655348140" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/393253934655348140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/393253934655348140?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2009/01/resolutions-for-year-and-after.html" title="Resolutions for the year and after" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0cBRHk9fip7ImA9WxVTFk8.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-5127734116638234578</id><published>2008-12-30T13:43:00.000+05:30</published><updated>2008-12-30T13:47:35.766+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-30T13:47:35.766+05:30</app:edited><title>Bypassing Websense</title><content type="html"> &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;Websense is a kind of proxy server that filters request to the internet and will block certain kinds of request - The most common way of blocking is to check the requested url against a black list.&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;The most common HTTP request is GET and looks like:&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;GET /path-to-file HTTP/1.0&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;Simply replacing this with something like the one below seems to confuse Websense, making it to believe that the url is &lt;b&gt;not &lt;/b&gt;in the black list.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="Courier New"&gt;GET /path-to-file &amp;lt;2048-space&amp;gt; HTTP/1.0&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;While some web servers are also confused by such a request some others behave normally.&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;To change the request from the first format to the second one needs some one in between and the easiest is a proxy server and if it's in python it only gets more easier.&lt;/font&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;&lt;i&gt;TIP: If using windows, the extension of the proxy file can be set as .pyw to run it invisibly.&lt;/i&gt;&lt;/font&gt; &lt;br&gt; &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;The browser has to be configured to use a proxy but since some sites doesn't work with this proxy due to the request mangling, it is worth writing a &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Proxy_auto-config"&gt;&lt;font size=2 color=blue face="sans-serif"&gt;proxy.pac&lt;/font&gt;&lt;/a&gt;&lt;font size=2 face="sans-serif"&gt; file that uses the proxy only for certain sites.&lt;/font&gt; &lt;br&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1557"&gt;&lt;font size=2 color=blue face="sans-serif"&gt;QuickProxy &lt;/font&gt;&lt;/a&gt;&lt;font size=2 face="sans-serif"&gt;is a nice add-on for Firefox that makes it easy to switch proxy configuration.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-5127734116638234578?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/5127734116638234578/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=5127734116638234578" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5127734116638234578?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5127734116638234578?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/12/bypassing-websense.html" title="Bypassing Websense" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UDQ34_fCp7ImA9WxRaF0k.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-7483742419455710594</id><published>2008-12-20T10:27:00.000+05:30</published><updated>2008-12-20T10:31:12.044+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-20T10:31:12.044+05:30</app:edited><title>Yet another revival</title><content type="html"> &lt;br&gt;&lt;font size=2 face="sans-serif"&gt;Time and again I try to keep my blog alive but after a few posts the interest fades away mainly due to the effort involved in posting. I have tried different tools but none could stand my laziness - but this time posting via email seems to be easy enough to carry forward my lazy ass.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-7483742419455710594?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/7483742419455710594/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=7483742419455710594" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7483742419455710594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7483742419455710594?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/12/yet-another-revival.html" title="Yet another revival" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;Ck8CQX48eyp7ImA9WxRTFE8.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-4963453343228417701</id><published>2008-09-03T11:02:00.003+05:30</published><updated>2008-09-03T11:17:40.073+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-03T11:17:40.073+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Here it is - Google Chrome</title><content type="html">It's here to flame up the fire and I am exploring it right after waking up.&lt;br /&gt;&lt;br /&gt;The first thing that can be noticed is the location of tabs, the tabs are located above the url box - It's like different independent browser windows joined together rather than a single window containing different web pages.&lt;br /&gt;&lt;br /&gt;The URL is colour coded - The server name appears dark and the rest of the path appears in grey. https is highlighted in green. A tiny thing but it's much easier to identify the server name.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4ieW_XWMI/AAAAAAAABJs/vmxLQm7eo0E/s1600-h/2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4ieW_XWMI/AAAAAAAABJs/vmxLQm7eo0E/s320/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5241664921268607170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By default there are two processes while opening Chrome. The process count increases on creating the first new tab but subsequent new tabs doesn't increase the process count - The count increases only on loading a page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4i1tBU2II/AAAAAAAABJ0/GV1XJIx3kkM/s1600-h/1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4i1tBU2II/AAAAAAAABJ0/GV1XJIx3kkM/s320/1.JPG" alt="" id="BLOGGER_PHOTO_ID_5241665322319403138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Killing a process displays a message in the tab corresponding to that process and doesn't kill the entire browser - Good.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4i1r5KaJI/AAAAAAAABJ8/KZq-GOmbbm8/s1600-h/crash.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4i1r5KaJI/AAAAAAAABJ8/KZq-GOmbbm8/s320/crash.JPG" alt="" id="BLOGGER_PHOTO_ID_5241665322016729234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Very spacious - Tabs are merged with the title bar, no status bar, no menu bar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SBPyA5RgxaQ/SL4jUKaxA3I/AAAAAAAABKE/HblL94AH9Ks/s1600-h/space.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_SBPyA5RgxaQ/SL4jUKaxA3I/AAAAAAAABKE/HblL94AH9Ks/s320/space.JPG" alt="" id="BLOGGER_PHOTO_ID_5241665845606810482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Acid test results:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4jgVOnE5I/AAAAAAAABKM/oRqFlU5kfJw/s1600-h/acid_test.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4jgVOnE5I/AAAAAAAABKM/oRqFlU5kfJw/s320/acid_test.JPG" alt="" id="BLOGGER_PHOTO_ID_5241666054667047826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4jgsNAq5I/AAAAAAAABKU/dgu6n8vqJ_s/s1600-h/acid3_test.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4jgsNAq5I/AAAAAAAABKU/dgu6n8vqJ_s/s320/acid3_test.JPG" alt="" id="BLOGGER_PHOTO_ID_5241666060834352018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Only a boot strap is available for download which in turn downloads and installs the actual browser - This possibly may be for region specific customization but I had prefer the real installer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4klpc4DEI/AAAAAAAABKc/pB1EdxwXOIo/s1600-h/search.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_SBPyA5RgxaQ/SL4klpc4DEI/AAAAAAAABKc/pB1EdxwXOIo/s320/search.JPG" alt="" id="BLOGGER_PHOTO_ID_5241667245506563138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Missing:&lt;br /&gt;- Profiles&lt;br /&gt;- Addons&lt;br /&gt;- Couldn't find offline mode&lt;br /&gt;&lt;br /&gt;@Me, should find more time to explore&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-4963453343228417701?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://googleblog.blogspot.com/2008/09/google-chrome-now-live.html" title="Here it is - Google Chrome" /><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/4963453343228417701/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=4963453343228417701" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4963453343228417701?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4963453343228417701?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/09/here-it-is-google-chrome.html" title="Here it is - Google Chrome" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SL4ieW_XWMI/AAAAAAAABJs/vmxLQm7eo0E/s72-c/2.JPG" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A04FRH0-cSp7ImA9WxRTE08.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-7810039590390330905</id><published>2008-09-02T10:00:00.001+05:30</published><updated>2008-09-02T10:01:55.359+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-02T10:01:55.359+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Yet another new from Google's stable, Google Chrome, an opensource browser</title><content type="html">The war starts again, now with an extra battalion by the name of Google Chrome. With Firefox eating in to the shares of IE, Opera and Flock gaining popularity and with Safari's presence felt, the war is only going to heat up. Microsoft is already pushing IE8 as a safe and standards compliant browser. Firefox3 has set a new bench mark as a secure browser. Success for the new generation browsers will firstly depend on the security they provide against malware and phising sites, then secondly on the customization capabilities. &lt;a href="http://blogoscoped.com/archive/2008-09-01-n47.html"&gt;Promises&lt;/a&gt; look good but wait till &lt;a href="http://www.google.com/chrome"&gt;tomorrow&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-7810039590390330905?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html" title="Yet another new from Google's stable, Google Chrome, an opensource browser" /><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/7810039590390330905/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=7810039590390330905" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7810039590390330905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7810039590390330905?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/09/yet-another-new-from-googles-stable.html" title="Yet another new from Google's stable, Google Chrome, an opensource browser" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUMDQnk_cCp7ImA9WxRTEkg.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-7602846718785797784</id><published>2008-09-01T13:52:00.000+05:30</published><updated>2008-09-01T13:54:33.748+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-01T13:54:33.748+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="device-driver" /><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><title>Unified versioning for windows drivers</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Every new release of a windows driver involved updating the version number in a lot of places, mainly:&lt;br/&gt;- The resource file&lt;br/&gt;- The inf file&lt;br/&gt;- The source file (Mainly for debug purposes)&lt;br/&gt;This was a lot hectic until one day I sat down to unify the version updation to one file, which can be used in all places.&lt;br/&gt;&lt;br/&gt;The result is the following file, which we shall call 'version.h'&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;&lt;br/&gt;&lt;table bgcolor='lightgrey'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br/&gt;#ifndef _VERSION_H_&lt;br/&gt;#define _VERSION_H_&lt;br/&gt;&lt;br/&gt;#if 0&lt;br/&gt;STAMPINF_VERSION=1,0,0,1&lt;br/&gt;STAMPINF_VERSION_STR="01.00.00.01"&lt;br/&gt;STAMPINF_DATE="12/21/2007"&lt;br/&gt;#else&lt;br/&gt;#define VER_PRODUCTVERSION          1,0,0,1&lt;br/&gt;#define VER_PRODUCTVERSION_STR      "01.00.00.01"&lt;br/&gt;#endif&lt;br/&gt;&lt;br/&gt;#endif&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;/font&gt;&lt;font face='sans-serif'&gt;It can be included in the source and resource file and the defines &lt;/font&gt;&lt;font face='sans-serif'&gt;VER_PRODUCTVERSION and VER_PRODUCTVERSION_STR can be used.&lt;br/&gt;&lt;br/&gt;It can also be safely included in makefile.inc and the defines STAMPINF_VERSION, STAMPINF_VERSION_STR and STAMPINF_DATE can be used to update the inf files using the stampinf utility that comes with WDK.&lt;br/&gt;&lt;br/&gt;Now, every new release requires updating only a single file and has become a lot easier.&lt;br/&gt;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-7602846718785797784?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/7602846718785797784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=7602846718785797784" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7602846718785797784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7602846718785797784?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/09/unified-versioning-for-windows-drivers.html" title="Unified versioning for windows drivers" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UARX86eyp7ImA9WxdaF04.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-6463571394526129858</id><published>2008-08-26T13:53:00.001+05:30</published><updated>2008-08-26T13:57:24.113+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-26T13:57:24.113+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Germany" /><category scheme="http://www.blogger.com/atom/ns#" term="Health-card" /><title>German health card - overly complex</title><content type="html">The German health card system seems to be overly complex for a health sector.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-6463571394526129858?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://wiwowo.blogspot.com/2008/08/german-health-card.html" title="German health card - overly complex" /><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/6463571394526129858/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=6463571394526129858" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6463571394526129858?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6463571394526129858?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/08/overly-complex.html" title="German health card - overly complex" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UHRHc7fyp7ImA9WxZaGUg.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-8141809389276498585</id><published>2008-05-05T09:15:00.001+05:30</published><updated>2008-05-05T09:17:15.907+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-05T09:17:15.907+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Test post from ScribeFire</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;A &lt;b&gt;sample &lt;/b&gt;post from &lt;a href='http://www.scribefire.com/' target='_blank'&gt;&lt;b&gt;&lt;font color='#333333'&gt;Scribe&lt;/font&gt;&lt;font color='#ff6600'&gt;Fire&lt;/font&gt;&lt;/b&gt;&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-8141809389276498585?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/8141809389276498585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=8141809389276498585" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/8141809389276498585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/8141809389276498585?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2008/05/test-post-from-scribefire.html" title="Test post from ScribeFire" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkYEQnoyeip7ImA9WB9aEE4.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-2724911624298142914</id><published>2007-12-29T21:22:00.000+05:30</published><updated>2007-12-30T21:25:03.492+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-30T21:25:03.492+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Today's karate syllabus</title><content type="html">KATA-VASA++&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-2724911624298142914?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/2724911624298142914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=2724911624298142914" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/2724911624298142914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/2724911624298142914?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/todays-karate-syllabus_29.html" title="Today's karate syllabus" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CkYBQX87cCp7ImA9WB9aEE4.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-5031748159374032979</id><published>2007-12-27T21:16:00.000+05:30</published><updated>2007-12-30T21:25:50.108+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-30T21:25:50.108+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Today's karate syllabus</title><content type="html">KATA-VASA+&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-5031748159374032979?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/5031748159374032979/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=5031748159374032979" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5031748159374032979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/5031748159374032979?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/todays-karate-syllabus_27.html" title="Today's karate syllabus" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkYBQX87cSp7ImA9WB9aEE4.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-3786714700357375060</id><published>2007-12-25T21:53:00.000+05:30</published><updated>2007-12-30T21:25:50.109+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-30T21:25:50.109+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Todays karate syllabus</title><content type="html">KATA-VASA - is a movement involving some blocks, punches and kicks.&lt;br /&gt;GYAKU is reverse. Any punch with opposite leg and hand in the front is called a GYAKU-???-ZUKI.&lt;br /&gt;&lt;br /&gt;MAE - Front&lt;br /&gt;YOKO - Side&lt;br /&gt;USHIRO - Back&lt;br /&gt;&lt;br /&gt;GERI - Kick&lt;br /&gt;&lt;br /&gt;MAE-GERI - Front kick&lt;br /&gt;&lt;br /&gt;Pledge: (I don't fully remember)&lt;br /&gt;I student of TATSUKAN-... hereby pledge, .... secrecy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-3786714700357375060?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/3786714700357375060/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=3786714700357375060" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/3786714700357375060?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/3786714700357375060?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/todays-karate-syllabus_25.html" title="Todays karate syllabus" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08GRn8-eyp7ImA9WB9bFUQ.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-4830178636291809902</id><published>2007-12-18T21:50:00.000+05:30</published><updated>2007-12-25T21:53:47.153+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-25T21:53:47.153+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Todays karate syllabus</title><content type="html">4 th block - with the folded fist coming from the ear to the opposite shoulder level blocking with back of the arm.&lt;br /&gt;shuto uke - knife hand block.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-4830178636291809902?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/4830178636291809902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=4830178636291809902" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4830178636291809902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4830178636291809902?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/todays-karate-syllabus_18.html" title="Todays karate syllabus" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak8NQnc-fCp7ImA9WB9bFUQ.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-4064717383139172397</id><published>2007-12-15T21:20:00.000+05:30</published><updated>2007-12-25T21:38:13.954+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-25T21:38:13.954+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Todays karate syllabus</title><content type="html">REI is to bow.&lt;br /&gt;YOI is the ready position.&lt;br /&gt;DACHI-REI is to bow in standing position.&lt;br /&gt;ZA-REI is to bow in the kneeling position.&lt;br /&gt;GI is the karate dress.&lt;br /&gt;OBI is the karate belt.&lt;br /&gt;&lt;br /&gt;upper block&lt;br /&gt;middle block&lt;br /&gt;lower block&lt;br /&gt;&lt;br /&gt;GIDAN-BA-REI&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-4064717383139172397?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/4064717383139172397/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=4064717383139172397" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4064717383139172397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4064717383139172397?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/todays-karate-syllabus.html" title="Todays karate syllabus" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkYCRHg_fip7ImA9WB9UE0U.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-1465393931569512322</id><published>2007-12-11T20:58:00.000+05:30</published><updated>2007-12-11T21:19:25.646+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-11T21:19:25.646+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>Third day in Karate class</title><content type="html">First, the master should be addressed as RENSHI. Second, the &lt;span style="font-weight: bold;"&gt;fist&lt;/span&gt; should be formed by tightly folding the first fold of the fingers (the first one from the tip), then the second and finally the third. The thumb should then be folded and pressed on the folded index finger - this makes a hard and solid fist. While attacking/defending, the back leg should be straight, the front leg should be slightly bent, both legs diagonally opposite and the feet should be straight pointing to the front.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-1465393931569512322?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/1465393931569512322/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=1465393931569512322" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/1465393931569512322?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/1465393931569512322?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/third-day-in-karate-class.html" title="Third day in Karate class" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CUQCQX86eCp7ImA9WB9UEk0.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-4642609640534426577</id><published>2007-12-06T20:25:00.000+05:30</published><updated>2007-12-09T17:59:20.110+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-09T17:59:20.110+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><category scheme="http://www.blogger.com/atom/ns#" term="japanese" /><title>Second day in karate class</title><content type="html">Learnt some more warmup exercises - They really are very effective. Learnt some punches (ZUKI) - upper (JODAN), middle (CHUDAN), lower (GIDAN) and the triple punch (SAN  ZUKI).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The Japanese numerals:&lt;/span&gt;&lt;br /&gt;1 - Ichi&lt;br /&gt;2 - Ni&lt;br /&gt;3 - San&lt;br /&gt;4 - Yon&lt;br /&gt;5 - Go&lt;br /&gt;6 - Roku&lt;br /&gt;7 - Shichi&lt;br /&gt;8 - Hachi&lt;br /&gt;9 - Ku&lt;br /&gt;10 - Ju&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-4642609640534426577?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/4642609640534426577/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=4642609640534426577" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4642609640534426577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/4642609640534426577?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/second-day-in-karate-class.html" title="Second day in karate class" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkMMQX49fip7ImA9WB9UEUw.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-6284964013122919723</id><published>2007-12-04T20:00:00.001+05:30</published><updated>2007-12-08T18:24:40.066+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-08T18:24:40.066+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="karate" /><title>First day in karate class</title><content type="html">This was a day come true. After long searches and delays, I finally found a karate school and that too a nice one. It's five minutes walk from my house and the style practiced here is &lt;a href="http://en.wikipedia.org/wiki/Isshin-ry%C5%AB"&gt;Isshinryu&lt;/a&gt;. I was thought some warm up exercises and the bowing method (also called as rei). One should bow before the teacher every time before talking to him and at the end of the class. Also at the end of the class everyone should bow to the hall (dojo) as a mark of respect. Rei is performed by keeping the feet in V shape with the heels touching each other, the hands on the side with the palms resting on the side of the thighs and with a slight forward bend with the eyes facing the feet and pronouncing something which sounded like "HOIZ".&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-6284964013122919723?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/6284964013122919723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=6284964013122919723" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6284964013122919723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6284964013122919723?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/12/first-day-in-karate-class.html" title="First day in karate class" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkAMRHw7eip7ImA9WB9WGU8.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-8513722691587687353</id><published>2007-11-24T22:45:00.000+05:30</published><updated>2007-11-24T22:49:45.202+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-24T22:49:45.202+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="world" /><category scheme="http://www.blogger.com/atom/ns#" term="views" /><title>The power of fear</title><content type="html">The belief in a supernatural power, that which holds everything in control, that which can overpower humans, that which brings fear in to minds, and that we name as God, has been responsible in holding the humans together and preventing us from destroying each other. Today, I have been watching a &lt;a href="http://www.bbcworld.com/Pages/ProgrammeMultiFeature.aspx?id=123"&gt;documentary&lt;/a&gt; about Tibet on BBC. In Tibet the mountains are considered goddess and the lakes are sacred. This belief is deeply rooted in every tibetian and hence will naturally keep him aware of his environment and prevent him from polluting the lakes. Imagine, Had trees been considered sacred how different the world would have been now. I usually favour the idea of educating people and making them aware of the effects of pollution and teaching them to be environment friendly. But in real life it's much easier to achieve the same effect through fear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-8513722691587687353?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/8513722691587687353/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=8513722691587687353" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/8513722691587687353?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/8513722691587687353?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/11/power-of-fear.html" title="The power of fear" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkcBQHo7fSp7ImA9WB9WF0k.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-2705623148643804878</id><published>2007-11-22T21:33:00.000+05:30</published><updated>2007-11-22T21:44:11.405+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-22T21:44:11.405+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="theday" /><title>One of those disappointing days</title><content type="html">This is one of those days when all news received are bad news. I just entered the office and the first shock was already awaiting my arrival - One of my colleagues mother passed away this morning. She was being treated for jaundice for the past one week. My heart felt condolence to Sivaraman and his family.&lt;br /&gt;&lt;br /&gt;There were more bad news awaiting when I came back after lunch - Multiple failures were reported in &lt;CUT&gt; submitted for &lt;CUT&gt; certification.&lt;br /&gt;&lt;br /&gt;More disappointments were awaiting in the evening.&lt;br /&gt;&lt;br /&gt;:-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-2705623148643804878?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/2705623148643804878/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=2705623148643804878" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/2705623148643804878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/2705623148643804878?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/11/one-of-those-disappointing-days.html" title="One of those disappointing days" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkYFSHc4fyp7ImA9WB9WFUo.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-6619227093431295818</id><published>2007-11-20T21:21:00.000+05:30</published><updated>2007-11-20T21:25:19.937+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-20T21:25:19.937+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="views" /><category scheme="http://www.blogger.com/atom/ns#" term="martial-arts" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><title>Finding a Karate school</title><content type="html">For quite some time I have been planning to learn Karate. I started seriously searching for a Karate school since last week. My main criteria were quality of the school and the travelling time and my main reason for learning Karate was to keep myself fit and to increase my reflexes. I picked up a bunch of contacts from the internet and started contacting. Most were far away from my home but I found around 3 schools within 30 minutes travel from home. Yesterday, on contacting one of the schools, I was given a few details and was asked to come in person to get the fee details. I thought that I have found my school. Today morning I went to their school in spite of the heavy monsoon downpour. The details goes like this: 3 classes per week with 1 hour practice every class. The fees was Rs. 2000 per 4 months. I was also informed that there is a one year course costing Rs. 18,000 and that black belt will be awarded at the end of the course. I thought "Man how simple is it to get a black belt", but I had doubts in my mind. I consulted with one of my friends who, as a child, has trained for 2 years. He too had doubts and I decided to ask the more informed people and &lt;a href="http://groups.google.com/group/rec.martial-arts/browse_thread/thread/3c4d3a3601e554b1/f35707bd893689d6"&gt;posted a query on the usenet&lt;/a&gt;. The response to which has made me rethink about this school. I am back to square one and have started my search again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-6619227093431295818?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/6619227093431295818/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=6619227093431295818" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6619227093431295818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6619227093431295818?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/11/finding-karate-school.html" title="Finding a Karate school" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkECRX0ycCp7ImA9WB9WFEU.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-6626152919970839670</id><published>2007-11-19T21:07:00.000+05:30</published><updated>2007-11-19T21:41:04.398+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-19T21:41:04.398+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="views" /><category scheme="http://www.blogger.com/atom/ns#" term="chennai" /><title>Driving you crazy</title><content type="html">With the ever increasing number of vehicles and lack of proper mass public transport system, Chennai roads are becoming worser every day. Lack of courtesy to the fellow road user has made the roads an unpleasant place. One can travel 5 km along any road and easily see one or two instance of quarrels. One of my fried has forwarded this - &lt;a href="http://driving-india.blogspot.com/"&gt;Driving a cultural change&lt;/a&gt;. It's not entirely impossible to get near the goal stated in the link but I believe that no number of rules or enforcement will change the situation. Instead the general attitude of the people should be changed. People should be thought to be considerate to others. &lt;a href="http://www.hindu.com/2007/11/19/stories/2007111954290500.htm"&gt;Todays news&lt;/a&gt; has brought in a little relief, not that the government has changed the rules overnight and the roads will be a different place from tomorrow but because the department has at least acknowledged the fact that we are lacking behind and something has to be done about it. And yes, the driving schools are the right place to start with.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"There is a net addition of about six-seven lakh vehicles on the streets every year."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thats a woofing sum. Isn't there a city planning / managing division?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-6626152919970839670?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://www.hindu.com/2007/11/19/stories/2007111954290500.htm" title="Driving you crazy" /><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/6626152919970839670/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=6626152919970839670" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6626152919970839670?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/6626152919970839670?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/11/driving-you-crazy.html" title="Driving you crazy" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEYERXY-eyp7ImA9WB9WEUk.&quot;"><id>tag:blogger.com,1999:blog-6640189.post-7955881096213445963</id><published>2007-11-15T20:40:00.000+05:30</published><updated>2007-11-15T21:25:04.853+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-15T21:25:04.853+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tech" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android in the wild</title><content type="html">With the release of "Android", Google has triggered another round of internet activity - Which ever site I happen to land on seems to be talking about Android. Here's one for my part, which, I also see, as an opportunity to revive my blog.&lt;br /&gt;&lt;br /&gt;Android is a software development kit from Google using which one can develop applications for mobile phones. Mobile phones have gone a long way from being a simple handy used to talk with each other to a fully blown device with capabilities on par with a desktop computer, hence this seems to be a logical move by Google.&lt;br /&gt;&lt;br /&gt;Google is not actually manufacturing the hardware but rather gives the software and the tools required to write softwares for the phone. This has opened up a lot of interest and enthusiasm and I can't just wait to see all the different kinds of applications that will be running on the phone and with the announcement of a prize money for the best application Google has intensified the race to write the best application for this platform.&lt;br /&gt;&lt;br /&gt;Android comes with an phone emulator where one can test the applications. The emulator seems to be based on qemu which emulates an ARM v5T chip - ARM926J, 96 MB RAM and a lot of other peripherals and runs Linux 2.6.23.&lt;br /&gt;&lt;br /&gt;Rather than this, I am actually looking forward for the release of the kernel and other sources that drives the phone.&lt;br /&gt;&lt;br /&gt;The future of mobile phone has changed this October 12.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6640189-7955881096213445963?l=vijairaj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://android-developers.blogspot.com/2007/11/posted-by-jason-chen-android-advocate.html#links" title="Android in the wild" /><link rel="replies" type="application/atom+xml" href="http://vijairaj.blogspot.com/feeds/7955881096213445963/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6640189&amp;postID=7955881096213445963" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7955881096213445963?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6640189/posts/default/7955881096213445963?v=2" /><link rel="alternate" type="text/html" href="http://vijairaj.blogspot.com/2007/11/android-in-wild.html" title="Android in the wild" /><author><name>Vijairaj</name><uri>http://www.blogger.com/profile/07107736124306715930</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_SBPyA5RgxaQ/SUyELO82YoI/AAAAAAAABa4/hwLdrqkgQiQ/S220/vj.jpg" /></author><thr:total>0</thr:total></entry></feed>

