X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/776f345ab8fba0432a0655a2515ace407fcf19ab..c36ec856598f214e340e3335ddd347d131335bf8:/sdk/go/arvados/blob_signature.go diff --git a/sdk/go/arvados/blob_signature.go b/sdk/go/arvados/blob_signature.go index 47b31a18e8..9a031face2 100644 --- a/sdk/go/arvados/blob_signature.go +++ b/sdk/go/arvados/blob_signature.go @@ -16,6 +16,7 @@ import ( "fmt" "regexp" "strconv" + "strings" "time" ) @@ -126,3 +127,21 @@ func parseHexTimestamp(timestampHex string) (ts time.Time, err error) { } return ts, err } + +var errNoSignature = errors.New("locator has no signature") + +func signatureExpiryTime(signedLocator string) (time.Time, error) { + matches := SignedLocatorRe.FindStringSubmatch(signedLocator) + if matches == nil { + return time.Time{}, errNoSignature + } + expiryHex := matches[7] + return parseHexTimestamp(expiryHex) +} + +func stripAllHints(locator string) string { + if i := strings.IndexRune(locator, '+'); i > 0 { + return locator[:i] + } + return locator +}