1<?php 2 3/** 4 * TBSCertificate 5 * 6 * PHP version 5 7 * 8 * @category File 9 * @package ASN1 10 * @author Jim Wigginton <terrafrost@php.net> 11 * @copyright 2016 Jim Wigginton 12 * @license http://www.opensource.org/licenses/mit-license.html MIT License 13 * @link http://phpseclib.sourceforge.net 14 */ 15 16namespace phpseclib3\File\ASN1\Maps; 17 18use phpseclib3\File\ASN1; 19 20/** 21 * TBSCertificate 22 * 23 * @package ASN1 24 * @author Jim Wigginton <terrafrost@php.net> 25 * @access public 26 */ 27abstract class TBSCertificate 28{ 29 // assert($TBSCertificate['children']['signature'] == $Certificate['children']['signatureAlgorithm']) 30 const MAP = [ 31 'type' => ASN1::TYPE_SEQUENCE, 32 'children' => [ 33 // technically, default implies optional, but we'll define it as being optional, none-the-less, just to 34 // reenforce that fact 35 'version' => [ 36 'type' => ASN1::TYPE_INTEGER, 37 'constant' => 0, 38 'optional' => true, 39 'explicit' => true, 40 'mapping' => ['v1', 'v2', 'v3'], 41 'default' => 'v1' 42 ], 43 'serialNumber' => CertificateSerialNumber::MAP, 44 'signature' => AlgorithmIdentifier::MAP, 45 'issuer' => Name::MAP, 46 'validity' => Validity::MAP, 47 'subject' => Name::MAP, 48 'subjectPublicKeyInfo' => SubjectPublicKeyInfo::MAP, 49 // implicit means that the T in the TLV structure is to be rewritten, regardless of the type 50 'issuerUniqueID' => [ 51 'constant' => 1, 52 'optional' => true, 53 'implicit' => true 54 ] + UniqueIdentifier::MAP, 55 'subjectUniqueID' => [ 56 'constant' => 2, 57 'optional' => true, 58 'implicit' => true 59 ] + UniqueIdentifier::MAP, 60 // <http://tools.ietf.org/html/rfc2459#page-74> doesn't use the EXPLICIT keyword but if 61 // it's not IMPLICIT, it's EXPLICIT 62 'extensions' => [ 63 'constant' => 3, 64 'optional' => true, 65 'explicit' => true 66 ] + Extensions::MAP 67 ] 68 ]; 69} 70