@@ -56,19 +56,25 @@ func (c *Client) UploadFile(ctx context.Context, filepath string) (*UpDownStatus
5656 return nil , fmt .Errorf ("rewinding file pointer: %w" , err )
5757 }
5858
59- return c .Upload (ctx , f , path .Base (filepath ), hash .Hex )
59+ return c .Upload (ctx , f , path .Base (filepath ), hash .String () )
6060}
6161
6262func (c * Client ) Upload (ctx context.Context , r io.Reader , filename , digest string ) (* UpDownStatus , error ) {
63+ // Check digest format, including the algorithm and the hex portion
64+ h , err := cr_v1 .NewHash (digest )
65+ if err != nil {
66+ return nil , fmt .Errorf ("decoding digest: %w" , err )
67+ }
68+
6369 ctx , cancel := context .WithCancel (ctx )
6470 defer cancel ()
6571
66- resource , err := encodeResource (filename , digest )
72+ resource , err := encodeResource (filename , h . String () )
6773 if err != nil {
6874 return nil , fmt .Errorf ("encoding resource name: %w" , err )
6975 }
7076
71- c .logger .Info ().Msgf ("uploading %s - sha256: %s" , filename , digest )
77+ c .logger .Info ().Msgf ("uploading %s - %s" , filename , h )
7278
7379 stream , err := bytestream .NewByteStreamClient (c .conn ).Write (ctx )
7480 if err != nil {
@@ -127,7 +133,7 @@ doUpload:
127133
128134 latestStatus = & UpDownStatus {
129135 Filename : filename ,
130- Digest : digest ,
136+ Digest : h . String () ,
131137 ProcessedBytes : totalUploaded ,
132138 }
133139
@@ -156,13 +162,16 @@ func encodeResource(fileName, digest string) (string, error) {
156162 return "" , fmt .Errorf ("file name is empty" )
157163 }
158164
159- if digest == "" {
160- return "" , fmt .Errorf ("digest is empty" )
165+ // Check digest format, including the algorithm and the hex portion
166+ h , err := cr_v1 .NewHash (digest )
167+ if err != nil {
168+ return "" , fmt .Errorf ("decoding digest: %w" , err )
161169 }
162170
163171 var encodedResource bytes.Buffer
164172 enc := gob .NewEncoder (& encodedResource )
165- r := & v1.CASResource {FileName : fileName , Digest : digest }
173+ // Currently we only support SHA256
174+ r := & v1.CASResource {FileName : fileName , Digest : h .Hex }
166175
167176 if err := enc .Encode (r ); err != nil {
168177 return "" , err
0 commit comments