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

Reply via email to