| 
														
															@@ -14,16 +14,17 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include <stdio.h> 
														 | 
														
														 | 
														
															 #include <stdio.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include <stdlib.h> 
														 | 
														
														 | 
														
															 #include <stdlib.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-#define die(s) do { fprintf(stderr, "%s\n", s); return 1; } while (0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#define die(s) do { fprintf(stderr, "%s\n", s); goto err; } while (0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 int 
														 | 
														
														 | 
														
															 int 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 main(int argc, char **argv) 
														 | 
														
														 | 
														
															 main(int argc, char **argv) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  BIO *b; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  RSA *key; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  unsigned char *buf, *bufp; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  BIO *b = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  RSA *key = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  unsigned char *buf = NULL, *bufp; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int len, i; 
														 | 
														
														 | 
														
															   int len, i; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   unsigned char digest[20]; 
														 | 
														
														 | 
														
															   unsigned char digest[20]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  int status = 1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (argc != 2) 
														 | 
														
														 | 
														
															   if (argc != 2) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     die("I want a filename"); 
														 | 
														
														 | 
														
															     die("I want a filename"); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -34,7 +35,11 @@ main(int argc, char **argv) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     die("couldn't parse key"); 
														 | 
														
														 | 
														
															     die("couldn't parse key"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   len = i2d_RSAPublicKey(key, NULL); 
														 | 
														
														 | 
														
															   len = i2d_RSAPublicKey(key, NULL); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (len < 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    die("Bizarre key"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   bufp = buf = malloc(len+1); 
														 | 
														
														 | 
														
															   bufp = buf = malloc(len+1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (!buf) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    die("Out of memory"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   len = i2d_RSAPublicKey(key, &bufp); 
														 | 
														
														 | 
														
															   len = i2d_RSAPublicKey(key, &bufp); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (len < 0) 
														 | 
														
														 | 
														
															   if (len < 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     die("Bizarre key"); 
														 | 
														
														 | 
														
															     die("Bizarre key"); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -45,6 +50,15 @@ main(int argc, char **argv) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   printf("\n"); 
														 | 
														
														 | 
														
															   printf("\n"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  return 0; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  status = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+err: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (buf) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    free(buf); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (key) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    RSA_free(key); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (b) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    BIO_free(b); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  return status; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |