gss-token: implement -S to split tokens up on output.
This commit is contained in:
		| @@ -15,6 +15,7 @@ | ||||
| .Fl r | ||||
| .Op Fl MNln | ||||
| .Op Fl C Ar ccache | ||||
| .Op Fl S Ar maxsize | ||||
| .Op Fl c count | ||||
| .Op Ar service@host | ||||
| .Sh DESCRIPTION | ||||
| @@ -52,6 +53,11 @@ This can be used to load test the KDC. | ||||
| prepend | ||||
| .Dq Negotiate\  | ||||
| to generated tokens and expect it on consumed tokens. | ||||
| .It Fl S Ar maxsize | ||||
| split each token that is generated into components of maximum | ||||
| size | ||||
| .Ar maxsize . | ||||
| Each token is base64 encoded and output separately. | ||||
| .It Fl c Ar count | ||||
| repeat the operation | ||||
| .Ar count | ||||
|   | ||||
| @@ -89,6 +89,7 @@ | ||||
|  * global variables | ||||
|  */ | ||||
|  | ||||
| int	Sflag = 0; | ||||
| int	nflag = 0; | ||||
|  | ||||
| static char * | ||||
| @@ -207,18 +208,35 @@ write_token(gss_buffer_t out, int negotiate) | ||||
| 	char	*outstr = NULL; | ||||
| 	char	*p = out->value; | ||||
| 	size_t	 len = out->length; | ||||
| 	size_t	 inc; | ||||
| 	int	 ret; | ||||
| 	int	 first = 1; | ||||
|  | ||||
| 	if (nflag) | ||||
| 		return 0; | ||||
|  | ||||
| 	ret = rk_base64_encode(p, len, &outstr); | ||||
| 	if (ret < 0) { | ||||
| 		fprintf(stderr, "Out of memory.\n"); | ||||
| 		return 1; | ||||
| 	} | ||||
| 	printf("%s%s\n", negotiate?"Negotiate ":"", outstr); | ||||
| 	free(outstr); | ||||
| 	inc = len; | ||||
| 	if (Sflag) | ||||
| 		inc = Sflag; | ||||
|  | ||||
| 	do { | ||||
| 		if (first) | ||||
| 			first = 0; | ||||
| 		else | ||||
| 			printf("\n"); | ||||
| 		if (len < inc) | ||||
| 			inc = len; | ||||
| 		ret = rk_base64_encode(p, inc, &outstr); | ||||
| 		if (ret < 0) { | ||||
| 			fprintf(stderr, "Out of memory.\n"); | ||||
| 			return 1; | ||||
| 		} | ||||
| 		printf("%s%s\n", negotiate?"Negotiate ":"", outstr); | ||||
| 		free(outstr); | ||||
| 		p   += inc; | ||||
| 		len -= inc; | ||||
| 	} while (len > 0); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| @@ -528,6 +546,7 @@ main(int argc, char **argv) | ||||
| 	    { NULL, 'D', arg_flag, &Dflag, NULL, NULL }, | ||||
| 	    { NULL, 'M', arg_flag, &Mflag, NULL, NULL }, | ||||
| 	    { NULL, 'N', arg_flag, &Nflag, NULL, NULL }, | ||||
| 	    { NULL, 'S', arg_integer, &Sflag, NULL, NULL }, | ||||
| 	    { NULL, 'c', arg_integer, &count, NULL, NULL }, | ||||
| 	    { NULL, 'l', arg_flag, &lflag, NULL, NULL }, | ||||
| 	    { NULL, 'n', arg_flag, &nflag, NULL, NULL }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Roland C. Dowdeswell
					Roland C. Dowdeswell