openssl_pkey_new_basic.phpt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. --TEST--
  2. openssl_pkey_new() basic usage tests
  3. --SKIPIF--
  4. <?php if (!extension_loaded("openssl")) print "skip"; ?>
  5. --FILE--
  6. <?php
  7. function openssl_pkey_test_cmp($expected, $bin_key) {
  8. var_dump(strcasecmp(ltrim($expected, '0'), bin2hex($bin_key)));
  9. }
  10. // RSA
  11. $nhex = "BBF82F090682CE9C2338AC2B9DA871F7368D07EED41043A440D6B6F07454F51F" .
  12. "B8DFBAAF035C02AB61EA48CEEB6FCD4876ED520D60E1EC4619719D8A5B8B807F" .
  13. "AFB8E0A3DFC737723EE6B4B7D93A2584EE6A649D060953748834B2454598394E" .
  14. "E0AAB12D7B61A51F527A9A41F6C1687FE2537298CA2A8F5946F8E5FD091DBDCB";
  15. $ehex = "11";
  16. $dhex = "A5DAFC5341FAF289C4B988DB30C1CDF83F31251E0668B42784813801579641B2" .
  17. "9410B3C7998D6BC465745E5C392669D6870DA2C082A939E37FDCB82EC93EDAC9" .
  18. "7FF3AD5950ACCFBC111C76F1A9529444E56AAF68C56C092CD38DC3BEF5D20A93" .
  19. "9926ED4F74A13EDDFBE1A1CECC4894AF9428C2B7B8883FE4463A4BC85B1CB3C1";
  20. $phex = "EECFAE81B1B9B3C908810B10A1B5600199EB9F44AEF4FDA493B81A9E3D84F632" .
  21. "124EF0236E5D1E3B7E28FAE7AA040A2D5B252176459D1F397541BA2A58FB6599";
  22. $qhex = "C97FB1F027F453F6341233EAAAD1D9353F6C42D08866B1D05A0F2035028B9D86" .
  23. "9840B41666B42E92EA0DA3B43204B5CFCE3352524D0416A5A441E700AF461503";
  24. $rsa= openssl_pkey_new(array(
  25. 'rsa' => array(
  26. 'n' => hex2bin($nhex),
  27. 'e' => hex2bin($ehex),
  28. 'd' => hex2bin($dhex),
  29. 'p' => hex2bin($phex),
  30. 'q' => hex2bin($qhex),
  31. )
  32. ));
  33. $details = openssl_pkey_get_details($rsa);
  34. $rsa_details = $details['rsa'];
  35. openssl_pkey_test_cmp($nhex, $rsa_details['n']);
  36. openssl_pkey_test_cmp($ehex, $rsa_details['e']);
  37. openssl_pkey_test_cmp($dhex, $rsa_details['d']);
  38. openssl_pkey_test_cmp($phex, $rsa_details['p']);
  39. openssl_pkey_test_cmp($qhex, $rsa_details['q']);
  40. // DSA
  41. $phex = '00f8000ae45b2dacb47dd977d58b719d097bdf07cb2c17660ad898518c08' .
  42. '1a61659a16daadfaa406a0a994c743df5eda07e36bd0adcad921b77432ff' .
  43. '24ccc31e782d647e66768122b578857e9293df78387dc8b44af2a4a3f305' .
  44. '1f236b1000a3e31da489c6681b0031f7ec37c2e1091bdb698e7660f135b6' .
  45. '996def90090303b7ad';
  46. $qhex = '009b3734fc9f7a4a9d6437ec314e0a78c2889af64b';
  47. $ghex = '00b320300a0bc55b8f0ec6edc218e2185250f38fbb8291db8a89227f6e41' .
  48. '00d47d6ccb9c7d42fc43280ecc2ed386e81ff65bc5d6a2ae78db7372f5dc' .
  49. 'f780f4558e7ed3dd0c96a1b40727ac56c5165aed700a3b63997893a1fb21' .
  50. '4e882221f0dd9604820dc34e2725dd6901c93e0ca56f6d76d495c332edc5' .
  51. 'b81747c4c447a941f3';
  52. $dsa = openssl_pkey_new(array(
  53. 'dsa' => array(
  54. 'p' => hex2bin($phex),
  55. 'q' => hex2bin($qhex),
  56. 'g' => hex2bin($ghex)
  57. )
  58. ));
  59. $details = openssl_pkey_get_details($dsa);
  60. $dsa_details = $details['dsa'];
  61. openssl_pkey_test_cmp($phex, $dsa_details['p']);
  62. openssl_pkey_test_cmp($qhex, $dsa_details['q']);
  63. openssl_pkey_test_cmp($ghex, $dsa_details['g']);
  64. var_dump(strlen($dsa_details['priv_key']));
  65. var_dump(strlen($dsa_details['pub_key']));
  66. // DH
  67. $phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' .
  68. 'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' .
  69. '7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' .
  70. '6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';
  71. $dh_details = array('p' => $phex, 'g' => '2');
  72. $dh = openssl_pkey_new(array(
  73. 'dh'=> array('p' => hex2bin($phex), 'g' => '2'))
  74. );
  75. $details = openssl_pkey_get_details($dh);
  76. $dh_details = $details['dh'];
  77. openssl_pkey_test_cmp($phex, $dh_details['p']);
  78. var_dump($dh_details['g']);
  79. var_dump(strlen($dh_details['pub_key']));
  80. var_dump(strlen($dh_details['priv_key']));
  81. ?>
  82. --EXPECTF--
  83. int(0)
  84. int(0)
  85. int(0)
  86. int(0)
  87. int(0)
  88. int(0)
  89. int(0)
  90. int(0)
  91. int(%d)
  92. int(%d)
  93. int(0)
  94. string(1) "2"
  95. int(%d)
  96. int(%d)