* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once __DIR__.'/hexdump.php'; require_once __DIR__.'/../vendor/autoload.php'; use FG\ASN1\OID; use FG\ASN1\Object; use FG\ASN1\Universal\Boolean; use FG\ASN1\Universal\Integer; use FG\ASN1\Universal\Enumerated; use FG\ASN1\Universal\PrintableString; use FG\ASN1\Universal\NumericString; use FG\ASN1\Universal\CharacterString; use FG\ASN1\Universal\UTF8String; use FG\ASN1\Universal\BitString; use FG\ASN1\Universal\OctetString; use FG\ASN1\Universal\ObjectIdentifier; use FG\ASN1\Universal\NullObject; use FG\ASN1\Universal\UTCTime; use FG\ASN1\Universal\GeneralizedTime; use FG\ASN1\Universal\Set; use FG\ASN1\Universal\Sequence; use FG\ASN1\Composite\AttributeTypeAndValue; use FG\ASN1\Composite\RDNString; use FG\ASN1\Composite\RelativeDistinguishedName; use FG\X509\CertificateSubject; use FG\X509\PublicKey; use FG\X509\AlgorithmIdentifier; use FG\X509\CSR\CSR; // check if openssl is installed on this system $openSSLVersionOutput = shell_exec('openssl version'); if (substr($openSSLVersionOutput, 0, 7) == 'OpenSSL') { $openSSLisAvailable = true; } else { $openSSLisAvailable = false; } function printVariableInfo(Object $variable) { $className = get_class($variable); $stringValue = nl2br($variable->__toString()); $binaryData = $variable->getBinary(); $base64Binary = chunk_split(base64_encode($binaryData), 24); echo '
{$openSSLOutput}
Class | toString() | Binary (base64) | Binary (hex) | OpenSSL asn1parse output'; } // Primitives printVariableInfo(new Boolean(true)); printVariableInfo(new Boolean(false)); printVariableInfo(new Integer(123456)); printVariableInfo(new Integer(-546)); printVariableInfo(new Enumerated(1)); printVariableInfo(new PrintableString('Hello World')); printVariableInfo(new NumericString('123456')); printVariableInfo(new CharacterString('Foo')); printVariableInfo(new UTF8String('Hello ♥♥♥ World')); // there are more restricted character string classes available printVariableInfo(new BitString('3082010a02820101009e2a7')); printVariableInfo(new OctetString('x01020304AE123200A0')); printVariableInfo(new ObjectIdentifier(OID::PKCS9_EMAIL)); printVariableInfo(new NullObject()); printVariableInfo(new UTCTime('2012-09-30 14:33')); printVariableInfo(new GeneralizedTime('2008-07-01 22:35:17.024540+06:30')); // Constructed printVariableInfo(new Sequence( new ObjectIdentifier(OID::COMMON_NAME), new PrintableString('Friedrich') )); printVariableInfo(new Set( new ObjectIdentifier(OID::COUNTRY_NAME), new PrintableString('Germany') )); printVariableInfo(new AttributeTypeAndValue( OID::ORGANIZATION_NAME, new PrintableString('My Organization') )); printVariableInfo(new RelativeDistinguishedName( OID::RSA_ENCRYPTION, new Integer(62342) )); printVariableInfo(new RDNString( OID::COMMON_NAME, 'Hello World' )); // X509 printVariableInfo(new CertificateSubject( 'Friedrich Grosse', 'friedrich.grosse@gmail.com', 'PHPASN1', 'Berlin', 'Berlin', 'DE', 'Development Department' )); printVariableInfo(new PublicKey( '00 00 00 01 23 00 00 01 01 00 E7 40 F2 69 15 D5 4A DD 24 A1 C3 0C 93 38 03 1A 49 70 EB 76 B0 F5 1B BF 42 97 BA E1 F3 61 CC E1 63 0A BA 0F 66 6D 30 4E 31 67 65 39 E1 2E 93 A7 E7 3E 1E 76 10 81 5A 41 C6 DF 12 05 46 AC 61 A9 29 A3 BD 1A 16 35 38 DF 75 F6 0A 25 F7 3A F5 D3 C6 EB 84 7D 40 D4 1E 56 CA 0B 46 28 F7 79 D6 08 BB 1B 01 C7 2A 14 93 B2 F7 89 CB 11 F3 4B E6 5F 7A 2B 22 F4 14 CB 36 47 40 89 45 FC 14 03 1D 8B 31 AF 4C 57 63 7D 87 FD 95 0C ED 64 C1 BF 8F FC E2 76 6C 90 A3 4F 50 72 9D AB 01 1E 84 7A 63 95 9A 2E 0E 59 F1 AF A9 D0 6E AB 8E 45 96 80 AD 57 26 04 2F B7 B0 41 69 2B 7A BD F9 2F FE 60 99 A9 81 FF 94 A5 8E 5B 7F A8 C0 63 4B F3 79 F4 F7 3C 27 81 FF 90 5C C6 04 BC C2 C1 62 2E 47 8A EF 6F 95 53 89 99 34 7C 4C B4 AE A0 E8 AD C1 04 B8 B6 E2 02 BB 65 93 39 42 F9 FD 69 20 E3 CF EF 49 E9' )); printVariableInfo(new AlgorithmIdentifier(OID::SHA1_WITH_RSA_SIGNATURE)); printVariableInfo($csr = new CSR( 'Friedrich Grosse', 'friedrich.grosse@gmail.com', 'PHPASN1', 'Berlin', 'Berlin', 'DE', 'Development Department', '3082010a02820101009e2a7defae93720c91c43c46ff4a1f2e8eef7949289e281f788f3a07d9b94da26fb2e721009caceddd0e6b59daa596df20f871fc30a43f4b80798f94fa3d13cb2db79eb6d8f07b4065d0b09a541564ba3baa1201e20ee923ea16be31fa785c300635c4e881df7acb5b52c7c3d923067902cc55e77c00694f319d2b9e81edbbfe70ef1a462aef4960c567f33aa5264a05fdf24cd7bc36941cd7746fb767631a241b7a97fc4cdc42a68692b906406403599380c7586ce6f22fac34949caf1072c724ba5397e6440f957e2678c3a4bc92268fe6815d41fa210ab45364c11e3731c6c039832b54f54b51fdaf6afb351e1da9720b3c322f7fbaefb72d96d4ce5ec07b0203010001', '4adf270d347047192573cf245a94cd2e69594c1cdac1d7c99d7ed5856c926ee62c65188f21d893e634b213595cc4564d5a8d39bed0ca01e0b45e3182ab89310c129017f2a7a68d8603694ddc8d1c2ebfee39b3b5dfc9dbc2db667a089b1b51386f2cf7ec70140d185bae5c2f3b3148b9ef613ce068f94db13a230b1133e4b4a48ec5c8b4066d64a2199c0cfb6c4d0cfe105f21a89b2900d0a5c87bef5eded941ba93ae1b7e84aaeabcb46fa4a3844ffc683ebb4ee80717ff51cba5d82afe9d2633b760a66449e57e06d73eeeb151bc050a66825996d7f5ec821d31891c620a677c8271db13bbc22fcf91e1b7ac8f6f109eb8e3a2c61a3c8a4336b40a499e1404' )); ?>
---|