+#ifndef DISABLE_LEGACY
+bool init_crypto_by_nid(legacy_crypto_t *c, nid_t cipher, nid_t digest) {
+ if(!cipher_open_by_nid(&c->cipher, cipher)) {
+ return false;
+ }
+
+ if(!digest_open_by_nid(&c->digest, digest, DIGEST_ALGO_SIZE)) {
+ cipher_close(&c->cipher);
+ return false;
+ }
+
+ c->budget = cipher_budget(&c->cipher);
+ return true;
+}
+
+bool init_crypto_by_name(legacy_crypto_t *c, const char *cipher, const char *digest) {
+ if(!cipher_open_by_name(&c->cipher, cipher)) {
+ return false;
+ }
+
+ if(!digest_open_by_name(&c->digest, digest, DIGEST_ALGO_SIZE)) {
+ cipher_close(&c->cipher);
+ return false;
+ }
+
+ c->budget = cipher_budget(&c->cipher);
+ return true;
+}
+
+bool decrease_budget(legacy_crypto_t *c, size_t bytes) {
+ if(bytes > c->budget) {
+ return false;
+ } else {
+ c->budget -= bytes;
+ return true;
+ }
+}