1/* visibility.c - Wrapper for all public functions. 2 * Copyright (C) 2007, 2008, 2011 Free Software Foundation, Inc. 3 * 4 * This file is part of Libgcrypt. 5 * 6 * Libgcrypt is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU Lesser General Public License as 8 * published by the Free Software Foundation; either version 2.1 of 9 * the License, or (at your option) any later version. 10 * 11 * Libgcrypt is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this program; if not, see <http://www.gnu.org/licenses/>. 18 */ 19 20#include <config.h> 21#include <stdarg.h> 22 23#define _GCRY_INCLUDED_BY_VISIBILITY_C 24#include "g10lib.h" 25#include "cipher-proto.h" 26 27 28 29const char * 30gcry_strerror (gcry_error_t err) 31{ 32 return _gcry_strerror (err); 33} 34 35const char * 36gcry_strsource (gcry_error_t err) 37{ 38 return _gcry_strsource (err); 39} 40 41gcry_err_code_t 42gcry_err_code_from_errno (int err) 43{ 44 return _gcry_err_code_from_errno (err); 45} 46 47int 48gcry_err_code_to_errno (gcry_err_code_t code) 49{ 50 return _gcry_err_code_to_errno (code); 51} 52 53gcry_error_t 54gcry_err_make_from_errno (gcry_err_source_t source, int err) 55{ 56 return _gcry_err_make_from_errno (source, err); 57} 58 59gcry_err_code_t 60gcry_error_from_errno (int err) 61{ 62 return _gcry_error_from_errno (err); 63} 64 65const char * 66gcry_check_version (const char *req_version) 67{ 68 return _gcry_check_version (req_version); 69} 70 71gcry_error_t 72gcry_control (enum gcry_ctl_cmds cmd, ...) 73{ 74 gcry_error_t err; 75 va_list arg_ptr; 76 77 va_start (arg_ptr, cmd); 78 err = _gcry_vcontrol (cmd, arg_ptr); 79 va_end(arg_ptr); 80 return err; 81} 82 83gcry_error_t 84gcry_sexp_new (gcry_sexp_t *retsexp, 85 const void *buffer, size_t length, 86 int autodetect) 87{ 88 return _gcry_sexp_new (retsexp, buffer, length, autodetect); 89} 90 91gcry_error_t 92gcry_sexp_create (gcry_sexp_t *retsexp, 93 void *buffer, size_t length, 94 int autodetect, void (*freefnc) (void *)) 95{ 96 return _gcry_sexp_create (retsexp, buffer, length, 97 autodetect, freefnc); 98} 99 100gcry_error_t 101gcry_sexp_sscan (gcry_sexp_t *retsexp, size_t *erroff, 102 const char *buffer, size_t length) 103{ 104 return _gcry_sexp_sscan (retsexp, erroff, buffer, length); 105} 106 107gcry_error_t 108gcry_sexp_build (gcry_sexp_t *retsexp, size_t *erroff, 109 const char *format, ...) 110{ 111 gcry_error_t err; 112 va_list arg_ptr; 113 114 va_start (arg_ptr, format); 115 err = _gcry_sexp_vbuild (retsexp, erroff, format, arg_ptr); 116 va_end (arg_ptr); 117 return err; 118} 119 120gcry_error_t 121gcry_sexp_build_array (gcry_sexp_t *retsexp, size_t *erroff, 122 const char *format, void **arg_list) 123{ 124 return _gcry_sexp_build_array (retsexp, erroff, format, arg_list); 125} 126 127void 128gcry_sexp_release (gcry_sexp_t sexp) 129{ 130 _gcry_sexp_release (sexp); 131} 132 133size_t 134gcry_sexp_canon_len (const unsigned char *buffer, size_t length, 135 size_t *erroff, gcry_error_t *errcode) 136{ 137 return _gcry_sexp_canon_len (buffer, length, erroff, errcode); 138} 139 140size_t 141gcry_sexp_sprint (gcry_sexp_t sexp, int mode, void *buffer, size_t maxlength) 142{ 143 return _gcry_sexp_sprint (sexp, mode, buffer, maxlength); 144} 145 146void 147gcry_sexp_dump (const gcry_sexp_t a) 148{ 149 _gcry_sexp_dump (a); 150} 151 152gcry_sexp_t 153gcry_sexp_cons (const gcry_sexp_t a, const gcry_sexp_t b) 154{ 155 return _gcry_sexp_cons (a, b); 156} 157 158gcry_sexp_t 159gcry_sexp_alist (const gcry_sexp_t *array) 160{ 161 return _gcry_sexp_alist (array); 162} 163 164gcry_sexp_t 165gcry_sexp_vlist (const gcry_sexp_t a, ...) 166{ 167 /* This is not yet implemented in sexp.c. */ 168 (void)a; 169 BUG (); 170 return NULL; 171} 172 173gcry_sexp_t 174gcry_sexp_append (const gcry_sexp_t a, const gcry_sexp_t n) 175{ 176 return _gcry_sexp_append (a, n); 177} 178 179gcry_sexp_t 180gcry_sexp_prepend (const gcry_sexp_t a, const gcry_sexp_t n) 181{ 182 return _gcry_sexp_prepend (a, n); 183} 184 185 186gcry_sexp_t 187gcry_sexp_find_token (gcry_sexp_t list, const char *tok, size_t toklen) 188{ 189 return _gcry_sexp_find_token (list, tok, toklen); 190} 191 192int 193gcry_sexp_length (const gcry_sexp_t list) 194{ 195 return _gcry_sexp_length (list); 196} 197 198gcry_sexp_t 199gcry_sexp_nth (const gcry_sexp_t list, int number) 200{ 201 return _gcry_sexp_nth (list, number); 202} 203 204gcry_sexp_t 205gcry_sexp_car (const gcry_sexp_t list) 206{ 207 return _gcry_sexp_car (list); 208} 209 210gcry_sexp_t 211gcry_sexp_cdr (const gcry_sexp_t list) 212{ 213 return _gcry_sexp_cdr (list); 214} 215 216gcry_sexp_t 217gcry_sexp_cadr (const gcry_sexp_t list) 218{ 219 return _gcry_sexp_cadr (list); 220} 221 222const char * 223gcry_sexp_nth_data (const gcry_sexp_t list, int number, size_t *datalen) 224{ 225 return _gcry_sexp_nth_data (list, number, datalen); 226} 227 228char * 229gcry_sexp_nth_string (gcry_sexp_t list, int number) 230{ 231 return _gcry_sexp_nth_string (list, number); 232} 233 234gcry_mpi_t 235gcry_sexp_nth_mpi (gcry_sexp_t list, int number, int mpifmt) 236{ 237 return _gcry_sexp_nth_mpi (list, number, mpifmt); 238} 239 240gcry_mpi_t 241gcry_mpi_new (unsigned int nbits) 242{ 243 return _gcry_mpi_new (nbits); 244} 245 246gcry_mpi_t 247gcry_mpi_snew (unsigned int nbits) 248{ 249 return _gcry_mpi_snew (nbits); 250} 251 252void 253gcry_mpi_release (gcry_mpi_t a) 254{ 255 _gcry_mpi_release (a); 256} 257 258gcry_mpi_t 259gcry_mpi_copy (const gcry_mpi_t a) 260{ 261 return _gcry_mpi_copy (a); 262} 263 264gcry_mpi_t 265gcry_mpi_set (gcry_mpi_t w, const gcry_mpi_t u) 266{ 267 return _gcry_mpi_set (w, u); 268} 269 270gcry_mpi_t 271gcry_mpi_set_ui (gcry_mpi_t w, unsigned long u) 272{ 273 return _gcry_mpi_set_ui (w, u); 274} 275 276void 277gcry_mpi_swap (gcry_mpi_t a, gcry_mpi_t b) 278{ 279 _gcry_mpi_swap (a, b); 280} 281 282int 283gcry_mpi_cmp (const gcry_mpi_t u, const gcry_mpi_t v) 284{ 285 return _gcry_mpi_cmp (u, v); 286} 287 288int 289gcry_mpi_cmp_ui (const gcry_mpi_t u, unsigned long v) 290{ 291 return _gcry_mpi_cmp_ui (u, v); 292} 293 294gcry_error_t 295gcry_mpi_scan (gcry_mpi_t *ret_mpi, enum gcry_mpi_format format, 296 const void *buffer, size_t buflen, 297 size_t *nscanned) 298{ 299 return _gcry_mpi_scan (ret_mpi, format, buffer, buflen, nscanned); 300} 301 302gcry_error_t 303gcry_mpi_print (enum gcry_mpi_format format, 304 unsigned char *buffer, size_t buflen, 305 size_t *nwritten, 306 const gcry_mpi_t a) 307{ 308 return _gcry_mpi_print (format, buffer, buflen, nwritten, a); 309} 310 311gcry_error_t 312gcry_mpi_aprint (enum gcry_mpi_format format, 313 unsigned char **buffer, size_t *nwritten, 314 const gcry_mpi_t a) 315{ 316 return _gcry_mpi_aprint (format, buffer, nwritten, a); 317} 318 319void 320gcry_mpi_dump (const gcry_mpi_t a) 321{ 322 _gcry_mpi_dump (a); 323} 324 325void 326gcry_mpi_add (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v) 327{ 328 _gcry_mpi_add (w, u, v); 329} 330 331void 332gcry_mpi_add_ui (gcry_mpi_t w, gcry_mpi_t u, unsigned long v) 333{ 334 _gcry_mpi_add_ui (w, u, v); 335} 336 337void 338gcry_mpi_addm (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m) 339{ 340 _gcry_mpi_addm (w, u, v, m); 341} 342 343void 344gcry_mpi_sub (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v) 345{ 346 _gcry_mpi_sub (w, u, v); 347} 348 349void 350gcry_mpi_sub_ui (gcry_mpi_t w, gcry_mpi_t u, unsigned long v ) 351{ 352 _gcry_mpi_sub_ui (w, u, v); 353} 354 355void 356gcry_mpi_subm (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m) 357{ 358 _gcry_mpi_subm (w, u, v, m); 359} 360 361void 362gcry_mpi_mul (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v) 363{ 364 _gcry_mpi_mul (w, u, v); 365} 366 367void 368gcry_mpi_mul_ui (gcry_mpi_t w, gcry_mpi_t u, unsigned long v ) 369{ 370 _gcry_mpi_mul_ui (w, u, v); 371} 372 373void 374gcry_mpi_mulm (gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m) 375{ 376 _gcry_mpi_mulm (w, u, v, m); 377} 378 379void 380gcry_mpi_mul_2exp (gcry_mpi_t w, gcry_mpi_t u, unsigned long cnt) 381{ 382 _gcry_mpi_mul_2exp (w, u, cnt); 383} 384 385void 386gcry_mpi_div (gcry_mpi_t q, gcry_mpi_t r, 387 gcry_mpi_t dividend, gcry_mpi_t divisor, int round) 388{ 389 _gcry_mpi_div (q, r, dividend, divisor, round); 390} 391 392void 393gcry_mpi_mod (gcry_mpi_t r, gcry_mpi_t dividend, gcry_mpi_t divisor) 394{ 395 _gcry_mpi_mod (r, dividend, divisor); 396} 397 398void 399gcry_mpi_powm (gcry_mpi_t w, const gcry_mpi_t b, const gcry_mpi_t e, 400 const gcry_mpi_t m) 401{ 402 _gcry_mpi_powm (w, b, e, m); 403} 404 405int 406gcry_mpi_gcd (gcry_mpi_t g, gcry_mpi_t a, gcry_mpi_t b) 407{ 408 return _gcry_mpi_gcd (g, a, b); 409} 410 411int 412gcry_mpi_invm (gcry_mpi_t x, gcry_mpi_t a, gcry_mpi_t m) 413{ 414 return _gcry_mpi_invm (x, a, m); 415} 416 417 418unsigned int 419gcry_mpi_get_nbits (gcry_mpi_t a) 420{ 421 return _gcry_mpi_get_nbits (a); 422} 423 424int 425gcry_mpi_test_bit (gcry_mpi_t a, unsigned int n) 426{ 427 return _gcry_mpi_test_bit (a, n); 428} 429 430void 431gcry_mpi_set_bit (gcry_mpi_t a, unsigned int n) 432{ 433 _gcry_mpi_set_bit (a, n); 434} 435 436void 437gcry_mpi_clear_bit (gcry_mpi_t a, unsigned int n) 438{ 439 _gcry_mpi_clear_bit (a, n); 440} 441 442void 443gcry_mpi_set_highbit (gcry_mpi_t a, unsigned int n) 444{ 445 _gcry_mpi_set_highbit (a, n); 446} 447 448void 449gcry_mpi_clear_highbit (gcry_mpi_t a, unsigned int n) 450{ 451 _gcry_mpi_clear_highbit (a, n); 452} 453 454void 455gcry_mpi_rshift (gcry_mpi_t x, gcry_mpi_t a, unsigned int n) 456{ 457 _gcry_mpi_rshift (x, a, n); 458} 459 460void 461gcry_mpi_lshift (gcry_mpi_t x, gcry_mpi_t a, unsigned int n) 462{ 463 _gcry_mpi_lshift (x, a, n); 464} 465 466gcry_mpi_t 467gcry_mpi_set_opaque (gcry_mpi_t a, void *p, unsigned int nbits) 468{ 469 return _gcry_mpi_set_opaque (a, p, nbits); 470} 471 472void * 473gcry_mpi_get_opaque (gcry_mpi_t a, unsigned int *nbits) 474{ 475 return _gcry_mpi_get_opaque (a, nbits); 476} 477 478void 479gcry_mpi_set_flag (gcry_mpi_t a, enum gcry_mpi_flag flag) 480{ 481 _gcry_mpi_set_flag (a, flag); 482} 483 484void 485gcry_mpi_clear_flag (gcry_mpi_t a, enum gcry_mpi_flag flag) 486{ 487 _gcry_mpi_clear_flag (a, flag); 488} 489 490int 491gcry_mpi_get_flag (gcry_mpi_t a, enum gcry_mpi_flag flag) 492{ 493 return _gcry_mpi_get_flag (a, flag); 494} 495 496gcry_error_t 497gcry_cipher_open (gcry_cipher_hd_t *handle, 498 int algo, int mode, unsigned int flags) 499{ 500 if (!fips_is_operational ()) 501 { 502 *handle = NULL; 503 return gpg_error (fips_not_operational ()); 504 } 505 506 return _gcry_cipher_open (handle, algo, mode, flags); 507} 508 509void 510gcry_cipher_close (gcry_cipher_hd_t h) 511{ 512 _gcry_cipher_close (h); 513} 514 515gcry_error_t 516gcry_cipher_setkey (gcry_cipher_hd_t hd, const void *key, size_t keylen) 517{ 518 if (!fips_is_operational ()) 519 return gpg_error (fips_not_operational ()); 520 521 return _gcry_cipher_setkey (hd, key, keylen); 522} 523 524gcry_error_t 525gcry_cipher_setiv (gcry_cipher_hd_t hd, const void *iv, size_t ivlen) 526{ 527 if (!fips_is_operational ()) 528 return gpg_error (fips_not_operational ()); 529 530 return _gcry_cipher_setiv (hd, iv, ivlen); 531} 532 533gpg_error_t 534gcry_cipher_setctr (gcry_cipher_hd_t hd, const void *ctr, size_t ctrlen) 535{ 536 if (!fips_is_operational ()) 537 return gpg_error (fips_not_operational ()); 538 539 return _gcry_cipher_setctr (hd, ctr, ctrlen); 540} 541 542 543gcry_error_t 544gcry_cipher_ctl (gcry_cipher_hd_t h, int cmd, void *buffer, size_t buflen) 545{ 546 if (!fips_is_operational ()) 547 return gpg_error (fips_not_operational ()); 548 549 return _gcry_cipher_ctl (h, cmd, buffer, buflen); 550} 551 552gcry_error_t 553gcry_cipher_info (gcry_cipher_hd_t h, int what, void *buffer, size_t *nbytes) 554{ 555 return _gcry_cipher_info (h, what, buffer, nbytes); 556} 557 558gcry_error_t 559gcry_cipher_algo_info (int algo, int what, void *buffer, size_t *nbytes) 560{ 561 if (!fips_is_operational ()) 562 return gpg_error (fips_not_operational ()); 563 564 return _gcry_cipher_algo_info (algo, what, buffer, nbytes); 565} 566 567const char * 568gcry_cipher_algo_name (int algorithm) 569{ 570 return _gcry_cipher_algo_name (algorithm); 571} 572 573int 574gcry_cipher_map_name (const char *name) 575{ 576 return _gcry_cipher_map_name (name); 577} 578 579int 580gcry_cipher_mode_from_oid (const char *string) 581{ 582 return _gcry_cipher_mode_from_oid (string); 583} 584 585gcry_error_t 586gcry_cipher_encrypt (gcry_cipher_hd_t h, 587 void *out, size_t outsize, 588 const void *in, size_t inlen) 589{ 590 if (!fips_is_operational ()) 591 { 592 /* Make sure that the plaintext will never make it to OUT. */ 593 if (out) 594 memset (out, 0x42, outsize); 595 return gpg_error (fips_not_operational ()); 596 } 597 598 return _gcry_cipher_encrypt (h, out, outsize, in, inlen); 599} 600 601gcry_error_t 602gcry_cipher_decrypt (gcry_cipher_hd_t h, 603 void *out, size_t outsize, 604 const void *in, size_t inlen) 605{ 606 if (!fips_is_operational ()) 607 return gpg_error (fips_not_operational ()); 608 609 return _gcry_cipher_decrypt (h, out, outsize, in, inlen); 610} 611 612size_t 613gcry_cipher_get_algo_keylen (int algo) 614{ 615 return _gcry_cipher_get_algo_keylen (algo); 616} 617 618size_t 619gcry_cipher_get_algo_blklen (int algo) 620{ 621 return _gcry_cipher_get_algo_blklen (algo); 622} 623 624gcry_error_t 625gcry_cipher_list (int *list, int *list_length) 626{ 627 return _gcry_cipher_list (list, list_length); 628} 629 630gcry_error_t 631gcry_pk_encrypt (gcry_sexp_t *result, gcry_sexp_t data, gcry_sexp_t pkey) 632{ 633 if (!fips_is_operational ()) 634 { 635 *result = NULL; 636 return gpg_error (fips_not_operational ()); 637 } 638 return _gcry_pk_encrypt (result, data, pkey); 639} 640 641gcry_error_t 642gcry_pk_decrypt (gcry_sexp_t *result, gcry_sexp_t data, gcry_sexp_t skey) 643{ 644 if (!fips_is_operational ()) 645 { 646 *result = NULL; 647 return gpg_error (fips_not_operational ()); 648 } 649 return _gcry_pk_decrypt (result, data, skey); 650} 651 652gcry_error_t 653gcry_pk_sign (gcry_sexp_t *result, gcry_sexp_t data, gcry_sexp_t skey) 654{ 655 if (!fips_is_operational ()) 656 { 657 *result = NULL; 658 return gpg_error (fips_not_operational ()); 659 } 660 return _gcry_pk_sign (result, data, skey); 661} 662 663gcry_error_t 664gcry_pk_verify (gcry_sexp_t sigval, gcry_sexp_t data, gcry_sexp_t pkey) 665{ 666 if (!fips_is_operational ()) 667 return gpg_error (fips_not_operational ()); 668 return _gcry_pk_verify (sigval, data, pkey); 669} 670 671gcry_error_t 672gcry_pk_testkey (gcry_sexp_t key) 673{ 674 if (!fips_is_operational ()) 675 return gpg_error (fips_not_operational ()); 676 return _gcry_pk_testkey (key); 677} 678 679gcry_error_t 680gcry_pk_genkey (gcry_sexp_t *r_key, gcry_sexp_t s_parms) 681{ 682 if (!fips_is_operational ()) 683 { 684 *r_key = NULL; 685 return gpg_error (fips_not_operational ()); 686 } 687 return _gcry_pk_genkey (r_key, s_parms); 688} 689 690gcry_error_t 691gcry_pk_ctl (int cmd, void *buffer, size_t buflen) 692{ 693 return _gcry_pk_ctl (cmd, buffer, buflen); 694} 695 696gcry_error_t 697gcry_pk_algo_info (int algo, int what, void *buffer, size_t *nbytes) 698{ 699 if (!fips_is_operational ()) 700 return gpg_error (fips_not_operational ()); 701 702 return _gcry_pk_algo_info (algo, what, buffer, nbytes); 703} 704 705const char * 706gcry_pk_algo_name (int algorithm) 707{ 708 return _gcry_pk_algo_name (algorithm); 709} 710 711int 712gcry_pk_map_name (const char *name) 713{ 714 return _gcry_pk_map_name (name); 715} 716 717unsigned int 718gcry_pk_get_nbits (gcry_sexp_t key) 719{ 720 if (!fips_is_operational ()) 721 { 722 (void)fips_not_operational (); 723 return 0; 724 } 725 726 return _gcry_pk_get_nbits (key); 727} 728 729unsigned char * 730gcry_pk_get_keygrip (gcry_sexp_t key, unsigned char *array) 731{ 732 if (!fips_is_operational ()) 733 { 734 (void)fips_not_operational (); 735 return NULL; 736 } 737 return _gcry_pk_get_keygrip (key, array); 738} 739 740const char * 741gcry_pk_get_curve (gcry_sexp_t key, int iterator, unsigned int *r_nbits) 742{ 743 if (!fips_is_operational ()) 744 { 745 (void)fips_not_operational (); 746 return NULL; 747 } 748 return _gcry_pk_get_curve (key, iterator, r_nbits); 749} 750 751gcry_sexp_t 752gcry_pk_get_param (int algo, const char *name) 753{ 754 if (!fips_is_operational ()) 755 { 756 (void)fips_not_operational (); 757 return NULL; 758 } 759 return _gcry_pk_get_param (algo, name); 760} 761 762gcry_error_t 763gcry_pk_list (int *list, int *list_length) 764{ 765 return _gcry_pk_list (list, list_length); 766} 767 768gcry_error_t 769gcry_md_open (gcry_md_hd_t *h, int algo, unsigned int flags) 770{ 771 if (!fips_is_operational ()) 772 { 773 *h = NULL; 774 return gpg_error (fips_not_operational ()); 775 } 776 777 return _gcry_md_open (h, algo, flags); 778} 779 780void 781gcry_md_close (gcry_md_hd_t hd) 782{ 783 _gcry_md_close (hd); 784} 785 786gcry_error_t 787gcry_md_enable (gcry_md_hd_t hd, int algo) 788{ 789 if (!fips_is_operational ()) 790 return gpg_error (fips_not_operational ()); 791 return _gcry_md_enable (hd, algo); 792} 793 794gcry_error_t 795gcry_md_copy (gcry_md_hd_t *bhd, gcry_md_hd_t ahd) 796{ 797 if (!fips_is_operational ()) 798 { 799 *bhd = NULL; 800 return gpg_error (fips_not_operational ()); 801 } 802 return _gcry_md_copy (bhd, ahd); 803} 804 805void 806gcry_md_reset (gcry_md_hd_t hd) 807{ 808 _gcry_md_reset (hd); 809} 810 811gcry_error_t 812gcry_md_ctl (gcry_md_hd_t hd, int cmd, void *buffer, size_t buflen) 813{ 814 if (!fips_is_operational ()) 815 return gpg_error (fips_not_operational ()); 816 return _gcry_md_ctl (hd, cmd, buffer, buflen); 817} 818 819void 820gcry_md_write (gcry_md_hd_t hd, const void *buffer, size_t length) 821{ 822 if (!fips_is_operational ()) 823 { 824 (void)fips_not_operational (); 825 return; 826 } 827 _gcry_md_write (hd, buffer, length); 828} 829 830unsigned char * 831gcry_md_read (gcry_md_hd_t hd, int algo) 832{ 833 return _gcry_md_read (hd, algo); 834} 835 836void 837gcry_md_hash_buffer (int algo, void *digest, 838 const void *buffer, size_t length) 839{ 840 if (!fips_is_operational ()) 841 { 842 (void)fips_not_operational (); 843 fips_signal_error ("called in non-operational state"); 844 } 845 _gcry_md_hash_buffer (algo, digest, buffer, length); 846} 847 848int 849gcry_md_get_algo (gcry_md_hd_t hd) 850{ 851 if (!fips_is_operational ()) 852 { 853 (void)fips_not_operational (); 854 fips_signal_error ("used in non-operational state"); 855 return 0; 856 } 857 return _gcry_md_get_algo (hd); 858} 859 860unsigned int 861gcry_md_get_algo_dlen (int algo) 862{ 863 return _gcry_md_get_algo_dlen (algo); 864} 865 866int 867gcry_md_is_enabled (gcry_md_hd_t a, int algo) 868{ 869 if (!fips_is_operational ()) 870 { 871 (void)fips_not_operational (); 872 return 0; 873 } 874 875 return _gcry_md_is_enabled (a, algo); 876} 877 878int 879gcry_md_is_secure (gcry_md_hd_t a) 880{ 881 return _gcry_md_is_secure (a); 882} 883 884gcry_error_t 885gcry_md_info (gcry_md_hd_t h, int what, void *buffer, size_t *nbytes) 886{ 887 if (!fips_is_operational ()) 888 return gpg_error (fips_not_operational ()); 889 890 return _gcry_md_info (h, what, buffer, nbytes); 891} 892 893gcry_error_t 894gcry_md_algo_info (int algo, int what, void *buffer, size_t *nbytes) 895{ 896 return _gcry_md_algo_info (algo, what, buffer, nbytes); 897} 898 899const char * 900gcry_md_algo_name (int algo) 901{ 902 return _gcry_md_algo_name (algo); 903} 904 905int 906gcry_md_map_name (const char* name) 907{ 908 return _gcry_md_map_name (name); 909} 910 911gcry_error_t 912gcry_md_setkey (gcry_md_hd_t hd, const void *key, size_t keylen) 913{ 914 if (!fips_is_operational ()) 915 return gpg_error (fips_not_operational ()); 916 return _gcry_md_setkey (hd, key, keylen); 917} 918 919void 920gcry_md_debug (gcry_md_hd_t hd, const char *suffix) 921{ 922 _gcry_md_debug (hd, suffix); 923} 924 925gcry_error_t 926gcry_md_list (int *list, int *list_length) 927{ 928 return _gcry_md_list (list, list_length); 929} 930 931gcry_error_t 932gcry_ac_data_new (gcry_ac_data_t *data) 933{ 934 return _gcry_ac_data_new (data); 935} 936 937void 938gcry_ac_data_destroy (gcry_ac_data_t data) 939{ 940 _gcry_ac_data_destroy (data); 941} 942 943gcry_error_t 944gcry_ac_data_copy (gcry_ac_data_t *data_cp, gcry_ac_data_t data) 945{ 946 return _gcry_ac_data_copy (data_cp, data); 947} 948 949unsigned int 950gcry_ac_data_length (gcry_ac_data_t data) 951{ 952 return _gcry_ac_data_length (data); 953} 954 955void 956gcry_ac_data_clear (gcry_ac_data_t data) 957{ 958 _gcry_ac_data_clear (data); 959} 960 961gcry_error_t 962gcry_ac_data_set (gcry_ac_data_t data, unsigned int flags, 963 const char *name, gcry_mpi_t mpi) 964{ 965 return _gcry_ac_data_set (data, flags, name, mpi); 966} 967 968gcry_error_t 969gcry_ac_data_get_name (gcry_ac_data_t data, unsigned int flags, 970 const char *name, gcry_mpi_t *mpi) 971{ 972 return _gcry_ac_data_get_name (data, flags, name, mpi); 973} 974 975gcry_error_t 976gcry_ac_data_get_index (gcry_ac_data_t data, unsigned int flags, 977 unsigned int idx, const char **name, gcry_mpi_t *mpi) 978{ 979 return _gcry_ac_data_get_index (data, flags, idx, name, mpi); 980} 981 982gcry_error_t 983gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp, 984 const char **identifiers) 985{ 986 return _gcry_ac_data_to_sexp (data, sexp, identifiers); 987} 988 989gcry_error_t 990gcry_ac_data_from_sexp (gcry_ac_data_t *data, gcry_sexp_t sexp, 991 const char **identifiers) 992{ 993 return _gcry_ac_data_from_sexp (data, sexp, identifiers); 994} 995 996void 997gcry_ac_io_init (gcry_ac_io_t *ac_io, gcry_ac_io_mode_t mode, 998 gcry_ac_io_type_t type, ...) 999{ 1000 va_list arg_ptr; 1001 1002 va_start (arg_ptr, type); 1003 _gcry_ac_io_init_va (ac_io, mode, type, arg_ptr); 1004 va_end (arg_ptr); 1005} 1006 1007void 1008gcry_ac_io_init_va (gcry_ac_io_t *ac_io, gcry_ac_io_mode_t mode, 1009 gcry_ac_io_type_t type, va_list ap) 1010{ 1011 _gcry_ac_io_init_va (ac_io, mode, type, ap); 1012} 1013 1014gcry_error_t 1015gcry_ac_open (gcry_ac_handle_t *handle, 1016 gcry_ac_id_t algorithm, unsigned int flags) 1017{ 1018 return _gcry_ac_open (handle, algorithm, flags); 1019} 1020 1021void 1022gcry_ac_close (gcry_ac_handle_t handle) 1023{ 1024 _gcry_ac_close (handle); 1025} 1026 1027gcry_error_t 1028gcry_ac_key_init (gcry_ac_key_t *key, gcry_ac_handle_t handle, 1029 gcry_ac_key_type_t type, gcry_ac_data_t data) 1030{ 1031 return _gcry_ac_key_init (key, handle, type, data); 1032} 1033 1034gcry_error_t 1035gcry_ac_key_pair_generate (gcry_ac_handle_t handle, 1036 unsigned int nbits, void *spec, 1037 gcry_ac_key_pair_t *key_pair, 1038 gcry_mpi_t **miscdata) 1039{ 1040 return _gcry_ac_key_pair_generate ( handle, nbits, spec, key_pair, miscdata); 1041} 1042 1043gcry_ac_key_t 1044gcry_ac_key_pair_extract (gcry_ac_key_pair_t keypair, gcry_ac_key_type_t which) 1045{ 1046 return _gcry_ac_key_pair_extract (keypair, which); 1047} 1048 1049gcry_ac_data_t 1050gcry_ac_key_data_get (gcry_ac_key_t key) 1051{ 1052 return _gcry_ac_key_data_get (key); 1053} 1054 1055gcry_error_t 1056gcry_ac_key_test (gcry_ac_handle_t handle, gcry_ac_key_t key) 1057{ 1058 return _gcry_ac_key_test (handle, key); 1059} 1060 1061gcry_error_t 1062gcry_ac_key_get_nbits (gcry_ac_handle_t handle, 1063 gcry_ac_key_t key, unsigned int *nbits) 1064{ 1065 return _gcry_ac_key_get_nbits (handle, key, nbits); 1066} 1067 1068gcry_error_t 1069gcry_ac_key_get_grip (gcry_ac_handle_t handle, gcry_ac_key_t key, 1070 unsigned char *key_grip) 1071{ 1072 return _gcry_ac_key_get_grip (handle, key, key_grip); 1073} 1074 1075void 1076gcry_ac_key_destroy (gcry_ac_key_t key) 1077{ 1078 _gcry_ac_key_destroy (key); 1079} 1080 1081void 1082gcry_ac_key_pair_destroy (gcry_ac_key_pair_t key_pair) 1083{ 1084 _gcry_ac_key_pair_destroy (key_pair); 1085} 1086 1087gcry_error_t 1088gcry_ac_data_encode (gcry_ac_em_t method, unsigned int flags, void *options, 1089 gcry_ac_io_t *io_read, gcry_ac_io_t *io_write) 1090{ 1091 return _gcry_ac_data_encode (method, flags, options, io_read, io_write); 1092} 1093 1094gcry_error_t 1095gcry_ac_data_decode (gcry_ac_em_t method, unsigned int flags, void *options, 1096 gcry_ac_io_t *io_read, gcry_ac_io_t *io_write) 1097{ 1098 return _gcry_ac_data_decode (method, flags, options, io_read, io_write); 1099} 1100 1101gcry_error_t 1102gcry_ac_data_encrypt (gcry_ac_handle_t handle, 1103 unsigned int flags, 1104 gcry_ac_key_t key, 1105 gcry_mpi_t data_plain, 1106 gcry_ac_data_t *data_encrypted) 1107{ 1108 return _gcry_ac_data_encrypt (handle, flags, key, 1109 data_plain, data_encrypted); 1110} 1111 1112gcry_error_t 1113gcry_ac_data_decrypt (gcry_ac_handle_t handle, 1114 unsigned int flags, 1115 gcry_ac_key_t key, 1116 gcry_mpi_t *data_plain, 1117 gcry_ac_data_t data_encrypted) 1118{ 1119 return _gcry_ac_data_decrypt (handle, flags, key, 1120 data_plain, data_encrypted); 1121} 1122 1123gcry_error_t 1124gcry_ac_data_sign (gcry_ac_handle_t handle, 1125 gcry_ac_key_t key, 1126 gcry_mpi_t data, 1127 gcry_ac_data_t *data_signature) 1128{ 1129 return _gcry_ac_data_sign (handle, key, data, data_signature); 1130} 1131 1132gcry_error_t 1133gcry_ac_data_verify (gcry_ac_handle_t handle, 1134 gcry_ac_key_t key, 1135 gcry_mpi_t data, 1136 gcry_ac_data_t data_signature) 1137{ 1138 return _gcry_ac_data_verify (handle, key, data, data_signature); 1139} 1140 1141gcry_error_t 1142gcry_ac_data_encrypt_scheme (gcry_ac_handle_t handle, 1143 gcry_ac_scheme_t scheme, 1144 unsigned int flags, void *opts, 1145 gcry_ac_key_t key, 1146 gcry_ac_io_t *io_message, 1147 gcry_ac_io_t *io_cipher) 1148{ 1149 return _gcry_ac_data_encrypt_scheme (handle, scheme, flags, opts, key, 1150 io_message, io_cipher); 1151} 1152 1153gcry_error_t 1154gcry_ac_data_decrypt_scheme (gcry_ac_handle_t handle, 1155 gcry_ac_scheme_t scheme, 1156 unsigned int flags, void *opts, 1157 gcry_ac_key_t key, 1158 gcry_ac_io_t *io_cipher, 1159 gcry_ac_io_t *io_message) 1160{ 1161 return _gcry_ac_data_decrypt_scheme (handle, scheme, flags, opts, key, 1162 io_cipher, io_message); 1163} 1164 1165gcry_error_t 1166gcry_ac_data_sign_scheme (gcry_ac_handle_t handle, 1167 gcry_ac_scheme_t scheme, 1168 unsigned int flags, void *opts, 1169 gcry_ac_key_t key, 1170 gcry_ac_io_t *io_message, 1171 gcry_ac_io_t *io_signature) 1172{ 1173 return _gcry_ac_data_sign_scheme (handle, scheme, flags, opts, key, 1174 io_message, io_signature); 1175} 1176 1177gcry_error_t 1178gcry_ac_data_verify_scheme (gcry_ac_handle_t handle, 1179 gcry_ac_scheme_t scheme, 1180 unsigned int flags, void *opts, 1181 gcry_ac_key_t key, 1182 gcry_ac_io_t *io_message, 1183 gcry_ac_io_t *io_signature) 1184{ 1185 return _gcry_ac_data_verify_scheme (handle, scheme, flags, opts, key, 1186 io_message, io_signature); 1187} 1188 1189gcry_error_t 1190gcry_ac_id_to_name (gcry_ac_id_t algorithm, const char **name) 1191{ 1192 /* This function is deprecated. We implement it in terms of the 1193 suggested replacement. */ 1194 const char *tmp = _gcry_pk_algo_name (algorithm); 1195 if (!*tmp) 1196 return gcry_error (GPG_ERR_PUBKEY_ALGO); 1197 *name = tmp; 1198 return 0; 1199} 1200 1201gcry_error_t 1202gcry_ac_name_to_id (const char *name, gcry_ac_id_t *algorithm) 1203{ 1204 /* This function is deprecated. We implement it in terms of the 1205 suggested replacement. */ 1206 int algo = _gcry_pk_map_name (name); 1207 if (!algo) 1208 return gcry_error (GPG_ERR_PUBKEY_ALGO); 1209 *algorithm = algo; 1210 return 0; 1211} 1212 1213gpg_error_t 1214gcry_kdf_derive (const void *passphrase, size_t passphraselen, 1215 int algo, int hashalgo, 1216 const void *salt, size_t saltlen, 1217 unsigned long iterations, 1218 size_t keysize, void *keybuffer) 1219{ 1220 return _gcry_kdf_derive (passphrase, passphraselen, algo, hashalgo, 1221 salt, saltlen, iterations, keysize, keybuffer); 1222} 1223 1224void 1225gcry_randomize (void *buffer, size_t length, enum gcry_random_level level) 1226{ 1227 if (!fips_is_operational ()) 1228 { 1229 (void)fips_not_operational (); 1230 fips_signal_fatal_error ("called in non-operational state"); 1231 fips_noreturn (); 1232 } 1233 _gcry_randomize (buffer, length, level); 1234} 1235 1236gcry_error_t 1237gcry_random_add_bytes (const void *buffer, size_t length, int quality) 1238{ 1239 if (!fips_is_operational ()) 1240 return gpg_error (fips_not_operational ()); 1241 return _gcry_random_add_bytes (buffer, length, quality); 1242} 1243 1244void * 1245gcry_random_bytes (size_t nbytes, enum gcry_random_level level) 1246{ 1247 if (!fips_is_operational ()) 1248 { 1249 (void)fips_not_operational (); 1250 fips_signal_fatal_error ("called in non-operational state"); 1251 fips_noreturn (); 1252 } 1253 1254 return _gcry_random_bytes (nbytes,level); 1255} 1256 1257void * 1258gcry_random_bytes_secure (size_t nbytes, enum gcry_random_level level) 1259{ 1260 if (!fips_is_operational ()) 1261 { 1262 (void)fips_not_operational (); 1263 fips_signal_fatal_error ("called in non-operational state"); 1264 fips_noreturn (); 1265 } 1266 1267 return _gcry_random_bytes_secure (nbytes, level); 1268} 1269 1270void 1271gcry_mpi_randomize (gcry_mpi_t w, 1272 unsigned int nbits, enum gcry_random_level level) 1273{ 1274 _gcry_mpi_randomize (w, nbits, level); 1275} 1276 1277void 1278gcry_create_nonce (void *buffer, size_t length) 1279{ 1280 if (!fips_is_operational ()) 1281 { 1282 (void)fips_not_operational (); 1283 fips_signal_fatal_error ("called in non-operational state"); 1284 fips_noreturn (); 1285 } 1286 _gcry_create_nonce (buffer, length); 1287} 1288 1289gcry_error_t 1290gcry_prime_generate (gcry_mpi_t *prime, 1291 unsigned int prime_bits, 1292 unsigned int factor_bits, 1293 gcry_mpi_t **factors, 1294 gcry_prime_check_func_t cb_func, 1295 void *cb_arg, 1296 gcry_random_level_t random_level, 1297 unsigned int flags) 1298{ 1299 return _gcry_prime_generate (prime, prime_bits, factor_bits, factors, 1300 cb_func, cb_arg, random_level, flags); 1301} 1302 1303gcry_error_t 1304gcry_prime_group_generator (gcry_mpi_t *r_g, 1305 gcry_mpi_t prime, gcry_mpi_t *factors, 1306 gcry_mpi_t start_g) 1307{ 1308 return _gcry_prime_group_generator (r_g, prime, factors, start_g); 1309} 1310 1311void 1312gcry_prime_release_factors (gcry_mpi_t *factors) 1313{ 1314 _gcry_prime_release_factors (factors); 1315} 1316 1317gcry_error_t 1318gcry_prime_check (gcry_mpi_t x, unsigned int flags) 1319{ 1320 return _gcry_prime_check (x, flags); 1321} 1322 1323void 1324gcry_set_progress_handler (gcry_handler_progress_t cb, void *cb_data) 1325{ 1326 _gcry_set_progress_handler (cb, cb_data); 1327} 1328 1329void 1330gcry_set_allocation_handler (gcry_handler_alloc_t func_alloc, 1331 gcry_handler_alloc_t func_alloc_secure, 1332 gcry_handler_secure_check_t func_secure_check, 1333 gcry_handler_realloc_t func_realloc, 1334 gcry_handler_free_t func_free) 1335{ 1336 _gcry_set_allocation_handler (func_alloc, func_alloc_secure, 1337 func_secure_check, func_realloc, func_free); 1338} 1339 1340void 1341gcry_set_outofcore_handler (gcry_handler_no_mem_t h, void *opaque) 1342{ 1343 _gcry_set_outofcore_handler (h, opaque); 1344} 1345 1346void 1347gcry_set_fatalerror_handler (gcry_handler_error_t fnc, void *opaque) 1348{ 1349 _gcry_set_fatalerror_handler (fnc, opaque); 1350} 1351 1352void 1353gcry_set_log_handler (gcry_handler_log_t f, void *opaque) 1354{ 1355 _gcry_set_log_handler (f, opaque); 1356} 1357 1358void 1359gcry_set_gettext_handler (const char *(*f)(const char*)) 1360{ 1361 _gcry_set_gettext_handler (f); 1362} 1363 1364void * 1365gcry_malloc (size_t n) 1366{ 1367 return _gcry_malloc (n); 1368} 1369 1370void * 1371gcry_calloc (size_t n, size_t m) 1372{ 1373 return _gcry_calloc (n, m); 1374} 1375 1376void * 1377gcry_malloc_secure (size_t n) 1378{ 1379 return _gcry_malloc_secure (n); 1380} 1381 1382void * 1383gcry_calloc_secure (size_t n, size_t m) 1384{ 1385 return _gcry_calloc_secure (n,m); 1386} 1387 1388void * 1389gcry_realloc (void *a, size_t n) 1390{ 1391 return _gcry_realloc (a, n); 1392} 1393 1394char * 1395gcry_strdup (const char *string) 1396{ 1397 return _gcry_strdup (string); 1398} 1399 1400void * 1401gcry_xmalloc (size_t n) 1402{ 1403 return _gcry_xmalloc (n); 1404} 1405 1406void * 1407gcry_xcalloc (size_t n, size_t m) 1408{ 1409 return _gcry_xcalloc (n, m); 1410} 1411 1412void * 1413gcry_xmalloc_secure (size_t n) 1414{ 1415 return _gcry_xmalloc_secure (n); 1416} 1417 1418void * 1419gcry_xcalloc_secure (size_t n, size_t m) 1420{ 1421 return _gcry_xcalloc_secure (n, m); 1422} 1423 1424void * 1425gcry_xrealloc (void *a, size_t n) 1426{ 1427 return _gcry_xrealloc (a, n); 1428} 1429 1430char * 1431gcry_xstrdup (const char *a) 1432{ 1433 return _gcry_xstrdup (a); 1434} 1435 1436void 1437gcry_free (void *a) 1438{ 1439 _gcry_free (a); 1440} 1441 1442int 1443gcry_is_secure (const void *a) 1444{ 1445 return _gcry_is_secure (a); 1446} 1447 1448 1449gcry_error_t 1450gcry_cipher_register (gcry_cipher_spec_t *cipher, int *algorithm_id, 1451 gcry_module_t *module) 1452{ 1453 return _gcry_cipher_register (cipher, NULL, algorithm_id, module); 1454} 1455 1456void 1457gcry_cipher_unregister (gcry_module_t module) 1458{ 1459 _gcry_cipher_unregister (module); 1460} 1461 1462gcry_error_t 1463gcry_pk_register (gcry_pk_spec_t *pubkey, unsigned int *algorithm_id, 1464 gcry_module_t *module) 1465{ 1466 return _gcry_pk_register (pubkey, NULL, algorithm_id, module); 1467} 1468 1469void 1470gcry_pk_unregister (gcry_module_t module) 1471{ 1472 _gcry_pk_unregister (module); 1473} 1474 1475gcry_error_t 1476gcry_md_register (gcry_md_spec_t *digest, unsigned int *algorithm_id, 1477 gcry_module_t *module) 1478{ 1479 return _gcry_md_register (digest, NULL, algorithm_id, module); 1480} 1481 1482void 1483gcry_md_unregister (gcry_module_t module) 1484{ 1485 _gcry_md_unregister (module); 1486} 1487