MCPcopy Create free account
hub / github.com/bufbuild/buf / ParseDigest

Function ParseDigest

private/bufpkg/bufmodule/digest.go:137–176  ·  view source on GitHub ↗

ParseDigest parses a Digest from its string representation. A Digest string is of the form typeString:hexValue. The string is expected to be non-empty, If not, an error is returned. This reverses Digest.String(). Returns an error of type *bufparse.ParseError if the string could not be parsed.

(s string)

Source from the content-addressed store, hash-verified

135//
136// Returns an error of type *bufparse.ParseError if the string could not be parsed.
137func ParseDigest(s string) (Digest, error) {
138 if s == "" {
139 // This should be considered a system error.
140 return nil, errors.New("empty string passed to ParseDigest")
141 }
142 digestTypeString, hexValue, ok := strings.Cut(s, ":")
143 if !ok {
144 return nil, bufparse.NewParseError(
145 "module digest",
146 s,
147 errors.New(`must in the form "digest_type:digest_hex_value"`),
148 )
149 }
150 digestType, err := ParseDigestType(digestTypeString)
151 if err != nil {
152 return nil, bufparse.NewParseError(
153 "module digest",
154 s,
155 err,
156 )
157 }
158 value, err := hex.DecodeString(hexValue)
159 if err != nil {
160 return nil, bufparse.NewParseError(
161 "module digest",
162 s,
163 errors.New(`could not parse hex: must in the form "digest_type:digest_hex_value"`),
164 )
165 }
166 switch digestType {
167 case DigestTypeB4, DigestTypeB5:
168 casDigest, err := cas.NewDigest(cas.DigestTypeShake256, value)
169 if err != nil {
170 return nil, err
171 }
172 return NewDigest(digestType, casDigest)
173 default:
174 return nil, syserror.Newf("unknown DigestType: %v", digestType)
175 }
176}
177
178// DigestEqual returns true if the given Digests are considered equal.
179//

Calls 5

NewParseErrorFunction · 0.92
NewDigestFunction · 0.92
NewfFunction · 0.92
ParseDigestTypeFunction · 0.70
NewDigestFunction · 0.70

Used in the wild real call sites across dependent graphs

searching dependent graphs…