1
0
mirror of https://github.com/danog/phpseclib.git synced 2024-11-27 04:46:26 +01:00

X509: add getOID() method

This commit is contained in:
terrafrost 2015-08-29 21:58:19 -05:00
parent e391fdbd27
commit d7d9d782b0
2 changed files with 31 additions and 0 deletions

View File

@ -4614,4 +4614,27 @@ class File_X509
$temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false;
return $temp != false ? $temp : $str;
}
/**
* Returns the OID corresponding to a name
*
* What's returned in the associative array is either a name or an OID if no OID to name mapping is available.
* The problem with this is that what may be an unmapped OID in one version of phpseclib may not be unmapped
* in the next version, so apps that are looking at this OID may not be able to work from version to version.
*
* This method will return the OID if a name is passed to it and if no mapping is avialable it'll assume that
* what's being passed to it already is an OID and return that instead. A few examples.
*
* getOID('2.16.840.1.101.3.4.2.1') == '2.16.840.1.101.3.4.2.1'
* getOID('id-sha256') == '2.16.840.1.101.3.4.2.1'
* getOID('zzz') == 'zzz'
*
* @access public
* @return String
*/
function getOID($name)
{
$idx = array_search($name, $this->oids);
return $idx === false ? $name : $idx;
}
}

View File

@ -214,4 +214,12 @@ aBtsWpliLSex/HHhtRW9AkBGcq67zKmEpJ9kXcYLEjJii3flFS+Ct/rNm+Hhm1l7
}
return $value;
}
public function testGetOID()
{
$x509 = new File_X509();
$this->assertEquals($x509->getOID('2.16.840.1.101.3.4.2.1'), '2.16.840.1.101.3.4.2.1');
$this->assertEquals($x509->getOID('id-sha256'), '2.16.840.1.101.3.4.2.1');
$this->assertEquals($x509->getOID('zzz'), 'zzz');
}
}