Berin, I've attached the following files:
signature1.xml - contains a signature that validates successfully signature2.xml - contains a signature that does NOT validate CreateSignature1.java - class that created signature1.xml CreateSignature2.java - class that created signature2.xml VerifySignature.java - used for verifying the signatures (Set the SIG_TO_VALIDATE variable to 1 or 2 to specify which signature file to verify) Points to note: 1. Both CreateSignature1.java and CreateSignature2.java create an empty SOAP envelope, and insert a simple enveloped signature. The resulting content being signed is identical in each case. The only difference between the two is that CreateSignature1.java uses the DOM api to create the soap envelope, whereas CreateSignature2.java uses the SAAJ api. 2. the files generated by CreateSignature1.java and CreateSignature2.java are identical except for the contents of the SignatureValue element. The DigestValue in each created signature is the same, as I would expect (since the content being signed is the same). 3. It seems that each time I generate a signature, the generated SignatureValue is different, even when the content being signed and the DigestValue does not change. For example, each time I run CreateSignature1.java, the generated SignatureValue is different from last time, even though the content and generated DigestValue remains the same. Is this expected behaviour? Seeing as the signature generated by CreateSignature1.java verifies ok, I presume that this is not necessarily a problem. Thanks very much for your help. Steve -----Original Message----- From: Berin Lautenbach [mailto:[EMAIL PROTECTED] Sent: Wednesday, 7 April 2004 11:03 p.m. To: [EMAIL PROTECTED] Subject: Re: Enveloped signature verification problem Stephen, How do you create the signature? Can you put a copy of the signature to the list as a file? My mail client is chopping stuff all over the place when I try to cut and paste :<. Cheers, Berin Stephen Chell (DSL AK) wrote: > Apologies for this, but I've been bashing my head against a brick wall > most of the day trying to solve this. > > Can anyone tell my why the enveloped signature in the following XML > document wont verify? When I call > signature.checkSignatureValue(cert) it returns false. The problem > seems to be related to the fact that I'm using SOAP, because I can > create another simple enveloped signature without using SOAP and it > verifies fine. Any help would be much appreciated. > > Thanks in advance ... > Steve > > > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> > <SOAP-ENV:Header/> > <SOAP-ENV:Body/> > <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> > <SignedInfo> > <CanonicalizationMethod > Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> > <SignatureMethod > Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> > <Reference URI=""> > <Transforms> > <Transform > Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> > <Transform > Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> > </Transforms> > <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> > > <DigestValue>3G4kS4EIcy5CFXHrWOkD+1n++hc=</DigestValue> > </Reference> > </SignedInfo> > > <SignatureValue>WDLlcnjJXhIfX/RidflYQyWkZ7gxSSQCX3j3A0NddMG8XTMxu1KJkA > ==</Si > gnatureValue> > <KeyInfo> > <X509Data> > <X509Certificate> > MIIC9jCCArQCBDruqiowCwYHKoZIzjgEAwUAMGExCzAJBgNVBAYTAkRFMR0wGwYDVQQKEx > RVbml2 > ZXJzaXR5IG9mIFNpZWdlbjEQMA4GA1UECxMHRkIxMk5VRTEhMB8GA1UEAxMYQ2hyaXN0aWFuIEdl > dWVyLVBvbGxtYW5uMB4XDTAxMDUwMTEyMjA1OFoXDTA2MTAyMjEyMjA1OFowYTELMAkGA1UEBhMC > REUxHTAbBgNVBAoTFFVuaXZlcnNpdHkgb2YgU2llZ2VuMRAwDgYDVQQLEwdGQjEyTlVFMSEwHwYD > VQQDExhDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4wggG3MIIBLAYHKoZIzjgEATCCAR8CgYEA/X9T > gR11EilS30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuAHTRv > 8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOuK2HX > Ku/yIgMZndFIAccCFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QKBgQD34aCF1ps93su8q1w2uFe5eZSv > u/o66oL5V0wLPQeCZ1FZV4661FlP5nEHEIGAtEkWcSPoTCgWE7fPCTKMyKbhPBZ6i1R8jSjgo64e > K7OmdZFuo38L+iE1YvH7YnoBJDvMpPG+qFGQiaiD3+Fa5Z8GkotmXoB7VSVkAUw7/s9JKg > K7OmdZFuo38L+iE1YvH7YnoBJDvMpPG+qFGQiaiD3+OBhAAC > gYASWfn+G1k/nWntj9jX7Nk5JKaiLZ9BLR16eJJxqff33THLfdGs98Xmh2oRWZVh9PMV8o > gYASWfn+TP3hpR > cRipjZUZVEIqsBlOGTVLCg4H5TJ81JWOiprh+mkhClNqUr8l5Hu7FBSvQB6inryeva7j0a > cRipjZUZVEIqsBlOGTVLCg4H5TJ81JWOiprh+KNiIvK > 8vfHTiUZpnyNRhkveBlM0jALBgcqhkjOOAQDBQADLwAwLAIUPDd/UmB9GeHqvGjny30Bvj > t0AkUC > FA9ab72kKuB5geYGeckbBrcgPnZk > </X509Certificate> > </X509Data> > </KeyInfo> > </Signature> > </SOAP-ENV:Envelope> > > begin 600 signature1.xml M/%-/05`M14Y6.D5N=F5L;W!E('AM;&YS.E-/05`M14Y6/2)H='1P.B\O<V-H M96UA<RYX;6QS;V%P+F]R9R]S;V%P+V5N=F5L;W!E+R(^/%-/05`M14Y6.DAE M861E<CX\+U-/05`M14Y6.DAE861E<CX\4T]!4"U%3E8Z0F]D>3X\+U-/05`M M14Y6.D)O9'D^/%-I9VYA='5R92!X;6QN<STB:'1T<#HO+W=W=RYW,RYO<F<O M,C`P,"\P.2]X;6QD<VEG(R(^"CQ3:6=N961);F9O/@H\0V%N;VYI8V%L:7IA M=&EO;DUE=&AO9"!!;&=O<FET:&T](FAT='`Z+R]W=W<N=S,N;W)G+U12+S(P M,#$O4D5#+7AM;"UC,31N+3(P,#$P,S$U(CX\+T-A;F]N:6-A;&EZ871I;VY- M971H;V0^"CQ3:6=N871U<F5-971H;[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W M+G<S+F]R9R\R,#`P+S`Y+WAM;&1S:6<C9'-A+7-H83$B/CPO4VEG;F%T=7)E M365T:&]D/@H\4F5F97)E;F-E(%5223TB(CX*/%1R86YS9F]R;7,^"CQ4<F%N M<V9O<[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W+G<S+F]R9R\R,#`P+S`Y+WAM M;&1S:6<C96YV96QO<&5D+7-I9VYA='5R92(^/"]4<F%N<V9O<FT^"CQ4<F%N M<V9O<[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W+G<S+F]R9R]44B\R,#`Q+U)% M0RUX;6PM8S$T;BTR,#`Q,#,Q-2(^/"]4<F%N<V9O<FT^"CPO5')A;G-F;W)M M<SX*/$1I9V5S=$UE=&AO9"!!;&=O<FET:&T](FAT='`Z+R]W=W<N=S,N;W)G M+S(P,#`O,#DO>&UL9'-I9R-S:&$Q(CX\+T1I9V5S=$UE=&AO9#X*/$1I9V5S M=%9A;'5E/C-'-&M3-$5)8WDU0T982')73VM$*S%N*RMH8ST\+T1I9V5S=%9A M;'5E/@H\+U)E9F5R96YC93X*/"]3:6=N961);F9O/@H\4VEG;F%T=7)E5F%L M=64^23971E509U5P=VYQ;V14<7,U2S9)3F5N,FYL-T]8:TMQ9C1/24=V1&9N M;G=P0GEU06=F.7EW/3T\+U-I9VYA='5R959A;'5E/@H\2V5Y26YF;SX*/[EMAIL PROTECTED] M,#E$871A/@H\6#4P.4-E<G1I9FEC871E/@I-24E#.6I#0T%R44-"1')U<6EO M=T-W64A+;UI)>FIG14%W54%-1T5X0WI!2D)G3E9"05E406M21DU2,'='=UE$ M5E%12T5X4E9B;6PR"EI82GIA6%(U24<Y;4E&3G!:5V1L8FI%44U!-$=!,55% M0WA-2%)K27A-:S564E1%:$U".$=!,55%07A-65$R:'EA6$XP85=&=4E%9&P* M9%=6>4Q60G9B1WAT65<U=4U"-%A$5$%X3415=TU417E-:D$Q3T9O6$1403)- M5$%Y36I%>4UJ03%/1F]W651%3$U!:T=!,55%0FA-0PI2155X2%1!8D)G3E9" M06]41D96=6%86FQC;DYP9$AK9V(R66=5,FQL6C)6=4U207=$9UE$5E%13$5W M9$=1:D5Y5&Q61DU317=(=UE$"E91441%>&A$84A*<&,S4G!95S1G4C)6,5I8 M27151SES8D<Q:&)M-'=G9T<S34E)0DQ!64A+;UI)>FIG14%40T-!4CA#9UE% M02]8.50*9U(Q,45I;%,S,'%C3'5Z:S4O65)T,4DX-S!107=X-"]G3%I22FUL M1EA506E59G1:4%DQ62MR+T8Y8F]W.7-U8E97>EAG5'[EMAIL PROTECTED];5IG=#)U M6E5+5VMN-2]O0DAS44ES2E!U-FY8+W)F1T<O9S=6*V9'<4M95D1W5#=G+V)4 M>%(W1$%J5E5%,6]7:U1,,F1F3W5+,DA8"DMU+WE)9TU:;F1&24%C8T-&44-8 M649#4$9334QZ3$M3=5E+:38T44PX1F=C.5%+0F=11#,T84-&,7!S.3-S=3AQ M,7<R=49E-65:4W8*=2]O-C9O3#56,'=,4%%E0UHQ1EI6-#8V,49L4#5N14A% M24=!=$5K5V-34&]40V=713=F4$-42TUY2V)H4$):-FDQ4CAJ4VIG;S8T90I+ M-T]M9%I&=6\S.$PK:44Q679(-UEN;T)*1'9-<%!'*W%&1U%I86E$,RM&835: M.$=K;W1M6&]"-U935FM!57<W+W,Y2DMG3T)H04%#"F=905-79FXK1S%K+VY7 M;G1J.6I8-TYK-4I+86E,6CE"3%(Q-F5*2GAQ9F8S,U1(3&9D1W,Y.%AM:#)O M4E=:[EMAIL PROTECTED]&]44#-H<%(*8U)I<&I:55I614EQ<T)L3T=45DQ#9S1(-51* M.#%*5T]I<')H*VUK:$-L3G%5<CAL-4AU-T9"4W910C9I;G)Y979A-VHP84M. M:4EV2PHX=F9(5&E56G!N>4Y2:&MV94)L33!J04Q"9V-Q:&MJ3T]!441"44%$ M3'=!=TQ!25501&0O56U".4=E2'%V1VIN>3,P0G9J=#!!:U5#"D9!.6%B-S)K M2W5"-6=E64=E8VMB0G)C9U!N6FL*/"]8-3`Y0V5R=&EF:6-A=&4^"CPO6#4P M.41A=&$^"CPO2V5Y26YF;SX*/"]3:6=N871U<F4^/"]33T%0+45.5CI%;G9E %;&]P93X= ` end begin 600 signature2.xml M/%-/05`M14Y6.D5N=F5L;W!E('AM;&YS.E-/05`M14Y6/2)H='1P.B\O<V-H M96UA<RYX;6QS;V%P+F]R9R]S;V%P+V5N=F5L;W!E+R(^/%-/05`M14Y6.DAE M861E<CX\+U-/05`M14Y6.DAE861E<CX\4T]!4"U%3E8Z0F]D>3X\+U-/05`M M14Y6.D)O9'D^/%-I9VYA='5R92!X;6QN<STB:'1T<#HO+W=W=RYW,RYO<F<O M,C`P,"\P.2]X;6QD<VEG(R(^"CQ3:6=N961);F9O/@H\0V%N;VYI8V%L:7IA M=&EO;DUE=&AO9"!!;&=O<FET:&T](FAT='`Z+R]W=W<N=S,N;W)G+U12+S(P M,#$O4D5#+7AM;"UC,31N+3(P,#$P,S$U(CX\+T-A;F]N:6-A;&EZ871I;VY- M971H;V0^"CQ3:6=N871U<F5-971H;[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W M+G<S+F]R9R\R,#`P+S`Y+WAM;&1S:6<C9'-A+7-H83$B/CPO4VEG;F%T=7)E M365T:&]D/@H\4F5F97)E;F-E(%5223TB(CX*/%1R86YS9F]R;7,^"CQ4<F%N M<V9O<[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W+G<S+F]R9R\R,#`P+S`Y+WAM M;&1S:6<C96YV96QO<&5D+7-I9VYA='5R92(^/"]4<F%N<V9O<FT^"CQ4<F%N M<V9O<[EMAIL PROTECTED];W)I=&AM/2)H='1P.B\O=W=W+G<S+F]R9R]44B\R,#`Q+U)% M0RUX;6PM8S$T;BTR,#`Q,#,Q-2(^/"]4<F%N<V9O<FT^"CPO5')A;G-F;W)M M<SX*/$1I9V5S=$UE=&AO9"!!;&=O<FET:&T](FAT='`Z+R]W=W<N=S,N;W)G M+S(P,#`O,#DO>&UL9'-I9R-S:&$Q(CX\+T1I9V5S=$UE=&AO9#X*/$1I9V5S M=%9A;'5E/C-'-&M3-$5)8WDU0T982')73VM$*S%N*RMH8ST\+T1I9V5S=%9A M;'5E/@H\+U)E9F5R96YC93X*/"]3:6=N961);F9O/@H\4VEG;F%T=7)E5F%L M=64^0GIT4$DK;V(X,C5:6F1,374T2F0R6C)X6&513W%B*W=,,&A/94A:=FPS M,&Q90D9P-S8Y<$EW/3T\+U-I9VYA='5R959A;'5E/@H\2V5Y26YF;SX*/[EMAIL PROTECTED] M,#E$871A/@H\6#4P.4-E<G1I9FEC871E/@I-24E#.6I#0T%R44-"1')U<6EO M=T-W64A+;UI)>FIG14%W54%-1T5X0WI!2D)G3E9"05E406M21DU2,'='=UE$ M5E%12T5X4E9B;6PR"EI82GIA6%(U24<Y;4E&3G!:5V1L8FI%44U!-$=!,55% M0WA-2%)K27A-:S564E1%:$U".$=!,55%07A-65$R:'EA6$XP85=&=4E%9&P* M9%=6>4Q60G9B1WAT65<U=4U"-%A$5$%X3415=TU417E-:D$Q3T9O6$1403)- M5$%Y36I%>4UJ03%/1F]W651%3$U!:T=!,55%0FA-0PI2155X2%1!8D)G3E9" M06]41D96=6%86FQC;DYP9$AK9V(R66=5,FQL6C)6=4U207=$9UE$5E%13$5W M9$=1:D5Y5&Q61DU317=(=UE$"E91441%>&A$84A*<&,S4G!95S1G4C)6,5I8 M27151SES8D<Q:&)M-'=G9T<S34E)0DQ!64A+;UI)>FIG14%40T-!4CA#9UE% M02]8.50*9U(Q,45I;%,S,'%C3'5Z:S4O65)T,4DX-S!107=X-"]G3%I22FUL M1EA506E59G1:4%DQ62MR+T8Y8F]W.7-U8E97>EAG5'[EMAIL PROTECTED];5IG=#)U M6E5+5VMN-2]O0DAS44ES2E!U-FY8+W)F1T<O9S=6*V9'<4M95D1W5#=G+V)4 M>%(W1$%J5E5%,6]7:U1,,F1F3W5+,DA8"DMU+WE)9TU:;F1&24%C8T-&44-8 M649#4$9334QZ3$M3=5E+:38T44PX1F=C.5%+0F=11#,T84-&,7!S.3-S=3AQ M,7<R=49E-65:4W8*=2]O-C9O3#56,'=,4%%E0UHQ1EI6-#8V,49L4#5N14A% M24=!=$5K5V-34&]40V=713=F4$-42TUY2V)H4$):-FDQ4CAJ4VIG;S8T90I+ M-T]M9%I&=6\S.$PK:44Q679(-UEN;T)*1'9-<%!'*W%&1U%I86E$,RM&835: M.$=K;W1M6&]"-U935FM!57<W+W,Y2DMG3T)H04%#"F=905-79FXK1S%K+VY7 M;G1J.6I8-TYK-4I+86E,6CE"3%(Q-F5*2GAQ9F8S,U1(3&9D1W,Y.%AM:#)O M4E=:[EMAIL PROTECTED]&]44#-H<%(*8U)I<&I:55I614EQ<T)L3T=45DQ#9S1(-51* M.#%*5T]I<')H*VUK:$-L3G%5<CAL-4AU-T9"4W910C9I;G)Y979A-VHP84M. M:4EV2PHX=F9(5&E56G!N>4Y2:&MV94)L33!J04Q"9V-Q:&MJ3T]!441"44%$ M3'=!=TQ!25501&0O56U".4=E2'%V1VIN>3,P0G9J=#!!:U5#"D9!.6%B-S)K M2W5"-6=E64=E8VMB0G)C9U!N6FL*/"]8-3`Y0V5R=&EF:6-A=&4^"CPO6#4P M.41A=&$^"CPO2V5Y26YF;SX*/"]3:6=N871U<F4^/"]33T%0+45.5CI%;G9E %;&]P93X= ` end begin 600 CreateSignature1.java M<&%C:V%G92!T97-T.PT*#0II;7!O<G0@:F%V82YI;RXJ.PT*:6UP;W)T(&IA M=F$N<V5C=7)I='DN*CL-"FEM<&]R="!J879A+G-E8W5R:71Y+F-E<G0N*CL- M"FEM<&]R="!J879A+G5T:6PN*CL-"FEM<&]R="!O<F<N87!A8VAE+GAP871H M+EA0871H05!).PT*:6UP;W)T(&]R9RYW,V,N9&]M+BH[#0II;7!O<G0@;W)G M+F%P86-H92YX;6PN<V5C=7)I='DN<VEG;F%T=7)E+BH[#0II;7!O<G0@;W)G M+F%P86-H92YX;6PN<V5C=7)I='DN=71I;',N*CL-"FEM<&]R="!O<F<N87!A M8VAE+GAM;"YS96-U<FET>2YT<F%N<V9O<FUS+BH[#0II;7!O<G0@;W)G+F%P M86-H92YX;6PN<V5C=7)I='DN26YI=#L-"@[EMAIL PROTECTED]:&ES(&-L87-S M(&-R96%T97,@[EMAIL PROTECTED]<&5D('-I9VYA='5R92!T:&%T(&-A;B!B92!S M=6-C97-S9G5L;'[EMAIL PROTECTED]:69I960-"B`J(&)Y(%9E<FEF>5-I9VYA='5R92YJ [EMAIL PROTECTED]("HO#0IP=6)L:6,@8VQA<W,@0W)E871E4VEG;F%T=7)E,2![#0H- M"B`@('!U8FQI8R!S=&%T:6,@=F]I9"!M86EN*%-T<FEN9R!U;G5S961;72D@ M=&AR;W=S($5X8V5P=&EO;B![#0H@("`@("!#;VYS=&%N=',N<V5T4VEG;F%T M=7)E4W!E8TY3<')E9FEX*"(B*3L-"@T*("`@("[EMAIL PROTECTED];&[EMAIL PROTECTED]&AE('!A<F%M M971E<G,@9F]R('1H92!K97ES=&]R90T*("`@("[EMAIL PROTECTED]:6YG(&ME>7-T;W)E M5'EP92`](")*2U,B.PT*("`@("[EMAIL PROTECTED]:6YG(&ME>7-T;W)E1FEL92`](")D M871A+V]R9R]A<&%C:&4O>&UL+W-E8W5R:71Y+W-A;7!L97,O:6YP=70O:V5Y M<W1O<F4N:FMS(CL-"B`@("`@(%-T<FEN9R!K97ES=&]R95!A<W,@/2`B>&UL M<V5C=7)I='DB.PT*("`@("[EMAIL PROTECTED]:6YG('!R:79A=&5+97E!;&EA<R`](")T M97-T(CL-"B`@("`@(%-T<FEN9R!P<FEV871E2V5Y4&%S<R`](")X;6QS96-U M<FET>2([#0H@("`@("!3=')I;F<@8V5R=&EF:6-A=&5!;&EA<R`](")T97-T M(CL-"B`@("`@($9I;&4@<VEG;F%T=7)E1FEL92`](&YE=R!&:6QE*")D871A M+W-I9VYA='5R93$N>&UL(BD[#0H-"B`@("`@("\O;&]A9"!T:&4@:V5Y<W1O M<F4-"B`@("`@($ME>5-T;W)E(&MS([EMAIL PROTECTED]<F4N9V5T26YS=&%N8V4H M:V5Y<W1O<F54>7!E*3L-"B`@("`@($9I;&5);G!U=%-T<F5A;2!F:7,@/2!N M97<@1FEL94EN<'5T4W1R96%M*&ME>7-T;W)E1FEL92D[#0H@("`@("!K<RYL M;V%D*&9I<RP@:V5Y<W1O<F5087-S+G1O0VAA<D%R<F%Y*"DI.PT*#0H@("`@ M("`O+V=E="!T:&4@<')[EMAIL PROTECTED]('-I9VYI;F<N#0H@("`@("!0 M<FEV871E2V5Y('!R:79A=&5+97D@/2`H4')I=F%T94ME>2D@:W,N9V5T2V5Y M*'!R:79A=&5+97E!;&EA<RP-"B`@("`@("`@("`@("`@("`@("`@("`@("`@ M("`@("`@("`@("`@("`@("`@('!R:79A=&5+97E087-S+G1O0VAA<D%R<F%Y M*"DI.PT*("`@("`@:[EMAIL PROTECTED]>&UL+G!A<G-E<G,N1&]C=6UE;G1"=6EL9&5R M1F%C=&]R>2!D8F8@/0T*("`@("`@("`@:[EMAIL PROTECTED]>&UL+G!A<G-E<G,N1&]C M=6UE;G1"=6EL9&5R1F%C=&]R>2YN97=);[EMAIL PROTECTED]@("`@("`O M+R!.;W1E.B!E=F5N(&EF('1H:7,@:7,@8V]M;65N=&5D(&]U="!I="!S=&EL M;"!W;W)K<PT*("`@("[EMAIL PROTECTED]&)F+G-E=$YA;65S<&%C94%W87)E*'1R=64I.R`@ M#0H-"B`@("`@(&IA=F%X+GAM;"YP87)S97)S+D1O8W5M96YT0G5I;&1E<B!D M8B`](&1B9BYN97=$;V-U;65N=$)U:6QD97(H*3L-"B`@("`@(&]R9RYW,V,N M9&]M+D1O8W5M96YT(&1O8R`](&1B+FYE=T1O8W5M96YT*"D[#0H-"B`@("`@ M($5L96UE;G0@<F]O="`](&1O8RYC<F5A=&5%;&5M96YT3E,H(FAT='`Z+R]S M8VAE;6%S+GAM;'-O87`N;W)G+W-O87`O96YV96QO<&4O(BP-"B`@("`@("`@ M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(E-/05`M14Y6.D5N M=F5L;W!E(BD[#0H-"B`@("`@(')O;W0N<V5T071T<FEB=71E3E,H0V]N<W1A M;G1S+DYA;65S<&%C95-P96-.4RP@(GAM;&YS.E-/05`M14Y6(BP@(FAT='`Z M+R]S8VAE;6%S+GAM;'-O87`N;W)G+W-O87`O96YV96QO<&4O(BD[#0H@("`@ M("!D;V,N87!P96YD0VAI;&0H<F]O="D[#0H-"B`@("`@($5L96UE;G0@:&5A M9&5R([EMAIL PROTECTED]&]C+F-R96%T945L96UE;[EMAIL PROTECTED]:'1T<#HO+W-C:&5M87,N>&UL M<V]A<"YO<F<O<V]A<"]E;G9E;&]P92\B+`T*("`@("`@("`B4T]!4"U%3E8Z M2&5A9&5R(BD[#0H@("`@("!R;V]T+F%P<&5N9$-H:6QD*&AE861E<BD[#0H- M"B`@("`@($5L96UE;[EMAIL PROTECTED]>2`](&1O8RYC<F5A=&5%;&5M96YT3E,H(FAT M='`Z+R]S8VAE;6%S+GAM;'-O87`N;W)G+W-O87`O96YV96QO<&4O(BP-"B`@ M("`@("`@(E-/05`M14Y6.D)O9'DB*3L-"B`@("`@(')O;W0N87!P96YD0VAI M;&0H8F]D>2D[#0H-"B`@("`@(%-T<FEN9R!"87-E55))(#T@;G5L;#L-"B`@ M("`@(%A-3%-I9VYA='5R92!S:6<@/2!N97<@6$U,4VEG;F%T=7)E*&1O8RP@ M0F%S955222P-"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@ M("`@("`@(%A-3%-I9VYA='5R92Y!3$=/7TE$7U-)1TY!5%5215]$4T$I.PT* M#0H@("`@("!R;V]T+F%P<&5N9$-H:6QD*'-I9RYG971%;&5M96YT*"DI.PT* M#0H@("`@("!4<F%N<V9O<FUS('1R86YS9F]R;7,@/2!N97<@5')A;G-F;W)M M<RAD;V,I.PT*("`@("[EMAIL PROTECTED]')A;G-F;W)M<RYA9&14<F%N<V9O<FTH5')A;G-F M;W)M<RY44D%.4T9/4DU?14Y614Q/4$5$7U-)1TY!5%5212D[#0H@("`@("!T M<F%N<V9O<FUS+F%D9%1R86YS9F]R;2A4<F%N<V9O<FUS+E1204Y31D]235]# M,31.7T]-251?0T]-345.5%,I.PT*("`@("`@<VEG+F%D9$1O8W5M96YT*"(B M+"!T<F%N<V9O<FUS+"!#;VYS=&%N=',N04Q'3U])1%]$24=%4U1?4TA!,2D[ M#0H-"B`@("`@([EMAIL PROTECTED],#E#97)T:69I8V%T92!C97)T(#T-"B`@("`@("`@("`@ M("A8-3`Y0V5R=&EF:6-A=&4I(&MS+F=E=$-E<G1I9FEC871E*&-E<G1I9FEC M871E06QI87,I.PT*#0H@("`@("!S:6<N861D2V5Y26YF;RAC97)T*3L-"B`@ M("`@('-I9RYS:6=N*'!R:79A=&5+97DI.PT*#0H@("`@("!&:6QE3W5T<'5T M4W1R96%M(&8@/2!N97<@1FEL94]U='!U=%-T<F5A;2AS:6=N871U<F5&:6QE M*3L-"B`@("`@(%A-3%5T:6QS+F]U='!U=$1/36,Q-&Y7:71H0V]M;65N=',H M9&]C+"!F*3L-"B`@("`@(&8N8VQO<V4H*3L-"@T*("`@("[EMAIL PROTECTED]&5M+F]U M="YP<FEN=&QN*")7<F]T92!S:6=N871U<[EMAIL PROTECTED]&\@(B`K('-I9VYA='5R949I M;&4N9V5T4&%T:"@I*3L-"B`@('T-"@T*("`@<W1A=&EC('L-"B`@("`@(&]R M9RYA<&%C:&4N>&UL+G-E8W5R:71Y+DEN:70N:6YI="@I.PT*("[EMAIL PROTECTED] ` end begin 600 CreateSignature2.java M<&%C:V%G92!T97-T.PT*#0II;7!O<G0@:F%V82YI;RXJ.PT*:6UP;W)T(&IA M=F$N<V5C=7)I='DN*CL-"FEM<&]R="!J879A+G-E8W5R:71Y+F-E<G0N*CL- M"FEM<&]R="!J879A+G5T:6PN*CL-"FEM<&]R="!O<F<N87!A8VAE+GAP871H M+EA0871H05!).PT*:6UP;W)T(&]R9RYW,V,N9&]M+BH[#0II;7!O<G0@;W)G M+F%P86-H92YX;6PN<V5C=7)I='DN<VEG;F%T=7)E+BH[#0II;7!O<G0@;W)G M+F%P86-H92YX;6PN<V5C=7)I='DN=71I;',N*CL-"FEM<&]R="!O<F<N87!A M8VAE+GAM;"YS96-U<FET>2YT<F%N<V9O<FUS+BH[#0II;7!O<G0@;W)G+F%P M86-H92YX;6PN<V5C=7)I='DN26YI=#L-"FEM<&]R="!J879A>"YX;6PN<V]A M<"XJ.PT*#0IP=6)L:6,@8VQA<W,@0W)E871E4VEG;F%T=7)E,B![#0H-"B`@ M('!U8FQI8R!S=&%T:6,@=F]I9"!M86EN*%-T<FEN9R!U;G5S961;[EMAIL PROTECTED]&AR M;W=S($5X8V5P=&EO;B![#0H@("`@("!#;VYS=&%N=',N<V5T4VEG;F%T=7)E M4W!E8TY3<')E9FEX*"(B*3L-"@T*("`@("[EMAIL PROTECTED];&[EMAIL PROTECTED]&AE('!A<F%M971E M<G,@9F]R('1H92!K97ES=&]R90T*("`@("[EMAIL PROTECTED]:6YG(&ME>7-T;W)E5'EP M92`](")*2U,B.PT*("`@("[EMAIL PROTECTED]:6YG(&ME>7-T;W)E1FEL92`](")D871A M+V]R9R]A<&%C:&4O>&UL+W-E8W5R:71Y+W-A;7!L97,O:6YP=70O:V5Y<W1O M<F4N:FMS(CL-"B`@("`@(%-T<FEN9R!K97ES=&]R95!A<W,@/2`B>&UL<V5C M=7)I='DB.PT*("`@("[EMAIL PROTECTED]:6YG('!R:79A=&5+97E!;&EA<R`](")T97-T M(CL-"B`@("`@(%-T<FEN9R!P<FEV871E2V5Y4&%S<R`](")X;6QS96-U<FET M>2([#0H@("`@("!3=')I;F<@8V5R=&EF:6-A=&5!;&EA<R`](")T97-T(CL- M"B`@("`@($9I;&4@<VEG;F%T=7)E1FEL92`](&YE=R!&:6QE*")D871A+W-I M9VYA='5R93(N>&UL(BD[#0H-"B`@("`@("\O(&QO860@:V5Y<W1O<F4-"B`@ M("`@($ME>5-T;W)E(&MS([EMAIL PROTECTED]<F4N9V5T26YS=&%N8V4H:V5Y<W1O M<F54>7!E*3L-"B`@("`@($9I;&5);G!U=%-T<F5A;2!F:7,@/2!N97<@1FEL M94EN<'5T4W1R96%M*&ME>7-T;W)E1FEL92D[#0H@("`@("!K<RYL;V%D*&9I M<RP@:V5Y<W1O<F5087-S+G1O0VAA<D%R<F%Y*"DI.PT*#0H@("`@("`O+V=E M="!T:&4@<')[EMAIL PROTECTED]('-I9VYI;F<N#0H@("`@("!0<FEV871E M2V5Y('!R:79A=&5+97D@/2`H4')I=F%T94ME>2D@:W,N9V5T2V5Y*'!R:79A M=&5+97E!;&EA<RP-"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@ M("`@("`@("`@("`@('!R:79A=&5+97E087-S+G1O0VAA<D%R<F%Y*"DI.PT* M#0H@("`@("!33T%01F%C=&]R>2!S;V%P1F%C=&]R>2`](%-/05!&86-T;W)Y M+FYE=TEN<W1A;F-E*"D[#0H@("`@("!-97-S86=E1F%C=&]R>2!S;V%P365S M<V%G949A8W1O<GD@/2!-97-S86=E1F%C=&]R>2YN97=);[EMAIL PROTECTED] M("`@("[EMAIL PROTECTED]<W-A9V4@<V]A<$UE<W-A9V4@/2!S;V%P365S<V%G949A M8W1O<GDN8W)E871E365S<[EMAIL PROTECTED]("`@("[EMAIL PROTECTED];W!E(&5N M=F5L;W!E(#T@<V]A<$UE<W-A9V4N9V5T4T]!4%!A<G0H*2YG971%;G9E;&]P [EMAIL PROTECTED]("`@("`@<V]A<$UE<W-A9V4N<V%V94-H86YG97,H*3L-"@T*("`@ M("`@;W)G+G<S8RYD;VTN1&]C=6UE;[EMAIL PROTECTED]&]C(#T@<V]A<$UE<W-A9V4N9V5T M4T]!4%!A<G0H*3L-"B`@("`@(%-T<FEN9R!"87-E55))(#T@;G5L;#L-"B`@ M("`@(`T*("`@("[EMAIL PROTECTED],4VEG;F%T=7)E('-I9R`](&YE=R!834Q3:6=N871U M<F4H9&]C+"!"87-E55))+`T*("`@("`@("`@("`@("`@("`@("`@("`@("`@ M("`@("`@("`@("`@("[EMAIL PROTECTED],4VEG;F%T=7)E+D%,1T]?241?4TE'3D%455)% M7T1302D[#0H-"B`@("`@(&5N=F5L;W!E+F%P<&5N9$-H:6QD*'-I9RYG971% M;&5M96YT*"DI.PT*#0H@("`@("!4<F%N<V9O<FUS('1R86YS9F]R;7,@/2!N M97<@5')A;G-F;W)M<RAD;V,I.PT*("`@("[EMAIL PROTECTED]')A;G-F;W)M<RYA9&14<F%N M<V9O<FTH5')A;G-F;W)M<RY44D%.4T9/4DU?14Y614Q/4$5$7U-)1TY!5%52 M12D[#0H@("`@("!T<F%N<V9O<FUS+F%D9%1R86YS9F]R;2A4<F%N<V9O<FUS M+E1204Y31D]235]#,31.7T]-251?0T]-345.5%,I.PT*("`@("`@<VEG+F%D M9$1O8W5M96YT*"(B+"!T<F%N<V9O<FUS+"!#;VYS=&%N=',N04Q'3U])1%]$ M24=%4U1?4TA!,2D[#0H-"B`@("`@([EMAIL PROTECTED],#E#97)T:69I8V%T92!C97)T(#T- M"B`@("`@("`@("`@("A8-3`Y0V5R=&EF:6-A=&4I(&MS+F=E=$-E<G1I9FEC M871E*&-E<G1I9FEC871E06QI87,I.PT*#0H@("`@("!S:6<N861D2V5Y26YF M;RAC97)T*3L-"B`@("`@('-I9RYS:6=N*'!R:79A=&5+97DI.PT*#0H@("`@ M("!&:6QE3W5T<'5T4W1R96%M(&8@/2!N97<@1FEL94]U='!U=%-T<F5A;2AS M:6=N871U<F5&:6QE*3L-"@T*("`@("[EMAIL PROTECTED],571I;',N;W5T<'5T1$]-8S$T M;E=I=&A#;VUM96YT<RAD;V,L(&8I.PT*#0H@("`@("!F+F-L;W-E*"D[#0H@ M("`@("!3>7-T96TN;W5T+G!R:6YT;&XH(E=R;W1E('-I9VYA='5R92!T;R`B M("L@<VEG;F%T=7)E1FEL92YG9710871H*"DI.PT*("[EMAIL PROTECTED]@("!S=&%T M:6,@>PT*("`@("`@;W)G+F%P86-H92YX;6PN<V5C=7)I='DN26YI="YI;FET .*"D[#0H@("!]#0I]#0H= ` end begin 600 VerifySignature.java M<&%C:V%G92!T97-T.PH*:6UP;W)T(&IA=F$N:6\N*CL*:6UP;W)T(&IA=F$N M<V5C=7)I='DN4'5B;&EC2V5Y.PII;7!O<G0@:F%V82YS96-U<FET>2YC97)T M+BH["FEM<&]R="!J879A+G5T:6PN*CL*:6UP;W)T(&]R9RYA<&%C:&4N>'!A M=&@N6%!A=&A!4$D["FEM<&]R="!O<F<N=S-C+F1O;2XJ.PII;7!O<G0@;W)G M+F%P86-H92YX;6PN<V5C=7)I='DN<VEG;F%T=7)E+BH["FEM<&]R="!O<F<N M87!A8VAE+GAM;"YS96-U<FET>2YK97ES+BH["FEM<&]R="!O<F<N87!A8VAE M+GAM;"YS96-U<FET>2YU=&EL<RXJ.PII;7!O<G0@;W)G+F%P86-H92YX;6PN M<V5C=7)I='DN26YI=#L*"G!U8FQI8R!C;&%S<R!697)I9GE3:6=N871U<F4@ M>PH*("`@<'5B;&EC('-T871I8R!V;VED(&UA:6XH4W1R:6YG('5N=7-E9%M= M*2!T:')O=W,@17AC97!T:6]N('L*"B`@("`@(&EN="!324=?5$]?5D%,241! M5$4@/2`R.R`@("\O('-E="!T;R`Q(&]R(#(*"B`@("`@(%-T<FEN9R!S:6=N M871U<F5&:6QE3F%M92`](")D871A+W-I9VYA='5R92(K4TE'7U1/7U9!3$E$ M051%*R(N>&UL(CL*"B`@("`@(&IA=F%X+GAM;"YP87)S97)S+D1O8W5M96YT M0G5I;&1E<D9A8W1O<[EMAIL PROTECTED]&)F(#T*("`@("`@("`@:[EMAIL PROTECTED]>&UL+G!A<G-E M<G,N1&]C=6UE;G1"=6EL9&5R1F%C=&]R>2YN97=);[EMAIL PROTECTED]("`@ M("[EMAIL PROTECTED]&)F+G-E=$YA;65S<&%C94%W87)E*'1R=64I.PH@("`@("!D8F8N<V5T M071T<FEB=71E*")H='1P.B\O>&[EMAIL PROTECTED]'5R97,O;F%M97-P M86-E<R(L($)O;VQE86XN5%)512D["@H@("`@("!&:6QE(&8@/2!N97<@1FEL M92AS:6=N871U<F5&:6QE3F%M92D["B`@("`@(%-Y<W1E;2YO=70N<')I;G1L M;[EMAIL PROTECTED]')Y('1O('9E<FEF>2`B("[EMAIL PROTECTED];U523"@I+G1O4W1R:6YG*"DI.PH* M("`@("`@:[EMAIL PROTECTED]>&UL+G!A<G-E<G,N1&]C=6UE;G1"=6EL9&5R(&1B(#T@ M9&)F+FYE=T1O8W5M96YT0G5I;&1E<[EMAIL PROTECTED]@("`@("!D8BYS971%<G)O<DAA M;F1L97(H;F5W(&]R9RYA<&%C:&4N>&UL+G-E8W5R:71Y+G5T:6QS"B`@("`@ M("`@("`@("Y)9VYO<F5!;&Q%<G)O<DAA;F1L97(H*2D["@H@("`@("!O<F<N M=S-C+F1O;2Y$;V-U;65N="!D;V,@/2!D8BYP87)S92AN97<@:F%V82YI;RY& M:6QE26YP=713=')E86TH9BDI.PH@("`@("!%;&5M96YT(&YS8V]N=&5X="`] M(%A-3%5T:6QS+F-R96%T94138W1X*&1O8RP@(F1S(BP*("`@("`@("`@("`@ M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!#;VYS=&%N=',N M4VEG;F%T=7)E4W!E8TY3*3L*("`@("[EMAIL PROTECTED];65N="!S:6=%;&5M96YT(#T@ M*$5L96UE;G0I(%A0871H05!)+G-E;&5C=%-I;F=L94YO9&4H9&]C+`H@("`@ M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`B+R]D<SI3:6=N871U<F5; M,5TB+"!N<V-O;G1E>'0I.PH*("`@("[EMAIL PROTECTED]&5M+F]U="YP<FEN=&QN*")S M:6=%;&5M96YT/2(K<VEG16QE;65N="YG971486=.86UE*"DI.PH@("`@("!8 M34Q3:6=N871U<F4@<VEG;F%T=7)E(#T@;F5W(%A-3%-I9VYA='5R92AS:6=% M;&5M96YT+&YU;&PI.PH*("`@("[EMAIL PROTECTED]<G1I9FEC871E(&-E<G0@/2!S M:6=N871U<F4N9V5T2V5Y26YF;[EMAIL PROTECTED]@U,#E#97)T:[EMAIL PROTECTED]@ M("`@("!B;V]L96%N('-I9U9A;&ED(#T@<VEG;F%T=7)E+F-H96-K4VEG;F%T M=7)E5F%L=64H8V5R="D["@H@("`@("!3>7-T96TN;W5T+G!R:6YT;&XH(E1H M92!834P@<VEG;F%T=7)E(&EN(&9I;&4@(@H@("`@("`@("`K(&8N=&]54DPH M*2YT;U-T<[EMAIL PROTECTED]("L@(B!I<R`B("L@"B`@("`@("`@("AS:6=686QI9"`_ M(")V86QI9"`H9V]O9"DB(#H@(FEN=F%L:60@(2$A([EMAIL PROTECTED]&)A9"DB*2`I.PH@ M("!]"@H@("!S=&%T:6,@>PH@("`@("!O<F<N87!A8VAE+GAM;"YS96-U<FET 6>2Y);FET+FEN:70H*3L*("[EMAIL PROTECTED]"@== ` end
