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
11 years ago
|
<?php
|
||
|
|
||
|
namespace yiiunit\extensions\authclient\oauth\signature;
|
||
|
|
||
11 years ago
|
use yii\authclient\signature\RsaSha1;
|
||
11 years ago
|
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!');
|
||
|
}
|
||
|
}
|