clear

rsa_n       = BDFC081546365DC807963ED1B16223ACACE8882EAA13EA74FF6C904E73BD2DFD194B5B44DA74456B662323E0F3F145479FFD2D331E018D81FEC9C0999CA4F58D16784A09540D8A23DA6E6BAB436D9EF5EE63BAB4DAEEC333633616C1D3EB999D305AC518D43EDCE388D1AB4DC470D2F338FE8218082C582757B094979B073853CA5F9692D38D5401458A6976111CF2DB9D5ED886E56025EBEC87E2128CD2247711CB0F471983F8EEEAF041CBE486B9200ECD8507FB970C4B3B401641D66D47A4EB2BCFF959970F325B8F16E4A508EF5258C59C43011AE4800998CFEB03D7761275A7983F5DEF1A4AC4A347853A1911220AF08A6DF30E956153C225DACC407565

plain       = 11
hash        = sha512_hash( $plain )

signature   = A2F9F0D6C360EB58117824657541C3386F464227ECDA72F56D0A34371213604B6ACA57C57F0AE803F456F0E112ACB65BFA0C4C715DB433832A26E71F3D934015CDC5EBD5706B430BBE0873492CA76985D0C7645B45728538416BB99A9A791575DBDB70F331F20BB391B9A36C9CF03AA62C370D189BC0243665D80C41B663532EE1839179C8568D8B3646D395CE2719E37A53039DBC60178DBFBB6DA86E79571CC2FEEAB986484CC24D2291BE92C80089B72A80D531510509FAF0376DAFC5C810680AFE4344DE45CD7393129CDCF711903A23474BE5B594A93DA30E1D7FB31314753B35E2B95F5578450DFB6683CBEF13E60D90F0C52C60B307359C8D363414AE

x           = new_rsa_pss_sha512_pub_verify( 0800, 010001, $rsa_n, $signature, $hash, 0002 )
if $x != 00
    
?
    
pause
endif

x           = new_rsa_gencrt( hex( 2048 ), 010001 )
len         = hex( 2048 / 16 )
n           = hmid( $x, hex( 0x$len * 0 ), hex( 0x$len * 2 ) )
d           = hmid( $x, hex( 0x$len * 2 ), hex( 0x$len * 2 ) )
p           = hmid( $x, hex( 0x$len * 4 ), hex( 0x$len * 1 ) )
q           = hmid( $x, hex( 0x$len * 5 ), hex( 0x$len * 1 ) )
dp          = hmid( $x, hex( 0x$len * 6 ), hex( 0x$len * 1 ) )
dq          = hmid( $x, hex( 0x$len * 7 ), hex( 0x$len * 1 ) )
qinv        = hmid( $x, hex( 0x$len * 8 ), hex( 0x$len * 1 ) )

plain       = random( 8 )
saltlen     = 08

e           = 010001

hash        = sha1_hash( $plain )
a           = new_rsa_pss_sha1_crt_sign( 0800, $p, $q, $dp, $dq, $qinv, $hash, $saltlen )
k           = new_rsa_pss_sha1_pub_verify( 0800, $e, $n, $a, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif
b           = new_rsa_pss_sha1_std_sign( 0800, $n, $d, $hash, $saltlen )
k           = new_rsa_pss_sha1_pub_verify( 0800, $e, $n, $b, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif

hash        = sha224_hash( $plain )
a           = new_rsa_pss_sha224_crt_sign( 0800, $p, $q, $dp, $dq, $qinv, $hash, $saltlen )
k           = new_rsa_pss_sha224_pub_verify( 0800, $e, $n, $a, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif
b           = new_rsa_pss_sha224_std_sign( 0800, $n, $d, $hash, $saltlen )
k           = new_rsa_pss_sha224_pub_verify( 0800, $e, $n, $b, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif

hash        = sha256_hash( $plain )
a           = new_rsa_pss_sha256_crt_sign( 0800, $p, $q, $dp, $dq, $qinv, $hash, $saltlen )
k           = new_rsa_pss_sha256_pub_verify( 0800, $e, $n, $a, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif
b           = new_rsa_pss_sha256_std_sign( 0800, $n, $d, $hash, $saltlen )
k           = new_rsa_pss_sha256_pub_verify( 0800, $e, $n, $b, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif

hash        = sha384_hash( $plain )
a           = new_rsa_pss_sha384_crt_sign( 0800, $p, $q, $dp, $dq, $qinv, $hash, $saltlen )
k           = new_rsa_pss_sha384_pub_verify( 0800, $e, $n, $a, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif
b           = new_rsa_pss_sha384_std_sign( 0800, $n, $d, $hash, $saltlen )
k           = new_rsa_pss_sha384_pub_verify( 0800, $e, $n, $b, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif

hash        = sha512_hash( $plain )
a           = new_rsa_pss_sha512_crt_sign( 0800, $p, $q, $dp, $dq, $qinv, $hash, $saltlen )
k           = new_rsa_pss_sha512_pub_verify( 0800, $e, $n, $a, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif
b           = new_rsa_pss_sha512_std_sign( 0800, $n, $d, $hash, $saltlen )
k           = new_rsa_pss_sha512_pub_verify( 0800, $e, $n, $b, $hash, $saltlen )
if $k != 00
    
?
    
pause
endif