You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
4.3 KiB
110 lines
4.3 KiB
<?php |
|
|
|
namespace yiiunit\extensions\authclient\oauth\signature; |
|
|
|
use yii\authclient\signature\RsaSha1; |
|
use yiiunit\extensions\authclient\TestCase; |
|
|
|
class RsaSha1Test extends TestCase |
|
{ |
|
/** |
|
* Returns test public certificate string. |
|
* @return string public certificate string. |
|
*/ |
|
protected function getTestPublicCertificate() |
|
{ |
|
return '-----BEGIN CERTIFICATE----- |
|
MIIDJDCCAo2gAwIBAgIJALCFAl3nj1ibMA0GCSqGSIb3DQEBBQUAMIGqMQswCQYD |
|
VQQGEwJOTDESMBAGA1UECAwJQW1zdGVyZGFtMRIwEAYDVQQHDAlBbXN0ZXJkYW0x |
|
DzANBgNVBAoMBlBpbVRpbTEPMA0GA1UECwwGUGltVGltMSswKQYDVQQDDCJkZXY1 |
|
My5xdWFydHNvZnQuY29tL3BrbGltb3YvcGltdGltMSQwIgYJKoZIhvcNAQkBFhVw |
|
a2xpbW92QHF1YXJ0c29mdC5jb20wHhcNMTIxMTA2MTQxNjUzWhcNMTMxMTA2MTQx |
|
NjUzWjCBqjELMAkGA1UEBhMCTkwxEjAQBgNVBAgMCUFtc3RlcmRhbTESMBAGA1UE |
|
BwwJQW1zdGVyZGFtMQ8wDQYDVQQKDAZQaW1UaW0xDzANBgNVBAsMBlBpbVRpbTEr |
|
MCkGA1UEAwwiZGV2NTMucXVhcnRzb2Z0LmNvbS9wa2xpbW92L3BpbXRpbTEkMCIG |
|
CSqGSIb3DQEJARYVcGtsaW1vdkBxdWFydHNvZnQuY29tMIGfMA0GCSqGSIb3DQEB |
|
AQUAA4GNADCBiQKBgQDE0d63YwpBLxzxQAW887JALcGruAHkHu7Ui1oc7bCIMy+u |
|
d6rPgNmbFLw3GoGzQ8xhMmksZHsS07IfWRTDeisPHAqfgcApOZbyMyZUAL6+1ko4 |
|
xAIPnQSia7l8M4nWgtgqifDCbFKAoPXuWSrYDOFtgSkBLH5xYyFPRc04nnHpoQID |
|
AQABo1AwTjAdBgNVHQ4EFgQUE2oxXYDFRNtgvn8tyXldepRFWzYwHwYDVR0jBBgw |
|
FoAUE2oxXYDFRNtgvn8tyXldepRFWzYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B |
|
AQUFAAOBgQB1/S46dWBECaOs4byCysFhzXw8qx8znJkSZcIdDilmg1kkfusXKi2S |
|
DiiFw5gDrc6Qp6WtPmVhxHUWl6O5bOG8lG0Dcppeed9454CGvBShmYdwC6vk0s7/ |
|
gVdK2V4fYsUeT6u49ONshvJ/8xhHz2gGXeLWaqHwtK3Dl3S6TIDuoQ== |
|
-----END CERTIFICATE-----'; |
|
} |
|
|
|
/** |
|
* Returns test private certificate string. |
|
* @return string private certificate string. |
|
*/ |
|
protected function getTestPrivateCertificate() |
|
{ |
|
return '-----BEGIN RSA PRIVATE KEY----- |
|
MIICXAIBAAKBgQDE0d63YwpBLxzxQAW887JALcGruAHkHu7Ui1oc7bCIMy+ud6rP |
|
gNmbFLw3GoGzQ8xhMmksZHsS07IfWRTDeisPHAqfgcApOZbyMyZUAL6+1ko4xAIP |
|
nQSia7l8M4nWgtgqifDCbFKAoPXuWSrYDOFtgSkBLH5xYyFPRc04nnHpoQIDAQAB |
|
AoGAPm1e2gYE86Xw5ShsaYFWcXrR6hiEKQoSsMG+hFxz2M97eTglqolw+/p4tHWo |
|
2+ZORioKJ/V6//67iavkpRfz3dloUlNE9ZzlvqvPjHePt3BI22GI8D84dcqnxWW5 |
|
4okEAfDfXk2B4UNOpVNU5FZjg4XvBEbbhRVrsBWAPMduDX0CQQDtFgLLLWr50F3z |
|
lGuFy68Y1d01sZsyf7xUPaLcDWbrnVMIjZIs60BbLg9PZ6sYcwV2RwL/WaJU0Ap/ |
|
KKjHW51zAkEA1IWBicQtt6yGaUqydq+ifX8/odFjIrlZklwckLl65cImyxqDYMnA |
|
m+QdbZznSH96BHjduhJAEAtfYx5CVMrXmwJAHKiWedzpm3z2fmUoginW5pejf8QS |
|
UI5kQ4KX1yW/lSeVS+lhDBD73Im6zAxqADCXLm7zC87X8oybWDef/0kxxQJAebRX |
|
AalKMSRo+QVg/F0Kpenoa+f4aNtSc2GyriK6QbeU9b0iPZxsZBoXzD0NqlPucX8y |
|
IyvuagHJR379p4dePwJBAMCkYSATGdhYbeDfySWUro5K0QAvBNj8FuNJQ4rqUxz8 |
|
8b+OXIyd5WlmuDRTDGJBTxAYeaioTuMCFWaZm4jG0I4= |
|
-----END RSA PRIVATE KEY-----'; |
|
} |
|
|
|
// Tests : |
|
|
|
public function testGenerateSignature() |
|
{ |
|
$signatureMethod = new RsaSha1(); |
|
$signatureMethod->setPrivateCertificate($this->getTestPrivateCertificate()); |
|
$signatureMethod->setPublicCertificate($this->getTestPublicCertificate()); |
|
|
|
$baseString = 'test_base_string'; |
|
$key = 'test_key'; |
|
|
|
$signature = $signatureMethod->generateSignature($baseString, $key); |
|
$this->assertNotEmpty($signature, 'Unable to generate signature!'); |
|
} |
|
|
|
/** |
|
* @depends testGenerateSignature |
|
*/ |
|
public function testVerify() |
|
{ |
|
$signatureMethod = new RsaSha1(); |
|
$signatureMethod->setPrivateCertificate($this->getTestPrivateCertificate()); |
|
$signatureMethod->setPublicCertificate($this->getTestPublicCertificate()); |
|
|
|
$baseString = 'test_base_string'; |
|
$key = 'test_key'; |
|
$signature = 'unsigned'; |
|
$this->assertFalse($signatureMethod->verify($signature, $baseString, $key), 'Unsigned signature is valid!'); |
|
|
|
$generatedSignature = $signatureMethod->generateSignature($baseString, $key); |
|
$this->assertTrue($signatureMethod->verify($generatedSignature, $baseString, $key), 'Generated signature is invalid!'); |
|
} |
|
|
|
public function testInitPrivateCertificate() |
|
{ |
|
$signatureMethod = new RsaSha1(); |
|
|
|
$certificateFileName = __FILE__; |
|
$signatureMethod->privateCertificateFile = $certificateFileName; |
|
$this->assertEquals(file_get_contents($certificateFileName), $signatureMethod->getPrivateCertificate(), 'Unable to fetch private certificate from file!'); |
|
} |
|
|
|
public function testInitPublicCertificate() |
|
{ |
|
$signatureMethod = new RsaSha1(); |
|
|
|
$certificateFileName = __FILE__; |
|
$signatureMethod->publicCertificateFile = $certificateFileName; |
|
$this->assertEquals(file_get_contents($certificateFileName), $signatureMethod->getPublicCertificate(), 'Unable to fetch public certificate from file!'); |
|
} |
|
} |