3v4l.org

run code in 500+ 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 ; $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"; }
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 = 11
Branch analysis from position: 8
1 jumps found. (Code = 61) Position 1 = -2
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 26
Branch analysis from position: 23
1 jumps found. (Code = 61) Position 1 = -2
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 94
Branch analysis from position: 94
2 jumps found. (Code = 44) Position 1 = 97, Position 2 = 29
Branch analysis from position: 97
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 63
Branch analysis from position: 63
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 39
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 90
Branch analysis from position: 90
2 jumps found. (Code = 44) Position 1 = 92, Position 2 = 68
Branch analysis from position: 92
2 jumps found. (Code = 44) Position 1 = 97, Position 2 = 29
Branch analysis from position: 97
Branch analysis from position: 29
Branch analysis from position: 68
2 jumps found. (Code = 43) Position 1 = 73, Position 2 = 74
Branch analysis from position: 73
1 jumps found. (Code = 42) Position 1 = 92
Branch analysis from position: 92
Branch analysis from position: 74
2 jumps found. (Code = 46) Position 1 = 82, Position 2 = 84
Branch analysis from position: 82
2 jumps found. (Code = 43) Position 1 = 85, Position 2 = 87
Branch analysis from position: 85
1 jumps found. (Code = 42) Position 1 = 88
Branch analysis from position: 88
2 jumps found. (Code = 44) Position 1 = 92, Position 2 = 68
Branch analysis from position: 92
Branch analysis from position: 68
Branch analysis from position: 87
2 jumps found. (Code = 44) Position 1 = 92, Position 2 = 68
Branch analysis from position: 92
Branch analysis from position: 68
Branch analysis from position: 84
Branch analysis from position: 39
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 44
Branch analysis from position: 43
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 51
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 62
Branch analysis from position: 62
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 39
Branch analysis from position: 65
Branch analysis from position: 39
Branch analysis from position: 51
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 39
Branch analysis from position: 65
Branch analysis from position: 39
Branch analysis from position: 44
Branch analysis from position: 6
filename:       /in/OU9bs
function name:  (null)
number of ops:  98
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, ->11
    4     8    > > INIT_FCALL                                                   'exit'
          9*       SEND_VAL                                                     'Unsupported+PHP+version+or+OpenSSH+extension+missing'
         10*       DO_ICALL                                                     
    7    11    >   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    12        ASSIGN                                                       !1, 'eyJub25jZSI6IlpSQ0VyNXpDRmVlOVNnOGxCVzMtNEhHRG8tdGtuckxDQV96Y3VDUDg5ZTgiLCJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6IlJTQSIsIm4iOiJxMkMtV2F1SzcxOEJKMm5JencxNDY1ZEZKd0Nud0hJYlRVQ01oSFhfMnVOYlJZR1pNTlExMHRyUHZYbGpRV3ExbUJNQm9SYUlqbm5xS1VvVk82bXVTQ2ktNmNDMmp2THoyMHp6Vm1XZmJNdDFjZGZKUWVlQ01rVHdWLVpheTFQcDlGN21NaFhHV3RmaG5RN1lMdmdFRUtvd3hocmtpWG5MZ0FWaF9xODgzN3BqSXZTdUlEX1V0Q2ZMNnV0SmtaMnVrZU93TFl1N2Y0d1NabTlyMHFFbWxvN1NuOUN5YUVUNTIzTzBvR0JmQS1DVmlkOFVKN0d2QzY2d2JuVmVZX2pkN2tReklwbEhoeS1vbHRTcUFHX0lOU0twZjI5XzlndEdkRFB6djlkN0JBc3JSY1F3VlRfVnZwYng4RFJlNldVZmd2d2I0UlItaFo2eFNIMFlySnNQQVEifX0.eyJjb250YWN0IjpbIm1haWx0bzptbG9jYXRpQGdtYWlsLmNvbSJdLCJhZ3JlZW1lbnQiOiJodHRwOi8vMTI3LjAuMC4xOjQwMDEvdGVybXMvdjEiLCJyZXNvdXJjZSI6Im5ldy1yZWcifQ'
   41    13        ASSIGN                                                       !2, null
   42    14        INIT_FCALL_BY_NAME                                           'openssl_sign'
   43    15        SEND_VAR_EX                                                  !1
         16        SEND_VAR_EX                                                  !2
         17        SEND_VAR_EX                                                  !0
   46    18        FETCH_CONSTANT                                       ~17     'OPENSSL_ALGO_SHA256'
         19        SEND_VAL_EX                                                  ~17
   42    20        DO_FCALL                                          0  $18     
   47    21        TYPE_CHECK                                      1014          $18
         22      > JMPZ                                                         ~19, ->26
   48    23    > > INIT_FCALL                                                   'exit'
         24*       SEND_VAL                                                     'openssl_sign%28%29+failed'
         25*       DO_ICALL                                                     
   51    26    >   ASSIGN                                                       !3, 24
   52    27        ASSIGN                                                       !4, 0
         28      > JMP                                                          ->94
   53    29    >   INIT_FCALL                                                   'strtoupper'
         30        FRAMELESS_ICALL_1                dechex              ~23     !4
         31        SEND_VAL                                                     ~23
         32        DO_ICALL                                             $24     
         33        CONCAT                                               ~25     '00000000', $24
         34        FRAMELESS_ICALL_2                substr              ~26     ~25, -8
         35        CONCAT                                               ~27     ~26, '+'
         36        ECHO                                                         ~27
   54    37        ASSIGN                                                       !5, 0
         38      > JMP                                                          ->63
   55    39    >   ECHO                                                         '+'
   56    40        MOD                                                  ~29     !5, 4
         41        IS_IDENTICAL                                                 ~29, 0
         42      > JMPZ                                                         ~30, ->44
   57    43    >   ECHO                                                         '+'
   59    44    >   ADD                                                  ~31     !4, !5
         45        ASSIGN                                                       !6, ~31
   60    46        STRLEN                                               ~33     !2
         47        IS_SMALLER_OR_EQUAL                                          ~33, !6
         48      > JMPZ                                                         ~34, ->51
   61    49    >   ECHO                                                         '++'
   60    50      > JMP                                                          ->62
   63    51    >   INIT_FCALL                                                   'strtoupper'
         52        INIT_FCALL                                                   'ord'
         53        FETCH_DIM_R                                          ~35     !2, !6
         54        SEND_VAL                                                     ~35
         55        DO_ICALL                                             $36     
         56        FRAMELESS_ICALL_1                dechex              ~37     $36
         57        CONCAT                                               ~38     '00', ~37
         58        FRAMELESS_ICALL_2                substr              ~39     ~38, -2
         59        SEND_VAL                                                     ~39
         60        DO_ICALL                                             $40     
         61        ECHO                                                         $40
   54    62    >   PRE_INC                                                      !5
         63    >   IS_SMALLER                                                   !5, !3
         64      > JMPNZ                                                        ~42, ->39
   66    65    >   ECHO                                                         '++'
   67    66        ASSIGN                                                       !5, 0
         67      > JMP                                                          ->90
   68    68    >   ADD                                                  ~44     !4, !5
         69        ASSIGN                                                       !6, ~44
   69    70        STRLEN                                               ~46     !2
         71        IS_SMALLER_OR_EQUAL                                          ~46, !6
         72      > JMPZ                                                         ~47, ->74
   70    73    > > JMP                                                          ->92
   72    74    >   FETCH_DIM_R                                          ~48     !2, !6
         75        ASSIGN                                                       !7, ~48
   73    76        INIT_FCALL                                                   'ord'
         77        SEND_VAR                                                     !7
         78        DO_ICALL                                             $50     
         79        ASSIGN                                                       !8, $50
   74    80        IS_SMALLER_OR_EQUAL                                  ~52     32, !8
         81      > JMPZ_EX                                              ~52     ~52, ->84
         82    >   IS_SMALLER_OR_EQUAL                                  ~53     !8, 127
         83        BOOL                                                 ~52     ~53
         84    > > JMPZ                                                         ~52, ->87
         85    >   QM_ASSIGN                                            ~54     !7
         86      > JMP                                                          ->88
         87    >   QM_ASSIGN                                            ~54     '.'
         88    >   ECHO                                                         ~54
   67    89        PRE_INC                                                      !5
         90    >   IS_SMALLER                                                   !5, !3
         91      > JMPNZ                                                        ~56, ->68
   76    92    >   ECHO                                                         '%0A'
   52    93        ASSIGN_OP                                         1          !4, !3
         94    >   STRLEN                                               ~58     !2
         95        IS_SMALLER                                                   !4, ~58
         96      > JMPNZ                                                        ~59, ->29
   77    97    > > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
167.6 ms | 2759 KiB | 17 Q