Please allow retreiving hashes via HeadObject or GetObjectAttributes

Both of these return unimplemented.

func objectAttributes(key string) (string, int64, error) {
	hoi := &s3.HeadObjectInput{
		Bucket:       aws.String(bucket),
		Key:          aws.String(key),
		ChecksumMode: types.ChecksumModeEnabled,
	}

	hoo, err := s3Client.HeadObject(context.Background(), hoi)
	if err != nil {
		log.Println(err)
		return "", -1, errors.New("Error querying object head.")
	}

	sha256 := hoo.ChecksumSHA256
	if sha256 == nil {
		return "", -1, errors.New("SHA256 is nil.")
	}

	size := hoo.ContentLength
	if size == nil {
		return "", -1, errors.New("Size is nil.")
	}

	return *sha256, *size, nil
}
func objectAttributes(key string) (string, int64, error) {
	goai := &s3.GetObjectAttributesInput{
		Bucket: aws.String(bucket),
		Key:    aws.String(key),
		ObjectAttributes: []types.ObjectAttributes{
			types.ObjectAttributesChecksum,
			types.ObjectAttributesObjectSize,
		},
	}

	output, err := s3Client.GetObjectAttributes(context.Background(), goai)
	if err != nil {
		log.Println(err)
		return "", -1, errors.New("Error querying S3.")
	}

	sha256 := output.Checksum.ChecksumSHA256
	if sha256 == nil {
		return "", -1, errors.New("SHA256 is nil.")
	}

	size := output.ObjectSize
	if size == nil {
		return "", -1, errors.New("Size is nil.")
	}

	return *sha256, *size, nil
}

Thankfully I know the SHA256 ahead of time so I can add that to the signed PUT URL, but for unknown blobs this would be helpful.

Is there any other way to retrieve the SHA256 of an existing object in R2?