private function getEtag(ResourceObject $ro, HttpCache $httpCache = null) : string
    {
        $etag = $httpCache instanceof HttpCache && $httpCache->etag ? $this->getEtagByPartialBody($httpCache, $ro) : $this->getEtagByEitireView($ro);

        return (string) \crc32(\get_class($ro) . $etag);
    }
private function getEtag(ResourceObject $ro, HttpCache $httpCache = null) : string
    {
        $etag = $httpCache instanceof HttpCache && $httpCache->etag ? $this->getEtagByPartialBody($httpCache, $ro) : $this->getEtagByEitireView($ro);

        return (string) \crc32(\get_class($ro) . $etag);
    }
private function getEtag ( ResourceObject $ ro , HttpCache $ httpCache = null ) : string { $ etag = $ httpCache instanceof HttpCache && $ httpCache -> etag ? $ this -> getEtagByPartialBody ( $ httpCache , $ ro ) : $ this -> getEtagByEitireView ( $ ro ) ; return ( string ) \ crc32 ( \ get_class ( $ ro ) . $ etag ) ; }
Return crc32 encoded Etag

Is crc32 enough for Etag ?

@see https://cloud.google.com/storage/docs/hashes-etags
Return crc32 encoded Etag