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