Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
namespace Aws\Crypto\Cipher;
3
 
4
use Aws\Exception\CryptoException;
5
 
6
trait CipherBuilderTrait
7
{
8
    /**
9
     * Returns an identifier recognizable by `openssl_*` functions, such as
10
     * `aes-256-cbc` or `aes-128-ctr`.
11
     *
12
     * @param string $cipherName Name of the cipher being used for encrypting
13
     *                           or decrypting.
14
     * @param int $keySize Size of the encryption key, in bits, that will be
15
     *                     used.
16
     *
17
     * @return string
18
     */
19
    protected function getCipherOpenSslName($cipherName, $keySize)
20
    {
21
        return "aes-{$keySize}-{$cipherName}";
22
    }
23
 
24
    /**
25
     * Constructs a CipherMethod for the given name, initialized with the other
26
     * data passed for use in encrypting or decrypting.
27
     *
28
     * @param string $cipherName Name of the cipher to generate for encrypting.
29
     * @param string $iv Base Initialization Vector for the cipher.
30
     * @param int $keySize Size of the encryption key, in bits, that will be
31
     *                     used.
32
     *
33
     * @return CipherMethod
34
     *
35
     * @internal
36
     */
37
    protected function buildCipherMethod($cipherName, $iv, $keySize)
38
    {
39
        switch ($cipherName) {
40
            case 'cbc':
41
                return new Cbc(
42
                    $iv,
43
                    $keySize
44
                );
45
            default:
46
                return null;
47
        }
48
    }
49
 
50
    /**
51
     * Performs a reverse lookup to get the openssl_* cipher name from the
52
     * AESName passed in from the MetadataEnvelope.
53
     *
54
     * @param $aesName
55
     *
56
     * @return string
57
     *
58
     * @internal
59
     */
60
    protected function getCipherFromAesName($aesName)
61
    {
62
        switch ($aesName) {
63
            case 'AES/GCM/NoPadding':
64
                return 'gcm';
65
            case 'AES/CBC/PKCS5Padding':
66
                return 'cbc';
67
            default:
68
                throw new CryptoException('Unrecognized or unsupported'
69
                    . ' AESName for reverse lookup.');
70
        }
71
    }
72
}