public function validate(string $secretKey): bool
    {
        $contentMD5 = $this->request->getHeader('Content-MD5');

        if ($contentMD5) {
            // We need to validate the integrity of the request
            $body = $this->request->getBody();
            $this->request->setBody($body);

            if ($contentMD5 !== base64_encode(md5((string) $body, true))) {
                // content-md5 header did not match md5 signature of body
                $this->errorCode = self::ERR_MD5CHECKSUMWRONG;

                return false;
            }
        }

        if (!$requestDate = $this->request->getHeader('x-amz-date')) {
            $requestDate = $this->request->getHeader('Date');
        }

        if (!$this->validateRFC2616Date((string) $requestDate)) {
            return false;
        }

        $amzHeaders = $this->getAmzHeaders();

        $signature = base64_encode(
            $this->hmacsha1($secretKey,
                $this->request->getMethod()."\n".
                $contentMD5."\n".
                $this->request->getHeader('Content-type')."\n".
                $requestDate."\n".
                $amzHeaders.
                $this->request->getUrl()
            )
        );

        if ($this->signature !== $signature) {
            $this->errorCode = self::ERR_INVALIDSIGNATURE;

            return false;
        }

        return true;
    }
public function validate(string $secretKey): bool
    {
        $contentMD5 = $this->request->getHeader('Content-MD5');

        if ($contentMD5) {
            // We need to validate the integrity of the request
            $body = $this->request->getBody();
            $this->request->setBody($body);

            if ($contentMD5 !== base64_encode(md5((string) $body, true))) {
                // content-md5 header did not match md5 signature of body
                $this->errorCode = self::ERR_MD5CHECKSUMWRONG;

                return false;
            }
        }

        if (!$requestDate = $this->request->getHeader('x-amz-date')) {
            $requestDate = $this->request->getHeader('Date');
        }

        if (!$this->validateRFC2616Date((string) $requestDate)) {
            return false;
        }

        $amzHeaders = $this->getAmzHeaders();

        $signature = base64_encode(
            $this->hmacsha1($secretKey,
                $this->request->getMethod()."\n".
                $contentMD5."\n".
                $this->request->getHeader('Content-type')."\n".
                $requestDate."\n".
                $amzHeaders.
                $this->request->getUrl()
            )
        );

        if ($this->signature !== $signature) {
            $this->errorCode = self::ERR_INVALIDSIGNATURE;

            return false;
        }

        return true;
    }
public function validate ( string $ secretKey ) : bool { $ contentMD5 = $ this -> request -> getHeader ( 'Content-MD5' ) ; if ( $ contentMD5 ) { // We need to validate the integrity of the request $ body = $ this -> request -> getBody ( ) ; $ this -> request -> setBody ( $ body ) ; if ( $ contentMD5 !== base64_encode ( md5 ( ( string ) $ body , true ) ) ) { // content-md5 header did not match md5 signature of body $ this -> errorCode = self :: ERR_MD5CHECKSUMWRONG ; return false ; } } if ( ! $ requestDate = $ this -> request -> getHeader ( 'x-amz-date' ) ) { $ requestDate = $ this -> request -> getHeader ( 'Date' ) ; } if ( ! $ this -> validateRFC2616Date ( ( string ) $ requestDate ) ) { return false ; } $ amzHeaders = $ this -> getAmzHeaders ( ) ; $ signature = base64_encode ( $ this -> hmacsha1 ( $ secretKey , $ this -> request -> getMethod ( ) . "\n" . $ contentMD5 . "\n" . $ this -> request -> getHeader ( 'Content-type' ) . "\n" . $ requestDate . "\n" . $ amzHeaders . $ this -> request -> getUrl ( ) ) ) ; if ( $ this -> signature !== $ signature ) { $ this -> errorCode = self :: ERR_INVALIDSIGNATURE ; return false ; } return true ; }
Validates the signature based on the secretKey.
Validates the signature based on the secretKey .