[line 133]
Crypt_RSA_KeyPair class, derived from Crypt_RSA_ErrorHandler
Provides the following functions:
- generate($key) - generates new key pair
- getPublicKey() - returns public key
- getPrivateKey() - returns private key
- getKeyLength() - returns bit key length
- setRandomGenerator($func_name) - sets random generator to $func_name
- fromPEMString($str) - retrieves keypair from PEM-encoded string
- toPEMString() - stores keypair to PEM-encoded string
- isEqual($keypair2) - compares current keypair to $keypair2
Example usage: // create new 1024-bit key pair $key_pair = new Crypt_RSA_KeyPair(1024);
// error check if ($key_pair->isError()) { echo "error while initializing Crypt_RSA_KeyPair object:\n"; $erorr = $key_pair->getLastError(); echo $error->getMessage(), "\n"; }
// get public key $public_key = $key_pair->getPublicKey();
// get private key $private_key = $key_pair->getPrivateKey();
// generate new 512-bit key pair $key_pair->generate(512);
// error check if ($key_pair->isError()) { echo "error while generating key pair:\n"; $erorr = $key_pair->getLastError(); echo $error->getMessage(), "\n"; }
// get key pair length $length = $key_pair->getKeyLength();
// set random generator to $func_name, where $func_name // consists name of random generator function. See comments // before setRandomGenerator() method for details $key_pair->setRandomGenerator($func_name);
// error check if ($key_pair->isError()) { echo "error while changing random generator:\n"; $erorr = $key_pair->getLastError(); echo $error->getMessage(), "\n"; }
// using factory() method instead of constructor (it returns PEAR_Error object on failure) $rsa_obj = &Crypt_RSA_KeyPair::factory($key_len); if (PEAR::isError($rsa_obj)) { echo "error: ", $rsa_obj->getMessage(), "\n"; }
// read key pair from PEM-encoded string: $str = "-----BEGIN RSA PRIVATE KEY-----" . "MCsCAQACBHr5LDkCAwEAAQIEBc6jbQIDAOCfAgMAjCcCAk3pAgJMawIDAL41" . "-----END RSA PRIVATE KEY-----"; $keypair = Crypt_RSA_KeyPair::fromPEMString($str);
// read key pair from .pem file 'private.pem': $str = file_get_contents('private.pem'); $keypair = Crypt_RSA_KeyPair::fromPEMString($str);
// generate and write 1024-bit key pair to .pem file 'private_new.pem' $keypair = new Crypt_RSA_KeyPair(1024); $str = $keypair->toPEMString(); file_put_contents('private_new.pem', $str);
// compare $keypair1 to $keypair2 if ($keypair1->isEqual($keypair2)) { echo "keypair1 = keypair2\n"; } else { echo "keypair1 != keypair2\n"; }