3v4l.org

run code in 300+ PHP versions simultaneously
<?php if (!(function_exists('openssl_sign') && defined('OPENSSL_ALGO_SHA256'))) { die('Unsupported PHP version or OpenSSH extension missing'); } $privateKey = <<<EOT -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCrYL5Zq4rvXwEn acjPDXjrl0UnAKfAchtNQIyEdf/a41tFgZkw1DXS2s+9eWNBarWYEwGhFoiOeeop ShU7qa5IKL7pwLaO8vPbTPNWZZ9sy3Vx18lB54IyRPBX5lrLU+n0XuYyFcZa1+Gd Dtgu+AQQqjDGGuSJecuABWH+rzzfumMi9K4gP9S0J8vq60mRna6R47Ati7t/jBJm b2vSoSaWjtKf0LJoRPnbc7SgYF8D4JWJ3xQnsa8LrrBudV5j+N3uRDMimUeHL6iW 1KoAb8g1Iql/b3/2C0Z0M/O/13sECytFxDBVP9W+lvHwNF7pZR+C/BvhFH6FnrFI fRismw8BAgMBAAECggEBAIsHKqS4Azf5TIhayusdtND6oMDpSS1X5EohaV00FOHP u4WBg3MXVKq/k/PT++9fz/2UvaefDhz3Tj08ukjyeE5Vr7sV+YOyGJ35qRaXzmOG ErrOIZjzZK2/O3MzjsiQRKVYL0rGW2nq5D5zgnFoBnQ2fObZfjkAs1QiCcOBCdM8 nttTO31JCwyBuTKGK3KaJdoba6dVze5Xhm1b/haCmq2EJOML5G73jK7m8aYkVDFb FJOShYATyz5Xju33QEPz+HWcMrk/TKZFRQYSjWFAzy0/ENrMptIVff3UN0KL0YSl 0hNHlJwHStDEZAiMw4A20ojtKqfUkyR1kPzxpWdi/BkCgYEA4VVFhv5RNSJUGm1I zhJT54UlfIW57c/NWx/Tqbhe0QYg//sM4c/s8lw45lvmRc7vKs6C/ZGo18p+XNT+ BaZdNFlxbtKJisM61Cegc8pIwzv4mbTyo9SjoWswxt20zVp8sIGeF4w7X94gPVZ0 f8D3OELujXqk2i34blLDbTGF3TsCgYEAwrOkxvZ1cdj4ouFqmTFuCvEKVGxsSQeT Pc4/e/GsjzXGnIkLnsYbUnTXKzt7gLuu0I8B3gF0DqqPCJoGHQv6RIYdY8g6KLF+ 4eGfYSJj6zjKOx4yKP7NT3vQLZehhIKbA723rWQVZ9N3e05P65OBkIp8f5MOfNgJ O+OKVe49MPMCgYBA6S6JL7O3CbeOkVK6wj7XX9ynnWItJoJysJ1ps8nkjs5szyYr 2pjYTEa73VddXro465qCbzZjS1rRZS3z9LO+w9FQamfiyFCnEu8+y9PgIeOAa8bF +RhWBKndb7qIuXtX4U7oW6Yy/Kru4HvY3X6Z/3X23ZClpT5+kWrohq6YRwKBgE/Q uPHfQtIC8hpDciGOw9+0ZFmrgNCHTHL/w8KZlfW3Q84T2DGkYLryrupIHh7t0YIp vcg2rE7+2FfcXDk4GcZRfGbVRBI+gRc0GNQG9xMMWsrVXBa2LZAx32txR4M8zzM/ aLap2qSPaeGgft7Bv1FzlAnwTPYc0dw9MQ589ZTFAoGBAJrB3sNh1ysIUdA3X1Jf vUZfBCofmP+7Cqzln8gdeYA9iXUOoE4VTPw0jK71ZzsmlUejBz9S2ZUfs9q1Srge yFo8Glr/8AXXUAt7iSJS4j7sz07EZbj14LfoooSem+w/ZONy8Sdtm/WMox/iBg7S s+Ix44bf/PXcAri2w7OQp/G6 -----END PRIVATE KEY----- EOT ; EOT ; $data = 'eyJub25jZSI6IlpSQ0VyNXpDRmVlOVNnOGxCVzMtNEhHRG8tdGtuckxDQV96Y3VDUDg5ZTgiLCJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6IlJTQSIsIm4iOiJxMkMtV2F1SzcxOEJKMm5JencxNDY1ZEZKd0Nud0hJYlRVQ01oSFhfMnVOYlJZR1pNTlExMHRyUHZYbGpRV3ExbUJNQm9SYUlqbm5xS1VvVk82bXVTQ2ktNmNDMmp2THoyMHp6Vm1XZmJNdDFjZGZKUWVlQ01rVHdWLVpheTFQcDlGN21NaFhHV3RmaG5RN1lMdmdFRUtvd3hocmtpWG5MZ0FWaF9xODgzN3BqSXZTdUlEX1V0Q2ZMNnV0SmtaMnVrZU93TFl1N2Y0d1NabTlyMHFFbWxvN1NuOUN5YUVUNTIzTzBvR0JmQS1DVmlkOFVKN0d2QzY2d2JuVmVZX2pkN2tReklwbEhoeS1vbHRTcUFHX0lOU0twZjI5XzlndEdkRFB6djlkN0JBc3JSY1F3VlRfVnZwYng4RFJlNldVZmd2d2I0UlItaFo2eFNIMFlySnNQQVEifX0.eyJjb250YWN0IjpbIm1haWx0bzptbG9jYXRpQGdtYWlsLmNvbSJdLCJhZ3JlZW1lbnQiOiJodHRwOi8vMTI3LjAuMC4xOjQwMDEvdGVybXMvdjEiLCJyZXNvdXJjZSI6Im5ldy1yZWcifQ'; $signature = null; if (openssl_sign( $data, $signature, $privateKey, OPENSSL_ALGO_SHA256 ) !== true) { die('openssl_sign() failed'); } $lineLength = 24; for ($base = 0; $base < strlen($signature); $base += $lineLength) { echo substr('00000000'.strtoupper(dechex($base)), -8).' '; for ($offset = 0; $offset < $lineLength; $offset++) { echo ' '; if (($offset % 4) === 0) { echo ' '; } $absolute = $base + $offset; if ($absolute >= strlen($signature)) { echo ' '; } else { echo strtoupper(substr('00'.dechex(ord($signature[$absolute])), -2)); } } echo ' '; for ($offset = 0; $offset < $lineLength; $offset++) { $absolute = $base + $offset; if ($absolute >= strlen($signature)) { break; } $c = $signature[$absolute]; $a = ord($c); echo ($a >= 32 && $a <= 127) ? $c : '.'; } echo "\n"; } die();
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 4, Position 2 = 6
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 9
Branch analysis from position: 8
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 24
Branch analysis from position: 23
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 102
Branch analysis from position: 102
2 jumps found. (Code = 44) Position 1 = 105, Position 2 = 27
Branch analysis from position: 105
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 71
Branch analysis from position: 71
2 jumps found. (Code = 44) Position 1 = 73, Position 2 = 42
Branch analysis from position: 73
1 jumps found. (Code = 42) Position 1 = 98
Branch analysis from position: 98
2 jumps found. (Code = 44) Position 1 = 100, Position 2 = 76
Branch analysis from position: 100
2 jumps found. (Code = 44) Position 1 = 105, Position 2 = 27
Branch analysis from position: 105
Branch analysis from position: 27
Branch analysis from position: 76
2 jumps found. (Code = 43) Position 1 = 81, Position 2 = 82
Branch analysis from position: 81
1 jumps found. (Code = 42) Position 1 = 100
Branch analysis from position: 100
Branch analysis from position: 82
2 jumps found. (Code = 46) Position 1 = 90, Position 2 = 92
Branch analysis from position: 90
2 jumps found. (Code = 43) Position 1 = 93, Position 2 = 95
Branch analysis from position: 93
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
2 jumps found. (Code = 44) Position 1 = 100, Position 2 = 76
Branch analysis from position: 100
Branch analysis from position: 76
Branch analysis from position: 95
2 jumps found. (Code = 44) Position 1 = 100, Position 2 = 76
Branch analysis from position: 100
Branch analysis from position: 76
Branch analysis from position: 92
Branch analysis from position: 42
2 jumps found. (Code = 43) Position 1 = 46, Position 2 = 47
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 54
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 70
Branch analysis from position: 70
2 jumps found. (Code = 44) Position 1 = 73, Position 2 = 42
Branch analysis from position: 73
Branch analysis from position: 42
Branch analysis from position: 54
2 jumps found. (Code = 44) Position 1 = 73, Position 2 = 42
Branch analysis from position: 73
Branch analysis from position: 42
Branch analysis from position: 47
Branch analysis from position: 6
filename:       /in/V8cra
function name:  (null)
number of ops:  107
compiled vars:  !0 = $privateKey, !1 = $data, !2 = $signature, !3 = $lineLength, !4 = $base, !5 = $offset, !6 = $absolute, !7 = $c, !8 = $a
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'function_exists'
          1        SEND_VAL                                                 'openssl_sign'
          2        DO_ICALL                                         $9      
          3      > JMPZ_EX                                          ~10     $9, ->6
          4    >   DEFINED                                          ~11     'OPENSSL_ALGO_SHA256'
          5        BOOL                                             ~10     ~11
          6    >   BOOL_NOT                                         ~12     ~10
          7      > JMPZ                                                     ~12, ->9
    4     8    > > EXIT                                                     'Unsupported+PHP+version+or+OpenSSH+extension+missing'
    7     9    >   ASSIGN                                                   !0, '-----BEGIN+PRIVATE+KEY-----%0AMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCrYL5Zq4rvXwEn%0AacjPDXjrl0UnAKfAchtNQIyEdf%2Fa41tFgZkw1DXS2s%2B9eWNBarWYEwGhFoiOeeop%0AShU7qa5IKL7pwLaO8vPbTPNWZZ9sy3Vx18lB54IyRPBX5lrLU%2Bn0XuYyFcZa1%2BGd%0ADtgu%2BAQQqjDGGuSJecuABWH%2BrzzfumMi9K4gP9S0J8vq60mRna6R47Ati7t%2FjBJm%0Ab2vSoSaWjtKf0LJoRPnbc7SgYF8D4JWJ3xQnsa8LrrBudV5j%2BN3uRDMimUeHL6iW%0A1KoAb8g1Iql%2Fb3%2F2C0Z0M%2FO%2F13sECytFxDBVP9W%2BlvHwNF7pZR%2BC%2FBvhFH6FnrFI%0AfRismw8BAgMBAAECggEBAIsHKqS4Azf5TIhayusdtND6oMDpSS1X5EohaV00FOHP%0Au4WBg3MXVKq%2Fk%2FPT%2B%2B9fz%2F2UvaefDhz3Tj08ukjyeE5Vr7sV%2BYOyGJ35qRaXzmOG%0AErrOIZjzZK2%2FO3MzjsiQRKVYL0rGW2nq5D5zgnFoBnQ2fObZfjkAs1QiCcOBCdM8%0AnttTO31JCwyBuTKGK3KaJdoba6dVze5Xhm1b%2FhaCmq2EJOML5G73jK7m8aYkVDFb%0AFJOShYATyz5Xju33QEPz%2BHWcMrk%2FTKZFRQYSjWFAzy0%2FENrMptIVff3UN0KL0YSl%0A0hNHlJwHStDEZAiMw4A20ojtKqfUkyR1kPzxpWdi%2FBkCgYEA4VVFhv5RNSJUGm1I%0AzhJT54UlfIW57c%2FNWx%2FTqbhe0QYg%2F%2FsM4c%2Fs8lw45lvmRc7vKs6C%2FZGo18p%2BXNT%2B%0ABaZdNFlxbtKJisM61Cegc8pIwzv4mbTyo9SjoWswxt20zVp8sIGeF4w7X94gPVZ0%0Af8D3OELujXqk2i34blLDbTGF3TsCgYEAwrOkxvZ1cdj4ouFqmTFuCvEKVGxsSQeT%0APc4%2Fe%2FGsjzXGnIkLnsYbUnTXKzt7gLuu0I8B3gF0DqqPCJoGHQv6RIYdY8g6KLF%2B%0A4eGfYSJj6zjKOx4yKP7NT3vQLZehhIKbA723rWQVZ9N3e05P65OBkIp8f5MOfNgJ%0AO%2BOKVe49MPMCgYBA6S6JL7O3CbeOkVK6wj7XX9ynnWItJoJysJ1ps8nkjs5szyYr%0A2pjYTEa73VddXro465qCbzZjS1rRZS3z9LO%2Bw9FQamfiyFCnEu8%2By9PgIeOAa8bF%0A%2BRhWBKndb7qIuXtX4U7oW6Yy%2FKru4HvY3X6Z%2F3X23ZClpT5%2BkWrohq6YRwKBgE%2FQ%0AuPHfQtIC8hpDciGOw9%2B0ZFmrgNCHTHL%2Fw8KZlfW3Q84T2DGkYLryrupIHh7t0YIp%0Avcg2rE7%2B2FfcXDk4GcZRfGbVRBI%2BgRc0GNQG9xMMWsrVXBa2LZAx32txR4M8zzM%2F%0AaLap2qSPaeGgft7Bv1FzlAnwTPYc0dw9MQ589ZTFAoGBAJrB3sNh1ysIUdA3X1Jf%0AvUZfBCofmP%2B7Cqzln8gdeYA9iXUOoE4VTPw0jK71ZzsmlUejBz9S2ZUfs9q1Srge%0AyFo8Glr%2F8AXXUAt7iSJS4j7sz07EZbj14LfoooSem%2Bw%2FZONy8Sdtm%2FWMox%2FiBg7S%0As%2BIx44bf%2FPXcAri2w7OQp%2FG6%0A-----END+PRIVATE+KEY-----'
   39    10        FETCH_CONSTANT                                   ~14     'EOT'
         11        FREE                                                     ~14
   41    12        ASSIGN                                                   !1, 'eyJub25jZSI6IlpSQ0VyNXpDRmVlOVNnOGxCVzMtNEhHRG8tdGtuckxDQV96Y3VDUDg5ZTgiLCJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6IlJTQSIsIm4iOiJxMkMtV2F1SzcxOEJKMm5JencxNDY1ZEZKd0Nud0hJYlRVQ01oSFhfMnVOYlJZR1pNTlExMHRyUHZYbGpRV3ExbUJNQm9SYUlqbm5xS1VvVk82bXVTQ2ktNmNDMmp2THoyMHp6Vm1XZmJNdDFjZGZKUWVlQ01rVHdWLVpheTFQcDlGN21NaFhHV3RmaG5RN1lMdmdFRUtvd3hocmtpWG5MZ0FWaF9xODgzN3BqSXZTdUlEX1V0Q2ZMNnV0SmtaMnVrZU93TFl1N2Y0d1NabTlyMHFFbWxvN1NuOUN5YUVUNTIzTzBvR0JmQS1DVmlkOFVKN0d2QzY2d2JuVmVZX2pkN2tReklwbEhoeS1vbHRTcUFHX0lOU0twZjI5XzlndEdkRFB6djlkN0JBc3JSY1F3VlRfVnZwYng4RFJlNldVZmd2d2I0UlItaFo2eFNIMFlySnNQQVEifX0.eyJjb250YWN0IjpbIm1haWx0bzptbG9jYXRpQGdtYWlsLmNvbSJdLCJhZ3JlZW1lbnQiOiJodHRwOi8vMTI3LjAuMC4xOjQwMDEvdGVybXMvdjEiLCJyZXNvdXJjZSI6Im5ldy1yZWcifQ'
   43    13        ASSIGN                                                   !2, null
   44    14        INIT_FCALL_BY_NAME                                       'openssl_sign'
   45    15        SEND_VAR_EX                                              !1
         16        SEND_VAR_EX                                              !2
         17        SEND_VAR_EX                                              !0
   48    18        FETCH_CONSTANT                                   ~17     'OPENSSL_ALGO_SHA256'
         19        SEND_VAL_EX                                              ~17
         20        DO_FCALL                                      0  $18     
   49    21        TYPE_CHECK                                  1014          $18
         22      > JMPZ                                                     ~19, ->24
   50    23    > > EXIT                                                     'openssl_sign%28%29+failed'
   53    24    >   ASSIGN                                                   !3, 24
   54    25        ASSIGN                                                   !4, 0
         26      > JMP                                                      ->102
   55    27    >   INIT_FCALL                                               'substr'
         28        INIT_FCALL                                               'strtoupper'
         29        INIT_FCALL                                               'dechex'
         30        SEND_VAR                                                 !4
         31        DO_ICALL                                         $22     
         32        SEND_VAR                                                 $22
         33        DO_ICALL                                         $23     
         34        CONCAT                                           ~24     '00000000', $23
         35        SEND_VAL                                                 ~24
         36        SEND_VAL                                                 -8
         37        DO_ICALL                                         $25     
         38        CONCAT                                           ~26     $25, '+'
         39        ECHO                                                     ~26
   56    40        ASSIGN                                                   !5, 0
         41      > JMP                                                      ->71
   57    42    >   ECHO                                                     '+'
   58    43        MOD                                              ~28     !5, 4
         44        IS_IDENTICAL                                             ~28, 0
         45      > JMPZ                                                     ~29, ->47
   59    46    >   ECHO                                                     '+'
   61    47    >   ADD                                              ~30     !4, !5
         48        ASSIGN                                                   !6, ~30
   62    49        STRLEN                                           ~32     !2
         50        IS_SMALLER_OR_EQUAL                                      ~32, !6
         51      > JMPZ                                                     ~33, ->54
   63    52    >   ECHO                                                     '++'
         53      > JMP                                                      ->70
   65    54    >   INIT_FCALL                                               'strtoupper'
         55        INIT_FCALL                                               'substr'
         56        INIT_FCALL                                               'dechex'
         57        INIT_FCALL                                               'ord'
         58        FETCH_DIM_R                                      ~34     !2, !6
         59        SEND_VAL                                                 ~34
         60        DO_ICALL                                         $35     
         61        SEND_VAR                                                 $35
         62        DO_ICALL                                         $36     
         63        CONCAT                                           ~37     '00', $36
         64        SEND_VAL                                                 ~37
         65        SEND_VAL                                                 -2
         66        DO_ICALL                                         $38     
         67        SEND_VAR                                                 $38
         68        DO_ICALL                                         $39     
         69        ECHO                                                     $39
   56    70    >   PRE_INC                                                  !5
         71    >   IS_SMALLER                                               !5, !3
         72      > JMPNZ                                                    ~41, ->42
   68    73    >   ECHO                                                     '++'
   69    74        ASSIGN                                                   !5, 0
         75      > JMP                                                      ->98
   70    76    >   ADD                                              ~43     !4, !5
         77        ASSIGN                                                   !6, ~43
   71    78        STRLEN                                           ~45     !2
         79        IS_SMALLER_OR_EQUAL                                      ~45, !6
         80      > JMPZ                                                     ~46, ->82
   72    81    > > JMP                                                      ->100
   74    82    >   FETCH_DIM_R                                      ~47     !2, !6
         83        ASSIGN                                                   !7, ~47
   75    84        INIT_FCALL                                               'ord'
         85        SEND_VAR                                                 !7
         86        DO_ICALL                                         $49     
         87        ASSIGN                                                   !8, $49
   76    88        IS_SMALLER_OR_EQUAL                              ~51     32, !8
         89      > JMPZ_EX                                          ~51     ~51, ->92
         90    >   IS_SMALLER_OR_EQUAL                              ~52     !8, 127
         91        BOOL                                             ~51     ~52
         92    > > JMPZ                                                     ~51, ->95
         93    >   QM_ASSIGN                                        ~53     !7
         94      > JMP                                                      ->96
         95    >   QM_ASSIGN                                        ~53     '.'
         96    >   ECHO                                                     ~53
   69    97        PRE_INC                                                  !5
         98    >   IS_SMALLER                                               !5, !3
         99      > JMPNZ                                                    ~55, ->76
   78   100    >   ECHO                                                     '%0A'
   54   101        ASSIGN_OP                                     1          !4, !3
        102    >   STRLEN                                           ~57     !2
        103        IS_SMALLER                                               !4, ~57
        104      > JMPNZ                                                    ~58, ->27
   81   105    > > EXIT                                                     
        106*     > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
162.88 ms | 1413 KiB | 23 Q