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