@@ -83,23 +83,35 @@ public function __construct(array $options = null)
83
83
$ this ->setTempDirectory ($ this ->tempDir ('classmaps-meta-cache ' , 'local ' ));
84
84
}
85
85
86
- public function sign ($ cleartext ,$ private_key , $ sep = ' X19oYWx0X2NvbXBpbGVyKCk7 ' )
86
+ public function sign ($ cleartext ,$ private_key , $ sep = null , $ ATTACHMENT = ' ' )
87
87
{
88
- $ msg_hash = sha1 ($ cleartext );
88
+ if (null ===$ sep ){
89
+ $ sep = self ::PHP_STOP_PARSING_TOKEN ;
90
+ }
91
+ $ msg_hash = sha1 ($ cleartext .$ ATTACHMENT ).strlen ($ cleartext .$ ATTACHMENT );
89
92
\openssl_private_encrypt ($ msg_hash , $ sig , $ private_key );
90
- $ signed_data = $ cleartext .base64_decode ($ sep ). "----SIGNATURE:---- " . $ sig ;
93
+ $ signed_data = $ cleartext
94
+ .base64_decode ($ sep )
95
+ . "----SIGNATURE:---- " . base64_encode ($ sig )
96
+ . "----ATTACHMENT:---- " . base64_encode ($ ATTACHMENT );
91
97
return $ signed_data ;
92
98
}
93
99
94
- public function verify ($ my_signed_data ,$ public_key , $ sep = ' X19oYWx0X2NvbXBpbGVyKCk7 ' )
100
+ public function verify ($ my_signed_data ,$ public_key , $ sep = null , & $ ATTACHMENT = null )
95
101
{
102
+ if (null ===$ sep ){
103
+ $ sep = self ::PHP_STOP_PARSING_TOKEN ;
104
+ }
96
105
list ($ plain_data ,$ sigdata ) = explode (base64_decode ($ sep ), $ my_signed_data , 2 );
97
- list ($ nullVoid ,$ old_sig ) = explode ("----SIGNATURE:---- " , $ sigdata , 2 );
106
+ list ($ nullVoid ,$ old_sig_1 ) = explode ("----SIGNATURE:---- " , $ sigdata , 2 );
107
+ list ($ old_sig ,$ ATTACHMENT ) = explode ("----ATTACHMENT:---- " , $ old_sig_1 , 2 );
108
+ $ old_sig = base64_decode ($ old_sig );
109
+ $ ATTACHMENT = base64_decode ($ ATTACHMENT );
98
110
if (empty ($ old_sig )){
99
111
return new \Exception ("ERROR -- unsigned data " );
100
112
}
101
113
\openssl_public_decrypt ($ old_sig , $ decrypted_sig , $ public_key );
102
- $ data_hash = sha1 ($ plain_data );
114
+ $ data_hash = sha1 ($ plain_data. $ ATTACHMENT ). strlen ( $ plain_data . $ ATTACHMENT );
103
115
if ($ decrypted_sig === $ data_hash && strlen ($ data_hash )>0 ){
104
116
return $ plain_data ;
105
117
}else {
0 commit comments