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!'); | 
						|
	} | 
						|
} |