@@ -555,6 +555,9 @@ impl<'a> HttpSignatureBuilder<'a> {
555555 let key = split. next ( ) . expect ( "there is always at least one element in the split" ) ;
556556 if let Some ( value) = split. next ( ) {
557557 match key {
558+ Header :: REQUEST_TARGET_STR => {
559+ headers. push ( Header :: RequestTarget ) ;
560+ }
558561 Header :: CREATED_STR => {
559562 headers. push ( Header :: Created ) ;
560563 created = Some ( value. trim ( ) . parse ( ) . map_err ( |_| {
@@ -569,12 +572,6 @@ impl<'a> HttpSignatureBuilder<'a> {
569572 }
570573 header_name => headers. push ( Header :: new_name ( header_name. to_owned ( ) ) ) ,
571574 }
572- } else if key. starts_with ( "get" )
573- || key. starts_with ( "post" )
574- || key. starts_with ( "put" )
575- || key. starts_with ( "delete" )
576- {
577- headers. push ( Header :: RequestTarget ) ;
578575 } else {
579576 return Err ( HttpSignatureError :: InvalidSigningString { line : line. to_owned ( ) } ) ;
580577 }
@@ -603,7 +600,8 @@ impl<'a> HttpSignatureBuilder<'a> {
603600 }
604601 Header :: RequestTarget => {
605602 acc. push ( format ! (
606- "{} {}" ,
603+ "{}: {} {}" ,
604+ header. as_str( ) ,
607605 http_request. get_lowercased_method( ) ?,
608606 http_request. get_target( ) ?
609607 ) ) ;
@@ -771,7 +769,8 @@ impl<'a> HttpSignatureVerifier<'a> {
771769 }
772770 Header :: RequestTarget => {
773771 acc. push ( format ! (
774- "{} {}" ,
772+ "{}: {} {}" ,
773+ header. as_str( ) ,
775774 http_request. get_lowercased_method( ) ?,
776775 http_request. get_target( ) ?
777776 ) ) ;
@@ -914,20 +913,20 @@ mod tests {
914913 use picky_asn1_x509:: { AlgorithmIdentifier , SubjectPublicKeyInfo } ;
915914
916915 const HTTP_SIGNATURE_EXAMPLE : & str = "Signature keyId=\" my-rsa-key\" ,algorithm=\" rsa-sha256\" \
917- ,created=1402170695,headers=\" (request-target) (created) date\" ,\
918- signature=\" CM3Ui6l4Z6+yYdWaX5Cz10OAqUceS53Zy/qA+e4xG5Nabe215iTlnj/sfVJ3nBaMIOj/4e \
919- gxTKNDXAJbLm6nOF8zUOdJBuKQZNO1mfzrMKLsz7gc2PQI1eVxGNJoBZ40L7CouertpowQFpKyizNXqH/y \
920- YBgqPEnLk+p5ISkXeHd7P/YbAAQGnSe3hnJ/gkkJ5rS6mGuu2C8+Qm68tcSGz9qwVdNTFPpji5VPxprs2J \
921- 2Z1vjsMVW97rsKOs8lo+qxPGfni27udledH2ZQABGZHOgZsChj59Xb3oVAA8/V3rjt5Un7gsz2AHQ6aY6o \
922- ky59Rsg/CpB8gP7szjK/wrCclA ==\" ";
916+ ,created=1402170695,headers=\" (request-target) (created) date\" ,\
917+ signature=\" bw579lDtTDsp7zif/F7Fy93KXrM6qUfCb43JMJtiL4+3nazIPlxcxVsRJEgZzK/QQPDoeUQ \
918+ p4BYCzi2CbthYhHJMn/Wv008gNMcQQTuEw/KcnMrFWxqqUnVZQbCQvNai2y80WrBiOFZvN2VIdLUSO4SoIa \
919+ OHvrvEoQhl3sqpv1z7yCVbQtJHwnPOWoy/11p+SU3X2ARJXN555q5wSn+DykM0Ohq1cXD84MHXP5ulI0Fa8 \
920+ 4zQ5waxoXsieex4FI+zXSlngGmchBPXMUC437u2wXA1zLA4KGUL/uNScL1MKrTMqgV0MK4o6sR0LHOqHmIi \
921+ MJ7h++UmOW/0Iw74CL2UGQ ==\" ";
923922
924923 const HTTP_SIGNATURE_WEIRD_FORMAT : & str = "Signature keyId = my-rsa-key ,created= \" 1402170695\" ,\
925- ,algorithm =\" rsa-sha256 \" ,headers=(request-target) (created) date ,\
926- signature=CM3Ui6l4Z6+yYdWaX5Cz10OAqUceS53Zy/qA+e4xG5Nabe215iTlnj/sfVJ3nBaMIOj/4e \
927- gxTKNDXAJbLm6nOF8zUOdJBuKQZNO1mfzrMKLsz7gc2PQI1eVxGNJoBZ40L7CouertpowQFpKyizNXqH/y \
928- YBgqPEnLk+p5ISkXeHd7P/YbAAQGnSe3hnJ/gkkJ5rS6mGuu2C8+Qm68tcSGz9qwVdNTFPpji5VPxprs2J \
929- 2Z1vjsMVW97rsKOs8lo+qxPGfni27udledH2ZQABGZHOgZsChj59Xb3oVAA8/V3rjt5Un7gsz2AHQ6aY6o \
930- ky59Rsg/CpB8gP7szjK/wrCclA ==";
924+ ,algorithm =\" rsa-sha256 \" ,headers=(request-target) (created) date ,\
925+ signature=bw579lDtTDsp7zif/F7Fy93KXrM6qUfCb43JMJtiL4+3nazIPlxcxVsRJEgZzK/QQPDoeUQ \
926+ p4BYCzi2CbthYhHJMn/Wv008gNMcQQTuEw/KcnMrFWxqqUnVZQbCQvNai2y80WrBiOFZvN2VIdLUSO4SoIa \
927+ OHvrvEoQhl3sqpv1z7yCVbQtJHwnPOWoy/11p+SU3X2ARJXN555q5wSn+DykM0Ohq1cXD84MHXP5ulI0Fa8 \
928+ 4zQ5waxoXsieex4FI+zXSlngGmchBPXMUC437u2wXA1zLA4KGUL/uNScL1MKrTMqgV0MK4o6sR0LHOqHmIi \
929+ MJ7h++UmOW/0Iw74CL2UGQ ==";
931930
932931 fn private_key_1 ( ) -> PrivateKey {
933932 let pem = picky_test_data:: RSA_2048_PK_7 . parse :: < Pem > ( ) . expect ( "pem 1" ) ;
@@ -1136,7 +1135,7 @@ mod tests {
11361135
11371136 #[ test]
11381137 fn sign_with_pre_generated_signing_string ( ) {
1139- let signing_string = "get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
1138+ let signing_string = "(request-target): get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
11401139 let http_signature = HttpSignatureBuilder :: new ( )
11411140 . key_id ( "my-rsa-key" )
11421141 . signature_method (
@@ -1152,7 +1151,7 @@ mod tests {
11521151
11531152 #[ test]
11541153 fn verify_with_pre_generated_signing_string ( ) {
1155- let signing_string = "get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
1154+ let signing_string = "(request-target): get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
11561155 let http_signature = HttpSignature :: from_str ( HTTP_SIGNATURE_EXAMPLE ) . expect ( "http signature" ) ;
11571156 http_signature
11581157 . verifier ( )
@@ -1168,7 +1167,7 @@ mod tests {
11681167
11691168 #[ test]
11701169 fn verify_with_leeway ( ) {
1171- let signing_string = "get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
1170+ let signing_string = "(request-target): get /foo\n (created): 1402170695\n date: Tue, 07 Jun 2014 20:51:35 GMT" ;
11721171 let http_signature = HttpSignature :: from_str ( HTTP_SIGNATURE_EXAMPLE ) . expect ( "http signature" ) ;
11731172 http_signature
11741173 . verifier ( )
@@ -1207,12 +1206,12 @@ mod tests {
12071206 }
12081207
12091208 const HTTP_SIGNATURE_LEGACY : & str = "Signature keyId=my-rsa-key,created=1402170695,\
1210- headers=(request-target) (created) date,\
1211- signature=CM3Ui6l4Z6-yYdWaX5Cz10OAqUceS53Zy_qA-e4xG5Nabe215iTlnj_sfVJ3nBaMIOj_4e \
1212- gxTKNDXAJbLm6nOF8zUOdJBuKQZNO1mfzrMKLsz7gc2PQI1eVxGNJoBZ40L7CouertpowQFpKyizNXqH_y \
1213- YBgqPEnLk-p5ISkXeHd7P_YbAAQGnSe3hnJ_gkkJ5rS6mGuu2C8-Qm68tcSGz9qwVdNTFPpji5VPxprs2J \
1214- 2Z1vjsMVW97rsKOs8lo-qxPGfni27udledH2ZQABGZHOgZsChj59Xb3oVAA8_V3rjt5Un7gsz2AHQ6aY6o \
1215- ky59Rsg_CpB8gP7szjK_wrCclA ";
1209+ headers=(request-target) (created) date,\
1210+ signature=bw579lDtTDsp7zif_F7Fy93KXrM6qUfCb43JMJtiL4-3nazIPlxcxVsRJEgZzK_QQPDoeUQp4B \
1211+ YCzi2CbthYhHJMn_Wv008gNMcQQTuEw_KcnMrFWxqqUnVZQbCQvNai2y80WrBiOFZvN2VIdLUSO4SoIaOHvr \
1212+ vEoQhl3sqpv1z7yCVbQtJHwnPOWoy_11p-SU3X2ARJXN555q5wSn-DykM0Ohq1cXD84MHXP5ulI0Fa84zQ5w \
1213+ axoXsieex4FI-zXSlngGmchBPXMUC437u2wXA1zLA4KGUL_uNScL1MKrTMqgV0MK4o6sR0LHOqHmIiMJ7h-- \
1214+ UmOW_0Iw74CL2UGQ ";
12161215
12171216 #[ test]
12181217 fn legacy ( ) {
0 commit comments