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