@@ -70,7 +70,7 @@ public static function generate_key_pair( $user_id ) {
7070 \update_user_meta ( $ user_id , 'magic_sig_public_key ' , $ detail ['key ' ] );
7171 }
7272
73- public static function generate_signature ( $ user_id , $ url , $ date ) {
73+ public static function generate_signature ( $ user_id , $ url , $ date, $ digest = null ) {
7474 $ key = self ::get_private_key ( $ user_id );
7575
7676 $ url_parts = \wp_parse_url ( $ url );
@@ -88,18 +88,31 @@ public static function generate_signature( $user_id, $url, $date ) {
8888 $ path .= '? ' . $ url_parts ['query ' ];
8989 }
9090
91- $ signed_string = "(request-target): post $ path \nhost: $ host \ndate: $ date " ;
91+ if ( ! empty ( $ digest ) ) {
92+ $ signed_string = "(request-target): post $ path \nhost: $ host \ndate: $ date \ndigest: SHA-256= $ digest " ;
93+ } else {
94+ $ signed_string = "(request-target): post $ path \nhost: $ host \ndate: $ date " ;
95+ }
9296
9397 $ signature = null ;
9498 \openssl_sign ( $ signed_string , $ signature , $ key , \OPENSSL_ALGO_SHA256 );
9599 $ signature = \base64_encode ( $ signature ); // phpcs:ignore
96100
97101 $ key_id = \get_author_posts_url ( $ user_id ) . '#main-key ' ;
98102
99- return \sprintf ( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date",signature="%s" ' , $ key_id , $ signature );
103+ if ( ! empty ( $ digest ) ) {
104+ return \sprintf ( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date digest",signature="%s" ' , $ key_id , $ signature );
105+ } else {
106+ return \sprintf ( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date",signature="%s" ' , $ key_id , $ signature );
107+ }
100108 }
101109
102110 public static function verify_signature ( $ headers , $ signature ) {
103111
104112 }
113+
114+ public static function generate_digest ( $ body ) {
115+ $ digest = \base64_encode ( \hash ( 'sha256 ' , $ body , true ) ); // phpcs:ignore
116+ return "$ digest " ;
117+ }
105118}
0 commit comments