Class: OpenSSL::Cipher
- Inherits:
-
Object
- Object
- OpenSSL::Cipher
- Defined in:
- ext/openssl/cipher/aead/aead.c
Defined Under Namespace
Classes: CipherError
Instance Method Summary collapse
- #aad=(data) ⇒ Object
- #gcm_iv_len=(iv_length) ⇒ Object
- #gcm_tag ⇒ Object
- #gcm_tag=(data) ⇒ Object
- #verify ⇒ Object
Instance Method Details
#aad=(data) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'ext/openssl/cipher/aead/aead.c', line 64 static VALUE ossl_cipher_set_aad(VALUE self, VALUE data) { EVP_CIPHER_CTX *ctx; char *in = NULL; int in_len = 0; int out_len = 0; StringValue(data); in = (unsigned char *) RSTRING_PTR(data); in_len = RSTRING_LEN(data); GetCipher(self, ctx); if (!EVP_CipherUpdate(ctx, NULL, &out_len, in, in_len)) ossl_raise(eCipherError, NULL); return self; } |
#gcm_iv_len=(iv_length) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'ext/openssl/cipher/aead/aead.c', line 129 static VALUE ossl_cipher_set_iv_length(VALUE self, VALUE iv_length) { EVP_CIPHER_CTX *ctx; int ivlen = NUM2INT(iv_length); GetCipher(self, ctx); #ifndef EVP_CTRL_GCM_SET_IVLEN ossl_raise(eCipherError, "your version of OpenSSL doesn't support GCM"); #else if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, ivlen, NULL)) ossl_raise(eCipherError, NULL); #endif return iv_length; } |
#gcm_tag ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'ext/openssl/cipher/aead/aead.c', line 85 static VALUE ossl_cipher_get_tag(VALUE self) { EVP_CIPHER_CTX *ctx; VALUE tag; tag = rb_str_new(NULL, 16); GetCipher(self, ctx); #ifndef EVP_CTRL_GCM_GET_TAG ossl_raise(eCipherError, "your version of OpenSSL doesn't support GCM"); #else if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, 16, (unsigned char *)RSTRING_PTR(tag))) ossl_raise(eCipherError, NULL); #endif return tag; } |
#gcm_tag=(data) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'ext/openssl/cipher/aead/aead.c', line 105 static VALUE ossl_cipher_set_tag(VALUE self, VALUE data) { EVP_CIPHER_CTX *ctx; char *in = NULL; int in_len = 0; StringValue(data); in = (unsigned char *) RSTRING_PTR(data); in_len = RSTRING_LEN(data); GetCipher(self, ctx); #ifndef EVP_CTRL_GCM_SET_TAG ossl_raise(eCipherError, "your version of OpenSSL doesn't support GCM"); #else if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_TAG, in_len, in)) ossl_raise(eCipherError, NULL); #endif return data; } |
#verify ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'ext/openssl/cipher/aead/aead.c', line 147 static VALUE ossl_cipher_verify(VALUE self) { EVP_CIPHER_CTX *ctx; int out_len = 0; GetCipher(self, ctx); if (!EVP_CipherUpdate(ctx, NULL, &out_len, NULL, 0)) ossl_raise(eCipherError, "ciphertext failed authentication step"); return rb_str_new(0, 0); } |