From 82e58a0e7b176d671b6739678fa09aabb23a4c88 Mon Sep 17 00:00:00 2001 From: mmeyer2k Date: Thu, 4 Jul 2019 01:06:48 -0500 Subject: [PATCH] 13.0.0 --- README.md | 18 +-- docs/CHANGELOG.md | 5 + docs/UPGRADE.md | 3 + examples/vectors.php | 14 ++- src/Aes256Cbc.php | 2 +- src/Aes256Ccm.php | 34 ++++++ src/Aes256Cfb.php | 34 ++++++ src/Aes256Ctr.php | 2 +- src/Aes256Ecb.php | 2 +- src/Aes256Gcm.php | 2 +- src/Aes256Ofb.php | 2 +- src/OneTimePad.php | 2 +- src/OpensslKey.php | 45 ++++--- src/OpensslStatic.php | 4 +- src/OpensslWrapper.php | 2 +- tests/.vectors.json | 252 ++++++++++++++++++++-------------------- tests/Aes256CcmTest.php | 8 ++ tests/Aes256CfbTest.php | 8 ++ 18 files changed, 280 insertions(+), 159 deletions(-) create mode 100644 src/Aes256Ccm.php create mode 100644 src/Aes256Cfb.php create mode 100644 tests/Aes256CcmTest.php create mode 100644 tests/Aes256CfbTest.php diff --git a/README.md b/README.md index 8eca4efe..83ba51f1 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Add dcrypt to your composer.json file requirements. Don't worry, dcrypt does not have any dependencies of its own. ```bash -composer require "mmeyer2k/dcrypt=^12.0" +composer require "mmeyer2k/dcrypt=^13.0" ``` # Features @@ -76,13 +76,15 @@ If you read to this point then you are an experienced cryptonaut, congrats! :ok_ Several AES-256 encryption modes are supported out of the box via hardcoded classes. -| Class Name | OpenSSL Cipher | Further Reading | -| -------------------- | :--------------: | --------------- | -| `\Dcrypt\Aes256Gcm` | `aes-256-gcm` | [wiki](https://en.wikipedia.org/wiki/Galois/Counter_Mode) | -| `\Dcrypt\Aes256Cbc` | `aes-256-cbc` | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation) | -| `\Dcrypt\Aes256Ctr` | `aes-256-ctr` | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR)) | -| `\Dcrypt\Aes256Ofb` | `aes-256-ofb` | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_(OFB)) | -| `\Dcrypt\Aes256Ecb` | `aes-256-ecb` | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#ECB) | +| Class Name | OpenSSL Cipher | Security Rating | Further Reading | +| -------------------- | :--------------: | :---------------: | --------------- | +| `\Dcrypt\Aes256Gcm` | `aes-256-gcm` | :smiley: | [wiki](https://en.wikipedia.org/wiki/Galois/Counter_Mode) | +| `\Dcrypt\Aes256Ctr` | `aes-256-ctr` | :relaxed: | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR)) | +| `\Dcrypt\Aes256Cbc` | `aes-256-cbc` | :expressionless: | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation) | +| `\Dcrypt\Aes256Ofb` | `aes-256-ofb` | :grimacing: | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_(OFB)) | +| `\Dcrypt\Aes256Cfb` | `aes-256-cfb` | :hushed: | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_(CFB)) | +| `\Dcrypt\Aes256Ccm` | `aes-256-ccm` | :astonished: | [wiki](https://en.wikipedia.org/wiki/CCM_mode) | +| `\Dcrypt\Aes256Ecb` | `aes-256-ecb` | :rage: | [wiki](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#ECB) | ### Custom Encryption Suites diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c47446f2..5e48875a 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,10 @@ # Changes in Dcrypt +## 13.0.0 +- Skip validating key when decrypting +- Clean up internal API +- Increase default AAD tag size + ## 12.0.2 - More clarity and unity in internal API - Add codesniffer to circle ci testing diff --git a/docs/UPGRADE.md b/docs/UPGRADE.md index 3a1c2575..db44f266 100644 --- a/docs/UPGRADE.md +++ b/docs/UPGRADE.md @@ -1,3 +1,6 @@ +# Upgrade from 12.x to 13.x +- Anything encrypted with GCM or CCM will not be decryptable anymore due to change in tag sizes + # Upgrade from 11.x to 12.x - Upgrade to minimum 2048 byte keys - Rename `Otp` to `OneTimePad` diff --git a/examples/vectors.php b/examples/vectors.php index f64f4d51..26d80af1 100644 --- a/examples/vectors.php +++ b/examples/vectors.php @@ -8,9 +8,13 @@ require __DIR__ . '/../vendor/autoload.php'; -$key = \Dcrypt\OpensslKey::create(); +$vectors = __DIR__ . '/../tests/.vectors.json'; -file_put_contents(__DIR__ . '/../tests/vectors/.testkey', $key); +if (file_exists($vectors)) { + $key = json_decode(file_get_contents($vectors))->key; +} else { + $key = \Dcrypt\OpensslKey::create(); +} $out = [ 'key' => $key, @@ -40,7 +44,7 @@ $out['algos'][$algo] = base64_encode(OpensslStatic::encrypt('a secret', $key, 'aes-256-gcm', $algo)); } -foreach(['Gcm', 'Ctr', 'Ofb', 'Cbc', 'Ecb'] as $mode){ +foreach(['Gcm', 'Ctr', 'Ofb', 'Cbc', 'Ecb', 'Ccm', 'Cfb'] as $mode){ $c = "\\Dcrypt\\Aes256$mode"; $out['aes256'][$c] = base64_encode($c::encrypt('a secret', $key)); } @@ -51,4 +55,6 @@ $out['otp'][$mult] = \base64_encode(\Dcrypt\OneTimePad::crypt(str_repeat('A', $mult), $key)); } -file_put_contents(__DIR__ . '/../tests/.vectors.json', \json_encode($out, JSON_PRETTY_PRINT)); \ No newline at end of file +file_put_contents(__DIR__ . '/../tests/.vectors.json', \json_encode($out, JSON_PRETTY_PRINT)); + +var_dump($out); \ No newline at end of file diff --git a/src/Aes256Cbc.php b/src/Aes256Cbc.php index c97bf809..9afa371f 100644 --- a/src/Aes256Cbc.php +++ b/src/Aes256Cbc.php @@ -15,7 +15,7 @@ namespace Dcrypt; /** - * Symmetric AES-256-GCM encryption functions powered by OpenSSL. + * Symmetric AES-256 GCM encryption functions powered by OpenSSL. * * @category Dcrypt * @package Dcrypt diff --git a/src/Aes256Ccm.php b/src/Aes256Ccm.php new file mode 100644 index 00000000..347e9536 --- /dev/null +++ b/src/Aes256Ccm.php @@ -0,0 +1,34 @@ + + * @license http://opensource.org/licenses/MIT The MIT License (MIT) + * @link https://github.com/mmeyer2k/dcrypt + */ + +namespace Dcrypt; + +/** + * Symmetric AES-256 CCM encryption functions powered by OpenSSL. + * + * @category Dcrypt + * @package Dcrypt + * @author Michael Meyer (mmeyer2k) + * @license http://opensource.org/licenses/MIT The MIT License (MIT) + * @link https://github.com/mmeyer2k/dcrypt + */ +class Aes256Ccm extends Aes256Gcm +{ + /** + * AES-256 cipher identifier that will be passed to openssl + * + * @var string + */ + const CIPHER = 'aes-256-ccm'; +} \ No newline at end of file diff --git a/src/Aes256Cfb.php b/src/Aes256Cfb.php new file mode 100644 index 00000000..8163fb35 --- /dev/null +++ b/src/Aes256Cfb.php @@ -0,0 +1,34 @@ + + * @license http://opensource.org/licenses/MIT The MIT License (MIT) + * @link https://github.com/mmeyer2k/dcrypt + */ + +namespace Dcrypt; + +/** + * Symmetric AES-256 CFB encryption functions powered by OpenSSL. + * + * @category Dcrypt + * @package Dcrypt + * @author Michael Meyer (mmeyer2k) + * @license http://opensource.org/licenses/MIT The MIT License (MIT) + * @link https://github.com/mmeyer2k/dcrypt + */ +class Aes256Cfb extends Aes256Gcm +{ + /** + * AES-256 cipher identifier that will be passed to openssl + * + * @var string + */ + const CIPHER = 'aes-256-cfb'; +} \ No newline at end of file diff --git a/src/Aes256Ctr.php b/src/Aes256Ctr.php index 799ad6bb..1482d4b1 100644 --- a/src/Aes256Ctr.php +++ b/src/Aes256Ctr.php @@ -15,7 +15,7 @@ namespace Dcrypt; /** - * Symmetric AES-256-CTR encryption functions powered by OpenSSL. + * Symmetric AES-256 CTR encryption functions powered by OpenSSL. * * @category Dcrypt * @package Dcrypt diff --git a/src/Aes256Ecb.php b/src/Aes256Ecb.php index e2ed8feb..f4565024 100644 --- a/src/Aes256Ecb.php +++ b/src/Aes256Ecb.php @@ -15,7 +15,7 @@ namespace Dcrypt; /** - * Symmetric AES-256-ECB encryption functions powered by OpenSSL. + * Symmetric AES-256 ECB encryption functions powered by OpenSSL. * * @category Dcrypt * @package Dcrypt diff --git a/src/Aes256Gcm.php b/src/Aes256Gcm.php index 6b5ada64..a10353f9 100644 --- a/src/Aes256Gcm.php +++ b/src/Aes256Gcm.php @@ -15,7 +15,7 @@ namespace Dcrypt; /** - * Symmetric AES-256-GCM encryption functions powered by OpenSSL. + * Symmetric AES-256 GCM encryption functions powered by OpenSSL. * * @category Dcrypt * @package Dcrypt diff --git a/src/Aes256Ofb.php b/src/Aes256Ofb.php index 48a92f78..0dbf4077 100644 --- a/src/Aes256Ofb.php +++ b/src/Aes256Ofb.php @@ -15,7 +15,7 @@ namespace Dcrypt; /** - * Symmetric AES-256-GCM encryption functions powered by OpenSSL. + * Symmetric AES-256 GCM encryption functions powered by OpenSSL. * * @category Dcrypt * @package Dcrypt diff --git a/src/OneTimePad.php b/src/OneTimePad.php index ff06426d..df64a055 100644 --- a/src/OneTimePad.php +++ b/src/OneTimePad.php @@ -47,7 +47,7 @@ public static function crypt( $length = Str::strlen($input); // Create a new key object - $key = new OpensslKey($algo, $key, ''); + $key = new OpensslKey($algo, $key); foreach ($chunks as $i => &$chunk) { // Create the info key based on counter diff --git a/src/OpensslKey.php b/src/OpensslKey.php index fa8aa98f..a63e3678 100644 --- a/src/OpensslKey.php +++ b/src/OpensslKey.php @@ -51,25 +51,32 @@ final class OpensslKey /** * OpensslKey constructor. * - * @param string $algo Algo to use for HKDF - * @param string $key Key - * @param string $ivr Initialization vector + * @param string $algo Algo to use for HKDF + * @param string $key Key + * @param string $ivr Initialization vector + * @param bool $testKey Validate the key * * @throws InvalidKeyException */ - public function __construct(string $algo, string $key, string $ivr) - { + public function __construct( + string $algo, + string $key, + string $ivr = '', + bool $testKey = true + ) { // Store the key as what was supplied $this->_key = \base64_decode($key); - // Make sure key was properly decoded and meets minimum required length - if (!is_string($this->_key) || Str::strlen($this->_key) < 2048) { - throw new InvalidKeyException(InvalidKeyException::KEYLENGTH); - } + if ($testKey) { + // Make sure key was properly decoded and meets minimum required length + if (!is_string($this->_key) || Str::strlen($this->_key) < 2048) { + throw new InvalidKeyException(InvalidKeyException::KEYLENGTH); + } - // Make sure key meets minimum entropy requirement - if (\count(\array_unique(\str_split($this->_key))) < 250) { - throw new InvalidKeyException(InvalidKeyException::KEYRANDOM); + // Make sure key meets minimum entropy requirement + if (self::_testKeyEntropy($this->_key) === false) { + throw new InvalidKeyException(InvalidKeyException::KEYRANDOM); + } } // Store algo in object @@ -126,9 +133,21 @@ public function deriveKey(string $info): string public static function create(int $bytes = 2048): string { if ($bytes < 2048) { - throw new InvalidKeyException('Keys must be at least 2048 bytes long.'); + throw new InvalidKeyException(InvalidKeyException::KEYLENGTH); } return \base64_encode(\random_bytes($bytes)); } + + /** + * Returns true if key has enough entropy + * + * @param string $key Key string to test + * + * @return bool + */ + private static function _testKeyEntropy(string $key): bool + { + return \count(\array_unique(\str_split($key))) > 250; + } } \ No newline at end of file diff --git a/src/OpensslStatic.php b/src/OpensslStatic.php index bc61cf8e..59305623 100644 --- a/src/OpensslStatic.php +++ b/src/OpensslStatic.php @@ -48,7 +48,7 @@ public static function decrypt( $hsz = Str::hashSize($algo); // Get the tag size in bytes for this cipher mode - $tsz = parent::tagRequired($cipher) ? 4 : 0; + $tsz = parent::tagRequired($cipher) ? 16 : 0; // Ask openssl for the IV size needed for specified cipher $isz = parent::ivSize($cipher); @@ -66,7 +66,7 @@ public static function decrypt( $msg = Str::substr($data, $isz + $hsz + $tsz); // Create a new password derivation object - $key = new OpensslKey($algo, $key, $ivr); + $key = new OpensslKey($algo, $key, $ivr, false); // Calculate checksum of message payload for verification $chk = \hash_hmac($algo, $msg, $key->authenticationKey($cipher), true); diff --git a/src/OpensslWrapper.php b/src/OpensslWrapper.php index 5817f73a..4ac5af05 100644 --- a/src/OpensslWrapper.php +++ b/src/OpensslWrapper.php @@ -44,7 +44,7 @@ protected static function opensslEncrypt( string &$tag ): string { if (OpensslStatic::tagRequired($cipher)) { - return \openssl_encrypt($data, $cipher, $key, 1, $iv, $tag, '', 4); + return \openssl_encrypt($data, $cipher, $key, 1, $iv, $tag, '', 16); } else { return \openssl_encrypt($data, $cipher, $key, 1, $iv); } diff --git a/tests/.vectors.json b/tests/.vectors.json index 79b7bf85..c5b3d2c0 100644 --- a/tests/.vectors.json +++ b/tests/.vectors.json @@ -1,151 +1,153 @@ { "key": "HJ1iuKzMtXZrmD8ItOYXp\/FuqiXRa+Yjhttj6LrGdd7sF55ptU8PCI0rykYm30edR37RL8elcnyfCMi8FTOIpDxlM2jw46yDnGwJb5KFtD7nOIRSLQFZmSG\/8GgeqQAKsnN6RKnYloi5BoHMu9zgfsPwyBXQV5A1tcUp9pOEuxjiG+OZucBzButdLW8+r6a77wnWFxycA9kstIJIVmBahaPZQnFz721YY0y4+k2ILk9Yqtf\/40nsvEnqjzwjIKzcEbBV\/RULWxztyE9GZbA0xyz\/hHaibBpnhUc49yGRpFxzG2tsAB4Ki7q2cYeYf2SHjXi8N+5ogV0DzJizodw9ot9gnrOMtRk9k4xox4APXQ4gWk5PcFoC\/08AwzVTJXs7mzO7a+3oHehwV8Afq0SXHh\/g6JLfiDj5EAU4USVaYmf9GAez27UT9haPdj4\/29oFuB3G48nBN\/UoClki5EQuFO8xN4yBucwknBhkcfL9wvxpM6YtQSYeBXcsgnuxmUZ\/pExJxFksBG\/V6tIBxqUsIi2PFL19FDjdx4ZTQLjfOlNCMrW\/ooIY+k2WXoYQZcboj0Ey4GIg\/YMYtst0wm4LZWmhaK31HxzGwoigW1OzU68PRcdeCHxTcOM2ZCor1gyn4a+ucM10u9TQrywOsL75dVkm4FZNFIA1a0FIIqNj6OEC0JUXQNNsBy\/CMOG1x5lEu9hrmkLJQo5gSidy\/f\/wi6g5D5eGum7dBHjsATph16xTR7nLwaIu79FZs9FzNvS5P2OaEs+8viNbwZhpr1xSpJRsQ2T3f3bzVDOXL5d8LKp\/NTuv6CeQBn4DgLgyeTPVrnglEWIlEb5QNwbGNRMeE8w5wj5bBgfzLCVQOfv3AJE5qbmqJBXpOWByDoWfeq44v5fgpBGtaHjXZve\/n43O1Gucdivg64dn4x2Zc5nD68WaBKHpekeJAJ1BXQPi9ZLNsttf8GAnal35UCby3hMz96DMZpAjcN6a1lHeMkB3zcuKT\/Np6kVZXjWOOc+MKLuFIVALXYPRpzrDBWq7yS6mchuzacGPKfm1Ug8kq8plDNZSd1MEdPQ+TO5IVs8pg6xuZDZ4L38Epepe3\/Nf5SMkq\/1qk2i\/RaFAveNkZX\/ahEdZH5EgL9Q\/EPAZLqgxzlotPJ10KHo3wHMuk6tXGUq\/mep7dTS86dlMgZWABYIM7c\/gNWHSZJSIB43AVs+8KTApmz7XsO95onrxb3j\/Fb5OVHNdsS5SO3vX00\/YrIxLRMLoztWaCBccjXYi+Kl7+RdqOg8y26zQbdsVmKoyV9Dxdk+cqvsIV0R6ie5TUkr\/puwRoQ76WE3aGah6fpzCkNrtNFw2pBxZUWhzgp\/TkwABEdaHjQt1vfe7KppjyyKq7XIKBcpfII6yebRNtfh9YJS9GZmmWDLhjscK0I7LATmIYW2\/JIj1INwYCH+zzahdk4AKAp4J2XqYPSfiRndYLNQIDCweHdXgI43nTiQcdk+pusSLgNArXSHbLyDQi2al5IYK97fsQWUuXqdQnJ+d85uqv9+Iz2ioOIa2eFNvNc9ryfaV2zTHDqm4F\/GeYhKHV2r71Jyz4umAW3Nld2bxkeiBeakDu8HCzo5hqnI+R+FojEeuuv9MMbOps0CqIWw8H2ezjlelqwTYDDEAuxXbg92nQaRqJiKfzbitqYCco57Wb52PuoAvF2vDheYotwMcpWdmRzYFLqOmQqc5vWHSZBlTiBDol29vYNtQRzsu2xywmnpKmaX66KSh0ELbCyqnf3nM3UtGXxvKcVLPbAgr6S694ZJ8fRYBfK\/lJEqUCnJaTitGzNGm\/mi\/5\/FQh6coKiSWNuAp0KDT18IZj6wv5mqu4UEGeV6vXTOqL+RR4DThoVfaI3bes+onZYkTxHi6zormkbpfexELx5CSqGdMoRYNwdEZ5fR0gR\/DEyJns8Ez5WNjVLOE6DkCdjDMVa8IYSg8Ih3Rv1Y+K+7XrSFvh2AafmW4sM+I9QbNACRf8nDWz6KFEWJ5e1+uYggkhW55xv7fL38yJ2DUfIO3H+7+OHXy5gQjjNdPQdcKpmUbk1wQJCBCtP5iTm+hGi3464PBsXFM4c1ijHERqYu1kUG+39YvCVXc\/2LogXRGsvdU2ipF7vBtC0jWHE7q8pTRuIdXTPctGLPvRW\/ZDkxH0N3NxE4F5iBUlbHt+p+UhneLxB8SlYgyEpjt0wsIraWPQH+7VE0t9IkHUm0a2Jc85t7BQvKF1ovaOhg6a98F8wbNO13Mh+7qSvElkaBsk7ue83+OW3vp4yw7COz1pabeNd21VJiVotCMznoWy\/rKhB6x5qYZbvra2Ttu5MMpa4Y\/jjb6dESunVV7H8u1ubSLQdOrcSJQAVCkTM452RcyEISBazild1wqk2jD+XRET\/TNR8L2eLxmmxHalMDc6zUH1rsmjuoFyJncDt4ntrFurdtoSm4X9GeLPsMtDlAaYnaFZflusnglJIexhjS2oMVRcrEk7B+MahrmO016XEzKmNGfEyw24iA96dhURbBEFFArcNppzZgzT4g9l35rBgNgqXvZzL+u6YxHJ+qNHLpIjwuAFzWPCXahBzGV4JI5S8nEUZb8P44uevb+TM1jvXf2zGacppmsZRDtO\/1ZupAUzzXIGU1SlAf\/gZPwkg5ZGk9edvBDGnorJFgcp7ObhrQ8OeA0efMsJJq2hgaTEz2Dxiyv8X554wrP8aNX8kI4Y63s2HAdl\/E=", "algos": { - "md2": "4dXdBUJOcEReu\/9t\/9K+7ofwW5wSrPceve7zabUZVhZQhisKWKmhvg==", - "md4": "YQw4LrbTnCDUIFxG+kTiRk8LZtjfFhK3\/k9BTaZcWeWa0If2TwT9fw==", - "md5": "MU3uP5ga8+adMKu36oZDpQtLqhh\/G8hSnGG4eWlFzZ2IF32FxwFuLQ==", - "sha1": "4QxsXKC1jzkaJ71soDSMZN2rmyTG0QlXafBwtYXri3hsBmXbwU\/WKGQBIYg=", - "sha224": "Wjo4179VZy\/MdF27sTMgeUkUk25W1AIyWpMmjzixr6nIMrwLELEEmxG3D1JT9CS09FAaVg==", - "sha256": "aiJX\/JkdSgJGnfLVz8eC5rln5+nNsjc77pN7Jop7pdhRBwClI\/D5UNoByv+WsTHuRkbbP9OTVHk=", - "sha384": "p51P6mymVeXIR8AyOe1e5m+i30jVCX0lV43EpWrOwf4DmmQJe8313RAqUkJuGJy3RVdA3isLSiBJme5BNNGITbcBjcUULMTm", - "sha512\/224": "tZonNSIBdyBKUwCP490cApabb8gvRZUIzNQ5BzEmFgVIBUs\/3hBnKEs4CvCBc5AIJJcojw==", - "sha512\/256": "BIoFp3QX6+90+4kZ6Xnd6Nl8X8iQafPCYPkWZr8\/hJOrNkq573yr1kO8+uxgvzZ9DojDluqztK0=", - "sha512": "awFlzOvzIjKb1zwl+Nbj3IfWR8Vx2DUljDBhRfopgqw5jnP08CeNUJnEKpSUQGI1gtZWSbPVypcd3HdDg6ij7RrQr3Va8SyXfv1E+sGWQDewaaGyuGYMwQ==", - "sha3-224": "ZVikaUJGVO6\/rJ6dvWA4f2nb6VCXjMWNZVoXmCYcrOP4zdnh+WRipEEbIwCpOe6uKlqA3Q==", - "sha3-256": "p374Zd3CEUFJJbHyA++LffN6d5UqY+ADzyNKoQQDrQut54tCybnr0+HioLhTcVmZLkJckffMoJo=", - "sha3-384": "2R6QxaHGC\/scvV\/zZDAqQk+UbhKqJ4MsEpDnE3guURcQKEq0q03BxomjTMecNUiKjYptwTNPbpfHHhSK17yLoEF42ttJ99bq", - "sha3-512": "3X87SL98y\/eydbWREEW5R1B8nivo1TQq6yfWlEyzvFoNb9ttex1fOVP5y+FG6iHvAKcUCYr+w\/711ffx7y4B1q1vaht+0R8RayTVSPl3xsuFuzaITqjELQ==", - "ripemd128": "BHE7rgvHdwcLyE+Ak2vDD5AeoCEkDqABSZ2jBMFGjMIY5AHpAkFvMA==", - "ripemd160": "W\/+hcR3ChoVEQ3pqK93svEqhu6BDbSjPSRMBYTp3zwBICqb3nLbnt4p5vVA=", - "ripemd256": "Fmqt6nIihv3aG+i1ts8+35fWGXCxz6\/2PM9rHZQlxj8t29njw6qHd9fOJBx+2l1amiulzZZzvf0=", - "ripemd320": "D1zzWgCOGljh6jtls9NF1GsXSGf6ooSgqkRLaZhSjwC9qP5ARJMqSPvUTdYbsIhpTSmf1IkLWRvNDs1w3Fnn7A==", - "whirlpool": "65NeVqMtGhsME6WYGdgkWgb\/NgfOkK8WsqAu3hG+nYYfYLTQWWb2cga6yDMOjGP9BjAQ\/EaJmKXhsq8lz9rypzW1e26qRN70gyHXYn0YIosGds9E35tAIQ==", - "tiger128,3": "x6\/na2Y+yVDIzK6V8Tkk4XLX\/SfKlUhc2X0aYGrJEtbCEouAJin\/yw==", - "tiger160,3": "+Mv4wNllwMLFik\/91SsoXLVG24QHbEvDqzEiL17pEjvXdWa+5fNb5SBCxNU=", - "tiger192,3": "Ua+7vp17i5BolqcT+Hms8xas9arD9V60NfUPqRlEI6nhXfcYHwsgNBYETBIflVPF", - "tiger128,4": "odXu5HdLs5fr0WXylMR8mCpTJocsFLDB\/m6qWgY1+60DRd2N3Idlqw==", - "tiger160,4": "7Ih\/ocwkN0fUEUJyLTXC+072f1x9Aw+zBvS45zSYAhr\/zOkref8xCZnrWyI=", - "tiger192,4": "h\/qKkIdE7ystwNrr2dPj60KtbkWCXdRXhdem7iPuZxeMY4jPgP0kaOEtRAPTIafc", - "snefru": "2d0s\/brG\/wWr3WEqjexPNY0QGtaHQcMdhhWBAdSLzG7UiLqFdFvxKWtmX64ja\/SzRbgRBz3o3Q8=", - "snefru256": "sk0OnPaZdAj5TY2rxlVWtOyzxdliBtDZvle+ngdySb37newCZJZp5kKCCOFa2VHegJQhr8hoXDQ=", - "gost": "Z3jrOC8pqSpc4Cfa2Fmz+v3IQ\/skMr1lPD\/0safS89vkThJd1TaAeNckANpDoTFlSYlcPLHannY=", - "gost-crypto": "ksIcWWL+vnLNpFZd9WqrE\/YVE7Y3po0YiBY+gc69uCEFKzM9JoJL5AVOkfapdClLm0WLenvTHcw=", - "haval128,3": "idqIG94ABtDs4359FaAMTKRvvva2pFJAYnpyM81dQwfgDlWMRsbq\/w==", - "haval160,3": "779S8PYTEPDfYEyMPdObvMAExmBulwROzBu\/CNRS+PQOdlVNhLUe1MLBZJ0=", - "haval192,3": "YGSa1W9rcfaTcRxoxTkrr3LCXQFyS0dD3ZtYDN3DSODvGDyqyCJJdvv\/L06Rsnpv", - "haval224,3": "SIz5VEFMgF+yYHniRLPek78l64clguLaUD3iwv6LBIHnHeT8ALmJAJW23O2PKirqU3r5XA==", - "haval256,3": "GaUq4uEn1\/FhqUMVacyZ49iup\/Em5BT\/zFoGW7MnJFTF2MHndq3bXsxIBP5T+O5moSrPyY38eYE=", - "haval128,4": "CUK0l9N0x\/kEfrhF82K13MWEMJLwwJPSPuyz9oBiD49ZO2wsdomUQw==", - "haval160,4": "yI2Grr6TvI31BgIrFetmZ6l67oCIAAbbBj1+7685Q75H8oPKWTjnQqUAAOQ=", - "haval192,4": "5rr00Erbs7juX5X8hNeKOkCzzx33H85ASZvOVUaO5C+irZup1SQrG5n2vCOW5opQ", - "haval224,4": "IJ0o46wAPxX7nYz2515bI6G0otFdWWCnna4DqTE6IKqxYsxcAHLjC1ARDkb5DMWm7vSARw==", - "haval256,4": "NG2q3JQ48RJeSlxkcCOfXajYFyrXbEsC8tiG+\/XE\/pidRE1R2j2Pc6s+UN14odB29VhdanKbgoc=", - "haval128,5": "44QR1Ez7I2K\/yKeRzOTZIW\/1htLztaCDTNB5XdRwdVN47hd\/ApSNmw==", - "haval160,5": "mbYbEBmiiw4UfDG4p\/vuS678FJlye2XnxKyTo\/q2xbWP4\/7d26QIajp1yUA=", - "haval192,5": "EU4hXigXp3oxLARANkV4TxaL1V+ri6b\/ApgOBThZmANjZwbBNP6aVaW3bksLZoOD", - "haval224,5": "xFsmr\/O3b6jjjq4UWMTYShMYiGNTiovv\/9sR2ZkfI5a0d3HIq66qLx4T5W43iO6xlme1vA==", - "haval256,5": "9XiVSMXc9nI4\/cWg4aBGh7TJMX0JDc9v5IH5dBW5wwZKUzHIcAqwThGDHsUmk+AeZ3eGBfvwj8Q=" + "md2": "Ii+MVhs+3Y4SVt1Iqwt7PoW8zSipPjTczjsmFCRx7J45Jv\/2VrlyUfexpJdlmYYzyDD0IQ==", + "md4": "3uI826cbaFUE+O\/q0sQnju\/hB9TDk3jkznfQaV\/juTr\/KLvzmf0NnDm+MRrk9Qb1eKWXxw==", + "md5": "CJxrFf9O10GV1YAmBvy3C\/IgIA+DjOY1JLYdGOpqh4\/31D74diR5Jdei+yy5EX8gk4isdw==", + "sha1": "cq52E7hbAnf0ek9gehsF+Heo0Y\/YZbX4XwthBNbPFpkhDDgY3qObESeKRy7+UjLnkUSa2aZUhWs=", + "sha224": "zvdj3uD5KrxgAEOGOGN+1ufgTAjDHdfyR9aMpY8gkc3zR4\/qWJiSjqzCgXpeq8XOEh9bV1tWIDFiN4i2A2dpTQ==", + "sha256": "TOcYnfK8N6XoFpVsmuar916VPAPj4NXADesxLngwJMEJYgDyDQRAspZPMi3ajhcTMkI48S5iUI8IR2CM2hgkWSP\/1M4=", + "sha384": "nbjIhw8ha7pRS7zowaG7B7f0pRCxmVCzufi1C0E6fv0\/CmMKYm3Wq6nBUHNwG8d0fidsBAruQT38Ohbju+HfcDK4wwDi4ummqVH3tAsqCrGUJ6jy", + "sha512\/224": "UFXnn2h3Y9vSNbcmop2LxSJmHUn9ks6vPOjGv37SikUMLHiTXytQOK7gRltAnUmLLBTSAJgKM6VQdisMR9ND4g==", + "sha512\/256": "cjCIeG48J9hEe1L3uNJiDbKUSi5NH3PSDEgzlw9yH9a3nIkgM+meW14o0dOVnrKxNIjpCcavO8SMAyHMKUwJAoRX49Q=", + "sha512": "+W25IOz7MNKvJqmlA0Fn8N6AtSqmuMC28Cl6hTUdy7YmBUzEuwX5qdHP8Ekbxe8gaaZMvU9rqtBM2DCL+acJhiEe5FPtaMAxe7mojoTq4lXmEuzFT1fyUMhpF800RBOOF3ZG8Q==", + "sha3-224": "3Lhau6GdtFIxhY9VvRQp+3LYQWDFsx67v0udng040PpqOP9Hmkbt57ehafYYBPTQ0+Y2L+gl9am5Z\/NppGkV1Q==", + "sha3-256": "tnVLSIzSTAtilP4WJym3mI2\/YqGbJ9Pqqcf63Z11EWlDSN2k7WtnIYn4rpH9Se9sZhtqepvB\/yT6vjGta550Z+NNdeA=", + "sha3-384": "al\/+Osm74NdYJpR2fK8RSHcLCFvgHyzsKfso\/wIB9DU5I741\/rg6H4jBeatsNOIO8d6qJA7j\/qN\/neie5u2X5uCZRvF3iewqt0Py7M60TFMLsRW0", + "sha3-512": "6xDzZDj+wQc5\/v2aKTlvhbfFNsvKmwXznLkTrq\/Hty8MIhJR7U0HyLq5pYRX2OeJuiZiX6p8R5GxgSBTab\/siLAAkwMNJNYgvVgLAHYfevfrqOT+vTKtLuKCU8YuMdYIyK+61Q==", + "ripemd128": "yfjA52JfLkOAmCT1xCHHPMm13U94sHxbPQfEe8UMcUiVu\/JmLEzUTWpusLqOh5Q6jmmPcQ==", + "ripemd160": "f5SKTl2\/Vlncp\/2Cqd2RxWHKEm9Wol5vonsDxSXsFsKT\/c4WJVzgofQzNOYDwMrKU2VbU2YJmm0=", + "ripemd256": "KVrxRtiQTTpX2\/73mwHi3FYOhJFmD74AhjCTj618ys2POMPaCZDwam5gTJ3L6iKH2pLNd\/PCCk6vkxS\/YUt9L6vGzBw=", + "ripemd320": "WSxwyjXLPMCpTCA\/m0DkkLtiPiq+KhyzAc389P46kwQtueeM7auwBK7\/VW\/2voesC098jhOQ7BoPsUX2PmeHV9Ouwq\/QW+9kQpclOA==", + "whirlpool": "Km119L4WKUvRCIWhBv+TrjJasa2eLVfGvQraUwtCN94817KsaPbYP\/yb+TCJ8BLPaJ6K1PoAClyfWt8OaGRkNoeg7SxIy80jK5FFQSj4JJjLJKXmW6STVdoWsts4o6SEPDyezg==", + "tiger128,3": "waNj0ddrtfFjj3FId\/cNCH3VhYoPLyqqX2sfd\/IRugdVokcFwUOGeygHtm2sjGvC3wdGEQ==", + "tiger160,3": "1gTUL9trBCkE+Kocxf1k2nnJj5QV+IhmPV\/F2r7Y1thgmEEBUEI5aCY8lm4Vs\/p60D0t7DGLnR4=", + "tiger192,3": "s77H9fuj98cL97eHprFBODxBkyq7tEFqSpCqnxJ79l1WfoNkCNoRHWtwIPe9at9jos5M4t3LS6a9CblS", + "tiger128,4": "xKm1ulCMXv8CJrW8AytTv467JQ8Kwg96OBa536ztson2Y8grD7Qs6onE5eZlwpXNc10kRg==", + "tiger160,4": "0AwsVspONsOgDijLOFoeuvVE6fVSbxK4CFmELUBUDFvxc2MprmpsVEkw7f4q3vtWQQjRhnnVBCU=", + "tiger192,4": "7r2YPfzlxkknLYs3zTQa9Gple3p74RWef8027lvXRC4DlpdC4iVJZTaSC20g\/2neLJyncAzHUO2VEPa0", + "snefru": "5+8RsjY+WcGtTegLQ07z\/4WEAbsc\/ioKjMqqHFT7cBOfYPr+UNfhDc8ft+wxjdttcpe4zXymleRkVgGV69iDgeyFdko=", + "snefru256": "bu+k\/gvtc3MIKn8nUEfWiXtLPLVSLqTC01WMRDJM2Gm\/B+qAlsi3XiUbReBW1W3HjintW3kQCP9axie7XHU0JE\/9Wo4=", + "gost": "2kbwnXmZn1X4upvLUHvgVDrU2ZzR6qqbM7TvkyWUMwMzcrtFgKYYpfbTXJf4lp1gFJneE1Rei9q0r5LyyTdKG7U222o=", + "gost-crypto": "o20HEq10IOhA1aJqVl8queR9UshQ+hBlYyMpJ39X9dYSUevgjy9PunaTX7Hj9GCvsY4BM\/Imuf23Y0ExYyG7qQZ2Pbg=", + "haval128,3": "DsK\/bjY3Sg\/FKxh\/ZhWu8up9um9cPqLi9aqbir4m6YkTBtoSqDmLHsvt2cgaC7PfY8hVeg==", + "haval160,3": "EknXxHRwD1kn9TqGuEP1EYHPOnTwA8P1eEZQvOHgUogV4V2TsPl0wTO8lAV7WngA1HkSN\/JZkSc=", + "haval192,3": "3JHi2mvXmYcklERidEEhMVTYeg0qBZV0k+53ALjyyq6TV4iIyGqlaiOC\/HsY86DaEFf8\/avlCaPDRzhL", + "haval224,3": "nuoPp6N1K\/FUi6GMye9UHd8nJ59fLxyMeSFzWciTtEWT\/6YShPqtZWmLpZt9Uum6XA77FVAxSnmRDivicp5l8Q==", + "haval256,3": "ODqQVRJgwwjEhemVNbRXfE77feqp0KCyliVaGSfxm41SYSp2\/2n4sCs5xwexngh8MXY9vH+7m0ZrYEx32TMKmMW05FA=", + "haval128,4": "mAxVYyyX6vH6qUxuNGVFi5b7XkxGG\/vKnkbPyhKMlBGkCKS\/WveBsWrGKz41KGwHBcxkMQ==", + "haval160,4": "Tv2hhVPU5Zn5lEh4XNeV3lCB55iIKJCvreaTcL5pLNjHlKJeM4umCTOcTvTuOcsl9AbzQ5uZh+I=", + "haval192,4": "JyrWDPQuEkTirufsyVBBV\/hIoDQHFcwgj4\/DQi5iSUv2floAGXmSF6AZiPLBGpwgAghzC4MRnGOqSJHw", + "haval224,4": "YSHmb+hwSM7lSd2t2iyRIktaXqmsF1j0h9H4T+fbZvlkayHs0ddLbsBtoYFeyvcNIgaqbMIp649ehQr+6H+GOw==", + "haval256,4": "JTTFj1aJIOtn6Eew6v0gs4SoRvJDku8osLMhCbGo5EhGzLsrIfx9mEQQYZmg1JZm8KA3TIgFi7UDP7OfYZi5T8CgLhA=", + "haval128,5": "6wt+OOqE7ikYs64rou3lnLYevh75PzKnPnqFRCi6uRkVA2kJ5m9GZtHEEAJ4rTPKyNummA==", + "haval160,5": "c+iOIAqvOw6A6dkiuscDVjhXcpueG7MRNs4l0QGu6z1SttG8SDTcA1GYjUwnwJsPu8VQkj+DeMM=", + "haval192,5": "psmgMK1cGDLQ79UihN1nLx8q0mrMqjjhr1rW88xIH9zx0avjRY3JQ\/8bDVMjq8ssddCzAKyTt+QtichB", + "haval224,5": "KWMJLZUD+3ZLdnQgGKq40OLrxFF70lkSbRezRKs9CljBXUJHmfaem7pgsfsiRernpkOpWKBg9gW+dKRH6NkZNw==", + "haval256,5": "AzNBE5yig+xuqLC0zH5IE5ZyJupB0Nnnj5TEXzbIDDNzveLvt3LgjwEFrmafuD2uAZH2L65+CN4fX+NkxwOpHoqYDqo=" }, "ciphers": { - "aes-128-cbc": "WZwBu4+B0kW9bewI4OSCig0L7sm5bAlAiWPRWhWFI5R1IvYfUVW0oEZWj2E850xUl7Q+CKoZ+SluyuHINgqgHw==", - "aes-128-cbc-hmac-sha1": "gM8EpSPDz1E3ByGUUO7tLovBdVgHIgQJEcIPwnzdKaSpghw7DjKPcrzyUD4k0aRqQbPU6ToK6u2f3YRADo3Scw==", - "aes-128-cbc-hmac-sha256": "2G2GfJGpXiPLOjqdXUHcEK5vX1\/LKjdyAg4oJP1hcmiggZoUTysPyUjvVgtSYiQaPfygSiN1D76q9VsMFTE9pw==", - "aes-128-ccm": "WRKmFdwnzOjQLb8i3MKD+ER3fciPI5Tup8N5\/Fk3u6wBacqySVbq6cLbPiunw9MPc65xUVSVUug=", - "aes-128-cfb": "NT4oDX6MKhmcU934WoK5LCP8M9Zxm239LSW5AfvTs9vUsehJzTvnsal+pj\/oVS2VTxYSbUoB04Y=", - "aes-128-cfb1": "6owfMF2njok1X7jPb5KOI2wpYSBXHONwxxEYCnu9Jw7mmBXIezY870WRpz9uhhKN3WcsWaLbgj0=", - "aes-128-cfb8": "auJ\/NQJAxbIASfLWtX+oqkPYmfE2t5H\/Qng\/0sYmz+WyUh259sfuXncOA7wnAy872AD8mDoO9\/s=", - "aes-128-ctr": "i676cxzqsaCh4AO8MFHj\/TdIp0VFlTe\/0EinRkug5wE+Ai2HO8Gw8VcZjCOYbHqII1eWpdWQ1UM=", + "aes-128-cbc": "UUSs3XlDkj0ZKHHbBepXWHNBXWUafEfsNQ7tzoz57\/KkkS+Eyyd6oo0kH1mjG3sl\/IRpYeYffuyjEXUmNcPjJQ==", + "aes-128-cbc-hmac-sha1": "FLQDhYKdp0RxRbLDn6DQDet2spQ+WWjqlH1BDjJA1SiZ4U7cFo8Tf5KfcH3TnsOhviC\/r0HM3L\/FaQAFpX4ocQ==", + "aes-128-cbc-hmac-sha256": "T0wIfoiYcI1aUWd3X6v09+eloGDpiYuvyd3WaJU40PVAO0zRL0MRcaz7MhJEzSe0YOBAYGt\/5k4xtt7J7FNhYA==", + "aes-128-ccm": "QXwhUQ\/wt5uxYSV4kxe7nc8bHw+42XgqFUiBL1E9dzUUxHNv8NQkYPKl6OsmK4DKZZv1UhG1WWPI7QcHUQUOvR9JiKo=", + "aes-128-cfb": "nMXnxjWawfK3STtvOADVQm5aiGPG24Js0NDnTB7q5FhBIEdWS\/EU0k1rApzcPvL+6A6OvPLRk+8=", + "aes-128-cfb1": "v0wAvCxqHXFOYiRpwTJ4vERg9Mm84i8ETEgL2eKctdqK8902SzhczqwyEQDOIqqE7Cjin8V1lkU=", + "aes-128-cfb8": "fbjZua+WON\/1CaZ5742Da+x3jqu7I8MlWHe\/JY0Hh7Jgn8YKzL3IrQ7rsYHyAaXEihnNQiAvbIE=", + "aes-128-ctr": "03r\/4B1+m8h29Fqrsrs5kgVaDEJPP1oyyBzF6uWbxy7sBJv0BzTrFj0BRKewymPvlHERwPQvm9M=", "aes-128-ecb": "4Ug3xSoVgSlXDPgRYLccAAcGvbLrnfiMsB7AePx+WY5mru6wxQyWVAxbpmsmSByb", - "aes-128-gcm": "vTe9iiPYxb56ashdT1UFmUxzls8J35Blkcv0QW6snTQY1S4OFAlGmJWMhByZ7up9MFNsZKwj2Sg=", - "aes-128-ofb": "0y9zFa8A\/Ngz34QbXp3WPMsRUvKSUMQVtFAGSj\/Ii6UmPojYfd8JaTDKXA4vl4gVwKKrSFMgz1I=", - "aes-192-cbc": "TwVCw8dUgDvDz9V5ZH2e4JsenCtBjrJbUL3WRjbGvu\/6N1JmB5PadKgY3fsFkChxMd0pabdvdfeIhcqf1iKq1A==", - "aes-192-ccm": "x3nS8KKqTd9PLRW+4B041MK7vVPyUsm\/ffe8xTcDmsLWRSBhOu1n6gEU7ZtH8PaGmXVbIFYiR3c=", - "aes-192-cfb": "1RTHYapddL0PuPBbf+7DbMRZPG9svMsNPLSFcjTvlVewQSYXW+jaTceLxoLxULM4Bz+E0qIiMYA=", - "aes-192-cfb1": "QCHR5KmqD4ShJhNIqpT4DjL14exMRAzuI227cdgtwEzTew3baJ70FEcyUAlvdALNiO1uruDvKjc=", - "aes-192-cfb8": "DIGPKyO2njkaxB8H2qbRtidhW1ONcyZ2NlEGgnQkFF+nLo9JDkARcnEKWlwHFVaWz10hQyiXMBU=", - "aes-192-ctr": "ykV1bfpmh2JybmyKjlc7dWIXeGSDUQXf1acNsZ72NyOkydYh1KxUyz8U44YJ0v60Ay2IJ7yPBdQ=", + "aes-128-gcm": "TV857PKh4nKVMHYhdwXTF4Rv1+hzBovnsFV83D5OWPAAKN8TveuHXTnlV4ABxnEd2aWkNraZmOaiN\/GKytSo67rEPDE=", + "aes-128-ofb": "Ei+Ib59y0MLQZh\/06lTVlImlskwnvl5FsGR9ir3iQfMyaF4ipeYpcTItRwlTrFzZquAxitOz5ac=", + "aes-192-cbc": "DQTXVBzfOf+zlBaMhyf2CBJnUGi1LJ1e5lUGQ3jXxFIo\/OdHcB1Mp31M736Qap7pViT4UWUf5iovJzCMV+g12w==", + "aes-192-ccm": "xsHyt1iQF+m10YvBuok3OxssCprAqCbWnkVf0pX9kaNS4w8+C53s+mfgQpvSBMDy36faiUWYNrBcgMBY3DWIeJqjgsU=", + "aes-192-cfb": "5JLMdRCfd61v+r05boD8Nx5BdadOzHrj75pF8Rk+KLuHOkGZf5QdJj5PUe6IVXa5RI9w2Koc014=", + "aes-192-cfb1": "apCehXjIl\/c85m0gFZuEHimrQttDZVBVV5gHIP1VRC3CIdSggLXih9W4q7QmTZxA2gMFzyGNjGQ=", + "aes-192-cfb8": "IdxJCmBwHW8qUQq4qNqkvWFreGCniCinVr2cCUWICdjuLW6X+HhtLU1PUtBc4CFphLejo67\/P5E=", + "aes-192-ctr": "nIeH1dFYwEdzs0AhDzx2pLuXUHlSs8ZIARR9IDCdsv\/7SSODN7mOqkDZDvc0ZQbmBOuc8Z2YFUQ=", "aes-192-ecb": "dV3qoUg6mo\/wCqVlPGf3qKsj9sEKaX8d4oMvJW4xudp3iVzxJaOsMSzAi32J5UCT", - "aes-192-gcm": "JzdattpD\/TsBI7qcTmG6DUWyapDnNAjoB2Jq18b+WwjIJXlYf1vWe6iOwipYCt8FXDIG96lqpws=", - "aes-192-ofb": "X6qFDpW9yJDbUzgGuqnOYbcNMbLiWRcUGcGrCtT8cSDSsDDyDUI0L\/dD0Xu1wHbUhYV9ahd4mSU=", - "aes-256-cbc": "lvqK8EU8uUfakJPNFxf7gOZG3boLdCnnqngW\/iTEn4utk1oGBJ+IE0KpuZAbgc\/JN2DWg\/BdH+r0T6d5XmHwKg==", - "aes-256-cbc-hmac-sha1": "r4+pn136\/1KzlZO1IWbX0sgUnP6YjhTycNmakVJ2mID7rSiBLQ\/xRSYH1yotCL7h9Nz32fFbtocRGqPpBmZa0Q==", - "aes-256-cbc-hmac-sha256": "r46CMUl07cODqbkUt4wDahldCXOO3u1TwzK2j842VrojMDmCWMgmNDkBvI2FdETTh4crdNytJvzHu98Vtmoh+A==", - "aes-256-ccm": "sMZ+lpMin+eAd2PxAHV8\/hLiv4KLHN+PdsK8XsfUnrOdmZKYUrdr\/UegsdKut2MsxYSvaOCyopM=", - "aes-256-cfb": "cX6Zi+c1TebEd7YmX\/cSDYFS75Y8AVTfzLPqgCo6Ajorf6ft18C0DRWsLdc0wwS\/EcH+rcrVyKk=", - "aes-256-cfb1": "2\/F6Q0dHFu5kCfZPBy2hct6zUx84AorvjDNr3wCvByiMjn80XimYxQElmP1eoZH7igUWawZsEnI=", - "aes-256-cfb8": "3+wnRVjobb5gsncpXjivtdPryI8ey98yh7EOcvdNz2SIgRGfQF\/3D4uOj21iv2SVZp1Ky6nCk8g=", - "aes-256-ctr": "\/nE1zBXbrLIZG+c77KjfGUb6c4w0Eb9PIQvr7yyduzH6m027Ah+ONT3r+2qxvpRGuz6Ml++olCc=", + "aes-192-gcm": "yqaL5Y8kOvtCqPTukQwfmpfLxp7Uut3dMEORdu4ticv+NFluI9HOHk8jFzVFNhRS3jigny1sgnelGwl1drzCD9B0umQ=", + "aes-192-ofb": "ycQ\/t0xhCL+dPzoIKZuAMOw7xYE6VVXLxIdENTR16z+wM21G9zB40+ssOAZPCQ2vHdxipaA6Rqs=", + "aes-256-cbc": "EkbuyByiEwTyRURQnSMhyjA33bO3s4hf2ZGl3nuIFrNdBphsMzdnKW2jUfOGdoG\/EXJ7btO0u7S08a\/j1E1QQg==", + "aes-256-cbc-hmac-sha1": "v6chT9cFerBJC4pSFvfFXhwtf2HU\/ksskF\/I\/8zHkNVvgFqlZbE9HPRyjNJYfwYtjcgJ99TX+1kJTWl3zG3d\/A==", + "aes-256-cbc-hmac-sha256": "H7TO17u1QIj3otbSQzxsjWyrBuuKlMQ8wn37e1BCoBXASYSeB5JFNKgdpXq2Rn+eal4CdzwTjp9MNNbJF4QRbw==", + "aes-256-ccm": "G18wR9QT\/RVALHJlpFpNfW4LcuTXy\/TcIJuL+q9wRUlKEitbvj6xfkCjYVlpxT3y4t\/RhpRqGFk18yBfD53hsbYZ2eM=", + "aes-256-cfb": "hVPg7l9dBuMymZNwSHAn+3m0hmC1JTwMQEuVauhzd9zpXzVWkVrOqYbo3NBOfDvZzUwblqlitNU=", + "aes-256-cfb1": "QmB8ICS4UZSStvMoBCrQh8YsCuJ+ih1FpLomiNs9N9egD09n9pXgn5wfIDPZ6jt5JQLERcSmdGY=", + "aes-256-cfb8": "Nem02qEFKCtR\/CkbJW9DePWuO9\/AsfcKxwO\/3Aq7aG90VY73m5OPDQY4Z\/gWZnHHl7N1CY3hfzQ=", + "aes-256-ctr": "a76xkGpIyQV\/HwaTJRkv4Uvc2P5n3e+4fA+Yo5DiDmc3rnrZpiazoOlyeiO\/IjFZX0PXx9379zM=", "aes-256-ecb": "kFCfyrzj9EdN5au+mKE3o6qLj8OTMjRUWcMqTQT0\/2FfzJBPf4zeRKcIrhzEs+Iw", - "aes-256-gcm": "17q1lA7yhTWhWc3CNZTbcy6FtPdN3qZrIDakb1eX7sEfyADuuhuq27MiCDjHpA01+LVlnak4m48=", - "aes-256-ofb": "UsgrQDLWLdzTqCt2LcXHtNrOZ9dvdzEJkW6YcZfHPFs9AgW+\/jjNL75n3SABEx9Xljn+ljPR2dI=", - "bf-cbc": "pa7g7GCDQQJOHmxlp01Ent62cns68qXyrphcOAwJxpqAXlqATJi3lvRY\/+P7ElLrQL62LndHfuQ=", - "bf-cfb": "C7Nq4CAUuHAH6ygKN\/yc26cjyBkWVaWUZH6jLXrwbaYxO9Snn3cjrrHXlargekVf", + "aes-256-gcm": "JaXD9mZRNGBAPO0qVzRNPUq1v99wIXe6twK4Owguxv6AIBBqbtQZNr+Ke1X+0vsB57BE1ylVugp6oR8A6SC3S+M7aHA=", + "aes-256-ofb": "yHuhV3500NsQ1erHTiBVyaOKV2SUY5cQVhsGywEFyfPnwwTBT1YxM5XEh\/slEF6h7NfmMgHz3j8=", + "bf-cbc": "QBWaLFpxdjfRnlOU+wGYe6i0CsHYx9K3B5dzBWcFyHEJ8jwHUrSglIj2lDjdFaM6EZzeQsEGjpQ=", + "bf-cfb": "8lyhBOti6xI8xCnhGDgn\/2tbM4\/sU34nLrr5j3P+dX+DpRf89mGqFLD1sk2qTA8U", "bf-ecb": "rMgKKcSwid9akHu0q9YJEpLSAjLALP5rHoHPHCvwmnWnpRaH39vCXUuoN1b0LiE6", - "bf-ofb": "WS4xm3BEGJ\/XezFlEwZHOdPOgrAO+xS3jQlesyO6aQMEIYGpZcZGfuhV2Hab7pZX", - "camellia-128-cbc": "6wP48Da7ieOkFWtyVMZ0qYcHjzvuIl+G7DkbMi\/zEytS0zeR8bROkAJdYfYw0ckkZd6HZiMixAHRVzL5nIVu2g==", - "camellia-128-cfb": "OAV4ldbeVyFCt2al1sZYlYTrkwhaZHdX2Csvmv0uNgNTxQDcrp21rb7+RTFBrHJ2GlrnFOLvs6Y=", - "camellia-128-cfb1": "KObuqZrbK2AOqQ\/JhEXiihdJ8wPOQsmvIXo8mNpSXT1W9dquHhci4EHtQmO85TPa04GfetjKyq4=", - "camellia-128-cfb8": "2ajjcLcLNvljfuFIPYZP+QpwcHt7bL0zJpare3dy0X4Vfxh49fzuQmyOhFT1qVubd47uz44CFqw=", - "camellia-128-ctr": "BkuKAZx8QAqO+XXE4K4C+qY+IT8mk+ujpvvbHmax\/havXWiKpDZ0HxnWFahlEmoBg17D87nJ+5I=", + "bf-ofb": "+17FcfOcBEU9buK\/DUvPLwofGuh0uUVUsDepe2yslMF+2U6bmOo+OItkjElHTsYN", + "camellia-128-cbc": "Rs+cvg+k\/lVsHksVNwO1cpEdm5Q2iSPVidURhvLPHXY8IVdj9d47V7QpiLIsKpxUe3hhH4t0lxSoEXP05OWU+w==", + "camellia-128-cfb": "ezq+KVZpA7B8F47lhG8AHfEdF4vlWQK4ChPupNbXMbK0vOR\/yi5435MBjvkIpX58ZLfgeoTGtWM=", + "camellia-128-cfb1": "mxWV70wUfFK6XY1+6T3QHJzwPRNk2hjUkJkBWxXJCk3\/Rn+mhXLgFT\/Vfjw2ve5t9DkXYKaNPBg=", + "camellia-128-cfb8": "h3CXYWl39oEkvWLdtlXYdA8\/ZD68WI0Z1sE\/8rYeAzfBfIAKBxDq5\/mRfkIjWqe7ShoA\/I\/85o0=", + "camellia-128-ctr": "Xo0S\/LoCDxiyRMqBYcAvzsb0TfBUyOvpcMGfBrk29Rxdd6u\/VgEtf5e4FyAsZiQXXTh12Y1hT9M=", "camellia-128-ecb": "\/M2kKuEMGjmUDw6dgVbaDnEnz6lpq5pQ9rfyCcjsKeRWN8Ph\/TpFQWPDtbLn9blp", - "camellia-128-ofb": "kzDQbG0zGT\/S3pv2Gm1uHKM8ZyCKLebyi3x1+T7sb7+kUaQJmwk3CuJRWwefmMCOTSM2mjzh99c=", - "camellia-192-cbc": "LT8p7GF4Mtpz+KvEDHuCBuckcplWyglCuEJE9YZgHU+HlXwUKJpOPbEVnshZeHEeZe7S1tTjWNUcPB38l3zFyg==", - "camellia-192-cfb": "gloPZYUjFn9V4ByNlYHrRVbv7PfSv2HtoIaYbB+OOx5OmflPdQL4hJae7Z07OOWUSoUQPE3w67o=", - "camellia-192-cfb1": "JbrfHuVJZhabtZp2V8J97cL\/gDOLs9zZ7W9POmU\/Sw\/YcnkBaOL3JWNbw\/pMjbKYO\/j9rG5p98E=", - "camellia-192-cfb8": "6DrfTxXoh4CKc1Lykrd10JSf5kRk1X9KbBfwsaaO\/lPM3nlRWIQ7\/h8RYnEYQt3bnKd1\/ww6To4=", - "camellia-192-ctr": "QjmeSrMEg2gBGttKK+CaYFxV4Z10AaBeyk0XbkOli9LJXhnrca7Zd9GrcgWnJsa+TKrw8sx+C7g=", + "camellia-128-ofb": "U2IN3u2fRgTL7BGoXUa1Wz\/XaiY1IJIJ8OTo9giubB+K8LFZbJE32ywWy0gpLaJEXLIFf4Bw8zk=", + "camellia-192-cbc": "KCKFTOBxJKyrpNGvtb5VBBB7JLsk6wiPgmUzQQ9FcsMRNVJYJHe8Tf1\/WNedmeIpM7Xj3lBbEoi5\/OVH30R\/Gg==", + "camellia-192-cfb": "GxC29W1Z3sIbKsRX\/wtph4uRCAtOERPgGfsngVJEIwmP+n+x\/OITpwfXzHTX8Bx3mOsoGZGgl24=", + "camellia-192-cfb1": "N92BLsr5Pv0NuiBjOK+ODvKZauk7+8zQM\/C3c4tiATfI0OxSXMKGk+Ji9tZb6DkUJFZfZqD44k0=", + "camellia-192-cfb8": "p2y+9pl9WlFQvhpv\/WLEwk9S2g4MMwrQYUEaWmOYnfU9IxlEEu0fXDpKu1nUjAeKW17clHx4sUs=", + "camellia-192-ctr": "asQvYAQOF6qrikuzUuMI+TeZq9RQD\/QWfhGb6j8b6r1ALe1uX30pHec+OiAOdzqig4+KnViSEQQ=", "camellia-192-ecb": "\/8j5WREzVYZpQD1gcfivEVEjUCwG816ZoHsFYbrfRf1TQV4IWtJOxR7HFfPvhxRs", - "camellia-192-ofb": "BfcQ6bLvbGe1waT0FEkyuICsrnvI5rnkjVQSV\/TbO4f7ZOebrT57AXnbP+4Zhr2zokgmgIXHZLI=", - "camellia-256-cbc": "ox\/rOwaXly3wACNyOT16LvPhXBg57liImAkxbxz1IhKZJFKVoTkxET3RlDAJ5hJSzM\/SirT0dN28lQSuZmLuyA==", - "camellia-256-cfb": "j0yuAm7NeaPmYO5+mADSI9fYBTB7m92pL+yXmDPl82w4fwdSj16qXeN\/6BOgQgRta8FxAQIlMP4=", - "camellia-256-cfb1": "TilFatTWR8OMwLzELSXoNrRVfCiXbGH1Rjw8Uetla05XhBB7mMLZhqRgwZlzwi7R65+20Cono6A=", - "camellia-256-cfb8": "Wzem8aoAzcTFw914vsN4O\/rOb3qzgixpCxbJLNTHpVsAFMcrze1W2CwqnKI\/1sO25ua3xDqnPL4=", - "camellia-256-ctr": "6\/ZOryk5OojYIZJfcCoIKkwSAuLwI8Tm\/gW5FeJ5qMviBlcMlDRocDam1KKTJMwewR81knvptSM=", + "camellia-192-ofb": "SpcNWCYeZ2FeCt3ojHGFXnisi3CwZjVhL2LnKTMZQ9FG7ycrfz6hCyvNOSX120WQuy\/UcVlIhq0=", + "camellia-256-cbc": "9kf4VmcnIa+t9PW9YUQUsvFMsbIrKXMpNrGT7h9V8Spp9pRSPTNogSwBASbpw4ymWAl6hvAUeG3udsZMkqhpxw==", + "camellia-256-cfb": "lY8RHUKmG4w4cLFZoR2eVYjz9MmhE4To9TAQJt1zfevI84Hd4yAPXTWKjO8Wf30WPtR+2usPnHA=", + "camellia-256-cfb1": "SBCLc9tAOqZY3u1Ao5aFRlJEjbBrGCNS8PgPgyi7I7R25FxSktfVN9aYmu1cM+hBDkwOwvLfr4c=", + "camellia-256-cfb8": "q\/tXtq4uXLCZPMXcpL4i2xrStopyP4a9m9J64OC2ZmYoWIM5v3LCFT03AIbRVYa8+wvhinbjo18=", + "camellia-256-ctr": "GYJwwolw6Q4awZ0\/h1MN0ABi5zxtYLdEa1lrM3sYpkdEvtaT8S3nXGzpsdYYVezTic1nzbP7qIc=", "camellia-256-ecb": "Gko59HoW7zLVhSzfcENPkbcv3uD3HNZcEKvZJLEqGO6Sd7ZEYdw66BlGnGbW32+H", - "camellia-256-ofb": "AJyurRLqKq+oQwOSzSsJyA5jG67qyeqv1LxbvEYw2wrjhVTXQItoDBZbHYyDIVNm\/qaMiI1H+g8=", - "cast5-cbc": "5saS\/s4ftim1bfgK6tgkoivsWxgKBs3MJJVY7VOP5pgHh\/sVg3ohw3Zp1+L0W2GlPxziF9o1\/xs=", - "cast5-cfb": "mUBaXdOWfQwvKwRr46gdtdBKwnw3xVhA9m0SDSlHPnhNrtVAI+jwp\/44X2fHpCF7", + "camellia-256-ofb": "BDZhjwV6tVwXf5HkPs67Ici5gqSO7q\/GGO2DVBbJbKhyxQtGTGVYwMPMNHIN5p0T9dznP2lfuzY=", + "cast5-cbc": "2i7Rp9TaA+DflpqLOqURaRRBrqFcCEDaOlBi+NqKxZiaV1n4IAVMMaSc\/qvMSKsS2LmiBisM6O0=", + "cast5-cfb": "vsfJoBsEDp8HneagoAKgp8ik5WtJXwovXsAEly4cCQVI0m+u3MGJCtM6xVu92mf3", "cast5-ecb": "xu89YgMBTzL7fvHdTVbb3qdaxtm3Rd1+ujysR17vaagOSHY1cS95ioDONWH7AUa3", - "cast5-ofb": "89HSmrVor2Rgxd4XUK9g19uM5beRP6XmM5EeV4Z2YqOadGTRpDDIEl+FlE9lqS4J", - "chacha20": "\/U3dqIO2hmx03DlvqLUMg0+hUjNdzGNMnXoi\/Yi8yMQ8YCDogc4559jOZ6ibSezYVx5vDcngkrQ=", - "chacha20-poly1305": "ctuiRCFiduM1Dlc5jgtHaeBb1vNsZIvDcJdwtqHl7gHiUCEot6lZoHo03xTzSC+KJFwt0g==", - "des-cbc": "zUjujo8McTLF+2os34RxuINfXYcZ05syQ1MqDxOy0hO36+us+y8qz26s9l\/voIBjOUvuIzdPFF8=", - "des-cfb": "yGbKygPydedeBFmG8mvc26xYQT5VpbhJtJ8411G8NT\/BeMDW5KolUpbRd5mK6QGb", - "des-cfb1": "r\/OueQ9PVINHixlyaUsjcgwOFdtp+Wjqs1s0RTqb4k23j9fPPfYx4wBPvHoS461A", - "des-cfb8": "2xVJG2P4kjkRXl4z7QMubWkmrlNl21kvwk9Om6Ux0nN1E6638HnzSoL3LiIZ0g7B", + "cast5-ofb": "ZMVbULWVEp+lf1Fl5fEs0BabQfAon4vlYFwjeDEUbgsOoraoPN4ptcO\/tjPFQAub", + "chacha20": "j+MI4CafGvFC4AQ0ZiPIEdLKEfvdqcguiTZOsUeYmgb\/AASbzF5\/DUvIttTAtBRzxWlPrZFQwAM=", + "chacha20-poly1305": "5VYmgJKe6BYCy8XCXbEJbZ43rIEDQG2Y6Au7+BGd3K9otQBfLKxM9GYyxxD3a+6i2qmljg==", + "des-cbc": "q4ukVti6QXzKFwy4CI6Yuxjn15hQ3s3AutUTP5hJRCJIcLc0ysejD0kN4McjvbI1dtU2fzvgjLk=", + "des-cfb": "Gn6up0kdRvGVk3epG9ig2IjfUxG1G+n9ZVUymqQaFJ5CLCYpCI7BAVMukZVj\/FPN", + "des-cfb1": "SLZmNwkWSdZ0HFPb66Rspvd8MOnrXXKkscvnVRBlBDfVPkGwkVm7ahoFZjo4Zls2", + "des-cfb8": "KjRBbNrfY5ryxcNqinfjtaVwcGVtyoN6BisyHbz292WkMEUU85HCEXHU\/zF1fu12", "des-ecb": "VCz7UiUQOfb9fPVJJWUWomPLzBS63xZRJMlHMB9HN+21ZXoSuO2ZYTAFmCfedT6q", "des-ede": "HevxpLHzSmXuY3aY338k6Ax\/0LMiMBkTW+bjj+jildVN1BfkzufffVozXnSbYvMl", - "des-ede-cbc": "5GJpQZedcC8NZSuc+J7mA6wzEn+wt4CC1roXISjBp4UvLhmorgZv+UeumGxnMhIR6Sm1\/LDSbuA=", - "des-ede-cfb": "XdPF\/Ea1ONyaNFiQkmfKQIoXjJZPjQS3zZ4e7UdjxdgOJPJE8zAQuDrAYc6LHRNu", - "des-ede-ofb": "WwSeQzR7LNU9RQS20R1AHibrYjexnfw35ec7JuL+IxW6Vn1+70wn+KXaSHE5mCFo", + "des-ede-cbc": "xrJq5P0NPwSQ0K2SVcD37+4kw9AMd9lX\/WETaxX4AG5iQ4gNnhbWxE+B+GwLXOYBEbqaB5c7l6k=", + "des-ede-cfb": "pVEYzGxrazdYbiHuQ8Kz4ny8Kx1FHW0l\/OEcAYv85DhA9iKmaYRkk\/GHPUvId9Xp", + "des-ede-ofb": "bliUtymtLUyBSdTabDGfVaFcefnOIlgJ6m\/eZutMjS5ya8J\/oakEaG89BqyGT2N3", "des-ede3": "oX40vw5\/rQYSFOwOQQ8+1vBQJkXyZAz9CDH6jWbz80A7rMplcpFGSfTW+IEGfP\/p", - "des-ede3-cbc": "nQUh6tp5bSf5hZqv5nXd2vwFfPkIO+BXm0tPX57i18VdUo94EJL7aK7OVuo\/AjYzvi\/d+bL58lA=", - "des-ede3-cfb": "fRTYD7DZPZC7b+KTIpMRZQ6LV8UjZgLUKS6rGq1Xiep5hrKy0Cmcko9MJI2124cq", - "des-ede3-cfb1": "nLCDEacVo1PAJTvChuiswC57MpEm+Rv6+9vIs8GEao3AxmBoLkEczKxrvpMg49hu", - "des-ede3-cfb8": "cfTeETm7VZT0QUHlSuasCN4ntPscbERd0npxSDi6zHG9Dcxg6WRb66MWYnAB0h9T", - "des-ede3-ofb": "47mPRwzUF1nbLcSb2aRhhnmw2NTKpdfe0Ya6bg6Hm58B2uJs8dqMvUnnV3U7VClX", - "des-ofb": "u8QKQg1yRQXdMkgowrgRGzLRIyGvBRfuXMNnckqKI+NNrGhd8dvHbauuA4JM4xWq", - "desx-cbc": "ReHtqHuKu9XMPCaMdqJhea3EGCqTYucFDBPdiGc4cccHG5ynLHVR1EWhormRdnjo1qWbenbDNE8=", - "rc2-40-cbc": "U0VJ08m9TAAJr+YT4Eo3AZtCuefyC8S17jCHXZw3cDvyJYEAA+08K6CCAJ9R32Jb4Ewu5U2qeIQ=", - "rc2-64-cbc": "XSLmkuo2fbIBZERi\/Kj8xwX4A7tOZFpRmwCIlCoFU1x1sUljOiZlq3pmuOdXWCtXC6GfintDaEo=", - "rc2-cbc": "VdH8hQywjQ9PFj\/3V6NwLqqmkNvhZ4\/MGeorpxvQJEWvYBr4ZKTYd9lPh6hcJPr8V1iI6hs6XE4=", - "rc2-cfb": "qUPJ9CHsnZzb8raJV6VuJX4altLdEbZWZlcblOyq+03rSPaSVO6Nu6UxeK2EnOcK", + "des-ede3-cbc": "EyVAAmvDfU6Kwy7126n1Ux2X9KubdJQ3bAQbY30cIEbMooFY1Jj\/nC1kwvU0H4WRoXqDyQRgklY=", + "des-ede3-cfb": "hEJ7PnXE7e5iToP7lvJUS5vh5nJQQbIuH4KFP3MuXakQoEibUficIOidrzqCryUi", + "des-ede3-cfb1": "W7HB5Nimvoq7Eytl63yQNPyXggDTuj4h9kBzDtG0owZHAdPeMxAl4QIzqTkCcshS", + "des-ede3-cfb8": "3Qy57BbvR9Y0Oy5XHL5bVQ1mZFOs+7TAnNDA1nNFCudTD84YS3IXQ4Sqp6beoEwm", + "des-ede3-ofb": "Xj2v3QS\/9aYQfOCxmu7kPKuQIvc4IJiFcog3FoHZ8LVJcFXDyf3fh6OHwDZ6e\/gu", + "des-ofb": "uOfnG5m11JjmDRTt8NTO2EUN21gN8gOf1V88N3q2N2LWfM7S+r1unW+wjp21XHp9", + "desx-cbc": "a5gIjEE5V4cw4S4Dk5eh2o3Z2mz1+vC\/yuV10oRcpWZVRtk4Fn33Whs+0nJe1Ya2VNWv\/n\/L6Q0=", + "rc2-40-cbc": "b9+X7QpJCCT9cp8ZMkA2Le5Jw1ksusxOPPE1liOoGnwBFWrlo7CD+Vau9nEjGYDxIJMkKii\/lKM=", + "rc2-64-cbc": "3Woti0p6qHb3OWp7cdmdFM\/oJ9fPYZ8\/O8stVbIuCOC0WDvd0HSawd4+ILNKgLcNVp6RqF9H4cY=", + "rc2-cbc": "9b5URPuLHALVc1f7KKdB63wkR5Z1rX6ohe4ywXTDZ6XiwNfTR0sgYmrC5\/fE7+4eg7hB3UJ67NQ=", + "rc2-cfb": "H3gCRAcXUO8hmkFJmy3PBJcY8dKOzKVnCbJWJdFk7ajlQfkCCLjoN5TcpeEbOhQ2", "rc2-ecb": "gCms6Pm\/klt9B6FI48iTQCAhmkKXXgRyfj9Xzl5F2oNE\/jUf5iFQ2w7dSHoupgTt", - "rc2-ofb": "N8z\/Qo4mJkUE6UpoZtrqdvk7wShwRPeHEz5Kd+R9IYw6KIpC1IStXJ6\/7tBM4m8I", + "rc2-ofb": "lyJTqGWD9MNRDI\/zy4psAZ\/ZOBDA7UwxZdNu91I9xp+GW5w56\/kCdUBRZ1r\/ZaNh", "rc4": "oM4umrSFGWbiSllwPA4Yn3U76TiMK+E8UuBr0K9fV79C\/4441RKe5A==", "rc4-40": "7vwjU6WVNX5Tir5pQyShIH6EtymUYh+PAb6RiYXBOmOF0q35Dd3LFQ==", "rc4-hmac-md5": "Z3u\/V0AAQQOGyN6p4pzsbBW7MOdFoort2oT+lOAKwjTcvrzvQze7sw==", - "seed-cbc": "rCVK6pl4q8yT1BCkCXByu1TQ+FXpxtRjgew+lrX6jGm+43upSUiuIyejr\/grrlV+O+lFZHk9sPJwockiOhIlag==", - "seed-cfb": "p+GlU76EoDUxJXOJiRsjkKUQ2KUloZlFWdJqKGZUy0xIOuwHGFegzJlP+HIf8wYgSyl8amcVaoY=", + "seed-cbc": "FVpjtLw66Jqapw5tIU3yGMpGKjxVvgi5v7NFN2BJ5nQa61AsEdV5talUDxLj7Ae5HoRbSjZ7C4ij1XMUWaZEUg==", + "seed-cfb": "RJ354KGwDsNcAKLm4i7jwJ0EwfGtxgO7TPhngve5jIbXw71DPH80AGxNZwWIticlLhYC7Uun274=", "seed-ecb": "Zv+4oYZzk7y9+h1gpeRKzZPM9GxFFo6VSF5AgKy1M+43Ycq+2WW09vmDh6Qu4IIK", - "seed-ofb": "LKGfAMvYF+3UosMt6OafqQ2V1\/rbD\/tsq73+ueGYH3F3VazGrsWBzfs4hn0evvotK6OIXG22HWQ=" + "seed-ofb": "istl+wH2JgdebvC4Jgl\/t11b+SDSOTg5ibWYBtqsizDNZSPmeYKPaLpAC1NoKXr9JeuwAw7HMek=" }, "aes256": { - "\\Dcrypt\\Aes256Gcm": "JGVLEYwSDNGDMx3NX07CMyEVa0e+MQ3EULuKoqPSFzgnLLJPg4viYvtxRUjd43fhWT\/uJ+RpoBE=", - "\\Dcrypt\\Aes256Ctr": "DwbatkZHAZyLat5iKlngLWq7OMdXetq4Hg5bOCQChp7mjwhlwep4HHEUJ4O+q7uZDr8TKkWBuE8=", - "\\Dcrypt\\Aes256Ofb": "AsJMk2mBRBdwOQKHfne9yu4EOKKb\/TN9EAGeQ6N4L38nplvhrvE8y5zUSHXGkLlIZMJT1rGzCdE=", - "\\Dcrypt\\Aes256Cbc": "z96q9uGmiZvq0WrieB8JlN0Kpklm0dTJrkLX0+O5tOTM8L8rI1a5DZMZStuKrUu6jY\/+3O4AptUmsz4WtNS+Dg==", - "\\Dcrypt\\Aes256Ecb": "kFCfyrzj9EdN5au+mKE3o6qLj8OTMjRUWcMqTQT0\/2FfzJBPf4zeRKcIrhzEs+Iw" + "\\Dcrypt\\Aes256Gcm": "aX+Zp8GDnGeHnc4R3uS5Y\/0XhTkzldIKthdKMD\/y6DuEuVSe7wdk05vZl+CdRRkr3yX6\/l0RnCWZNEl8Mx5\/rkx+2f8=", + "\\Dcrypt\\Aes256Ctr": "XrUCSMMJgx6VCHGVp9SN1euKxgNx1xFQuuW0g+XVrW4T\/xgAPpSOEekP1w23+VCZ\/fyPQylpmlU=", + "\\Dcrypt\\Aes256Ofb": "+eSRzWIk62fWFBbPFb0W1N4IlhJiEocrjvZFztt+VXSUJ1XG5ZdqUFzNdPExGuV\/vpbA+nqDztg=", + "\\Dcrypt\\Aes256Cbc": "MeEcr\/L628pmhkzLuxdA9xP8wiI77WL1JuaofzjboW6gEdO7iVhiKFsx6KuWm6IP5Ch1DIGwKQeQvYRAjJQhOA==", + "\\Dcrypt\\Aes256Ecb": "kFCfyrzj9EdN5au+mKE3o6qLj8OTMjRUWcMqTQT0\/2FfzJBPf4zeRKcIrhzEs+Iw", + "\\Dcrypt\\Aes256Ccm": "UiCJDa3Xrw7O659Wpxvo9ACiWJVHo6pf658rCSXj5Od\/tGU9\/7Z3vj03OS0kGuSj3LXnqsvw4wHhxfgeAzcWXE\/5+iY=", + "\\Dcrypt\\Aes256Cfb": "1D5pBS0FjRfEVukFwFCTBWm91V+1gBNcU20ebkjzy4NofqR641XKHLJBzZtNT4e4PEoJOkbEJuQ=" }, "otp": { "10": "El9SyDAz7iaIsA==", diff --git a/tests/Aes256CcmTest.php b/tests/Aes256CcmTest.php new file mode 100644 index 00000000..73f3f357 --- /dev/null +++ b/tests/Aes256CcmTest.php @@ -0,0 +1,8 @@ +