@@ -57,24 +57,20 @@ enacl_crypto_aead_chacha20poly1305_ietf_encrypt(ErlNifEnv *env, int argc,
57
57
if (!enif_alloc_binary (message .size +
58
58
crypto_aead_chacha20poly1305_ietf_ABYTES ,
59
59
& ciphertext )) {
60
- ret = enacl_error_tuple (env , "alloc_failed" );
61
- goto done ;
60
+ goto err ;
62
61
}
63
62
64
- if (crypto_aead_chacha20poly1305_ietf_encrypt (
65
- ciphertext .data , NULL , message .data , message .size , ad .data , ad .size ,
66
- NULL , nonce .data , key .data ) < 0 ) {
67
- ret = enacl_error_tuple (env , "aead_chacha20poly1305_ietf_encrypt_failed" );
68
- goto release ;
69
- }
63
+ crypto_aead_chacha20poly1305_ietf_encrypt (ciphertext .data , NULL , message .data ,
64
+ message .size , ad .data , ad .size ,
65
+ NULL , nonce .data , key .data );
70
66
71
67
ret = enif_make_binary (env , & ciphertext );
72
68
goto done ;
73
69
74
70
bad_arg :
75
71
return enif_make_badarg (env );
76
- release :
77
- enif_release_binary ( & ciphertext );
72
+ err :
73
+ ret = enacl_internal_error ( env );
78
74
done :
79
75
return ret ;
80
76
}
@@ -106,14 +102,13 @@ enacl_crypto_aead_chacha20poly1305_ietf_decrypt(ErlNifEnv *env, int argc,
106
102
if (!enif_alloc_binary (ciphertext .size -
107
103
crypto_aead_chacha20poly1305_ietf_ABYTES ,
108
104
& message )) {
109
- ret = enacl_error_tuple (env , "alloc_failed" );
110
- goto done ;
105
+ return enacl_internal_error (env );
111
106
}
112
107
113
108
if (crypto_aead_chacha20poly1305_ietf_decrypt (
114
109
message .data , NULL , NULL , ciphertext .data , ciphertext .size , ad .data ,
115
- ad .size , nonce .data , key .data ) < 0 ) {
116
- ret = enacl_error_tuple (env , "aead_chacha20poly1305_ietf_decrypt_failed " );
110
+ ad .size , nonce .data , key .data ) != 0 ) {
111
+ ret = enacl_error_tuple (env , "failed_verification " );
117
112
goto release ;
118
113
}
119
114
@@ -180,24 +175,20 @@ enacl_crypto_aead_xchacha20poly1305_ietf_encrypt(ErlNifEnv *env, int argc,
180
175
if (!enif_alloc_binary (message .size +
181
176
crypto_aead_xchacha20poly1305_ietf_ABYTES ,
182
177
& ciphertext )) {
183
- ret = enacl_error_tuple (env , "alloc_failed" );
184
- goto done ;
178
+ goto err ;
185
179
}
186
180
187
- if (crypto_aead_xchacha20poly1305_ietf_encrypt (
188
- ciphertext .data , NULL , message .data , message .size , ad .data , ad .size ,
189
- NULL , nonce .data , key .data ) < 0 ) {
190
- ret = enacl_error_tuple (env , "aead_xchacha20poly1305_ietf_encrypt_failed" );
191
- goto release ;
192
- }
181
+ crypto_aead_xchacha20poly1305_ietf_encrypt (
182
+ ciphertext .data , NULL , message .data , message .size , ad .data , ad .size , NULL ,
183
+ nonce .data , key .data );
193
184
194
185
ret = enif_make_binary (env , & ciphertext );
195
186
goto done ;
196
187
197
188
bad_arg :
198
189
return enif_make_badarg (env );
199
- release :
200
- enif_release_binary ( & ciphertext );
190
+ err :
191
+ ret = enacl_internal_error ( env );
201
192
done :
202
193
return ret ;
203
194
}
@@ -229,14 +220,13 @@ enacl_crypto_aead_xchacha20poly1305_ietf_decrypt(ErlNifEnv *env, int argc,
229
220
if (!enif_alloc_binary (ciphertext .size -
230
221
crypto_aead_xchacha20poly1305_ietf_ABYTES ,
231
222
& message )) {
232
- ret = enacl_error_tuple (env , "alloc_failed" );
233
- goto done ;
223
+ return enacl_internal_error (env );
234
224
}
235
225
236
226
if (crypto_aead_xchacha20poly1305_ietf_decrypt (
237
227
message .data , NULL , NULL , ciphertext .data , ciphertext .size , ad .data ,
238
- ad .size , nonce .data , key .data ) < 0 ) {
239
- ret = enacl_error_tuple (env , "aead_xchacha20poly1305_ietf_decrypt_failed " );
228
+ ad .size , nonce .data , key .data ) != 0 ) {
229
+ ret = enacl_error_tuple (env , "failed_verification " );
240
230
goto release ;
241
231
}
242
232
0 commit comments