/* --------------------------------------------------------------------------------------------- verification of a Rainbow signature loads public key from public_key.txt and signature and hash value from signature_txt and checks if signature is a valid Rainbow signature for the hash value --------------------------------------------------------------------------*/ printf "********************************************************* \n"; printf "*** Rainbow Signature Scheme - Signature Verification *** \n"; printf "********************************************************* \n \n"; load "public_key.txt"; load "signature.txt"; printf"signature:= %o \n \n", signature; printf"hashvalue:= %o \n \n", hash; hash2:=Pk; for i:=1 to m do for j:=1 to n do hash2[i]:=Evaluate(hash2[i],Pol.j,signature[j]); end for; end for; hash2:=Hashspace!(hash2); printf "P(signature)= %o \n \n", hash2; if hash eq hash2 then printf "CORRECT!"; else printf "FALSE!"; end if;