diff options
| author | Rutger Broekhoff | 2024-01-19 00:21:09 +0100 | 
|---|---|---|
| committer | Rutger Broekhoff | 2024-01-19 00:21:09 +0100 | 
| commit | 5156228f18f08255a1f5c7e22097b8e367881e19 (patch) | |
| tree | 8caccbf4d6d47b9f365d091d5b3426c4e6f7dafa /cmd/git-lfs-authenticate/main.c | |
| parent | b07332d62c347326baade26e3a3c281b83172615 (diff) | |
| download | gitolfs3-5156228f18f08255a1f5c7e22097b8e367881e19.tar.gz gitolfs3-5156228f18f08255a1f5c7e22097b8e367881e19.zip | |
Rust code dump
Diffstat (limited to 'cmd/git-lfs-authenticate/main.c')
| -rw-r--r-- | cmd/git-lfs-authenticate/main.c | 13 | 
1 files changed, 6 insertions, 7 deletions
| diff --git a/cmd/git-lfs-authenticate/main.c b/cmd/git-lfs-authenticate/main.c index 71481e9..a7ec031 100644 --- a/cmd/git-lfs-authenticate/main.c +++ b/cmd/git-lfs-authenticate/main.c | |||
| @@ -65,8 +65,6 @@ void checkrepopath(const char *path) { | |||
| 65 | die("Bad repository name: Is unresolved path"); | 65 | die("Bad repository name: Is unresolved path"); | 
| 66 | if (strlen(path) > 100) | 66 | if (strlen(path) > 100) | 
| 67 | die("Bad repository name: Longer than 100 characters"); | 67 | die("Bad repository name: Longer than 100 characters"); | 
| 68 | if (hassuffix(path, "/")) | ||
| 69 | die("Bad repositry name: Unexpected trailing slash"); | ||
| 70 | if (hasprefix(path, "/")) | 68 | if (hasprefix(path, "/")) | 
| 71 | die("Bad repository name: Unexpected absolute path"); | 69 | die("Bad repository name: Unexpected absolute path"); | 
| 72 | if (!hassuffix(path, ".git")) | 70 | if (!hassuffix(path, ".git")) | 
| @@ -152,6 +150,10 @@ void u64tobe(uint64_t x, uint8_t b[8]) { | |||
| 152 | b[7] = (uint8_t)(x >> 0); | 150 | b[7] = (uint8_t)(x >> 0); | 
| 153 | } | 151 | } | 
| 154 | 152 | ||
| 153 | void *memcat(void *dest, const void *src, size_t n) { | ||
| 154 | return memcpy(dest, src, n) + n; | ||
| 155 | } | ||
| 156 | |||
| 155 | #define MAX_TAG_SIZE EVP_MAX_MD_SIZE | 157 | #define MAX_TAG_SIZE EVP_MAX_MD_SIZE | 
| 156 | 158 | ||
| 157 | typedef struct taginfo { | 159 | typedef struct taginfo { | 
| @@ -161,10 +163,6 @@ typedef struct taginfo { | |||
| 161 | const int64_t expiresat_s; | 163 | const int64_t expiresat_s; | 
| 162 | } taginfo_t; | 164 | } taginfo_t; | 
| 163 | 165 | ||
| 164 | void *memcat(void *dest, const void *src, size_t n) { | ||
| 165 | return memcpy(dest, src, n) + n; | ||
| 166 | } | ||
| 167 | |||
| 168 | void maketag(const taginfo_t info, uint8_t key[KEYSIZE], uint8_t dest[MAX_TAG_SIZE], uint32_t *len) { | 166 | void maketag(const taginfo_t info, uint8_t key[KEYSIZE], uint8_t dest[MAX_TAG_SIZE], uint32_t *len) { | 
| 169 | uint8_t expiresat_b[8]; | 167 | uint8_t expiresat_b[8]; | 
| 170 | u64tobe(info.expiresat_s, expiresat_b); | 168 | u64tobe(info.expiresat_s, expiresat_b); | 
| @@ -247,7 +245,8 @@ int main(int argc, char *argv[]) { | |||
| 247 | char hextag[MAX_HEXTAG_STRLEN + 1]; | 245 | char hextag[MAX_HEXTAG_STRLEN + 1]; | 
| 248 | makehextag(taginfo, key, hextag); | 246 | makehextag(taginfo, key, hextag); | 
| 249 | 247 | ||
| 250 | printf("{\"header\":{\"Authorization\":\"Gitolfs3-Hmac-Sha256 %s\"},\"expires_in\":%ld,\"href\":\"", hextag, expiresin_s); | 248 | printf("{\"header\":{\"Authorization\":\"Gitolfs3-Hmac-Sha256 %s\"}," | 
| 249 | "\"expires_in\":%ld,\"href\":\"", hextag, expiresin_s); | ||
| 251 | printescjson(hrefbase); | 250 | printescjson(hrefbase); | 
| 252 | printescjson(repopath); | 251 | printescjson(repopath); | 
| 253 | printf("/info/lfs?p=1&te=%ld\"}\n", expiresat_s); | 252 | printf("/info/lfs?p=1&te=%ld\"}\n", expiresat_s); |