public static function getPublicRSAKey()
 {
     $errorSettings = error_reporting(0);
     $pemString = file_get_contents('key.pem');
     $keyPair = Crypt_RSA_KeyPair::fromPEMString($pemString);
     $math_obj =& Crypt_RSA_MathLoader::loadWrapper('default');
     $publicKey = $keyPair->getPublicKey();
     $keyArray = array('exponent' => $math_obj->bin2int($publicKey->getExponent()), 'modulus' => $math_obj->bin2int($publicKey->getModulus()));
     if ($math_obj->getWrapperName() == 'GMP') {
         $keyArray = array_map('gmp_strval', $keyArray);
     }
     error_reporting($errorSettings);
     return $keyArray;
 }
Example #2
0
 function wrap_rsa_get_key_size($keypair = '')
 {
     global $last_rsa_error;
     global $wrap_rsa_default_key_size;
     if ($keypair === '') {
         return $wrap_rsa_default_key_size;
     }
     $key_pair = Crypt_RSA_KeyPair::fromPEMString($keypair, 'default', 'wrap_rsa_cerr');
     if ($last_rsa_error !== false) {
         return false;
     }
     $public_key = $key_pair->getPublicKey();
     if (wrap_rsa_cerr($public_key)) {
         return false;
     }
     $length = (int) $public_key->getKeyLength();
     if (wrap_rsa_cerr($public_key)) {
         return false;
     }
     return $length;
 }
Example #3
0
//define('MATH_LIBRARY', 'BCMath');
$errors = array();
echo "Start of testing Crypt_RSA package with [", MATH_LIBRARY, "] math library...\n";
///////////////////////////////////////////////
// test all functionality of Crypt_RSA_KeyPair class
///////////////////////////////////////////////
$key_pair = new Crypt_RSA_KeyPair(128, MATH_LIBRARY, 'check_error');
$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();
$key_length = $key_pair->getKeyLength();
if ($key_length != 128) {
    $errors[] = "wrong result returned from Crypt_RSA_KeyPair::getKeyLength() function";
}
// check fromPEMString() and toPEMString() functions of Crypt_RSA_KeyPair class
$str_in = "\n-----BEGIN RSA PRIVATE KEY-----\nMIIBPAIBAAJBAKSLT0KZTXYxHr6U/9GYBbnV8vxGkIleDE4aiVMRxuofOjcHDCoI\nqsrVjgP78BrVqWMAAeQ9i0dXxz9zhy0+h7MCAwEAAQJBAI6OL1Yo0Uaj2doN5vDk\nf5l4dfMBA7ovZAPK08zHawlsLvZTzxOQJhKquN01aIJA2wpzixcC9T2PgI6XW6jx\nHkECIQDOEVpVZcE2tSnU3TwulVAC8V82akNAEH8ht6eqsEVWkwIhAMxqMc4Av7hs\nioAs1H9NvkF01xYVhyiEc4rzgVlmjp5hAiEAi53AOYnmvd1CyWFXrCwn+MZ2/xRC\nGj7TFBItvH0PjZcCIBi9kaGZPZsYp/qzclSmGCzb81xc5qrkvQdISZOEciaBAiEA\nvLq0MTN4jkO2DOC4qxvKc1l4383nks1g/cljSO/y0pw=\n-----END RSA PRIVATE KEY-----\n";
$key_pair = Crypt_RSA_KeyPair::fromPEMString($str_in, MATH_LIBRARY, 'check_error');
$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();
$key_length = $key_pair->getKeyLength();
if ($key_length != 512) {
    $errors[] = "incorrect key length retrieved from PEM string";
}
$rsa_obj = new Crypt_RSA(array(), MATH_LIBRARY, 'check_error');
$text = 'test text';
$enc_text = $rsa_obj->encrypt($text, $public_key);
$dec_text = $rsa_obj->decrypt($enc_text, $private_key);
if ($dec_text != $text) {
    $errors[] = "decrypted text differs from encrypted text in Crypt_RSA_KeyPair::fromPEMString() check";
}
$str_out = $key_pair->toPEMString();
$str_in = str_replace($str_in, array("\r", "\n"), '');