Gary
unread,Feb 28, 2009, 3:23:10 PM2/28/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Crypto++ Users
Hi there!
I've built the below code(RSASign) successfully and it works fine:
#include "stdafx.h"
#include "rsa.h"
#include "osrng.h" // PRNG
#include "hex.h" // Hex Encoder/Decoder
#include "filters.h" // String Source and Sink
//std
#include <iostream>
#include <conio.h>
using namespace std;
using namespace CryptoPP;
int main()
{
AutoSeededRandomPool rng;
string message = "Yoda said, Do or Do Not. There is not try.";
// Input: Private Key
byte PrivateKeyArray[]=
{0x30,0x82,0x01,0x52,0x02,0x01,0x00,0x30,0x0D,
0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,0x05,0x00,
0x04,0x82,0x01,0x3C,0x30,0x82,0x01,0x38,0x02,0x01,0x00,0x02,0x41,
0x00,0xD1,0x8A,0x48,0xC0,0x60,0x56,0x27,0x32,0x98,0xE4,0x3F,0xB4,
0x43,0xF2,0xB9,0xF6,0xA2,0x75,0xF0,0x42,0x17,0x07,0xD8,0x4E,0x9C,
0x62,0x29,0x19,0xF6,0xE5,0xFB,0xDA,0x49,0x6E,0x42,0x85,0xB1,0x1A,
0xE3,0x1A,0x1B,0x24,0x7B,0x0F,0xCD,0x5F,0x9E,0x3D,0xC1,0x1C,0x7C,
0x26,0x06,0xA7,0x28,0x88,0xED,0x87,0x2D,0xC7,0xB5,0x2A,0xDB,0x0F,
0x02,0x01,0x11,0x02,0x40,0x49,0xF4,0x92,0x25,0xC7,0xA5,0xEF,0xB7,
0x81,0x41,0x7F,0xE5,0x45,0x28,0x7D,0xDE,0x93,0xB1,0x27,0x9E,0xDA,
0xF3,0xB5,0xC1,0x64,0x5E,0xE1,0x54,0x75,0x42,0x1C,0xA6,0xC1,0x5D,
0x3B,0xCE,0xED,0x85,0x1F,0xE6,0x6B,0xEA,0xB8,0x47,0x5B,0x2C,0x38,
0x06,0xEE,0xC9,0x92,0x9D,0xB3,0x24,0x43,0xD1,0x85,0x6E,0x11,0x9D,
0xF2,0x01,0x68,0x31,0x02,0x21,0x00,0xF7,0x77,0x08,0xF8,0xCE,0xF8,
0x9E,0x98,0x32,0x6C,0x9C,0x7C,0x9B,0x41,0x5F,0xB8,0xEC,0x63,0x8A,
0xEE,0xAC,0xD0,0xA5,0xFC,0x60,0xEC,0x43,0x72,0x80,0xFC,0xE9,0x1F,
0x02,0x21,0x00,0xD8,0xC4,0x65,0x6D,0x41,0x29,0x14,0xCA,0x61,0x9E,
0xD4,0x73,0xAF,0xCB,0x9F,0xC6,0x85,0x7D,0xD1,0xCD,0xDE,0x45,0x17,
0xBA,0xE7,0xE3,0x0D,0xC0,0x5B,0xD4,0xA0,0x11,0x02,0x21,0x00,0xCB,
0xCB,0x70,0xCC,0xE6,0xAE,0xA0,0xB9,0x92,0xF0,0x08,0x66,0x9D,0xF9,
0x9A,0x1F,0xD1,0xBB,0x63,0x5B,0x24,0xE8,0x10,0x39,0x40,0xC2,0x91,
0xE5,0xD3,0xA3,0x1A,0x55,0x02,0x20,0x19,0x80,0x84,0x67,0x34,0xD7,
0xA8,0x17,0xCF,0x3F,0xDC,0xC2,0x50,0xEA,0xC7,0x80,0xC4,0x69,0x27,
0xBD,0xDD,0xEA,0x02,0xCA,0xB1,0xDE,0x7A,0x16,0xA1,0x64,0x4F,0x11,
0x02,0x20,0x1B,0x29,0x5C,0x2F,0x54,0x61,0xED,0x90,0xCA,0x8A,0xB6,
0xE2,0x8E,0x27,0x0C,0x8F,0x00,0x40,0x90,0x78,0xF8,0xDD,0xF1,0xED,
0x9F,0x1B,0x3E,0x46,0x86,0xD3,0x93,0xB6};
// Output: Signed Message M
byte signature[256];
StringSource privArray(PrivateKeyArray,sizeof(PrivateKeyArray),
true,NULL);
RSASSA_PKCS1v15_SHA_Signer priv(privArray);
// Sign Away...
StringSource( message, true,
new SignerFilter( rng, priv,
new HexEncoder(
new ArraySink(signature,sizeof(signature))
) // HexEncoder
) // SignerFilter
); // StringSource
cout<<"signature is:"<<endl;
for(int i=0;i<sizeof(signature);i++)
cout<<signature[i]<<" | ";
_getch();
return 0;
}
It's private key value is in a RSAPrivateKey structure format,as
defined by PKCS#1,
And is of type a DER-encoded PKCS#8 PrivateKeyInfo structure.
I need to sign a message by only "n"(modulus) and "d"(private
exponent),
I've read "RSADumpKeys" example to parse key fields,but I don't know
how can I sign a message with only "n" and "d" parts?
And with which function?
I want to store "n" and "d" parts of generated Private key into a byte
array(with length 256 bytes) and sign a message with this array,
Is this job possible with the above "CryptoPP" functions? or their
input private key should be only in DER-encoded format?
Because now I need to store only 256 bytes(128 bytes for "n" and 128
bytes for "d")!
What is your suggesstion?
Hope you help me!
Thanks in Advance.
Gary