• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2014-2022 The GmSSL Project. All Rights Reserved.
3  *
4  *  Licensed under the Apache License, Version 2.0 (the License); you may
5  *  not use this file except in compliance with the License.
6  *
7  *  http://www.apache.org/licenses/LICENSE-2.0
8  */
9 
10 
11 #include <stdio.h>
12 #include <string.h>
13 #include <stdlib.h>
14 #include <stdint.h>
15 #include <gmssl/error.h>
16 
print_der(const uint8_t * in,size_t inlen)17 void print_der(const uint8_t *in, size_t inlen)
18 {
19 	size_t i;
20 	for (i = 0; i < inlen; i++) {
21 		printf("%02x ", in[i]);
22 	}
23 }
24 
print_bytes(const uint8_t * data,size_t datalen)25 void print_bytes(const uint8_t *data, size_t datalen)
26 {
27 	size_t i;
28 	for (i = 0; i < datalen; i++) {
29 		printf("%02X ", data[i]);
30 		if ((i + 1) % 32 == 0)
31 			printf("\n");
32 	}
33 	printf("\n");
34 }
35 
print_nodes(const uint32_t * in,size_t inlen)36 void print_nodes(const uint32_t *in, size_t inlen)
37 {
38 	size_t i;
39 	printf("%u", in[0]);
40 	for (i = 1; i < inlen; i++) {
41 		printf(".%u", in[i]);
42 	}
43 }
44 
45 
46 
format_print(FILE * fp,int format,int indent,const char * str,...)47 int format_print(FILE *fp, int format, int indent, const char *str, ...)
48 {
49 	va_list args;
50 	int i;
51 	for (i = 0; i < indent; i++) {
52 		fprintf(fp, " ");
53 	}
54 	va_start(args, str);
55 	vfprintf(fp, str, args);
56 	va_end(args);
57 	return 1;
58 }
59 
format_bytes(FILE * fp,int format,int indent,const char * str,const uint8_t * data,size_t datalen)60 int format_bytes(FILE *fp, int format, int indent, const char *str, const uint8_t *data, size_t datalen)
61 {
62 	int i;
63 
64 	if (datalen > 4096) {
65 		error_print();
66 		return -1;
67 	}
68 
69 	for (i = 0; i < indent; i++) {
70 		fprintf(fp, " ");
71 	}
72 	fprintf(fp, "%s: ", str);
73 	if (!datalen) {
74 		fprintf(fp, "(null)\n");
75 		return 1;
76 	}
77 	for (i = 0; i < datalen; i++) {
78 		fprintf(fp, "%02X", data[i]);
79 	}
80 	fprintf(fp, "\n");
81 	return 1;
82 }
83 
84 
format_string(FILE * fp,int fmt,int ind,const char * label,const uint8_t * d,size_t dlen)85 int format_string(FILE *fp, int fmt, int ind, const char *label, const uint8_t *d, size_t dlen)
86 {
87 	while (ind--) {
88 		fprintf(fp, " ");
89 	}
90 	fprintf(fp, "%s: ", label);
91 	while (dlen--) {
92 		fprintf(fp, "%c", *d++);
93 	}
94 	fprintf(fp, "\n");
95 	return 1;
96 }
97 
tls_trace(int format,int indent,const char * str,...)98 int tls_trace(int format, int indent, const char *str, ...)
99 {
100 	FILE *fp = stderr;
101 	va_list args;
102 	int i;
103 	for (i = 0; i < indent; i++) {
104 		fprintf(fp, " ");
105 	}
106 	va_start(args, str);
107 	vfprintf(fp, str, args);
108 	va_end(args);
109 	fprintf(fp, "\n");
110 	return 1;
111 }
112 
113