Example #1
0
 /**
  * EMSA-PKCS1-V1_5-ENCODE
  *
  * See {@link http://tools.ietf.org/html/rfc3447#section-9.2 RFC3447#section-9.2}.
  *
  * @access private
  * @param String $m        	
  * @param Integer $emLen        	
  * @return String
  */
 function _emsa_pkcs1_v1_5_encode($m, $emLen)
 {
     $h = $this->hash->_hash($m);
     if ($h === false) {
         return false;
     }
     // see http://tools.ietf.org/html/rfc3447#page-43
     switch ($this->hashName) {
         case 'md2':
             $t = pack('H*', '3020300c06082a864886f70d020205000410');
             break;
         case 'md5':
             $t = pack('H*', '3020300c06082a864886f70d020505000410');
             break;
         case 'sha1':
             $t = pack('H*', '3021300906052b0e03021a05000414');
             break;
         case 'sha256':
             $t = pack('H*', '3031300d060960864801650304020105000420');
             break;
         case 'sha384':
             $t = pack('H*', '3041300d060960864801650304020205000430');
             break;
         case 'sha512':
             $t = pack('H*', '3051300d060960864801650304020305000440');
     }
     $t .= $h;
     $tLen = strlen($t);
     if ($emLen < $tLen + 11) {
         user_error('Intended encoded message length too short');
         return false;
     }
     $ps = str_repeat(chr(0xff), $emLen - $tLen - 3);
     $em = "{$ps}{$t}";
     return $em;
 }