diff --git a/pkg/types/helm/provenance_test.go b/pkg/types/helm/provenance_test.go
index b126543d54ac30a96cb3d8ebbd7da603acbe36df..29a623c55e1389881a7ff2129fa73307daec9237 100644
--- a/pkg/types/helm/provenance_test.go
+++ b/pkg/types/helm/provenance_test.go
@@ -20,6 +20,7 @@ import (
 	"os"
 	"testing"
 
+	"github.com/sigstore/rekor/pkg/generated/models"
 	"github.com/sigstore/rekor/pkg/pki"
 	"github.com/sigstore/rekor/pkg/pki/pgp"
 )
@@ -37,12 +38,16 @@ func TestProvenance(t *testing.T) {
 		t.Fatalf("unmarshal error: %v", err)
 	}
 
-	checksum, err := provenance.GetChartHash()
+	algorithm, checksum, err := provenance.GetChartAlgorithmHash()
 
 	if err != nil {
 		t.Fatalf("Error retrieving chart hash: %v", err)
 	}
 
+	if models.HelmV001SchemaChartHashAlgorithmSha256 != algorithm {
+		t.Fatalf("Unexpected checksum algorithm. Expected %s, found %s", models.HelmV001SchemaChartHashAlgorithmSha256, algorithm)
+	}
+
 	if len(checksum) == 0 {
 		t.Fatal("Empty checksum")
 	}
diff --git a/pkg/types/helm/providence.go b/pkg/types/helm/providence.go
index 697b07493b4c2fa582ca1719c2466ae94338c8a7..1d9952848ebcc2ca3f6eb637fda0c451ef0ea6ae 100644
--- a/pkg/types/helm/providence.go
+++ b/pkg/types/helm/providence.go
@@ -94,10 +94,10 @@ func (p *Provenance) parseMessageBlock(data []byte) error {
 	return nil
 }
 
-func (p *Provenance) GetChartHash() (string, error) {
+func (p *Provenance) GetChartAlgorithmHash() (string, string, error) {
 
 	if p.SumCollection == nil || p.SumCollection.Files == nil {
-		return "", errors.New("Unable to locate chart hash")
+		return "", "", errors.New("Unable to locate chart hash")
 
 	}
 
@@ -108,13 +108,13 @@ func (p *Provenance) GetChartHash() (string, error) {
 		parts := strings.Split(value, ":")
 
 		if len(parts) != 2 {
-			return "", errors.New("Invalid hash found in Provenance file")
+			return "", "", errors.New("Invalid hash found in Provenance file")
 		}
 
-		return parts[1], nil
+		return parts[0], parts[1], nil
 	}
 
 	// Return error if no keys found
-	return "", errors.New("No checksums found")
+	return "", "", errors.New("No checksums found")
 
 }
diff --git a/pkg/types/helm/v0.0.1/entry.go b/pkg/types/helm/v0.0.1/entry.go
index bba3b06fc15c844ccb202654f13d13d199d03fdb..74de7f0a409d81f30b0b5a0800c34cf6a23dd352 100644
--- a/pkg/types/helm/v0.0.1/entry.go
+++ b/pkg/types/helm/v0.0.1/entry.go
@@ -87,16 +87,15 @@ func (v V001Entry) IndexKeys() []string {
 
 	result = append(result, v.keyObj.EmailAddresses()...)
 
-	chartHash, err := v.provenanceObj.GetChartHash()
+	algorithm, chartHash, err := v.provenanceObj.GetChartAlgorithmHash()
 
 	if err != nil {
 		log.Logger.Error(err)
 	} else {
-		result = append(result, chartHash)
+		hashKey := strings.ToLower(fmt.Sprintf("%s:%s", algorithm, chartHash))
+		result = append(result, hashKey)
 	}
 
-	//TODO: Store signature as index
-
 	return result
 }
 
@@ -274,16 +273,14 @@ func (v *V001Entry) Canonicalize(ctx context.Context) ([]byte, error) {
 
 	canonicalEntry.Chart = &models.HelmV001SchemaChart{}
 
-	chartHash, err := v.provenanceObj.GetChartHash()
+	algorithm, chartHash, err := v.provenanceObj.GetChartAlgorithmHash()
 
 	if err != nil {
 		return nil, err
 	}
 
-	sha256 := models.AlpineV001SchemaPackageHashAlgorithmSha256
-
 	canonicalEntry.Chart.Hash = &models.HelmV001SchemaChartHash{}
-	canonicalEntry.Chart.Hash.Algorithm = &sha256
+	canonicalEntry.Chart.Hash.Algorithm = &algorithm
 	canonicalEntry.Chart.Hash.Value = &chartHash
 
 	canonicalEntry.Chart.Provenance = &models.HelmV001SchemaChartProvenance{}