java - validating digital signature using SAML in eclipse and IBM RAD -
java - validating digital signature using SAML in eclipse and IBM RAD -
i using java programme validate digital signature using public key (cer file). using opensaml 2.6.3 jars
import org.w3c.dom.document; import org.w3c.dom.element; import java.io.bytearrayinputstream; import java.io.file; import java.io.fileinputstream; import java.io.inputstream; import javax.xml.namespace.qname; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import javax.xml.validation.schema; import java.security.keyfactory; import java.security.publickey; import java.security.cert.certificatefactory; import java.security.cert.x509certificate; import java.security.spec.x509encodedkeyspec; import org.apache.commons.codec.binary.base64; import org.opensaml.defaultbootstrap; import org.opensaml.common.xml.samlschemabuilder; import org.opensaml.saml2.core.newencryptedid; import org.opensaml.saml2.core.response; import org.opensaml.xml.configuration; import org.opensaml.xml.xmlobject; import org.opensaml.xml.io.unmarshaller; import org.opensaml.xml.io.unmarshallerfactory; import org.opensaml.xml.parse.basicparserpool; import org.opensaml.xml.security.x509.basicx509credential; import org.opensaml.xml.signature.signature; import org.opensaml.xml.signature.signaturevalidator; import org.opensaml.xml.validation.validationexception; public class finaltester { public static void main(string[] args) { seek { //initialize opensaml library defaultbootstrap.bootstrap(); schema schema = samlschemabuilder.getsaml11schema(); //get parser pool manager basicparserpool parserpoolmanager = new basicparserpool(); parserpoolmanager.setnamespaceaware(true); parserpoolmanager.setignoreelementcontentwhitespace(true); parserpoolmanager.setschema(schema); ////get keyfactory object creates key objects, specifying rsa keyfactory keyfactory = keyfactory.getinstance("rsa"); string state= "phnhbwxwoljlc3bvbnnlihhtbg5zomfzcnq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphc3nlcnrpb24iielzc3vlsw5zdgfudd0imjaxnc0xmc0xn1qxodo1mtowoc4ymje5ntk1wiigrgvzdgluyxrpb249imh0dhbzoi8vcweubgv4axnuzxhpcy5jb20vc2ftbf9zawduaw4iienvbnnlbnq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdpjb25zzw50onvuc3bly2lmawvkiibjrd0iy2vvzgtoaw1rzw9iawdqb2zqz2hmy2djzgvubw5rbxbjbw1kznbrzyigvmvyc2lvbj0imi4wiib4bwxuczpzyw1scd0idxjuom9hc2lzom5hbwvzonrjolnbtuw6mi4wonbyb3rvy29sij4ncgk8yxnyddpjc3n1zxi+rgvsb2l0dgu8l2fzcnq6sxnzdwvypg0kctxtawduyxr1cmugeg1sbnm9imh0dha6ly93d3cudzmub3jnlziwmdavmdkveg1szhnpzymipg0kcqk8u2lnbmvksw5mbz4ncgkjctxdyw5vbmljywxpemf0aw9utwv0ag9kiefsz29yaxrobt0iahr0cdovl3d3dy53my5vcmcvmjawms8xmc94bwwtzxhjlwmxng4jiiavpg0kcqkjpfnpz25hdhvyzu1ldghvzcbbbgdvcml0ag09imh0dha6ly93d3cudzmub3jnlziwmdavmdkveg1szhnpzynyc2etc2hhmsiglz4ncgkjctxszwzlcmvuy2ugvvjjpsijy2vvzgtoaw1rzw9iawdqb2zqz2hmy2djzgvubw5rbxbjbw1kznbrzyi+dqojcqkjpfryyw5zzm9ybxm+dqojcqkjctxucmfuc2zvcm0gqwxnb3jpdghtpsjodhrwoi8vd3d3lnczlm9yzy8ymdawlza5l3htbgrzawcjzw52zwxvcgvklxnpz25hdhvyzsiglz4ncgkjcqkjpfryyw5zzm9ybsbbbgdvcml0ag09imh0dha6ly93d3cudzmub3jnlziwmdevmtaveg1slwv4yy1jmtruiyiglz4ncgkjcqk8l1ryyw5zzm9ybxm+dqojcqkjperpz2vzde1ldghvzcbbbgdvcml0ag09imh0dha6ly93d3cudzmub3jnlziwmdavmdkveg1szhnpzynzagexiiavpg0kcqkjctxeawdlc3rwywx1zt5xc0w2qu9nbevmwvdnee9cnmj6yxpwn2dnzku9pc9eawdlc3rwywx1zt4ncgkjctwvumvmzxjlbmnlpg0kcqk8l1npz25lzeluzm8+dqojctxtawduyxr1cmvwywx1zt5fzxz2mxq5amz3ymznc0h2axruwxfxsldbs0rkwk9zrmnlk25xei8yd1a1tjlhngdnntz5yzzbmjjisnh2auqrrjewevhcmjvkdg5xn1rac1blyunmtlpvrwrzwjjsblnptfzjtgrvehg2sgs1stdfcdlibtbirg5tyvppv0z4n2nbtnq2wwjzndzlkzj1t3jwovdrbdvotkfoymo3uwnaywdzznztnmq1mvr3zfbwz0nxqxnwc3bkew4zrflauvpkl2zqzdzcrgnuswn5eu1qvku4b3lra1dcl1vrn0h3add6nwfwyyt4ctu0s1fom1nwuwllvjm2tfjxdg5svvp3z3hebueyrertyvlrqwpgm2vmzgpbexhsogxmtxdtajlnvhzmdtjmshldmgm2zxbudhyzsnfvzmtynkttrhg2vm9hdjqxagxzaehwmw9wnuxqz2jmmve9ptwvu2lnbmf0dxjlvmfsdwu+dqojpc9tawduyxr1cmu+dqojphnhbwxwoln0yxr1cz4ncgkjphnhbwxwoln0yxr1c0nvzgugvmfsdwu9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdpzdgf0dxm6u3vjy2vzcyiglz4ncgk8l3nhbwxwoln0yxr1cz4ncgk8yxnyddpbc3nlcnrpb24gsxnzdwvjbnn0yw50psiymde0ltewlte3vde4ojuxoja4ljiymtk1otvaiibjrd0iz2tma2rub2psz2frbxbwcglkawvoywvobwjobgvrzgnizghmz2foacigvmvyc2lvbj0imi4wij4ncgkjpgfzcnq6sxnzdwvypkrlbg9pdhrlpc9hc3j0oklzc3vlcj4ncgkjpgfzcnq6u3viamvjdd4ncgkjctxhc3j0ok5hbwvjrcbgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojeumtpuyw1lawqtzm9ybwf0omvtywlsqwrkcmvzcyi+ymhnyw5kagladhn0lmrlbg9pdhrllmnvbtwvyxnyddpoyw1lsuq+dqojcqk8yxnyddptdwjqzwn0q29uzmlybwf0aw9uie1ldghvzd0idxjuom9hc2lzom5hbwvzonrjolnbtuw6mi4womntomjlyxjlcii+dqojcqkjpgfzcnq6u3viamvjdenvbmzpcm1hdglvbkrhdgegtm90t25pckfmdgvypsiymde0ltewlte3vde4oju2oja4ljiymtk1otvaiibszwnpcgllbnq9imh0dhbzoi8vcweubgv4axnuzxhpcy5jb20vc2ftbf9zawduaw4iic8+dqojcqk8l2fzcnq6u3viamvjdenvbmzpcm1hdglvbj4ncgkjpc9hc3j0oln1ymply3q+dqojctxhc3j0oknvbmrpdglvbnmgtm90t25pckfmdgvypsiymde0ltewlte3vde4oju2oja4ljiymtk1otvaiibob3rczwzvcmu9ijiwmtqtmtatmtdumtg6ndy6mdgumjixotu5nvoipg0kcqkjpgfzcnq6qxvkawvuy2vszxn0cmljdglvbj4ncgkjcqk8yxnyddpbdwrpzw5jzt5odhrwczovl3fhlmxleglzbmv4axmuy29tl3nhbwxfc2lnbmlupc9hc3j0okf1zgllbmnlpg0kcqkjpc9hc3j0okf1zgllbmnlumvzdhjpy3rpb24+dqojctwvyxnyddpdb25kaxrpb25zpg0kcqk8yxnyddpbdhryawj1dgvtdgf0zw1lbnq+dqojcqk8yxnyddpbdhryawj1dgugtmftzt0irmlyc3qgtmftzsigtmftzuzvcm1hdd0idxjuom9hc2lzom5hbwvzonrjolnbtuw6mi4womf0dhjuyw1llwzvcm1hddpiyxnpyyi+dqojcqkjpgfzcnq6qxr0cmlidxrlvmfsdwugeg1sbnm6cte9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hiibknxaxonr5cgu9inexonn0cmluzyigeg1sbnm6zdvwmt0iahr0cdovl3d3dy53my5vcmcvmjawms9ytuxty2hlbwetaw5zdgfuy2uipkjyzw50pc9hc3j0okf0dhjpynv0zvzhbhvlpg0kcqkjpc9hc3j0okf0dhjpynv0zt4ncgkjctxhc3j0okf0dhjpynv0zsboyw1lpsjmyxn0ie5hbwuiie5hbwvgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphdhrybmftzs1mb3jtyxq6ymfzawmipg0kcqkjctxhc3j0okf0dhjpynv0zvzhbhvlihhtbg5zoneypsjodhrwoi8vd3d3lnczlm9yzy8ymdaxl1hntfnjagvtysigzdvwmtp0exblpsjxmjpzdhjpbmciihhtbg5zomq1cde9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hlwluc3rhbmnlij5sdwjpbzwvyxnyddpbdhryawj1dgvwywx1zt4ncgkjctwvyxnyddpbdhryawj1dgu+dqojcqk8yxnyddpbdhryawj1dgugtmftzt0irw1hawwiie5hbwvgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphdhrybmftzs1mb3jtyxq6ymfzawmipg0kcqkjctxhc3j0okf0dhjpynv0zvzhbhvlihhtbg5zonezpsjodhrwoi8vd3d3lnczlm9yzy8ymdaxl1hntfnjagvtysigzdvwmtp0exblpsjxmzpzdhjpbmciihhtbg5zomq1cde9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hlwluc3rhbmnlij5iagdhbmroaub0c3quzgvsb2l0dguuy29tpc9hc3j0okf0dhjpynv0zvzhbhvlpg0kcqkjpc9hc3j0okf0dhjpynv0zt4ncgkjctxhc3j0okf0dhjpynv0zsboyw1lpsjqzxjzb25uzwxodw1izxiiie5hbwvgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphdhrybmftzs1mb3jtyxq6ymfzawmipg0kcqkjctxhc3j0okf0dhjpynv0zvzhbhvlihhtbg5zone0psjodhrwoi8vd3d3lnczlm9yzy8ymdaxl1hntfnjagvtysigzdvwmtp0exblpsjxndpzdhjpbmciihhtbg5zomq1cde9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hlwluc3rhbmnlij4wmdmwnjg2ntwvyxnyddpbdhryawj1dgvwywx1zt4ncgkjctwvyxnyddpbdhryawj1dgu+dqojcqk8yxnyddpbdhryawj1dgugtmftzt0iugvyc29usuqiie5hbwvgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphdhrybmftzs1mb3jtyxq6dw5zcgvjawzpzwqipg0kcqkjctxhc3j0okf0dhjpynv0zvzhbhvlihhtbg5zone1psjodhrwoi8vd3d3lnczlm9yzy8ymdaxl1hntfnjagvtysigzdvwmtp0exblpsjxntpzdhjpbmciihhtbg5zomq1cde9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hlwluc3rhbmnlij5qzxjzb25jrdwvyxnyddpbdhryawj1dgvwywx1zt4ncgkjctwvyxnyddpbdhryawj1dgu+dqojcqk8yxnyddpbdhryawj1dgugtmftzt0itg9jyxrpb24iie5hbwvgb3jtyxq9invybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphdhrybmftzs1mb3jtyxq6dw5zcgvjawzpzwqipg0kcqkjctxhc3j0okf0dhjpynv0zvzhbhvlihhtbg5zone2psjodhrwoi8vd3d3lnczlm9yzy8ymdaxl1hntfnjagvtysigzdvwmtp0exblpsjxnjpzdhjpbmciihhtbg5zomq1cde9imh0dha6ly93d3cudzmub3jnlziwmdevwe1mu2nozw1hlwluc3rhbmnlij4xnc8xnfmwntnbpc9hc3j0okf0dhjpynv0zvzhbhvlpg0kcqkjpc9hc3j0okf0dhjpynv0zt4ncgkjpc9hc3j0okf0dhjpynv0zvn0yxrlbwvudd4ncgkjpgfzcnq6qxv0ag5tdgf0zw1lbnqgu2vzc2lvbkluzgv4psjizwnpcgxlbw5lbgrwa2jhawhtaghmzmvpcg5magtwam1tym1lywhuiibbdxrobkluc3rhbnq9ijiwmtqtmtatmtdumtg6nte6mdgumjixotu5nvoipg0kcqkjpgfzcnq6qxv0ag5db250zxh0pg0kcqkjctxhc3j0okf1dghuq29udgv4densyxnzumvmpnvybjpvyxnpczpuyw1lczp0yzptqu1mojiumdphyzpjbgfzc2vzokludgvybmv0uhjvdg9jb2w8l2fzcnq6qxv0ag5db250zxh0q2xhc3nszwy+dqojcqk8l2fzcnq6qxv0ag5db250zxh0pg0kcqk8l2fzcnq6qxv0ag5tdgf0zw1lbnq+dqojpc9hc3j0okfzc2vydglvbj4ncjwvc2ftbha6umvzcg9uc2u+"; byte[] xmlstring = base64.decodebase64(state); string s = new string(xmlstring); document document = parserpoolmanager.parse(new bytearrayinputstream(s.getbytes("utf-8"))); element metadataroot = (element) document.getdocumentelement(); qname qname= new qname(metadataroot.getnamespaceuri(), metadataroot.getlocalname(), metadataroot.getprefix()); // //get unmarshaller unmarshaller unmarshaller = configuration.getunmarshallerfactory().getunmarshaller(qname); // //unmarshall using document root element response response = (response)unmarshaller.unmarshall(metadataroot); //get signature validate response object signature signature = response.getsignature(); /***************************************************************************************************/ //grab certificate file file certificatefile = new file("c:\\samlwork\\domain.com_b64.cer"); //get certificate file inputstream inputstream2 = new fileinputstream(certificatefile); certificatefactory certificatefactory = certificatefactory.getinstance("x.509"); x509certificate certificate = (x509certificate)certificatefactory.generatecertificate(inputstream2); inputstream2.close(); //pull out public key part of certificate keyspec x509encodedkeyspec publickeyspec = new x509encodedkeyspec(certificate.getpublickey().getencoded()); //generate public key validate signatures publickey publickey = keyfactory.generatepublic(publickeyspec); //create credentials basicx509credential publiccredential = new basicx509credential(); //add public key value publiccredential.setpublickey(publickey); //create signaturevalidator signaturevalidator signaturevalidator = new signaturevalidator(publiccredential); //try validate seek { signaturevalidator.validate(signature); } grab (validationexception ve) { system.out.println("signature not valid."); system.out.println(ve.getmessage()); return; } //no validation exception thrown system.out.println("signature valid."); } grab (exception ex) { ex.printstacktrace(); } } } this code if run in eclipse says signature valid. if run in rad8.2 says signature invalid. please help me this. using different workspaces in rad , eclipse
java eclipse saml opensaml ibm-rad
Comments
Post a Comment