<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: OpenSSL/RSA: toolkit &amp; implementation ( for Ondaquadra E-zine )</title>
	<atom:link href="http://ardoino.com/20-openssl-rsa-implementation/feed/" rel="self" type="application/rss+xml" />
	<link>http://ardoino.com/20-openssl-rsa-implementation/</link>
	<description>Homo quisque faber ipse fortunae suae</description>
	<lastBuildDate>Sun, 31 Jan 2010 10:11:57 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Alessandro Baroni</title>
		<link>http://ardoino.com/20-openssl-rsa-implementation/comment-page-1/#comment-5809</link>
		<dc:creator>Alessandro Baroni</dc:creator>
		<pubDate>Fri, 24 Apr 2009 08:15:18 +0000</pubDate>
		<guid isPermaLink="false">http://ardoino.com/20-openssl-rsa-implementation/#comment-5809</guid>
		<description>Ciao, ho trovato molto utile il tuo keygen per imparare ad interagire con l&#039;RSA e openSSL.
Essendo il tuo codice un pò datato ho pensato di ripubblicarlo qui con una piccola modifica che evita le funzioni deprecated, sperando di non aver sbagliato il nuovo controllo in corrispondenza di RSA_generate_key_ex

Ciao

-----------------------------keygenv2.c--------------------------------
/*
	Simple RSA Key generator. Saves keys in PEM format.	Updated to openSSL 0.9.8k.
	Coded by Paolo Ardoino - 
			Alessandro Baroni - 
	Compile: gcc -lssl keygen.c -o keygen
	Usage: ./keygen 
	Ex. ./keygen 1024

*/

#include 
#include 
#include 
#include 

#define SECFILE &quot;sec.pem&quot;
#define PUBFILE &quot;pub.pem&quot;

int main(int argc, char *argv[]){
	FILE *fp=NULL;
	RSA *key = NULL;
	BIGNUM *e = BN_new();
	int keylen=0;

	if(argc!=2){
	  fprintf(stderr,&quot;Error: too many/few arguments.\n &quot;
	  &quot;Usage: %s \n&quot;,argv[0]);
	  exit(0);
	}
	keylen = atoi(argv[1]);
	
	BN_set_word(e, 65537);
	key = RSA_new();
	
	if( !RSA_generate_key_ex(key, keylen, e, NULL) ){
	  fprintf(stderr,&quot;%s\n&quot;,ERR_error_string(ERR_get_error(),NULL));
	  exit(-1);
	}

	if(RSA_check_key(key) &lt; 1){
	  fprintf(stderr,&quot;Error: Problems while generating RSA Key.\nRetry.\n&quot;);
	  exit(-1);
	}

	
	fp=fopen(SECFILE,&quot;w&quot;);
	if(PEM_write_RSAPrivateKey(fp,key,NULL,NULL,0,0,NULL) == 0){
	  fprintf(stderr,&quot;Error: problems while writing RSA Private Key.\n&quot;);
	  exit(-1);
	}
	fclose(fp);
	
	
	fp=fopen(PUBFILE,&quot;w&quot;);
	if(PEM_write_RSAPublicKey(fp,key) == 0){
	  fprintf(stderr,&quot;Error: problems while writing RSA Public Key.\n&quot;);
	  exit(-1);
	}
	fclose(fp);
	
	BN_free(e);
	RSA_free(key);
	
	return 0;
}</description>
		<content:encoded><![CDATA[<p>Ciao, ho trovato molto utile il tuo keygen per imparare ad interagire con l&#8217;RSA e openSSL.<br />
Essendo il tuo codice un pò datato ho pensato di ripubblicarlo qui con una piccola modifica che evita le funzioni deprecated, sperando di non aver sbagliato il nuovo controllo in corrispondenza di RSA_generate_key_ex</p>
<p>Ciao</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;keygenv2.c&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
/*<br />
	Simple RSA Key generator. Saves keys in PEM format.	Updated to openSSL 0.9.8k.<br />
	Coded by Paolo Ardoino &#8211;<br />
			Alessandro Baroni &#8211;<br />
	Compile: gcc -lssl keygen.c -o keygen<br />
	Usage: ./keygen<br />
	Ex. ./keygen 1024</p>
<p>*/</p>
<p>#include<br />
#include<br />
#include<br />
#include </p>
<p>#define SECFILE &#8220;sec.pem&#8221;<br />
#define PUBFILE &#8220;pub.pem&#8221;</p>
<p>int main(int argc, char *argv[]){<br />
	FILE *fp=NULL;<br />
	RSA *key = NULL;<br />
	BIGNUM *e = BN_new();<br />
	int keylen=0;</p>
<p>	if(argc!=2){<br />
	  fprintf(stderr,&#8221;Error: too many/few arguments.\n &#8221;<br />
	  &#8220;Usage: %s \n&#8221;,argv[0]);<br />
	  exit(0);<br />
	}<br />
	keylen = atoi(argv[1]);</p>
<p>	BN_set_word(e, 65537);<br />
	key = RSA_new();</p>
<p>	if( !RSA_generate_key_ex(key, keylen, e, NULL) ){<br />
	  fprintf(stderr,&#8221;%s\n&#8221;,ERR_error_string(ERR_get_error(),NULL));<br />
	  exit(-1);<br />
	}</p>
<p>	if(RSA_check_key(key) &lt; 1){<br />
	  fprintf(stderr,&#8221;Error: Problems while generating RSA Key.\nRetry.\n&#8221;);<br />
	  exit(-1);<br />
	}</p>
<p>	fp=fopen(SECFILE,&#8221;w&#8221;);<br />
	if(PEM_write_RSAPrivateKey(fp,key,NULL,NULL,0,0,NULL) == 0){<br />
	  fprintf(stderr,&#8221;Error: problems while writing RSA Private Key.\n&#8221;);<br />
	  exit(-1);<br />
	}<br />
	fclose(fp);</p>
<p>	fp=fopen(PUBFILE,&#8221;w&#8221;);<br />
	if(PEM_write_RSAPublicKey(fp,key) == 0){<br />
	  fprintf(stderr,&#8221;Error: problems while writing RSA Public Key.\n&#8221;);<br />
	  exit(-1);<br />
	}<br />
	fclose(fp);</p>
<p>	BN_free(e);<br />
	RSA_free(key);</p>
<p>	return 0;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel</title>
		<link>http://ardoino.com/20-openssl-rsa-implementation/comment-page-1/#comment-5072</link>
		<dc:creator>Manuel</dc:creator>
		<pubDate>Tue, 04 Nov 2008 16:30:36 +0000</pubDate>
		<guid isPermaLink="false">http://ardoino.com/20-openssl-rsa-implementation/#comment-5072</guid>
		<description>Ciao,
sono un newbie e sto giocando con le librere openSSL. 
ho trovato molto interessante il tuo articolo, ma ora sarei interessato in particolare alle funzioni RSA_sign e RSA_verify. 
Ci sono degli esempi a riguardo?  Perchè le API non sono chiarissime.</description>
		<content:encoded><![CDATA[<p>Ciao,<br />
sono un newbie e sto giocando con le librere openSSL.<br />
ho trovato molto interessante il tuo articolo, ma ora sarei interessato in particolare alle funzioni RSA_sign e RSA_verify.<br />
Ci sono degli esempi a riguardo?  Perchè le API non sono chiarissime.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
