@@ -69,18 +69,30 @@ base64der_key_to_tmp_file(const char *in, const char *key_str)
6969 }
7070
7171 /* write the key into the file */
72- written = fwrite ("-----BEGIN " , 1 , 11 , file );
73- written += fwrite (key_str , 1 , strlen (key_str ), file );
74- written += fwrite (" PRIVATE KEY-----\n" , 1 , 18 , file );
75- written += fwrite (in , 1 , strlen (in ), file );
76- written += fwrite ("\n-----END " , 1 , 10 , file );
77- written += fwrite (key_str , 1 , strlen (key_str ), file );
78- written += fwrite (" PRIVATE KEY-----" , 1 , 17 , file );
79-
80- fclose (file );
81- if ((unsigned )written != 11 + strlen (key_str ) + 18 + strlen (in ) + 10 + strlen (key_str ) + 17 ) {
82- unlink (path );
83- return NULL ;
72+ if (key_str ) {
73+ written = fwrite ("-----BEGIN " , 1 , 11 , file );
74+ written += fwrite (key_str , 1 , strlen (key_str ), file );
75+ written += fwrite (" PRIVATE KEY-----\n" , 1 , 18 , file );
76+ written += fwrite (in , 1 , strlen (in ), file );
77+ written += fwrite ("\n-----END " , 1 , 10 , file );
78+ written += fwrite (key_str , 1 , strlen (key_str ), file );
79+ written += fwrite (" PRIVATE KEY-----" , 1 , 17 , file );
80+
81+ fclose (file );
82+ if ((unsigned )written != 11 + strlen (key_str ) + 18 + strlen (in ) + 10 + strlen (key_str ) + 17 ) {
83+ unlink (path );
84+ return NULL ;
85+ }
86+ } else {
87+ written = fwrite ("-----BEGIN PRIVATE KEY-----\n" , 1 , 28 , file );
88+ written += fwrite (in , 1 , strlen (in ), file );
89+ written += fwrite ("\n-----END PRIVATE KEY-----" , 1 , 26 , file );
90+
91+ fclose (file );
92+ if ((unsigned )written != 28 + strlen (in ) + 26 ) {
93+ unlink (path );
94+ return NULL ;
95+ }
8496 }
8597
8698 return strdup (path );
0 commit comments