Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re^2: Private keys in Crypt::RSA

by jmking (Initiate)
on Mar 07, 2007 at 21:44 UTC ( #603728=note: print w/replies, xml ) Need Help??

in reply to Re: Private keys in Crypt::RSA
in thread Private keys in Crypt::RSA

Thanks for the reply. The key is being returned from the database correctly, so I'm not sure if storing it as a BLOB or converting it will help. And I'm using AES_ENCRYPT in MySQL, so the key is being stored securely. But if I pass the string directly to the decryption function like I show in the example, it gives me this error:
Can't call method "check" without a package or object reference at /us +r/local/lib/perl5/site_perl/5.6.2/Crypt/ line 133.
My guess is that it needs to be stored in a hash (which I've tried) or I'm just missing something. If I can't get this to work I'll just go ahead and encrypt it like you suggested but I would prefer to store it in the database. Any suggestions?

Replies are listed 'Best First'.
Re^3: Private keys in Crypt::RSA
by traveler (Parson) on Mar 07, 2007 at 22:12 UTC
    The key is not a scalar. It is an object. The private key is an object of type Crypt::RSA::Key::Private. When you store it do you serialize the object and then unserialize it on retrieval? If not, you are probably not saving and restoring the object itself.

    From the error (and checking the code) it seems that you are trying to treat the key as though it were just the raw key value iteslf (a scalar), which it is not.

      Hi, I am trying to use deserialize i get an error every time "n is not a number". I have generated a set of keys and dont want to store private key any where. Currently as I am testing my code I have stored the serialize key as variable. It does not error when i pass it to $private->deserialize but errors when I call $rsa->decrypt. Can you please help me. thanks

        I realize this is an ancient thread, but I ran across the same error and finally figured out the problem.

        After de-serializing the private key (I just used the Crypt::RSA::Key::Private->read method) you MUST use the 'reveal' method and give it the password you originally used to generate the keypair.

        my $rsa_private = new Crypt::RSA::Key::Private; my $private = $rsa_private->read(Filename => "id_rsa"); ## This is vital if you want the loaded private key to work. $private->reveal(Password => "originalkeypairpassword");
Re^3: Private keys in Crypt::RSA
by jmking (Initiate) on Mar 07, 2007 at 22:10 UTC
    I was able to solve the problem. I needed to return the result as an array reference and use the deserialize() function to convert it to the perl object it was looking for. Thanks for the help!

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://603728]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2021-12-03 16:46 GMT
Find Nodes?
    Voting Booth?
    R or B?

    Results (29 votes). Check out past polls.