File indexing completed on 2025-11-04 10:14:34
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 
0035 
0036 #ifndef GNUTLS_GNUTLS_H
0037 #define GNUTLS_GNUTLS_H
0038 
0039 
0040 #include <sys/types.h>
0041 
0042 
0043 #include <stddef.h>
0044 
0045 
0046 #include <time.h>
0047 
0048 #ifdef __cplusplus
0049 extern "C" {
0050 #endif
0051 
0052 #define GNUTLS_VERSION "3.8.9"
0053 
0054 
0055 #define GNUTLS_VERSION_MAJOR 3
0056 #define GNUTLS_VERSION_MINOR 8
0057 #define GNUTLS_VERSION_PATCH 9
0058 
0059 #define GNUTLS_VERSION_NUMBER 0x030809
0060 
0061 
0062 #define GNUTLS_CIPHER_RIJNDAEL_128_CBC GNUTLS_CIPHER_AES_128_CBC
0063 #define GNUTLS_CIPHER_RIJNDAEL_256_CBC GNUTLS_CIPHER_AES_256_CBC
0064 #define GNUTLS_CIPHER_RIJNDAEL_CBC GNUTLS_CIPHER_AES_128_CBC
0065 #define GNUTLS_CIPHER_ARCFOUR GNUTLS_CIPHER_ARCFOUR_128
0066 
0067 #if !defined(GNUTLS_INTERNAL_BUILD) && defined(_WIN32)
0068 #define _SYM_EXPORT __declspec(dllimport)
0069 #else
0070 #define _SYM_EXPORT
0071 #endif
0072 
0073 #ifdef __GNUC__
0074 #define __GNUTLS_CONST__ __attribute__((const))
0075 #define __GNUTLS_PURE__ __attribute__((pure))
0076 #else
0077 #define __GNUTLS_CONST__
0078 #define __GNUTLS_PURE__
0079 #endif
0080 
0081 
0082 
0083 #define GNUTLS_SKIP_GLOBAL_INIT             \
0084     int _gnutls_global_init_skip(void); \
0085     int _gnutls_global_init_skip(void)  \
0086     {                                   \
0087         return 1;                   \
0088     }
0089 
0090 
0091 
0092 
0093 
0094 
0095 
0096 
0097 
0098 
0099 
0100 
0101 
0102 
0103 
0104 
0105 
0106 
0107 
0108 
0109 
0110 
0111 
0112 
0113 
0114 
0115 
0116 
0117 
0118 
0119 
0120 
0121 
0122 
0123 
0124 
0125 
0126 
0127 
0128 
0129 
0130 
0131 
0132 
0133 
0134 
0135 
0136 
0137 
0138 
0139 
0140 
0141 
0142 
0143 
0144 
0145 
0146 
0147 
0148 
0149 
0150 
0151 
0152 
0153 
0154 
0155 
0156 typedef enum gnutls_cipher_algorithm {
0157     GNUTLS_CIPHER_UNKNOWN = 0,
0158     GNUTLS_CIPHER_NULL = 1,
0159     GNUTLS_CIPHER_ARCFOUR_128 = 2,
0160     GNUTLS_CIPHER_3DES_CBC = 3,
0161     GNUTLS_CIPHER_AES_128_CBC = 4,
0162     GNUTLS_CIPHER_AES_256_CBC = 5,
0163     GNUTLS_CIPHER_ARCFOUR_40 = 6,
0164     GNUTLS_CIPHER_CAMELLIA_128_CBC = 7,
0165     GNUTLS_CIPHER_CAMELLIA_256_CBC = 8,
0166     GNUTLS_CIPHER_AES_192_CBC = 9,
0167     GNUTLS_CIPHER_AES_128_GCM = 10,
0168     GNUTLS_CIPHER_AES_256_GCM = 11,
0169     GNUTLS_CIPHER_CAMELLIA_192_CBC = 12,
0170     GNUTLS_CIPHER_SALSA20_256 = 13,
0171     GNUTLS_CIPHER_ESTREAM_SALSA20_256 = 14,
0172     GNUTLS_CIPHER_CAMELLIA_128_GCM = 15,
0173     GNUTLS_CIPHER_CAMELLIA_256_GCM = 16,
0174     GNUTLS_CIPHER_RC2_40_CBC = 17,
0175     GNUTLS_CIPHER_DES_CBC = 18,
0176     GNUTLS_CIPHER_AES_128_CCM = 19,
0177     GNUTLS_CIPHER_AES_256_CCM = 20,
0178     GNUTLS_CIPHER_AES_128_CCM_8 = 21,
0179     GNUTLS_CIPHER_AES_256_CCM_8 = 22,
0180     GNUTLS_CIPHER_CHACHA20_POLY1305 = 23,
0181     GNUTLS_CIPHER_GOST28147_TC26Z_CFB = 24,
0182     GNUTLS_CIPHER_GOST28147_CPA_CFB = 25,
0183     GNUTLS_CIPHER_GOST28147_CPB_CFB = 26,
0184     GNUTLS_CIPHER_GOST28147_CPC_CFB = 27,
0185     GNUTLS_CIPHER_GOST28147_CPD_CFB = 28,
0186     GNUTLS_CIPHER_AES_128_CFB8 = 29,
0187     GNUTLS_CIPHER_AES_192_CFB8 = 30,
0188     GNUTLS_CIPHER_AES_256_CFB8 = 31,
0189     GNUTLS_CIPHER_AES_128_XTS = 32,
0190     GNUTLS_CIPHER_AES_256_XTS = 33,
0191     GNUTLS_CIPHER_GOST28147_TC26Z_CNT = 34,
0192     GNUTLS_CIPHER_CHACHA20_64 = 35,
0193     GNUTLS_CIPHER_CHACHA20_32 = 36,
0194     GNUTLS_CIPHER_AES_128_SIV = 37,
0195     GNUTLS_CIPHER_AES_256_SIV = 38,
0196     GNUTLS_CIPHER_AES_192_GCM = 39,
0197     GNUTLS_CIPHER_MAGMA_CTR_ACPKM = 40,
0198     GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM = 41,
0199     GNUTLS_CIPHER_AES_128_SIV_GCM = 42,
0200     GNUTLS_CIPHER_AES_256_SIV_GCM = 43,
0201 
0202     
0203 
0204     GNUTLS_CIPHER_IDEA_PGP_CFB = 200,
0205     GNUTLS_CIPHER_3DES_PGP_CFB = 201,
0206     GNUTLS_CIPHER_CAST5_PGP_CFB = 202,
0207     GNUTLS_CIPHER_BLOWFISH_PGP_CFB = 203,
0208     GNUTLS_CIPHER_SAFER_SK128_PGP_CFB = 204,
0209     GNUTLS_CIPHER_AES128_PGP_CFB = 205,
0210     GNUTLS_CIPHER_AES192_PGP_CFB = 206,
0211     GNUTLS_CIPHER_AES256_PGP_CFB = 207,
0212     GNUTLS_CIPHER_TWOFISH_PGP_CFB = 208
0213 } gnutls_cipher_algorithm_t;
0214 
0215 
0216 
0217 
0218 
0219 
0220 
0221 
0222 
0223 
0224 
0225 
0226 
0227 
0228 
0229 
0230 
0231 
0232 
0233 
0234 
0235 
0236 
0237 typedef enum {
0238     GNUTLS_KX_UNKNOWN = 0,
0239     GNUTLS_KX_RSA = 1,
0240     GNUTLS_KX_DHE_DSS = 2,
0241     GNUTLS_KX_DHE_RSA = 3,
0242     GNUTLS_KX_ANON_DH = 4,
0243     GNUTLS_KX_SRP = 5,
0244     GNUTLS_KX_RSA_EXPORT = 6,
0245     GNUTLS_KX_SRP_RSA = 7,
0246     GNUTLS_KX_SRP_DSS = 8,
0247     GNUTLS_KX_PSK = 9,
0248     GNUTLS_KX_DHE_PSK = 10,
0249     GNUTLS_KX_ANON_ECDH = 11,
0250     GNUTLS_KX_ECDHE_RSA = 12,
0251     GNUTLS_KX_ECDHE_ECDSA = 13,
0252     GNUTLS_KX_ECDHE_PSK = 14,
0253     GNUTLS_KX_RSA_PSK = 15,
0254     GNUTLS_KX_VKO_GOST_12 = 16
0255 } gnutls_kx_algorithm_t;
0256 
0257 
0258 
0259 
0260 
0261 
0262 
0263 
0264 
0265 typedef enum {
0266     GNUTLS_PARAMS_RSA_EXPORT = 1,
0267     GNUTLS_PARAMS_DH = 2,
0268     GNUTLS_PARAMS_ECDH = 3
0269 } gnutls_params_type_t;
0270 
0271 
0272 
0273 
0274 
0275 
0276 
0277 
0278 
0279 
0280 
0281 typedef enum {
0282     GNUTLS_CRD_CERTIFICATE = 1,
0283     GNUTLS_CRD_ANON,
0284     GNUTLS_CRD_SRP,
0285     GNUTLS_CRD_PSK,
0286     GNUTLS_CRD_IA
0287 } gnutls_credentials_type_t;
0288 
0289 #define GNUTLS_MAC_SHA GNUTLS_MAC_SHA1
0290 #define GNUTLS_DIG_SHA GNUTLS_DIG_SHA1
0291 
0292 
0293 
0294 
0295 
0296 
0297 
0298 
0299 
0300 
0301 
0302 
0303 
0304 
0305 
0306 
0307 
0308 
0309 
0310 
0311 
0312 
0313 
0314 
0315 
0316 
0317 
0318 
0319 
0320 
0321 
0322 
0323 
0324 
0325 
0326 
0327 
0328 
0329 typedef enum {
0330     GNUTLS_MAC_UNKNOWN = 0,
0331     GNUTLS_MAC_NULL = 1,
0332     GNUTLS_MAC_MD5 = 2,
0333     GNUTLS_MAC_SHA1 = 3,
0334     GNUTLS_MAC_RMD160 = 4,
0335     GNUTLS_MAC_MD2 = 5,
0336     GNUTLS_MAC_SHA256 = 6,
0337     GNUTLS_MAC_SHA384 = 7,
0338     GNUTLS_MAC_SHA512 = 8,
0339     GNUTLS_MAC_SHA224 = 9,
0340     GNUTLS_MAC_SHA3_224 = 10, 
0341     GNUTLS_MAC_SHA3_256 = 11, 
0342     GNUTLS_MAC_SHA3_384 = 12, 
0343     GNUTLS_MAC_SHA3_512 = 13, 
0344     GNUTLS_MAC_MD5_SHA1 = 14, 
0345     GNUTLS_MAC_GOSTR_94 = 15,
0346     GNUTLS_MAC_STREEBOG_256 = 16,
0347     GNUTLS_MAC_STREEBOG_512 = 17,
0348     
0349 
0350     GNUTLS_MAC_AEAD = 200, 
0351     GNUTLS_MAC_UMAC_96 = 201,
0352     GNUTLS_MAC_UMAC_128 = 202,
0353     GNUTLS_MAC_AES_CMAC_128 = 203,
0354     GNUTLS_MAC_AES_CMAC_256 = 204,
0355     GNUTLS_MAC_AES_GMAC_128 = 205,
0356     GNUTLS_MAC_AES_GMAC_192 = 206,
0357     GNUTLS_MAC_AES_GMAC_256 = 207,
0358     GNUTLS_MAC_GOST28147_TC26Z_IMIT = 208,
0359     GNUTLS_MAC_SHAKE_128 = 209,
0360     GNUTLS_MAC_SHAKE_256 = 210,
0361     GNUTLS_MAC_MAGMA_OMAC = 211,
0362     GNUTLS_MAC_KUZNYECHIK_OMAC = 212,
0363     GNUTLS_MAC_PBMAC1 =
0364         213 
0365 } gnutls_mac_algorithm_t;
0366 
0367 
0368 
0369 
0370 
0371 
0372 
0373 
0374 
0375 
0376 
0377 
0378 
0379 
0380 
0381 
0382 
0383 
0384 
0385 
0386 
0387 
0388 
0389 
0390 
0391 
0392 typedef enum {
0393     GNUTLS_DIG_UNKNOWN = GNUTLS_MAC_UNKNOWN,
0394     GNUTLS_DIG_NULL = GNUTLS_MAC_NULL,
0395     GNUTLS_DIG_MD5 = GNUTLS_MAC_MD5,
0396     GNUTLS_DIG_SHA1 = GNUTLS_MAC_SHA1,
0397     GNUTLS_DIG_RMD160 = GNUTLS_MAC_RMD160,
0398     GNUTLS_DIG_MD2 = GNUTLS_MAC_MD2,
0399     GNUTLS_DIG_SHA256 = GNUTLS_MAC_SHA256,
0400     GNUTLS_DIG_SHA384 = GNUTLS_MAC_SHA384,
0401     GNUTLS_DIG_SHA512 = GNUTLS_MAC_SHA512,
0402     GNUTLS_DIG_SHA224 = GNUTLS_MAC_SHA224,
0403     GNUTLS_DIG_SHA3_224 = GNUTLS_MAC_SHA3_224,
0404     GNUTLS_DIG_SHA3_256 = GNUTLS_MAC_SHA3_256,
0405     GNUTLS_DIG_SHA3_384 = GNUTLS_MAC_SHA3_384,
0406     GNUTLS_DIG_SHA3_512 = GNUTLS_MAC_SHA3_512,
0407     GNUTLS_DIG_MD5_SHA1 = GNUTLS_MAC_MD5_SHA1,
0408     GNUTLS_DIG_GOSTR_94 = GNUTLS_MAC_GOSTR_94,
0409     GNUTLS_DIG_STREEBOG_256 = GNUTLS_MAC_STREEBOG_256,
0410     GNUTLS_DIG_STREEBOG_512 = GNUTLS_MAC_STREEBOG_512,
0411     GNUTLS_DIG_SHAKE_128 = GNUTLS_MAC_SHAKE_128,
0412     GNUTLS_DIG_SHAKE_256 = GNUTLS_MAC_SHAKE_256
0413     
0414 
0415 } gnutls_digest_algorithm_t;
0416 
0417 
0418 
0419 
0420 #define GNUTLS_MAX_ALGORITHM_NUM 128
0421 #define GNUTLS_MAX_SESSION_ID_SIZE 32
0422 
0423 
0424 
0425 
0426 
0427 
0428 
0429 
0430 
0431 
0432 
0433 
0434 typedef enum {
0435     GNUTLS_COMP_UNKNOWN = 0,
0436     GNUTLS_COMP_NULL = 1,
0437     GNUTLS_COMP_DEFLATE = 2,
0438     GNUTLS_COMP_ZLIB = GNUTLS_COMP_DEFLATE,
0439     GNUTLS_COMP_BROTLI = 3,
0440     GNUTLS_COMP_ZSTD = 4
0441 } gnutls_compression_method_t;
0442 
0443 
0444 
0445 
0446 
0447 
0448 
0449 
0450 
0451 
0452 
0453 
0454 
0455 
0456 
0457 
0458 
0459 
0460 
0461 
0462 
0463 
0464 
0465 
0466 
0467 
0468 
0469 
0470 
0471 
0472 
0473 
0474 
0475 
0476 
0477 
0478 
0479 
0480 
0481 
0482 
0483 
0484 
0485 
0486 
0487 
0488 
0489 
0490 
0491 
0492 
0493 
0494 
0495 
0496 
0497 
0498 
0499 
0500 
0501 
0502 
0503 
0504 
0505 
0506 
0507 typedef enum {
0508     GNUTLS_SERVER = 1,
0509     GNUTLS_CLIENT = (1 << 1),
0510     GNUTLS_DATAGRAM = (1 << 2),
0511     GNUTLS_NONBLOCK = (1 << 3),
0512     GNUTLS_NO_DEFAULT_EXTENSIONS = (1 << 4),
0513     GNUTLS_NO_REPLAY_PROTECTION = (1 << 5),
0514     GNUTLS_NO_SIGNAL = (1 << 6),
0515     GNUTLS_ALLOW_ID_CHANGE = (1 << 7),
0516     GNUTLS_ENABLE_FALSE_START = (1 << 8),
0517     GNUTLS_FORCE_CLIENT_CERT = (1 << 9),
0518     GNUTLS_NO_TICKETS = (1 << 10),
0519     GNUTLS_KEY_SHARE_TOP = (1 << 11),
0520     GNUTLS_KEY_SHARE_TOP2 = (1 << 12),
0521     GNUTLS_KEY_SHARE_TOP3 = (1 << 13),
0522     GNUTLS_POST_HANDSHAKE_AUTH = (1 << 14),
0523     GNUTLS_NO_AUTO_REKEY = (1 << 15),
0524     GNUTLS_SAFE_PADDING_CHECK = (1 << 16),
0525     GNUTLS_ENABLE_EARLY_START = (1 << 17),
0526     GNUTLS_ENABLE_RAWPK = (1 << 18),
0527     GNUTLS_AUTO_REAUTH = (1 << 19),
0528     GNUTLS_ENABLE_EARLY_DATA = (1 << 20),
0529     GNUTLS_NO_AUTO_SEND_TICKET = (1 << 21),
0530     GNUTLS_NO_END_OF_EARLY_DATA = (1 << 22),
0531     GNUTLS_NO_TICKETS_TLS12 = (1 << 23),
0532     GNUTLS_NO_STATUS_REQUEST = (1 << 24)
0533 } gnutls_init_flags_t;
0534 
0535 
0536 
0537 #define GNUTLS_SERVER (1)
0538 #define GNUTLS_CLIENT (1 << 1)
0539 #define GNUTLS_DATAGRAM (1 << 2)
0540 #define GNUTLS_NONBLOCK (1 << 3)
0541 #define GNUTLS_NO_DEFAULT_EXTENSIONS (1 << 4)
0542 #define GNUTLS_NO_REPLAY_PROTECTION (1 << 5)
0543 #define GNUTLS_NO_SIGNAL (1 << 6)
0544 #define GNUTLS_ALLOW_ID_CHANGE (1 << 7)
0545 #define GNUTLS_ENABLE_FALSE_START (1 << 8)
0546 #define GNUTLS_FORCE_CLIENT_CERT (1 << 9)
0547 #define GNUTLS_NO_TICKETS (1 << 10)
0548 #define GNUTLS_ENABLE_CERT_TYPE_NEG 0
0549 
0550 
0551 
0552 #define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS
0553 
0554 
0555 
0556 
0557 
0558 
0559 
0560 
0561 typedef enum {
0562     GNUTLS_AL_WARNING = 1,
0563     GNUTLS_AL_FATAL
0564 } gnutls_alert_level_t;
0565 
0566 
0567 
0568 
0569 
0570 
0571 
0572 
0573 
0574 
0575 
0576 
0577 
0578 
0579 
0580 
0581 
0582 
0583 
0584 
0585 
0586 
0587 
0588 
0589 
0590 
0591 
0592 
0593 
0594 
0595 
0596 
0597 
0598 
0599 
0600 
0601 
0602 
0603 
0604 
0605 
0606 
0607 
0608 typedef enum {
0609     GNUTLS_A_CLOSE_NOTIFY,
0610     GNUTLS_A_UNEXPECTED_MESSAGE = 10,
0611     GNUTLS_A_BAD_RECORD_MAC = 20,
0612     GNUTLS_A_DECRYPTION_FAILED,
0613     GNUTLS_A_RECORD_OVERFLOW,
0614     GNUTLS_A_DECOMPRESSION_FAILURE = 30,
0615     GNUTLS_A_HANDSHAKE_FAILURE = 40,
0616     GNUTLS_A_SSL3_NO_CERTIFICATE = 41,
0617     GNUTLS_A_BAD_CERTIFICATE = 42,
0618     GNUTLS_A_UNSUPPORTED_CERTIFICATE,
0619     GNUTLS_A_CERTIFICATE_REVOKED,
0620     GNUTLS_A_CERTIFICATE_EXPIRED,
0621     GNUTLS_A_CERTIFICATE_UNKNOWN,
0622     GNUTLS_A_ILLEGAL_PARAMETER,
0623     GNUTLS_A_UNKNOWN_CA,
0624     GNUTLS_A_ACCESS_DENIED,
0625     GNUTLS_A_DECODE_ERROR = 50,
0626     GNUTLS_A_DECRYPT_ERROR,
0627     GNUTLS_A_EXPORT_RESTRICTION = 60,
0628     GNUTLS_A_PROTOCOL_VERSION = 70,
0629     GNUTLS_A_INSUFFICIENT_SECURITY,
0630     GNUTLS_A_INTERNAL_ERROR = 80,
0631     GNUTLS_A_INAPPROPRIATE_FALLBACK = 86,
0632     GNUTLS_A_USER_CANCELED = 90,
0633     GNUTLS_A_NO_RENEGOTIATION = 100,
0634     GNUTLS_A_MISSING_EXTENSION = 109,
0635     GNUTLS_A_UNSUPPORTED_EXTENSION = 110,
0636     GNUTLS_A_CERTIFICATE_UNOBTAINABLE = 111,
0637     GNUTLS_A_UNRECOGNIZED_NAME = 112,
0638     GNUTLS_A_UNKNOWN_PSK_IDENTITY = 115,
0639     GNUTLS_A_CERTIFICATE_REQUIRED = 116,
0640     GNUTLS_A_NO_APPLICATION_PROTOCOL = 120,
0641     GNUTLS_A_MAX = GNUTLS_A_NO_APPLICATION_PROTOCOL
0642 } gnutls_alert_description_t;
0643 
0644 
0645 
0646 
0647 
0648 
0649 
0650 
0651 
0652 
0653 
0654 
0655 
0656 
0657 
0658 
0659 
0660 
0661 
0662 
0663 
0664 
0665 
0666 
0667 
0668 
0669 
0670 typedef enum {
0671     GNUTLS_HANDSHAKE_HELLO_REQUEST = 0,
0672     GNUTLS_HANDSHAKE_CLIENT_HELLO = 1,
0673     GNUTLS_HANDSHAKE_SERVER_HELLO = 2,
0674     GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST = 3,
0675     GNUTLS_HANDSHAKE_NEW_SESSION_TICKET = 4,
0676     GNUTLS_HANDSHAKE_END_OF_EARLY_DATA = 5,
0677     GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS = 8,
0678     GNUTLS_HANDSHAKE_CERTIFICATE_PKT = 11,
0679     GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE = 12,
0680     GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST = 13,
0681     GNUTLS_HANDSHAKE_SERVER_HELLO_DONE = 14,
0682     GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY = 15,
0683     GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE = 16,
0684     GNUTLS_HANDSHAKE_FINISHED = 20,
0685     GNUTLS_HANDSHAKE_CERTIFICATE_STATUS = 22,
0686     GNUTLS_HANDSHAKE_SUPPLEMENTAL = 23,
0687     GNUTLS_HANDSHAKE_KEY_UPDATE = 24,
0688     GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT = 25,
0689     GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC = 254,
0690     GNUTLS_HANDSHAKE_CLIENT_HELLO_V2 = 1024,
0691     GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST = 1025,
0692 } gnutls_handshake_description_t;
0693 
0694 #define GNUTLS_HANDSHAKE_ANY ((unsigned int)-1)
0695 
0696 const char *
0697 gnutls_handshake_description_get_name(gnutls_handshake_description_t type);
0698 
0699 
0700 
0701 
0702 
0703 
0704 
0705 
0706 
0707 
0708 
0709 
0710 
0711 
0712 
0713 
0714 
0715 
0716 
0717 
0718 
0719 
0720 
0721 
0722 
0723 
0724 
0725 
0726 
0727 
0728 
0729 
0730 
0731 
0732 typedef enum {
0733     GNUTLS_CERT_INVALID = 1 << 1,
0734     GNUTLS_CERT_REVOKED = 1 << 5,
0735     GNUTLS_CERT_SIGNER_NOT_FOUND = 1 << 6,
0736     GNUTLS_CERT_SIGNER_NOT_CA = 1 << 7,
0737     GNUTLS_CERT_INSECURE_ALGORITHM = 1 << 8,
0738     GNUTLS_CERT_NOT_ACTIVATED = 1 << 9,
0739     GNUTLS_CERT_EXPIRED = 1 << 10,
0740     GNUTLS_CERT_SIGNATURE_FAILURE = 1 << 11,
0741     GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED = 1 << 12,
0742     GNUTLS_CERT_UNEXPECTED_OWNER = 1 << 14,
0743     GNUTLS_CERT_REVOCATION_DATA_ISSUED_IN_FUTURE = 1 << 15,
0744     GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE = 1 << 16,
0745     GNUTLS_CERT_MISMATCH = 1 << 17,
0746     GNUTLS_CERT_PURPOSE_MISMATCH = 1 << 18,
0747     GNUTLS_CERT_MISSING_OCSP_STATUS = 1 << 19,
0748     GNUTLS_CERT_INVALID_OCSP_STATUS = 1 << 20,
0749     GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS = 1 << 21
0750 } gnutls_certificate_status_t;
0751 
0752 
0753 
0754 
0755 
0756 
0757 
0758 
0759 
0760 typedef enum {
0761     GNUTLS_CERT_IGNORE = 0,
0762     GNUTLS_CERT_REQUEST = 1,
0763     GNUTLS_CERT_REQUIRE = 2
0764 } gnutls_certificate_request_t;
0765 
0766 
0767 
0768 
0769 
0770 
0771 
0772 
0773 typedef enum {
0774     GNUTLS_OPENPGP_CERT = 0,
0775     GNUTLS_OPENPGP_CERT_FINGERPRINT = 1
0776 } gnutls_openpgp_crt_status_t;
0777 
0778 
0779 
0780 
0781 
0782 
0783 
0784 
0785 typedef enum {
0786     GNUTLS_SHUT_RDWR = 0,
0787     GNUTLS_SHUT_WR = 1
0788 } gnutls_close_request_t;
0789 
0790 
0791 
0792 
0793 
0794 
0795 
0796 
0797 
0798 
0799 
0800 
0801 
0802 
0803 
0804 
0805 
0806 
0807 typedef enum {
0808     GNUTLS_SSL3 = 1,
0809     GNUTLS_TLS1_0 = 2,
0810     GNUTLS_TLS1 = GNUTLS_TLS1_0,
0811     GNUTLS_TLS1_1 = 3,
0812     GNUTLS_TLS1_2 = 4,
0813     GNUTLS_TLS1_3 = 5,
0814 
0815     GNUTLS_DTLS0_9 = 200,
0816     GNUTLS_DTLS1_0 = 201, 
0817     GNUTLS_DTLS1_2 = 202,
0818     GNUTLS_DTLS_VERSION_MIN = GNUTLS_DTLS0_9,
0819     GNUTLS_DTLS_VERSION_MAX = GNUTLS_DTLS1_2,
0820     GNUTLS_TLS_VERSION_MAX = GNUTLS_TLS1_3,
0821     GNUTLS_VERSION_UNKNOWN = 0xff 
0822 } gnutls_protocol_t;
0823 
0824 #define GNUTLS_CRT_RAW GNUTLS_CRT_RAWPK
0825 
0826 
0827 
0828 
0829 
0830 
0831 
0832 
0833 
0834 
0835 typedef enum {
0836     GNUTLS_CRT_UNKNOWN = 0,
0837     GNUTLS_CRT_X509 = 1,
0838     GNUTLS_CRT_OPENPGP = 2,
0839     GNUTLS_CRT_RAWPK = 3,
0840     GNUTLS_CRT_MAX = GNUTLS_CRT_RAWPK
0841 } gnutls_certificate_type_t;
0842 
0843 
0844 
0845 
0846 
0847 
0848 
0849 
0850 typedef enum {
0851     GNUTLS_X509_FMT_DER = 0,
0852     GNUTLS_X509_FMT_PEM = 1
0853 } gnutls_x509_crt_fmt_t;
0854 
0855 
0856 
0857 
0858 
0859 
0860 
0861 
0862 
0863 
0864 
0865 typedef enum gnutls_certificate_print_formats {
0866     GNUTLS_CRT_PRINT_FULL = 0,
0867     GNUTLS_CRT_PRINT_ONELINE = 1,
0868     GNUTLS_CRT_PRINT_UNSIGNED_FULL = 2,
0869     GNUTLS_CRT_PRINT_COMPACT = 3,
0870     GNUTLS_CRT_PRINT_FULL_NUMBERS = 4
0871 } gnutls_certificate_print_formats_t;
0872 
0873 #define GNUTLS_PK_ECC GNUTLS_PK_ECDSA
0874 #define GNUTLS_PK_EC GNUTLS_PK_ECDSA
0875 
0876 #define GNUTLS_PK_ECDHX GNUTLS_PK_ECDH_X25519
0877 
0878 
0879 
0880 
0881 
0882 
0883 
0884 
0885 
0886 
0887 
0888 
0889 
0890 
0891 
0892 
0893 
0894 
0895 
0896 
0897 
0898 
0899 
0900 
0901 
0902 typedef enum {
0903     GNUTLS_PK_UNKNOWN = 0,
0904     GNUTLS_PK_RSA = 1,
0905     GNUTLS_PK_DSA = 2,
0906     GNUTLS_PK_DH = 3,
0907     GNUTLS_PK_ECDSA = 4,
0908     GNUTLS_PK_ECDH_X25519 = 5,
0909     GNUTLS_PK_RSA_PSS = 6,
0910     GNUTLS_PK_EDDSA_ED25519 = 7,
0911     GNUTLS_PK_GOST_01 = 8,
0912     GNUTLS_PK_GOST_12_256 = 9,
0913     GNUTLS_PK_GOST_12_512 = 10,
0914     GNUTLS_PK_ECDH_X448 = 11,
0915     GNUTLS_PK_EDDSA_ED448 = 12,
0916     GNUTLS_PK_RSA_OAEP = 13,
0917     GNUTLS_PK_MLKEM768 = 14,
0918     GNUTLS_PK_MLDSA44 = 15,
0919     GNUTLS_PK_MLDSA65 = 16,
0920     GNUTLS_PK_MLDSA87 = 17,
0921     GNUTLS_PK_MLKEM1024 = 18,
0922     GNUTLS_PK_MAX = GNUTLS_PK_MLKEM1024,
0923 
0924     
0925     GNUTLS_PK_EXP_KYBER768 = 256,
0926     GNUTLS_PK_EXP_MAX = GNUTLS_PK_EXP_KYBER768
0927 } gnutls_pk_algorithm_t;
0928 
0929 const char *gnutls_pk_algorithm_get_name(gnutls_pk_algorithm_t algorithm);
0930 
0931 
0932 
0933 
0934 
0935 
0936 
0937 
0938 
0939 
0940 
0941 
0942 
0943 
0944 
0945 
0946 
0947 
0948 
0949 
0950 
0951 
0952 
0953 
0954 
0955 
0956 
0957 
0958 
0959 
0960 
0961 
0962 
0963 
0964 
0965 
0966 
0967 
0968 
0969 
0970 
0971 
0972 
0973 
0974 
0975 
0976 
0977 
0978 
0979 
0980 
0981 
0982 
0983 
0984 
0985 
0986 
0987 
0988 
0989 
0990 
0991 
0992 
0993 
0994 
0995 
0996 typedef enum {
0997     GNUTLS_SIGN_UNKNOWN = 0,
0998     GNUTLS_SIGN_RSA_SHA1 = 1,
0999     GNUTLS_SIGN_RSA_SHA = GNUTLS_SIGN_RSA_SHA1,
1000     GNUTLS_SIGN_DSA_SHA1 = 2,
1001     GNUTLS_SIGN_DSA_SHA = GNUTLS_SIGN_DSA_SHA1,
1002     GNUTLS_SIGN_RSA_MD5 = 3,
1003     GNUTLS_SIGN_RSA_MD2 = 4,
1004     GNUTLS_SIGN_RSA_RMD160 = 5,
1005     GNUTLS_SIGN_RSA_SHA256 = 6,
1006     GNUTLS_SIGN_RSA_SHA384 = 7,
1007     GNUTLS_SIGN_RSA_SHA512 = 8,
1008     GNUTLS_SIGN_RSA_SHA224 = 9,
1009     GNUTLS_SIGN_DSA_SHA224 = 10,
1010     GNUTLS_SIGN_DSA_SHA256 = 11,
1011     GNUTLS_SIGN_ECDSA_SHA1 = 12,
1012     GNUTLS_SIGN_ECDSA_SHA224 = 13,
1013     GNUTLS_SIGN_ECDSA_SHA256 = 14,
1014     GNUTLS_SIGN_ECDSA_SHA384 = 15,
1015     GNUTLS_SIGN_ECDSA_SHA512 = 16,
1016     GNUTLS_SIGN_DSA_SHA384 = 17,
1017     GNUTLS_SIGN_DSA_SHA512 = 18,
1018     GNUTLS_SIGN_ECDSA_SHA3_224 = 20,
1019     GNUTLS_SIGN_ECDSA_SHA3_256 = 21,
1020     GNUTLS_SIGN_ECDSA_SHA3_384 = 22,
1021     GNUTLS_SIGN_ECDSA_SHA3_512 = 23,
1022 
1023     GNUTLS_SIGN_DSA_SHA3_224 = 24,
1024     GNUTLS_SIGN_DSA_SHA3_256 = 25,
1025     GNUTLS_SIGN_DSA_SHA3_384 = 26,
1026     GNUTLS_SIGN_DSA_SHA3_512 = 27,
1027     GNUTLS_SIGN_RSA_SHA3_224 = 28,
1028     GNUTLS_SIGN_RSA_SHA3_256 = 29,
1029     GNUTLS_SIGN_RSA_SHA3_384 = 30,
1030     GNUTLS_SIGN_RSA_SHA3_512 = 31,
1031 
1032     GNUTLS_SIGN_RSA_PSS_SHA256 = 32,
1033     GNUTLS_SIGN_RSA_PSS_SHA384 = 33,
1034     GNUTLS_SIGN_RSA_PSS_SHA512 = 34,
1035     GNUTLS_SIGN_EDDSA_ED25519 = 35,
1036     GNUTLS_SIGN_RSA_RAW = 36,
1037 
1038     GNUTLS_SIGN_ECDSA_SECP256R1_SHA256 = 37,
1039     GNUTLS_SIGN_ECDSA_SECP384R1_SHA384 = 38,
1040     GNUTLS_SIGN_ECDSA_SECP521R1_SHA512 = 39,
1041 
1042     GNUTLS_SIGN_RSA_PSS_RSAE_SHA256 = 40,
1043     GNUTLS_SIGN_RSA_PSS_RSAE_SHA384 = 41,
1044     GNUTLS_SIGN_RSA_PSS_RSAE_SHA512 = 42,
1045 
1046     GNUTLS_SIGN_GOST_94 = 43,
1047     GNUTLS_SIGN_GOST_256 = 44,
1048     GNUTLS_SIGN_GOST_512 = 45,
1049     GNUTLS_SIGN_EDDSA_ED448 = 46,
1050 
1051     GNUTLS_SIGN_MLDSA44 = 47,
1052     GNUTLS_SIGN_MLDSA65 = 48,
1053     GNUTLS_SIGN_MLDSA87 = 49,
1054     GNUTLS_SIGN_MAX = GNUTLS_SIGN_MLDSA87
1055 } gnutls_sign_algorithm_t;
1056 
1057 
1058 
1059 
1060 
1061 
1062 
1063 
1064 
1065 
1066 
1067 
1068 
1069 
1070 
1071 
1072 
1073 
1074 
1075 
1076 
1077 
1078 
1079 
1080 
1081 
1082 
1083 
1084 typedef enum {
1085     GNUTLS_ECC_CURVE_INVALID = 0,
1086     GNUTLS_ECC_CURVE_SECP224R1,
1087     GNUTLS_ECC_CURVE_SECP256R1,
1088     GNUTLS_ECC_CURVE_SECP384R1,
1089     GNUTLS_ECC_CURVE_SECP521R1,
1090     GNUTLS_ECC_CURVE_SECP192R1,
1091     GNUTLS_ECC_CURVE_X25519,
1092     GNUTLS_ECC_CURVE_ED25519,
1093     GNUTLS_ECC_CURVE_GOST256CPA,
1094     GNUTLS_ECC_CURVE_GOST256CPB,
1095     GNUTLS_ECC_CURVE_GOST256CPC,
1096     GNUTLS_ECC_CURVE_GOST256CPXA,
1097     GNUTLS_ECC_CURVE_GOST256CPXB,
1098     GNUTLS_ECC_CURVE_GOST512A,
1099     GNUTLS_ECC_CURVE_GOST512B,
1100     GNUTLS_ECC_CURVE_GOST512C,
1101     GNUTLS_ECC_CURVE_GOST256A,
1102     GNUTLS_ECC_CURVE_GOST256B,
1103     GNUTLS_ECC_CURVE_GOST256C,
1104     GNUTLS_ECC_CURVE_GOST256D,
1105     GNUTLS_ECC_CURVE_X448,
1106     GNUTLS_ECC_CURVE_ED448,
1107     GNUTLS_ECC_CURVE_MAX = GNUTLS_ECC_CURVE_ED448
1108 } gnutls_ecc_curve_t;
1109 
1110 
1111 
1112 
1113 
1114 
1115 
1116 
1117 
1118 
1119 
1120 
1121 
1122 
1123 
1124 
1125 
1126 
1127 
1128 
1129 
1130 
1131 
1132 
1133 
1134 
1135 
1136 
1137 typedef enum {
1138     GNUTLS_GROUP_INVALID = 0,
1139     GNUTLS_GROUP_SECP192R1 = GNUTLS_ECC_CURVE_SECP192R1,
1140     GNUTLS_GROUP_SECP224R1 = GNUTLS_ECC_CURVE_SECP224R1,
1141     GNUTLS_GROUP_SECP256R1 = GNUTLS_ECC_CURVE_SECP256R1,
1142     GNUTLS_GROUP_SECP384R1 = GNUTLS_ECC_CURVE_SECP384R1,
1143     GNUTLS_GROUP_SECP521R1 = GNUTLS_ECC_CURVE_SECP521R1,
1144     GNUTLS_GROUP_X25519 = GNUTLS_ECC_CURVE_X25519,
1145     GNUTLS_GROUP_X448 = GNUTLS_ECC_CURVE_X448,
1146 
1147     GNUTLS_GROUP_GC256A = GNUTLS_ECC_CURVE_GOST256A,
1148     GNUTLS_GROUP_GC256B = GNUTLS_ECC_CURVE_GOST256B,
1149     GNUTLS_GROUP_GC256C = GNUTLS_ECC_CURVE_GOST256C,
1150     GNUTLS_GROUP_GC256D = GNUTLS_ECC_CURVE_GOST256D,
1151     GNUTLS_GROUP_GC512A = GNUTLS_ECC_CURVE_GOST512A,
1152     GNUTLS_GROUP_GC512B = GNUTLS_ECC_CURVE_GOST512B,
1153     GNUTLS_GROUP_GC512C = GNUTLS_ECC_CURVE_GOST512C,
1154 
1155     GNUTLS_GROUP_FFDHE2048 = 256,
1156     GNUTLS_GROUP_FFDHE3072,
1157     GNUTLS_GROUP_FFDHE4096,
1158     GNUTLS_GROUP_FFDHE8192,
1159     GNUTLS_GROUP_FFDHE6144,
1160     GNUTLS_GROUP_MAX = GNUTLS_GROUP_FFDHE6144,
1161 
1162     
1163     GNUTLS_GROUP_EXP_X25519_KYBER768 = 512,
1164     GNUTLS_GROUP_EXP_SECP256R1_MLKEM768 = 513,
1165     GNUTLS_GROUP_EXP_SECP384R1_MLKEM1024 = 518,
1166     GNUTLS_GROUP_EXP_X25519_MLKEM768 = 514,
1167     GNUTLS_GROUP_EXP_KYBER768 = 515,
1168     GNUTLS_GROUP_EXP_MLKEM768 = 516,
1169     GNUTLS_GROUP_EXP_MLKEM1024 = 517,
1170     GNUTLS_GROUP_EXP_MIN = GNUTLS_GROUP_EXP_X25519_KYBER768,
1171     GNUTLS_GROUP_EXP_MAX = GNUTLS_GROUP_EXP_SECP384R1_MLKEM1024
1172 } gnutls_group_t;
1173 
1174 
1175 
1176 #define GNUTLS_CURVE_TO_BITS(curve) \
1177     (unsigned int)(((unsigned int)1 << 31) | ((unsigned int)(curve)))
1178 #define GNUTLS_BITS_TO_CURVE(bits) (((unsigned int)(bits)) & 0x7FFFFFFF)
1179 #define GNUTLS_BITS_ARE_CURVE(bits) (((unsigned int)(bits)) & 0x80000000)
1180 
1181 
1182 
1183 
1184 
1185 
1186 
1187 
1188 
1189 
1190 
1191 
1192 
1193 
1194 
1195 
1196 
1197 typedef enum {
1198     GNUTLS_SEC_PARAM_UNKNOWN = 0,
1199     GNUTLS_SEC_PARAM_INSECURE = 5,
1200     GNUTLS_SEC_PARAM_EXPORT = 10,
1201     GNUTLS_SEC_PARAM_VERY_WEAK = 15,
1202     GNUTLS_SEC_PARAM_WEAK = 20,
1203     GNUTLS_SEC_PARAM_LOW = 25,
1204     GNUTLS_SEC_PARAM_LEGACY = 30,
1205     GNUTLS_SEC_PARAM_MEDIUM = 35,
1206     GNUTLS_SEC_PARAM_HIGH = 40,
1207     GNUTLS_SEC_PARAM_ULTRA = 45,
1208     GNUTLS_SEC_PARAM_FUTURE = 50,
1209     GNUTLS_SEC_PARAM_MAX = GNUTLS_SEC_PARAM_FUTURE
1210 } gnutls_sec_param_t;
1211 
1212 
1213 #define GNUTLS_SEC_PARAM_NORMAL GNUTLS_SEC_PARAM_MEDIUM
1214 
1215 
1216 
1217 
1218 
1219 
1220 
1221 
1222 
1223 typedef enum {
1224     GNUTLS_CB_TLS_UNIQUE,
1225     GNUTLS_CB_TLS_SERVER_END_POINT,
1226     GNUTLS_CB_TLS_EXPORTER
1227 } gnutls_channel_binding_t;
1228 
1229 
1230 
1231 
1232 
1233 
1234 
1235 
1236 
1237 
1238 
1239 
1240 typedef enum {
1241     GNUTLS_GOST_PARAMSET_UNKNOWN = 0,
1242     GNUTLS_GOST_PARAMSET_TC26_Z,
1243     GNUTLS_GOST_PARAMSET_CP_A,
1244     GNUTLS_GOST_PARAMSET_CP_B,
1245     GNUTLS_GOST_PARAMSET_CP_C,
1246     GNUTLS_GOST_PARAMSET_CP_D
1247 } gnutls_gost_paramset_t;
1248 
1249 
1250 
1251 
1252 
1253 
1254 
1255 
1256 
1257 
1258 
1259 
1260 typedef enum {
1261     GNUTLS_CTYPE_CLIENT,
1262     GNUTLS_CTYPE_SERVER,
1263     GNUTLS_CTYPE_OURS,
1264     GNUTLS_CTYPE_PEERS
1265 } gnutls_ctype_target_t;
1266 
1267 
1268 
1269 
1270 typedef void *gnutls_transport_ptr_t;
1271 
1272 struct gnutls_session_int;
1273 typedef struct gnutls_session_int *gnutls_session_t;
1274 
1275 struct gnutls_dh_params_int;
1276 typedef struct gnutls_dh_params_int *gnutls_dh_params_t;
1277 
1278 
1279 struct gnutls_x509_privkey_int;
1280 typedef struct gnutls_x509_privkey_int *gnutls_rsa_params_t;
1281 
1282 struct gnutls_priority_st;
1283 typedef struct gnutls_priority_st *gnutls_priority_t;
1284 
1285 typedef struct {
1286     unsigned char *data;
1287     unsigned int size;
1288 } gnutls_datum_t;
1289 
1290 typedef struct gnutls_library_config_st {
1291     const char *name;
1292     const char *value;
1293 } gnutls_library_config_st;
1294 
1295 typedef struct gnutls_params_st {
1296     gnutls_params_type_t type;
1297     union params {
1298         gnutls_dh_params_t dh;
1299         gnutls_rsa_params_t rsa_export;
1300     } params;
1301     int deinit;
1302 } gnutls_params_st;
1303 
1304 typedef int gnutls_params_function(gnutls_session_t, gnutls_params_type_t,
1305                    gnutls_params_st *);
1306 
1307 
1308 
1309 int gnutls_init(gnutls_session_t *session, unsigned int flags);
1310 void gnutls_deinit(gnutls_session_t session);
1311 #define _gnutls_deinit(x) gnutls_deinit(x)
1312 
1313 int gnutls_bye(gnutls_session_t session, gnutls_close_request_t how);
1314 
1315 int gnutls_handshake(gnutls_session_t session);
1316 
1317 int gnutls_reauth(gnutls_session_t session, unsigned int flags);
1318 
1319 #define GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT ((unsigned int)-1)
1320 #define GNUTLS_INDEFINITE_TIMEOUT ((unsigned int)-2)
1321 void gnutls_handshake_set_timeout(gnutls_session_t session, unsigned int ms);
1322 int gnutls_rehandshake(gnutls_session_t session);
1323 
1324 #define GNUTLS_KU_PEER 1
1325 int gnutls_session_key_update(gnutls_session_t session, unsigned flags);
1326 
1327 gnutls_alert_description_t gnutls_alert_get(gnutls_session_t session);
1328 int gnutls_alert_send(gnutls_session_t session, gnutls_alert_level_t level,
1329               gnutls_alert_description_t desc);
1330 int gnutls_alert_send_appropriate(gnutls_session_t session, int err);
1331 const char *gnutls_alert_get_name(gnutls_alert_description_t alert);
1332 const char *gnutls_alert_get_strname(gnutls_alert_description_t alert);
1333 
1334 gnutls_sec_param_t gnutls_pk_bits_to_sec_param(gnutls_pk_algorithm_t algo,
1335                            unsigned int bits);
1336 const char *gnutls_sec_param_get_name(gnutls_sec_param_t param);
1337 unsigned int gnutls_sec_param_to_pk_bits(gnutls_pk_algorithm_t algo,
1338                      gnutls_sec_param_t param);
1339 unsigned int
1340 gnutls_sec_param_to_symmetric_bits(gnutls_sec_param_t param) __GNUTLS_CONST__;
1341 
1342 
1343 const char *
1344 gnutls_ecc_curve_get_name(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
1345 const char *gnutls_ecc_curve_get_oid(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
1346 
1347 const char *gnutls_group_get_name(gnutls_group_t group) __GNUTLS_CONST__;
1348 
1349 int gnutls_ecc_curve_get_size(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
1350 gnutls_ecc_curve_t gnutls_ecc_curve_get(gnutls_session_t session);
1351 
1352 gnutls_group_t gnutls_group_get(gnutls_session_t session);
1353 
1354 
1355 gnutls_cipher_algorithm_t gnutls_cipher_get(gnutls_session_t session);
1356 gnutls_cipher_algorithm_t gnutls_early_cipher_get(gnutls_session_t session);
1357 gnutls_kx_algorithm_t gnutls_kx_get(gnutls_session_t session);
1358 gnutls_mac_algorithm_t gnutls_mac_get(gnutls_session_t session);
1359 gnutls_digest_algorithm_t gnutls_prf_hash_get(const gnutls_session_t session);
1360 gnutls_digest_algorithm_t
1361 gnutls_early_prf_hash_get(const gnutls_session_t session);
1362 gnutls_certificate_type_t gnutls_certificate_type_get(gnutls_session_t session);
1363 gnutls_certificate_type_t
1364 gnutls_certificate_type_get2(gnutls_session_t session,
1365                  gnutls_ctype_target_t target);
1366 
1367 int gnutls_sign_algorithm_get(gnutls_session_t session);
1368 int gnutls_sign_algorithm_get_client(gnutls_session_t session);
1369 
1370 int gnutls_sign_algorithm_get_requested(gnutls_session_t session, size_t indx,
1371                     gnutls_sign_algorithm_t *algo);
1372 
1373 
1374 const char *
1375 gnutls_cipher_get_name(gnutls_cipher_algorithm_t algorithm) __GNUTLS_CONST__;
1376 const char *
1377 gnutls_mac_get_name(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__;
1378 
1379 const char *
1380 gnutls_digest_get_name(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__;
1381 const char *
1382 gnutls_digest_get_oid(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__;
1383 
1384 const char *
1385 gnutls_kx_get_name(gnutls_kx_algorithm_t algorithm) __GNUTLS_CONST__;
1386 const char *gnutls_certificate_type_get_name(gnutls_certificate_type_t type)
1387     __GNUTLS_CONST__;
1388 const char *
1389 gnutls_pk_get_name(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__;
1390 const char *gnutls_pk_get_oid(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__;
1391 
1392 const char *
1393 gnutls_sign_get_name(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__;
1394 
1395 const char *gnutls_sign_get_oid(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
1396 
1397 const char *
1398 gnutls_gost_paramset_get_name(gnutls_gost_paramset_t param) __GNUTLS_CONST__;
1399 const char *
1400 gnutls_gost_paramset_get_oid(gnutls_gost_paramset_t param) __GNUTLS_CONST__;
1401 
1402 size_t gnutls_cipher_get_key_size(gnutls_cipher_algorithm_t algorithm)
1403     __GNUTLS_CONST__;
1404 size_t
1405 gnutls_mac_get_key_size(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__;
1406 
1407 unsigned
1408 gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__;
1409 
1410 
1411 
1412 
1413 
1414 #define GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS 1
1415 unsigned gnutls_sign_is_secure2(gnutls_sign_algorithm_t algorithm,
1416                 unsigned int flags) __GNUTLS_CONST__;
1417 
1418 gnutls_digest_algorithm_t
1419 gnutls_sign_get_hash_algorithm(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
1420 gnutls_pk_algorithm_t
1421 gnutls_sign_get_pk_algorithm(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
1422 gnutls_sign_algorithm_t
1423 gnutls_pk_to_sign(gnutls_pk_algorithm_t pk,
1424           gnutls_digest_algorithm_t hash) __GNUTLS_CONST__;
1425 
1426 unsigned
1427 gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign,
1428                   gnutls_pk_algorithm_t pk) __GNUTLS_CONST__;
1429 
1430 #define gnutls_sign_algorithm_get_name gnutls_sign_get_name
1431 
1432 gnutls_mac_algorithm_t gnutls_mac_get_id(const char *name) __GNUTLS_CONST__;
1433 gnutls_digest_algorithm_t
1434 gnutls_digest_get_id(const char *name) __GNUTLS_CONST__;
1435 
1436 gnutls_cipher_algorithm_t
1437 gnutls_cipher_get_id(const char *name) __GNUTLS_CONST__;
1438 
1439 gnutls_kx_algorithm_t gnutls_kx_get_id(const char *name) __GNUTLS_CONST__;
1440 gnutls_protocol_t gnutls_protocol_get_id(const char *name) __GNUTLS_CONST__;
1441 gnutls_certificate_type_t
1442 gnutls_certificate_type_get_id(const char *name) __GNUTLS_CONST__;
1443 gnutls_pk_algorithm_t gnutls_pk_get_id(const char *name) __GNUTLS_CONST__;
1444 gnutls_sign_algorithm_t gnutls_sign_get_id(const char *name) __GNUTLS_CONST__;
1445 gnutls_ecc_curve_t gnutls_ecc_curve_get_id(const char *name) __GNUTLS_CONST__;
1446 gnutls_pk_algorithm_t
1447 gnutls_ecc_curve_get_pk(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
1448 gnutls_group_t gnutls_group_get_id(const char *name);
1449 
1450 gnutls_digest_algorithm_t
1451 gnutls_oid_to_digest(const char *oid) __GNUTLS_CONST__;
1452 gnutls_mac_algorithm_t gnutls_oid_to_mac(const char *oid) __GNUTLS_CONST__;
1453 gnutls_pk_algorithm_t gnutls_oid_to_pk(const char *oid) __GNUTLS_CONST__;
1454 gnutls_sign_algorithm_t gnutls_oid_to_sign(const char *oid) __GNUTLS_CONST__;
1455 gnutls_ecc_curve_t gnutls_oid_to_ecc_curve(const char *oid) __GNUTLS_CONST__;
1456 gnutls_gost_paramset_t
1457 gnutls_oid_to_gost_paramset(const char *oid) __GNUTLS_CONST__;
1458 
1459 
1460 const gnutls_ecc_curve_t *gnutls_ecc_curve_list(void) __GNUTLS_PURE__;
1461 const gnutls_group_t *gnutls_group_list(void) __GNUTLS_PURE__;
1462 const gnutls_cipher_algorithm_t *gnutls_cipher_list(void) __GNUTLS_PURE__;
1463 const gnutls_mac_algorithm_t *gnutls_mac_list(void) __GNUTLS_PURE__;
1464 const gnutls_digest_algorithm_t *gnutls_digest_list(void) __GNUTLS_PURE__;
1465 const gnutls_protocol_t *gnutls_protocol_list(void) __GNUTLS_PURE__;
1466 const gnutls_certificate_type_t *
1467 gnutls_certificate_type_list(void) __GNUTLS_PURE__;
1468 const gnutls_kx_algorithm_t *gnutls_kx_list(void) __GNUTLS_PURE__;
1469 const gnutls_pk_algorithm_t *gnutls_pk_list(void) __GNUTLS_PURE__;
1470 const gnutls_sign_algorithm_t *gnutls_sign_list(void) __GNUTLS_PURE__;
1471 const char *gnutls_cipher_suite_info(size_t idx, unsigned char *cs_id,
1472                      gnutls_kx_algorithm_t *kx,
1473                      gnutls_cipher_algorithm_t *cipher,
1474                      gnutls_mac_algorithm_t *mac,
1475                      gnutls_protocol_t *min_version);
1476 
1477 
1478 int gnutls_ecc_curve_set_enabled(gnutls_ecc_curve_t curve,
1479                  unsigned int enabled);
1480 int gnutls_sign_set_secure(gnutls_sign_algorithm_t sign, unsigned int secure);
1481 int gnutls_sign_set_secure_for_certs(gnutls_sign_algorithm_t sign,
1482                      unsigned int secure);
1483 int gnutls_digest_set_secure(gnutls_digest_algorithm_t dig,
1484                  unsigned int secure);
1485 int gnutls_protocol_set_enabled(gnutls_protocol_t version,
1486                 unsigned int enabled);
1487 
1488 
1489 int gnutls_error_is_fatal(int error) __GNUTLS_CONST__;
1490 int gnutls_error_to_alert(int err, int *level);
1491 
1492 void gnutls_perror(int error);
1493 const char *gnutls_strerror(int error) __GNUTLS_CONST__;
1494 const char *gnutls_strerror_name(int error) __GNUTLS_CONST__;
1495 
1496 
1497 
1498 void gnutls_handshake_set_private_extensions(gnutls_session_t session,
1499                          int allow);
1500 int gnutls_handshake_set_random(gnutls_session_t session,
1501                 const gnutls_datum_t *random);
1502 
1503 gnutls_handshake_description_t
1504 gnutls_handshake_get_last_out(gnutls_session_t session);
1505 gnutls_handshake_description_t
1506 gnutls_handshake_get_last_in(gnutls_session_t session);
1507 
1508 
1509 
1510 #define GNUTLS_HEARTBEAT_WAIT 1
1511 int gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size,
1512               unsigned int max_tries, unsigned int flags);
1513 int gnutls_heartbeat_pong(gnutls_session_t session, unsigned int flags);
1514 
1515 void gnutls_record_set_timeout(gnutls_session_t session, unsigned int ms);
1516 void gnutls_record_disable_padding(gnutls_session_t session);
1517 
1518 void gnutls_record_cork(gnutls_session_t session);
1519 #define GNUTLS_RECORD_WAIT 1
1520 int gnutls_record_uncork(gnutls_session_t session, unsigned int flags);
1521 size_t gnutls_record_discard_queued(gnutls_session_t session);
1522 
1523 int gnutls_record_get_state(gnutls_session_t session, unsigned read,
1524                 gnutls_datum_t *mac_key, gnutls_datum_t *IV,
1525                 gnutls_datum_t *cipher_key,
1526                 unsigned char seq_number[8]);
1527 
1528 int gnutls_record_set_state(gnutls_session_t session, unsigned read,
1529                 const unsigned char seq_number[8]);
1530 
1531 typedef struct {
1532     size_t low;
1533     size_t high;
1534 } gnutls_range_st;
1535 
1536 int gnutls_range_split(gnutls_session_t session, const gnutls_range_st *orig,
1537                gnutls_range_st *small_range,
1538                gnutls_range_st *rem_range);
1539 
1540 ssize_t gnutls_record_send(gnutls_session_t session, const void *data,
1541                size_t data_size);
1542 ssize_t gnutls_record_send2(gnutls_session_t session, const void *data,
1543                 size_t data_size, size_t pad, unsigned flags);
1544 ssize_t gnutls_record_send_range(gnutls_session_t session, const void *data,
1545                  size_t data_size,
1546                  const gnutls_range_st *range);
1547 ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, off_t *offset,
1548                 size_t count);
1549 ssize_t gnutls_record_recv(gnutls_session_t session, void *data,
1550                size_t data_size);
1551 
1552 typedef struct mbuffer_st *gnutls_packet_t;
1553 
1554 ssize_t gnutls_record_recv_packet(gnutls_session_t session,
1555                   gnutls_packet_t *packet);
1556 
1557 void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t *data,
1558                unsigned char *sequence);
1559 void gnutls_packet_deinit(gnutls_packet_t packet);
1560 
1561 #define gnutls_read gnutls_record_recv
1562 #define gnutls_write gnutls_record_send
1563 ssize_t gnutls_record_recv_seq(gnutls_session_t session, void *data,
1564                    size_t data_size, unsigned char *seq);
1565 
1566 size_t gnutls_record_overhead_size(gnutls_session_t session);
1567 
1568 size_t gnutls_est_record_overhead_size(gnutls_protocol_t version,
1569                        gnutls_cipher_algorithm_t cipher,
1570                        gnutls_mac_algorithm_t mac,
1571                        gnutls_compression_method_t comp,
1572                        unsigned int flags) __GNUTLS_CONST__;
1573 
1574 void gnutls_session_enable_compatibility_mode(gnutls_session_t session);
1575 #define gnutls_record_set_max_empty_records(session, x)
1576 
1577 unsigned gnutls_record_can_use_length_hiding(gnutls_session_t session);
1578 
1579 int gnutls_record_get_direction(gnutls_session_t session);
1580 
1581 size_t gnutls_record_get_max_size(gnutls_session_t session);
1582 ssize_t gnutls_record_set_max_size(gnutls_session_t session, size_t size);
1583 ssize_t gnutls_record_set_max_recv_size(gnutls_session_t session, size_t size);
1584 
1585 size_t gnutls_record_check_pending(gnutls_session_t session);
1586 size_t gnutls_record_check_corked(gnutls_session_t session);
1587 
1588 size_t gnutls_record_get_max_early_data_size(gnutls_session_t session);
1589 int gnutls_record_set_max_early_data_size(gnutls_session_t session,
1590                       size_t size);
1591 ssize_t gnutls_record_send_early_data(gnutls_session_t session,
1592                       const void *data, size_t length);
1593 ssize_t gnutls_record_recv_early_data(gnutls_session_t session, void *data,
1594                       size_t data_size);
1595 
1596 void gnutls_session_force_valid(gnutls_session_t session);
1597 
1598 int gnutls_prf(gnutls_session_t session, size_t label_size, const char *label,
1599            int server_random_first, size_t extra_size, const char *extra,
1600            size_t outsize, char *out);
1601 int gnutls_prf_rfc5705(gnutls_session_t session, size_t label_size,
1602                const char *label, size_t context_size,
1603                const char *context, size_t outsize, char *out);
1604 int gnutls_prf_early(gnutls_session_t session, size_t label_size,
1605              const char *label, size_t context_size,
1606              const char *context, size_t outsize, char *out);
1607 
1608 int gnutls_prf_raw(gnutls_session_t session, size_t label_size,
1609            const char *label, size_t seed_size, const char *seed,
1610            size_t outsize, char *out);
1611 
1612 
1613 
1614 
1615 
1616 
1617 
1618 typedef enum {
1619     GNUTLS_NAME_DNS = 1
1620 } gnutls_server_name_type_t;
1621 
1622 int gnutls_server_name_set(gnutls_session_t session,
1623                gnutls_server_name_type_t type, const void *name,
1624                size_t name_length);
1625 
1626 int gnutls_server_name_get(gnutls_session_t session, void *data,
1627                size_t *data_length, unsigned int *type,
1628                unsigned int indx);
1629 
1630 unsigned int gnutls_heartbeat_get_timeout(gnutls_session_t session);
1631 void gnutls_heartbeat_set_timeouts(gnutls_session_t session,
1632                    unsigned int retrans_timeout,
1633                    unsigned int total_timeout);
1634 
1635 #define GNUTLS_HB_PEER_ALLOWED_TO_SEND (1)
1636 #define GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND (1 << 1)
1637 
1638 
1639 void gnutls_heartbeat_enable(gnutls_session_t session, unsigned int type);
1640 
1641 #define GNUTLS_HB_LOCAL_ALLOWED_TO_SEND (1 << 2)
1642 unsigned gnutls_heartbeat_allowed(gnutls_session_t session, unsigned int type);
1643 
1644 
1645 unsigned gnutls_safe_renegotiation_status(gnutls_session_t session);
1646 unsigned gnutls_session_ext_master_secret_status(gnutls_session_t session);
1647 unsigned gnutls_session_etm_status(gnutls_session_t session);
1648 
1649 
1650 
1651 
1652 
1653 
1654 
1655 
1656 
1657 
1658 
1659 
1660 
1661 
1662 
1663 
1664 
1665 
1666 
1667 typedef enum {
1668     GNUTLS_SFLAGS_SAFE_RENEGOTIATION = 1,
1669     GNUTLS_SFLAGS_EXT_MASTER_SECRET = 1 << 1,
1670     GNUTLS_SFLAGS_ETM = 1 << 2,
1671     GNUTLS_SFLAGS_HB_LOCAL_SEND = 1 << 3,
1672     GNUTLS_SFLAGS_HB_PEER_SEND = 1 << 4,
1673     GNUTLS_SFLAGS_FALSE_START = 1 << 5,
1674     GNUTLS_SFLAGS_RFC7919 = 1 << 6,
1675     GNUTLS_SFLAGS_SESSION_TICKET = 1 << 7,
1676     GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH = 1 << 8,
1677     GNUTLS_SFLAGS_EARLY_START = 1 << 9,
1678     GNUTLS_SFLAGS_EARLY_DATA = 1 << 10,
1679     GNUTLS_SFLAGS_CLI_REQUESTED_OCSP = 1 << 11,
1680     GNUTLS_SFLAGS_SERV_REQUESTED_OCSP = 1 << 12
1681 } gnutls_session_flags_t;
1682 
1683 unsigned gnutls_session_get_flags(gnutls_session_t session);
1684 
1685 
1686 
1687 
1688 
1689 
1690 
1691 typedef enum {
1692     GNUTLS_SUPPLEMENTAL_UNKNOWN = 0,
1693 } gnutls_supplemental_data_format_type_t;
1694 
1695 const char *
1696 gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type);
1697 
1698 
1699 int gnutls_session_ticket_key_generate(gnutls_datum_t *key);
1700 int gnutls_session_ticket_enable_client(gnutls_session_t session);
1701 int gnutls_session_ticket_enable_server(gnutls_session_t session,
1702                     const gnutls_datum_t *key);
1703 
1704 int gnutls_session_ticket_send(gnutls_session_t session, unsigned nr,
1705                    unsigned flags);
1706 
1707 
1708 
1709 
1710 
1711 
1712 
1713 
1714 
1715 
1716 
1717 
1718 
1719 
1720 typedef enum {
1721     GNUTLS_SRTP_AES128_CM_HMAC_SHA1_80 = 0x0001,
1722     GNUTLS_SRTP_AES128_CM_HMAC_SHA1_32 = 0x0002,
1723     GNUTLS_SRTP_NULL_HMAC_SHA1_80 = 0x0005,
1724     GNUTLS_SRTP_NULL_HMAC_SHA1_32 = 0x0006,
1725     GNUTLS_SRTP_AEAD_AES_128_GCM = 0x0007,
1726     GNUTLS_SRTP_AEAD_AES_256_GCM = 0x0008
1727 } gnutls_srtp_profile_t;
1728 
1729 int gnutls_srtp_set_profile(gnutls_session_t session,
1730                 gnutls_srtp_profile_t profile);
1731 int gnutls_srtp_set_profile_direct(gnutls_session_t session,
1732                    const char *profiles, const char **err_pos);
1733 int gnutls_srtp_get_selected_profile(gnutls_session_t session,
1734                      gnutls_srtp_profile_t *profile);
1735 
1736 const char *gnutls_srtp_get_profile_name(gnutls_srtp_profile_t profile);
1737 int gnutls_srtp_get_profile_id(const char *name,
1738                    gnutls_srtp_profile_t *profile);
1739 int gnutls_srtp_get_keys(gnutls_session_t session, void *key_material,
1740              unsigned int key_material_size,
1741              gnutls_datum_t *client_key,
1742              gnutls_datum_t *client_salt,
1743              gnutls_datum_t *server_key,
1744              gnutls_datum_t *server_salt);
1745 
1746 int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t *mki);
1747 int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t *mki);
1748 
1749 
1750 gnutls_compression_method_t
1751 gnutls_compress_certificate_get_selected_method(gnutls_session_t session);
1752 int gnutls_compress_certificate_set_methods(
1753     gnutls_session_t session, const gnutls_compression_method_t *methods,
1754     size_t methods_len);
1755 
1756 
1757 
1758 
1759 
1760 
1761 
1762 
1763 
1764 
1765 
1766 
1767 typedef enum {
1768     GNUTLS_ALPN_MANDATORY = 1,
1769     GNUTLS_ALPN_SERVER_PRECEDENCE = (1 << 1)
1770 } gnutls_alpn_flags_t;
1771 
1772 #define GNUTLS_ALPN_MAND GNUTLS_ALPN_MANDATORY
1773 int gnutls_alpn_get_selected_protocol(gnutls_session_t session,
1774                       gnutls_datum_t *protocol);
1775 int gnutls_alpn_set_protocols(gnutls_session_t session,
1776                   const gnutls_datum_t *protocols,
1777                   unsigned protocols_size, unsigned flags);
1778 
1779 int gnutls_key_generate(gnutls_datum_t *key, unsigned int key_size);
1780 
1781 #define GNUTLS_PRIORITY_INIT_DEF_APPEND 1
1782 int gnutls_priority_init(gnutls_priority_t *priority_cache,
1783              const char *priorities, const char **err_pos);
1784 int gnutls_priority_init2(gnutls_priority_t *priority_cache,
1785               const char *priorities, const char **err_pos,
1786               unsigned flags);
1787 void gnutls_priority_deinit(gnutls_priority_t priority_cache);
1788 int gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache,
1789                        unsigned int idx,
1790                        unsigned int *sidx);
1791 
1792 #define GNUTLS_PRIORITY_LIST_INIT_KEYWORDS 1
1793 #define GNUTLS_PRIORITY_LIST_SPECIAL 2
1794 const char *gnutls_priority_string_list(unsigned iter, unsigned int flags);
1795 
1796 int gnutls_priority_set(gnutls_session_t session, gnutls_priority_t priority);
1797 
1798 int gnutls_priority_set_direct(gnutls_session_t session, const char *priorities,
1799                    const char **err_pos);
1800 
1801 int gnutls_priority_certificate_type_list(gnutls_priority_t pcache,
1802                       const unsigned int **list);
1803 int gnutls_priority_certificate_type_list2(gnutls_priority_t pcache,
1804                        const unsigned int **list,
1805                        gnutls_ctype_target_t target);
1806 int gnutls_priority_sign_list(gnutls_priority_t pcache,
1807                   const unsigned int **list);
1808 int gnutls_priority_protocol_list(gnutls_priority_t pcache,
1809                   const unsigned int **list);
1810 int gnutls_priority_ecc_curve_list(gnutls_priority_t pcache,
1811                    const unsigned int **list);
1812 int gnutls_priority_group_list(gnutls_priority_t pcache,
1813                    const unsigned int **list);
1814 
1815 int gnutls_priority_kx_list(gnutls_priority_t pcache,
1816                 const unsigned int **list);
1817 int gnutls_priority_cipher_list(gnutls_priority_t pcache,
1818                 const unsigned int **list);
1819 int gnutls_priority_mac_list(gnutls_priority_t pcache,
1820                  const unsigned int **list);
1821 
1822 const char *gnutls_get_system_config_file(void);
1823 
1824 int gnutls_set_default_priority(gnutls_session_t session);
1825 int gnutls_set_default_priority_append(gnutls_session_t session,
1826                        const char *add_prio,
1827                        const char **err_pos, unsigned flags);
1828 
1829 
1830 const char *gnutls_cipher_suite_get_name(
1831     gnutls_kx_algorithm_t kx_algorithm,
1832     gnutls_cipher_algorithm_t cipher_algorithm,
1833     gnutls_mac_algorithm_t mac_algorithm) __GNUTLS_CONST__;
1834 
1835 const char *gnutls_ciphersuite_get(gnutls_session_t session) __GNUTLS_CONST__;
1836 
1837 
1838 gnutls_protocol_t gnutls_protocol_get_version(gnutls_session_t session);
1839 
1840 const char *
1841 gnutls_protocol_get_name(gnutls_protocol_t version) __GNUTLS_CONST__;
1842 
1843 
1844 
1845 int gnutls_session_set_data(gnutls_session_t session, const void *session_data,
1846                 size_t session_data_size);
1847 int gnutls_session_get_data(gnutls_session_t session, void *session_data,
1848                 size_t *session_data_size);
1849 int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t *data);
1850 void gnutls_session_get_random(gnutls_session_t session, gnutls_datum_t *client,
1851                    gnutls_datum_t *server);
1852 
1853 void gnutls_session_get_master_secret(gnutls_session_t session,
1854                       gnutls_datum_t *secret);
1855 
1856 char *gnutls_session_get_desc(gnutls_session_t session);
1857 
1858 typedef int gnutls_certificate_verify_function(gnutls_session_t);
1859 void gnutls_session_set_verify_function(
1860     gnutls_session_t session, gnutls_certificate_verify_function *func);
1861 
1862 
1863 
1864 
1865 
1866 
1867 
1868 
1869 
1870 
1871 
1872 
1873 
1874 
1875 
1876 
1877 
1878 
1879 
1880 
1881 
1882 
1883 
1884 typedef enum {
1885     GNUTLS_DT_UNKNOWN = 0,
1886     GNUTLS_DT_DNS_HOSTNAME = 1,
1887     GNUTLS_DT_KEY_PURPOSE_OID = 2,
1888     GNUTLS_DT_RFC822NAME = 3,
1889     GNUTLS_DT_IP_ADDRESS = 4
1890 } gnutls_vdata_types_t;
1891 
1892 typedef struct {
1893     gnutls_vdata_types_t type;
1894     unsigned char *data;
1895     unsigned int size;
1896 } gnutls_typed_vdata_st;
1897 
1898 void gnutls_session_set_verify_cert(gnutls_session_t session,
1899                     const char *hostname, unsigned flags);
1900 
1901 void gnutls_session_set_verify_cert2(gnutls_session_t session,
1902                      gnutls_typed_vdata_st *data,
1903                      unsigned elements, unsigned flags);
1904 
1905 unsigned int gnutls_session_get_verify_cert_status(gnutls_session_t);
1906 
1907 int gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity,
1908                  gnutls_protocol_t version,
1909                  gnutls_kx_algorithm_t kx,
1910                  gnutls_cipher_algorithm_t cipher,
1911                  gnutls_mac_algorithm_t mac,
1912                  gnutls_compression_method_t comp,
1913                  const gnutls_datum_t *master,
1914                  const gnutls_datum_t *session_id);
1915 
1916 
1917 #define GNUTLS_MAX_SESSION_ID 32
1918 int gnutls_session_get_id(gnutls_session_t session, void *session_id,
1919               size_t *session_id_size);
1920 int gnutls_session_get_id2(gnutls_session_t session,
1921                gnutls_datum_t *session_id);
1922 
1923 int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t *sid);
1924 
1925 int gnutls_session_channel_binding(gnutls_session_t session,
1926                    gnutls_channel_binding_t cbtype,
1927                    gnutls_datum_t *cb);
1928 
1929 
1930 
1931 int gnutls_session_is_resumed(gnutls_session_t session);
1932 int gnutls_session_resumption_requested(gnutls_session_t session);
1933 
1934 typedef int (*gnutls_db_store_func)(void *, gnutls_datum_t key,
1935                     gnutls_datum_t data);
1936 typedef int (*gnutls_db_remove_func)(void *, gnutls_datum_t key);
1937 typedef gnutls_datum_t (*gnutls_db_retr_func)(void *, gnutls_datum_t key);
1938 
1939 void gnutls_db_set_cache_expiration(gnutls_session_t session, int seconds);
1940 unsigned gnutls_db_get_default_cache_expiration(void);
1941 
1942 void gnutls_db_remove_session(gnutls_session_t session);
1943 void gnutls_db_set_retrieve_function(gnutls_session_t session,
1944                      gnutls_db_retr_func retr_func);
1945 void gnutls_db_set_remove_function(gnutls_session_t session,
1946                    gnutls_db_remove_func rem_func);
1947 void gnutls_db_set_store_function(gnutls_session_t session,
1948                   gnutls_db_store_func store_func);
1949 void gnutls_db_set_ptr(gnutls_session_t session, void *ptr);
1950 void *gnutls_db_get_ptr(gnutls_session_t session);
1951 int gnutls_db_check_entry(gnutls_session_t session,
1952               gnutls_datum_t session_entry);
1953 time_t gnutls_db_check_entry_time(gnutls_datum_t *entry);
1954 time_t gnutls_db_check_entry_expire_time(gnutls_datum_t *entry);
1955 
1956 #define GNUTLS_HOOK_POST (1)
1957 #define GNUTLS_HOOK_PRE (0)
1958 #define GNUTLS_HOOK_BOTH (-1)
1959 
1960 
1961 
1962 
1963 
1964 
1965 
1966 
1967 
1968 
1969 
1970 
1971 
1972 
1973 typedef int (*gnutls_handshake_hook_func)(gnutls_session_t, unsigned int htype,
1974                       unsigned when, unsigned int incoming,
1975                       const gnutls_datum_t *msg);
1976 void gnutls_handshake_set_hook_function(gnutls_session_t session,
1977                     unsigned int htype, int when,
1978                     gnutls_handshake_hook_func func);
1979 
1980 #define gnutls_handshake_post_client_hello_func \
1981     gnutls_handshake_simple_hook_func
1982 typedef int (*gnutls_handshake_simple_hook_func)(gnutls_session_t);
1983 void gnutls_handshake_set_post_client_hello_function(
1984     gnutls_session_t session, gnutls_handshake_simple_hook_func func);
1985 
1986 void gnutls_handshake_set_max_packet_length(gnutls_session_t session,
1987                         size_t max);
1988 
1989 
1990 
1991 const char *gnutls_check_version(const char *req_version) __GNUTLS_CONST__;
1992 
1993 
1994 
1995 
1996 
1997 
1998 #define gnutls_check_version_numeric(a, b, c)                            \
1999     ((GNUTLS_VERSION_MAJOR >= (a)) &&                                \
2000      ((GNUTLS_VERSION_NUMBER >= (((a) << 16) + ((b) << 8) + (c))) || \
2001       gnutls_check_version(#a "." #b "." #c)))
2002 
2003 
2004 
2005 void gnutls_credentials_clear(gnutls_session_t session);
2006 
2007 
2008 
2009 int gnutls_credentials_set(gnutls_session_t session,
2010                gnutls_credentials_type_t type, void *cred);
2011 int gnutls_credentials_get(gnutls_session_t session,
2012                gnutls_credentials_type_t type, void **cred);
2013 #define gnutls_cred_set gnutls_credentials_set
2014 
2015 
2016 
2017 struct gnutls_pubkey_st;
2018 typedef struct gnutls_pubkey_st *gnutls_pubkey_t;
2019 
2020 struct gnutls_privkey_st;
2021 typedef struct gnutls_privkey_st *gnutls_privkey_t;
2022 
2023 struct gnutls_x509_privkey_int;
2024 typedef struct gnutls_x509_privkey_int *gnutls_x509_privkey_t;
2025 
2026 struct gnutls_x509_crl_int;
2027 typedef struct gnutls_x509_crl_int *gnutls_x509_crl_t;
2028 
2029 struct gnutls_x509_crt_int;
2030 typedef struct gnutls_x509_crt_int *gnutls_x509_crt_t;
2031 
2032 struct gnutls_x509_crq_int;
2033 typedef struct gnutls_x509_crq_int *gnutls_x509_crq_t;
2034 
2035 struct gnutls_openpgp_keyring_int;
2036 typedef struct gnutls_openpgp_keyring_int *gnutls_openpgp_keyring_t;
2037 
2038 
2039 
2040 struct gnutls_certificate_credentials_st;
2041 typedef struct gnutls_certificate_credentials_st
2042     *gnutls_certificate_credentials_t;
2043 typedef gnutls_certificate_credentials_t gnutls_certificate_server_credentials;
2044 typedef gnutls_certificate_credentials_t gnutls_certificate_client_credentials;
2045 
2046 typedef struct gnutls_anon_server_credentials_st
2047     *gnutls_anon_server_credentials_t;
2048 typedef struct gnutls_anon_client_credentials_st
2049     *gnutls_anon_client_credentials_t;
2050 
2051 void gnutls_anon_free_server_credentials(gnutls_anon_server_credentials_t sc);
2052 int gnutls_anon_allocate_server_credentials(
2053     gnutls_anon_server_credentials_t *sc);
2054 
2055 void gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res,
2056                       gnutls_dh_params_t dh_params);
2057 
2058 int gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res,
2059                        gnutls_sec_param_t sec_param);
2060 
2061 void gnutls_anon_set_server_params_function(
2062     gnutls_anon_server_credentials_t res, gnutls_params_function *func);
2063 
2064 void gnutls_anon_free_client_credentials(gnutls_anon_client_credentials_t sc);
2065 int gnutls_anon_allocate_client_credentials(
2066     gnutls_anon_client_credentials_t *sc);
2067 
2068 
2069 
2070 
2071 void gnutls_certificate_free_credentials(gnutls_certificate_credentials_t sc);
2072 int gnutls_certificate_allocate_credentials(
2073     gnutls_certificate_credentials_t *res);
2074 
2075 int gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc,
2076                   gnutls_x509_crt_t cert,
2077                   gnutls_x509_crt_t *issuer,
2078                   unsigned int flags);
2079 
2080 int gnutls_certificate_get_crt_raw(gnutls_certificate_credentials_t sc,
2081                    unsigned idx1, unsigned idx2,
2082                    gnutls_datum_t *cert);
2083 
2084 void gnutls_certificate_free_keys(gnutls_certificate_credentials_t sc);
2085 void gnutls_certificate_free_cas(gnutls_certificate_credentials_t sc);
2086 void gnutls_certificate_free_ca_names(gnutls_certificate_credentials_t sc);
2087 void gnutls_certificate_free_crls(gnutls_certificate_credentials_t sc);
2088 
2089 void gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res,
2090                       gnutls_dh_params_t dh_params);
2091 
2092 int gnutls_certificate_set_known_dh_params(gnutls_certificate_credentials_t res,
2093                        gnutls_sec_param_t sec_param);
2094 void gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t res,
2095                      unsigned int flags);
2096 unsigned int
2097 gnutls_certificate_get_verify_flags(gnutls_certificate_credentials_t res);
2098 
2099 
2100 
2101 
2102 
2103 
2104 
2105 
2106 
2107 
2108 
2109 
2110 typedef enum gnutls_certificate_flags {
2111     GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH = 1,
2112     GNUTLS_CERTIFICATE_API_V2 = (1 << 1),
2113     GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK = (1 << 2),
2114     GNUTLS_CERTIFICATE_VERIFY_CRLS = (1 << 3)
2115 } gnutls_certificate_flags;
2116 
2117 void gnutls_certificate_set_flags(gnutls_certificate_credentials_t,
2118                   unsigned flags);
2119 
2120 void gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t res,
2121                       unsigned int max_bits,
2122                       unsigned int max_depth);
2123 
2124 int gnutls_certificate_set_x509_system_trust(
2125     gnutls_certificate_credentials_t cred);
2126 
2127 int gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t cred,
2128                        const char *cafile,
2129                        gnutls_x509_crt_fmt_t type);
2130 int gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred,
2131                       const char *ca_dir,
2132                       gnutls_x509_crt_fmt_t type);
2133 
2134 int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t res,
2135                       const gnutls_datum_t *ca,
2136                       gnutls_x509_crt_fmt_t type);
2137 
2138 int gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t res,
2139                      const char *crlfile,
2140                      gnutls_x509_crt_fmt_t type);
2141 int gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res,
2142                     const gnutls_datum_t *CRL,
2143                     gnutls_x509_crt_fmt_t type);
2144 
2145 int gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res,
2146                      const char *certfile,
2147                      const char *keyfile,
2148                      gnutls_x509_crt_fmt_t type);
2149 
2150 int gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res,
2151                       const char *certfile,
2152                       const char *keyfile,
2153                       gnutls_x509_crt_fmt_t type,
2154                       const char *pass, unsigned int flags);
2155 
2156 int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res,
2157                     const gnutls_datum_t *cert,
2158                     const gnutls_datum_t *key,
2159                     gnutls_x509_crt_fmt_t type);
2160 
2161 int gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res,
2162                      const gnutls_datum_t *cert,
2163                      const gnutls_datum_t *key,
2164                      gnutls_x509_crt_fmt_t type,
2165                      const char *pass, unsigned int flags);
2166 
2167 void gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session,
2168                            int status);
2169 
2170 int gnutls_certificate_set_x509_simple_pkcs12_file(
2171     gnutls_certificate_credentials_t res, const char *pkcs12file,
2172     gnutls_x509_crt_fmt_t type, const char *password);
2173 int gnutls_certificate_set_x509_simple_pkcs12_mem(
2174     gnutls_certificate_credentials_t res, const gnutls_datum_t *p12blob,
2175     gnutls_x509_crt_fmt_t type, const char *password);
2176 
2177 
2178 
2179 
2180 int gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
2181                     gnutls_x509_crt_t *cert_list,
2182                     int cert_list_size,
2183                     gnutls_x509_privkey_t key);
2184 int gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res,
2185                       gnutls_x509_crt_t *ca_list,
2186                       int ca_list_size);
2187 int gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res,
2188                     gnutls_x509_crl_t *crl_list,
2189                     int crl_list_size);
2190 
2191 int gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res,
2192                     unsigned index, gnutls_x509_privkey_t *key);
2193 int gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res,
2194                     unsigned index,
2195                     gnutls_x509_crt_t **crt_list,
2196                     unsigned *crt_list_size);
2197 
2198 
2199 typedef int (*gnutls_status_request_ocsp_func)(gnutls_session_t session,
2200                            void *ptr,
2201                            gnutls_datum_t *ocsp_response);
2202 
2203 void gnutls_certificate_set_ocsp_status_request_function(
2204     gnutls_certificate_credentials_t res,
2205     gnutls_status_request_ocsp_func ocsp_func, void *ptr);
2206 
2207 int gnutls_certificate_set_ocsp_status_request_function2(
2208     gnutls_certificate_credentials_t res, unsigned idx,
2209     gnutls_status_request_ocsp_func ocsp_func, void *ptr);
2210 
2211 int gnutls_certificate_set_ocsp_status_request_file(
2212     gnutls_certificate_credentials_t res, const char *response_file,
2213     unsigned idx);
2214 
2215 int gnutls_certificate_set_ocsp_status_request_file2(
2216     gnutls_certificate_credentials_t res, const char *response_file,
2217     unsigned idx, gnutls_x509_crt_fmt_t fmt);
2218 
2219 int gnutls_certificate_set_ocsp_status_request_mem(
2220     gnutls_certificate_credentials_t res, const gnutls_datum_t *resp,
2221     unsigned idx, gnutls_x509_crt_fmt_t fmt);
2222 
2223 typedef struct gnutls_ocsp_data_st {
2224     unsigned int version; 
2225     gnutls_datum_t response;
2226     time_t exptime;
2227     unsigned char padding[32];
2228 } gnutls_ocsp_data_st;
2229 
2230 time_t
2231 gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc,
2232                        unsigned idx, int oidx, unsigned flags);
2233 
2234 int gnutls_ocsp_status_request_enable_client(
2235     gnutls_session_t session, gnutls_datum_t *responder_id,
2236     size_t responder_id_size, gnutls_datum_t *request_extensions);
2237 
2238 int gnutls_ocsp_status_request_get(gnutls_session_t session,
2239                    gnutls_datum_t *response);
2240 
2241 #define GNUTLS_OCSP_SR_IS_AVAIL 1
2242 unsigned gnutls_ocsp_status_request_is_checked(gnutls_session_t session,
2243                            unsigned int flags);
2244 
2245 int gnutls_ocsp_status_request_get2(gnutls_session_t session, unsigned idx,
2246                     gnutls_datum_t *response);
2247 
2248 
2249 int gnutls_certificate_set_rawpk_key_mem(
2250     gnutls_certificate_credentials_t cred, const gnutls_datum_t *spki,
2251     const gnutls_datum_t *pkey, gnutls_x509_crt_fmt_t format,
2252     const char *pass, unsigned int key_usage, const char **names,
2253     unsigned int names_length, unsigned int flags);
2254 
2255 int gnutls_certificate_set_rawpk_key_file(
2256     gnutls_certificate_credentials_t cred, const char *rawpkfile,
2257     const char *privkeyfile, gnutls_x509_crt_fmt_t format, const char *pass,
2258     unsigned int key_usage, const char **names, unsigned int names_length,
2259     unsigned int privkey_flags, unsigned int pkcs11_flags);
2260 
2261 
2262 
2263 int gnutls_global_init(void);
2264 void gnutls_global_deinit(void);
2265 
2266 const gnutls_library_config_st *gnutls_get_library_config(void);
2267 
2268 
2269 
2270 
2271 
2272 
2273 
2274 
2275 
2276 
2277 typedef time_t (*gnutls_time_func)(time_t *t);
2278 
2279 typedef int (*mutex_init_func)(void **mutex);
2280 typedef int (*mutex_lock_func)(void **mutex);
2281 typedef int (*mutex_unlock_func)(void **mutex);
2282 typedef int (*mutex_deinit_func)(void **mutex);
2283 
2284 void gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func deinit,
2285                  mutex_lock_func lock, mutex_unlock_func unlock);
2286 
2287 typedef void *(*gnutls_alloc_function)(size_t);
2288 typedef void *(*gnutls_calloc_function)(size_t, size_t);
2289 typedef int (*gnutls_is_secure_function)(const void *);
2290 typedef void (*gnutls_free_function)(void *);
2291 typedef void *(*gnutls_realloc_function)(void *, size_t);
2292 
2293 void gnutls_global_set_time_function(gnutls_time_func time_func);
2294 
2295 
2296 extern _SYM_EXPORT gnutls_alloc_function gnutls_malloc;
2297 extern _SYM_EXPORT gnutls_realloc_function gnutls_realloc;
2298 extern _SYM_EXPORT gnutls_calloc_function gnutls_calloc;
2299 extern _SYM_EXPORT gnutls_free_function gnutls_free;
2300 
2301 #ifdef GNUTLS_INTERNAL_BUILD
2302 #define gnutls_free(a) gnutls_free((void *)(a)), a = NULL
2303 #endif
2304 
2305 extern _SYM_EXPORT char *(*gnutls_strdup)(const char *);
2306 
2307 
2308 void gnutls_memset(void *data, int c, size_t size);
2309 
2310 
2311 int gnutls_memcmp(const void *s1, const void *s2, size_t n);
2312 
2313 typedef void (*gnutls_log_func)(int, const char *);
2314 typedef void (*gnutls_audit_log_func)(gnutls_session_t, const char *);
2315 void gnutls_global_set_log_function(gnutls_log_func log_func);
2316 void gnutls_global_set_audit_log_function(gnutls_audit_log_func log_func);
2317 void gnutls_global_set_log_level(int level);
2318 
2319 
2320 
2321 
2322 
2323 
2324 
2325 
2326 
2327 
2328 
2329 
2330 
2331 typedef int (*gnutls_keylog_func)(gnutls_session_t session, const char *label,
2332                   const gnutls_datum_t *secret);
2333 gnutls_keylog_func
2334 gnutls_session_get_keylog_function(const gnutls_session_t session);
2335 void gnutls_session_set_keylog_function(gnutls_session_t session,
2336                     gnutls_keylog_func func);
2337 
2338 
2339 
2340 int gnutls_dh_params_init(gnutls_dh_params_t *dh_params);
2341 void gnutls_dh_params_deinit(gnutls_dh_params_t dh_params);
2342 int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params,
2343                 const gnutls_datum_t *prime,
2344                 const gnutls_datum_t *generator);
2345 int gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params,
2346                 gnutls_x509_privkey_t key);
2347 int gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params,
2348                  const gnutls_datum_t *prime,
2349                  const gnutls_datum_t *generator,
2350                  unsigned key_bits);
2351 int gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params,
2352                  const gnutls_datum_t *prime,
2353                  const gnutls_datum_t *q,
2354                  const gnutls_datum_t *generator);
2355 int gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params,
2356                   const gnutls_datum_t *pkcs3_params,
2357                   gnutls_x509_crt_fmt_t format);
2358 int gnutls_dh_params_generate2(gnutls_dh_params_t params, unsigned int bits);
2359 int gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params,
2360                   gnutls_x509_crt_fmt_t format,
2361                   unsigned char *params_data,
2362                   size_t *params_data_size);
2363 int gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params,
2364                    gnutls_x509_crt_fmt_t format,
2365                    gnutls_datum_t *out);
2366 int gnutls_dh_params_export_raw(gnutls_dh_params_t params,
2367                 gnutls_datum_t *prime,
2368                 gnutls_datum_t *generator, unsigned int *bits);
2369 int gnutls_dh_params_cpy(gnutls_dh_params_t dst, gnutls_dh_params_t src);
2370 
2371 
2372 
2373 
2374 #include <sys/uio.h>
2375 typedef struct iovec giovec_t;
2376     
2377 
2378     typedef ssize_t (*gnutls_pull_func)(gnutls_transport_ptr_t, void *,
2379                         size_t);
2380 typedef ssize_t (*gnutls_push_func)(gnutls_transport_ptr_t, const void *,
2381                     size_t);
2382 
2383 int gnutls_system_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms);
2384 typedef int (*gnutls_pull_timeout_func)(gnutls_transport_ptr_t,
2385                     unsigned int ms);
2386 
2387 typedef ssize_t (*gnutls_vec_push_func)(gnutls_transport_ptr_t,
2388                     const giovec_t *iov, int iovcnt);
2389 
2390 typedef int (*gnutls_errno_func)(gnutls_transport_ptr_t);
2391 
2392 #if 0
2393  
2394 void gnutls_transport_set_int(gnutls_session_t session, int r);
2395 #endif
2396 
2397 void gnutls_transport_set_int2(gnutls_session_t session, int r, int s);
2398 #define gnutls_transport_set_int(s, i) gnutls_transport_set_int2(s, i, i)
2399 
2400 void gnutls_transport_get_int2(gnutls_session_t session, int *r, int *s);
2401 int gnutls_transport_get_int(gnutls_session_t session);
2402 
2403 void gnutls_transport_set_ptr(gnutls_session_t session,
2404                   gnutls_transport_ptr_t ptr);
2405 void gnutls_transport_set_ptr2(gnutls_session_t session,
2406                    gnutls_transport_ptr_t recv_ptr,
2407                    gnutls_transport_ptr_t send_ptr);
2408 
2409 gnutls_transport_ptr_t gnutls_transport_get_ptr(gnutls_session_t session);
2410 void gnutls_transport_get_ptr2(gnutls_session_t session,
2411                    gnutls_transport_ptr_t *recv_ptr,
2412                    gnutls_transport_ptr_t *send_ptr);
2413 
2414 void gnutls_transport_set_vec_push_function(gnutls_session_t session,
2415                         gnutls_vec_push_func vec_func);
2416 void gnutls_transport_set_push_function(gnutls_session_t session,
2417                     gnutls_push_func push_func);
2418 void gnutls_transport_set_pull_function(gnutls_session_t session,
2419                     gnutls_pull_func pull_func);
2420 
2421 void gnutls_transport_set_pull_timeout_function(gnutls_session_t session,
2422                         gnutls_pull_timeout_func func);
2423 
2424 void gnutls_transport_set_errno_function(gnutls_session_t session,
2425                      gnutls_errno_func errno_func);
2426 
2427 void gnutls_transport_set_errno(gnutls_session_t session, int err);
2428 
2429 
2430 
2431 void gnutls_session_set_ptr(gnutls_session_t session, void *ptr);
2432 void *gnutls_session_get_ptr(gnutls_session_t session);
2433 
2434 void gnutls_openpgp_send_cert(gnutls_session_t session,
2435                   gnutls_openpgp_crt_status_t status);
2436 
2437 
2438 
2439 int gnutls_fingerprint(gnutls_digest_algorithm_t algo,
2440                const gnutls_datum_t *data, void *result,
2441                size_t *result_size);
2442 
2443 
2444 
2445 
2446 
2447 
2448 
2449 typedef enum gnutls_random_art {
2450     GNUTLS_RANDOM_ART_OPENSSH = 1
2451 } gnutls_random_art_t;
2452 
2453 int gnutls_random_art(gnutls_random_art_t type, const char *key_type,
2454               unsigned int key_size, void *fpr, size_t fpr_size,
2455               gnutls_datum_t *art);
2456 
2457 
2458 #define GNUTLS_IDNA_FORCE_2008 (1 << 1)
2459 int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t *out,
2460             unsigned flags);
2461 int gnutls_idna_reverse_map(const char *input, unsigned ilen,
2462                 gnutls_datum_t *out, unsigned flags);
2463 
2464 
2465 
2466 
2467 typedef struct gnutls_srp_server_credentials_st *gnutls_srp_server_credentials_t;
2468 typedef struct gnutls_srp_client_credentials_st *gnutls_srp_client_credentials_t;
2469 
2470 void gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc);
2471 int gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t *sc);
2472 int gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res,
2473                       const char *username,
2474                       const char *password);
2475 
2476 void gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc);
2477 int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t *sc);
2478 int gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res,
2479                        const char *password_file,
2480                        const char *password_conf_file);
2481 
2482 const char *gnutls_srp_server_get_username(gnutls_session_t session);
2483 
2484 void gnutls_srp_set_prime_bits(gnutls_session_t session, unsigned int bits);
2485 
2486 int gnutls_srp_verifier(const char *username, const char *password,
2487             const gnutls_datum_t *salt,
2488             const gnutls_datum_t *generator,
2489             const gnutls_datum_t *prime, gnutls_datum_t *res);
2490 
2491 
2492 
2493 
2494 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_8192_group_prime;
2495 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_8192_group_generator;
2496 
2497 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_4096_group_prime;
2498 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_4096_group_generator;
2499 
2500 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_3072_group_prime;
2501 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_3072_group_generator;
2502 
2503 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_2048_group_prime;
2504 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_2048_group_generator;
2505 
2506 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1536_group_prime;
2507 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1536_group_generator;
2508 
2509 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1024_group_prime;
2510 extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1024_group_generator;
2511 
2512 
2513 
2514 
2515 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_8192_group_prime;
2516 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_8192_group_q;
2517 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_8192_group_generator;
2518 extern _SYM_EXPORT const unsigned int gnutls_ffdhe_8192_key_bits;
2519 
2520 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_6144_group_prime;
2521 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_6144_group_q;
2522 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_6144_group_generator;
2523 extern _SYM_EXPORT const unsigned int gnutls_ffdhe_6144_key_bits;
2524 
2525 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_4096_group_prime;
2526 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_4096_group_q;
2527 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_4096_group_generator;
2528 extern _SYM_EXPORT const unsigned int gnutls_ffdhe_4096_key_bits;
2529 
2530 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_3072_group_prime;
2531 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_3072_group_q;
2532 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_3072_group_generator;
2533 extern _SYM_EXPORT const unsigned int gnutls_ffdhe_3072_key_bits;
2534 
2535 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_2048_group_prime;
2536 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_2048_group_q;
2537 extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_2048_group_generator;
2538 extern _SYM_EXPORT const unsigned int gnutls_ffdhe_2048_key_bits;
2539 
2540 typedef int gnutls_srp_server_credentials_function(gnutls_session_t,
2541                            const char *username,
2542                            gnutls_datum_t *salt,
2543                            gnutls_datum_t *verifier,
2544                            gnutls_datum_t *generator,
2545                            gnutls_datum_t *prime);
2546 void gnutls_srp_set_server_credentials_function(
2547     gnutls_srp_server_credentials_t cred,
2548     gnutls_srp_server_credentials_function *func);
2549 
2550 typedef int gnutls_srp_client_credentials_function(gnutls_session_t, char **,
2551                            char **);
2552 void gnutls_srp_set_client_credentials_function(
2553     gnutls_srp_client_credentials_t cred,
2554     gnutls_srp_client_credentials_function *func);
2555 
2556 int gnutls_srp_base64_encode(const gnutls_datum_t *data, char *result,
2557                  size_t *result_size);
2558 int gnutls_srp_base64_encode2(const gnutls_datum_t *data,
2559                   gnutls_datum_t *result);
2560 
2561 int gnutls_srp_base64_decode(const gnutls_datum_t *b64_data, char *result,
2562                  size_t *result_size);
2563 int gnutls_srp_base64_decode2(const gnutls_datum_t *b64_data,
2564                   gnutls_datum_t *result);
2565 
2566 #define gnutls_srp_base64_encode_alloc gnutls_srp_base64_encode2
2567 #define gnutls_srp_base64_decode_alloc gnutls_srp_base64_decode2
2568 
2569 void gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t sc,
2570                       const gnutls_datum_t *seed,
2571                       unsigned int salt_length);
2572 
2573 
2574 typedef struct gnutls_psk_server_credentials_st *gnutls_psk_server_credentials_t;
2575 typedef struct gnutls_psk_client_credentials_st *gnutls_psk_client_credentials_t;
2576 
2577 
2578 
2579 
2580 
2581 
2582 
2583 
2584 
2585 typedef enum gnutls_psk_key_flags {
2586     GNUTLS_PSK_KEY_RAW = 0,
2587     GNUTLS_PSK_KEY_HEX = 1 << 0,
2588     GNUTLS_PSK_KEY_EXT = 1 << 1
2589 } gnutls_psk_key_flags;
2590 
2591 void gnutls_psk_free_client_credentials(gnutls_psk_client_credentials_t sc);
2592 int gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t *sc);
2593 int gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res,
2594                       const char *username,
2595                       const gnutls_datum_t *key,
2596                       gnutls_psk_key_flags flags);
2597 int gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res,
2598                        const gnutls_datum_t *username,
2599                        const gnutls_datum_t *key,
2600                        gnutls_psk_key_flags flags);
2601 
2602 void gnutls_psk_free_server_credentials(gnutls_psk_server_credentials_t sc);
2603 int gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t *sc);
2604 int gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t res,
2605                        const char *password_file);
2606 
2607 int gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t res,
2608                        const char *hint);
2609 
2610 const char *gnutls_psk_server_get_username(gnutls_session_t session);
2611 int gnutls_psk_server_get_username2(gnutls_session_t session,
2612                     gnutls_datum_t *out);
2613 const char *gnutls_psk_client_get_hint(gnutls_session_t session);
2614 
2615 typedef int gnutls_psk_server_credentials_function(gnutls_session_t,
2616                            const char *username,
2617                            gnutls_datum_t *key);
2618 typedef int gnutls_psk_server_credentials_function2(
2619     gnutls_session_t, const gnutls_datum_t *username, gnutls_datum_t *key);
2620 typedef int gnutls_psk_server_credentials_function3(
2621     gnutls_session_t, const gnutls_datum_t *username, gnutls_datum_t *key,
2622     gnutls_psk_key_flags *flags);
2623 void gnutls_psk_set_server_credentials_function(
2624     gnutls_psk_server_credentials_t cred,
2625     gnutls_psk_server_credentials_function *func);
2626 void gnutls_psk_set_server_credentials_function2(
2627     gnutls_psk_server_credentials_t cred,
2628     gnutls_psk_server_credentials_function2 *func);
2629 void gnutls_psk_set_server_credentials_function3(
2630     gnutls_psk_server_credentials_t cred,
2631     gnutls_psk_server_credentials_function3 *func);
2632 
2633 int gnutls_psk_format_imported_identity(const gnutls_datum_t *identity,
2634                     const gnutls_datum_t *context,
2635                     gnutls_protocol_t version,
2636                     gnutls_digest_algorithm_t hash,
2637                     gnutls_datum_t *imported_identity);
2638 
2639 typedef int gnutls_psk_client_credentials_function(gnutls_session_t,
2640                            char **username,
2641                            gnutls_datum_t *key);
2642 typedef int gnutls_psk_client_credentials_function2(gnutls_session_t,
2643                             gnutls_datum_t *username,
2644                             gnutls_datum_t *key);
2645 typedef int gnutls_psk_client_credentials_function3(
2646     gnutls_session_t, gnutls_datum_t *username, gnutls_datum_t *key,
2647     gnutls_psk_key_flags *flags);
2648 void gnutls_psk_set_client_credentials_function(
2649     gnutls_psk_client_credentials_t cred,
2650     gnutls_psk_client_credentials_function *func);
2651 void gnutls_psk_set_client_credentials_function2(
2652     gnutls_psk_client_credentials_t cred,
2653     gnutls_psk_client_credentials_function2 *func);
2654 void gnutls_psk_set_client_credentials_function3(
2655     gnutls_psk_client_credentials_t cred,
2656     gnutls_psk_client_credentials_function3 *func);
2657 
2658 int gnutls_hex_encode(const gnutls_datum_t *data, char *result,
2659               size_t *result_size);
2660 int gnutls_hex_decode(const gnutls_datum_t *hex_data, void *result,
2661               size_t *result_size);
2662 
2663 int gnutls_hex_encode2(const gnutls_datum_t *data, gnutls_datum_t *result);
2664 int gnutls_hex_decode2(const gnutls_datum_t *data, gnutls_datum_t *result);
2665 
2666 void gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res,
2667                      gnutls_dh_params_t dh_params);
2668 
2669 int gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res,
2670                       gnutls_sec_param_t sec_param);
2671 
2672 void gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t res,
2673                        gnutls_params_function *func);
2674 
2675 
2676 
2677 
2678 
2679 
2680 
2681 
2682 
2683 
2684 
2685 
2686 
2687 
2688 
2689 
2690 typedef enum gnutls_x509_subject_alt_name_t {
2691     GNUTLS_SAN_DNSNAME = 1,
2692     GNUTLS_SAN_RFC822NAME = 2,
2693     GNUTLS_SAN_URI = 3,
2694     GNUTLS_SAN_IPADDRESS = 4,
2695     GNUTLS_SAN_OTHERNAME = 5,
2696     GNUTLS_SAN_DN = 6,
2697     GNUTLS_SAN_REGISTERED_ID = 7,
2698     GNUTLS_SAN_MAX = GNUTLS_SAN_REGISTERED_ID,
2699     
2700 
2701 
2702     GNUTLS_SAN_OTHERNAME_XMPP = 1000,
2703     GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL,
2704     GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL
2705 } gnutls_x509_subject_alt_name_t;
2706 
2707 struct gnutls_openpgp_crt_int;
2708 typedef struct gnutls_openpgp_crt_int *gnutls_openpgp_crt_t;
2709 
2710 struct gnutls_openpgp_privkey_int;
2711 typedef struct gnutls_openpgp_privkey_int *gnutls_openpgp_privkey_t;
2712 
2713 struct gnutls_pkcs11_privkey_st;
2714 typedef struct gnutls_pkcs11_privkey_st *gnutls_pkcs11_privkey_t;
2715 
2716 
2717 
2718 
2719 
2720 
2721 
2722 
2723 
2724 
2725 typedef enum {
2726     GNUTLS_PRIVKEY_X509,
2727     GNUTLS_PRIVKEY_OPENPGP,
2728     GNUTLS_PRIVKEY_PKCS11,
2729     GNUTLS_PRIVKEY_EXT
2730 } gnutls_privkey_type_t;
2731 
2732 typedef struct gnutls_retr2_st {
2733     gnutls_certificate_type_t cert_type;
2734     gnutls_privkey_type_t key_type;
2735 
2736     union {
2737         gnutls_x509_crt_t *x509;
2738         gnutls_openpgp_crt_t pgp;
2739     } cert;
2740     unsigned int ncerts; 
2741 
2742     union {
2743         gnutls_x509_privkey_t x509;
2744         gnutls_openpgp_privkey_t pgp;
2745         gnutls_pkcs11_privkey_t pkcs11;
2746     } key;
2747 
2748     unsigned int deinit_all; 
2749 } gnutls_retr2_st;
2750 
2751 
2752 
2753 
2754 gnutls_credentials_type_t gnutls_auth_get_type(gnutls_session_t session);
2755 gnutls_credentials_type_t gnutls_auth_server_get_type(gnutls_session_t session);
2756 gnutls_credentials_type_t gnutls_auth_client_get_type(gnutls_session_t session);
2757 
2758 
2759 
2760 void gnutls_dh_set_prime_bits(gnutls_session_t session, unsigned int bits);
2761 int gnutls_dh_get_secret_bits(gnutls_session_t session);
2762 int gnutls_dh_get_peers_public_bits(gnutls_session_t session);
2763 int gnutls_dh_get_prime_bits(gnutls_session_t session);
2764 
2765 int gnutls_dh_get_group(gnutls_session_t session, gnutls_datum_t *raw_gen,
2766             gnutls_datum_t *raw_prime);
2767 int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t *raw_key);
2768 
2769 
2770 
2771 
2772 
2773 
2774 
2775 
2776 
2777 
2778 typedef int gnutls_certificate_retrieve_function(
2779     gnutls_session_t, const gnutls_datum_t *req_ca_rdn, int nreqs,
2780     const gnutls_pk_algorithm_t *pk_algos, int pk_algos_length,
2781     gnutls_retr2_st *);
2782 
2783 void gnutls_certificate_set_retrieve_function(
2784     gnutls_certificate_credentials_t cred,
2785     gnutls_certificate_retrieve_function *func);
2786 
2787 void gnutls_certificate_set_verify_function(
2788     gnutls_certificate_credentials_t cred,
2789     gnutls_certificate_verify_function *func);
2790 
2791 void gnutls_certificate_server_set_request(gnutls_session_t session,
2792                        gnutls_certificate_request_t req);
2793 
2794 
2795 
2796 const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t session,
2797                            unsigned int *list_size);
2798 const gnutls_datum_t *gnutls_certificate_get_ours(gnutls_session_t session);
2799 
2800 int gnutls_certificate_get_peers_subkey_id(gnutls_session_t session,
2801                        gnutls_datum_t *id);
2802 
2803 time_t gnutls_certificate_activation_time_peers(gnutls_session_t session);
2804 time_t gnutls_certificate_expiration_time_peers(gnutls_session_t session);
2805 
2806 unsigned gnutls_certificate_client_get_request_status(gnutls_session_t session);
2807 int gnutls_certificate_verify_peers2(gnutls_session_t session,
2808                      unsigned int *status);
2809 int gnutls_certificate_verify_peers3(gnutls_session_t session,
2810                      const char *hostname,
2811                      unsigned int *status);
2812 
2813 int gnutls_certificate_verify_peers(gnutls_session_t session,
2814                     gnutls_typed_vdata_st *data,
2815                     unsigned int elements,
2816                     unsigned int *status);
2817 
2818 int gnutls_certificate_verification_status_print(unsigned int status,
2819                          gnutls_certificate_type_t type,
2820                          gnutls_datum_t *out,
2821                          unsigned int flags);
2822 
2823 int gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t *data,
2824                  char *result, size_t *result_size);
2825 int gnutls_pem_base64_decode(const char *header, const gnutls_datum_t *b64_data,
2826                  unsigned char *result, size_t *result_size);
2827 
2828 int gnutls_pem_base64_encode2(const char *msg, const gnutls_datum_t *data,
2829                   gnutls_datum_t *result);
2830 int gnutls_pem_base64_decode2(const char *header,
2831                   const gnutls_datum_t *b64_data,
2832                   gnutls_datum_t *result);
2833 
2834 int gnutls_base64_encode2(const gnutls_datum_t *data, gnutls_datum_t *result);
2835 int gnutls_base64_decode2(const gnutls_datum_t *b64_data,
2836               gnutls_datum_t *result);
2837 
2838 #define gnutls_pem_base64_encode_alloc gnutls_pem_base64_encode2
2839 #define gnutls_pem_base64_decode_alloc gnutls_pem_base64_decode2
2840 
2841 
2842 
2843 
2844 
2845 #define GNUTLS_KEY_DIGITAL_SIGNATURE 128
2846 #define GNUTLS_KEY_NON_REPUDIATION 64
2847 
2848 #define GNUTLS_KEY_KEY_ENCIPHERMENT 32
2849 #define GNUTLS_KEY_DATA_ENCIPHERMENT 16
2850 #define GNUTLS_KEY_KEY_AGREEMENT 8
2851 #define GNUTLS_KEY_KEY_CERT_SIGN 4
2852 #define GNUTLS_KEY_CRL_SIGN 2
2853 #define GNUTLS_KEY_ENCIPHER_ONLY 1
2854 #define GNUTLS_KEY_DECIPHER_ONLY 32768
2855 
2856 void gnutls_certificate_set_params_function(
2857     gnutls_certificate_credentials_t res, gnutls_params_function *func);
2858 void gnutls_anon_set_params_function(gnutls_anon_server_credentials_t res,
2859                      gnutls_params_function *func);
2860 void gnutls_psk_set_params_function(gnutls_psk_server_credentials_t res,
2861                     gnutls_params_function *func);
2862 
2863 int gnutls_hex2bin(const char *hex_data, size_t hex_size, void *bin_data,
2864            size_t *bin_size);
2865 
2866 
2867 
2868 
2869 
2870 typedef int (*gnutls_tdb_store_func)(const char *db_name, const char *host,
2871                      const char *service, time_t expiration,
2872                      const gnutls_datum_t *pubkey);
2873 
2874 typedef int (*gnutls_tdb_store_commitment_func)(
2875     const char *db_name, const char *host, const char *service,
2876     time_t expiration, gnutls_digest_algorithm_t hash_algo,
2877     const gnutls_datum_t *hash);
2878 
2879 
2880 
2881 typedef int (*gnutls_tdb_verify_func)(const char *db_name, const char *host,
2882                       const char *service,
2883                       const gnutls_datum_t *pubkey);
2884 
2885 struct gnutls_tdb_int;
2886 typedef struct gnutls_tdb_int *gnutls_tdb_t;
2887 
2888 int gnutls_tdb_init(gnutls_tdb_t *tdb);
2889 void gnutls_tdb_set_store_func(gnutls_tdb_t tdb, gnutls_tdb_store_func store);
2890 void gnutls_tdb_set_store_commitment_func(
2891     gnutls_tdb_t tdb, gnutls_tdb_store_commitment_func cstore);
2892 void gnutls_tdb_set_verify_func(gnutls_tdb_t tdb,
2893                 gnutls_tdb_verify_func verify);
2894 void gnutls_tdb_deinit(gnutls_tdb_t tdb);
2895 
2896 int gnutls_verify_stored_pubkey(const char *db_name, gnutls_tdb_t tdb,
2897                 const char *host, const char *service,
2898                 gnutls_certificate_type_t cert_type,
2899                 const gnutls_datum_t *cert, unsigned int flags);
2900 
2901 #define GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN 1
2902 int gnutls_store_commitment(const char *db_name, gnutls_tdb_t tdb,
2903                 const char *host, const char *service,
2904                 gnutls_digest_algorithm_t hash_algo,
2905                 const gnutls_datum_t *hash, time_t expiration,
2906                 unsigned int flags);
2907 
2908 int gnutls_store_pubkey(const char *db_name, gnutls_tdb_t tdb, const char *host,
2909             const char *service,
2910             gnutls_certificate_type_t cert_type,
2911             const gnutls_datum_t *cert, time_t expiration,
2912             unsigned int flags);
2913 
2914 
2915 int gnutls_load_file(const char *filename, gnutls_datum_t *data);
2916 
2917 unsigned gnutls_url_is_supported(const char *url);
2918 
2919 
2920 
2921 
2922 
2923 
2924 
2925 
2926 
2927 
2928 
2929 
2930 
2931 
2932 typedef enum {
2933     GNUTLS_PIN_USER = (1 << 0),
2934     GNUTLS_PIN_SO = (1 << 1),
2935     GNUTLS_PIN_FINAL_TRY = (1 << 2),
2936     GNUTLS_PIN_COUNT_LOW = (1 << 3),
2937     GNUTLS_PIN_CONTEXT_SPECIFIC = (1 << 4),
2938     GNUTLS_PIN_WRONG = (1 << 5)
2939 } gnutls_pin_flag_t;
2940 
2941 #define GNUTLS_PKCS11_PIN_USER GNUTLS_PIN_USER
2942 #define GNUTLS_PKCS11_PIN_SO GNUTLS_PIN_SO
2943 #define GNUTLS_PKCS11_PIN_FINAL_TRY GNUTLS_PIN_FINAL_TRY
2944 #define GNUTLS_PKCS11_PIN_COUNT_LOW GNUTLS_PIN_COUNT_LOW
2945 #define GNUTLS_PKCS11_PIN_CONTEXT_SPECIFIC GNUTLS_PIN_CONTEXT_SPECIFIC
2946 #define GNUTLS_PKCS11_PIN_WRONG GNUTLS_PIN_WRONG
2947 
2948 
2949 
2950 
2951 
2952 
2953 
2954 
2955 
2956 
2957 
2958 
2959 
2960 
2961 
2962 
2963 
2964 
2965 
2966 
2967 
2968 
2969 
2970 
2971 
2972 
2973 
2974 
2975 
2976 
2977 
2978 
2979 
2980 
2981 typedef int (*gnutls_pin_callback_t)(void *userdata, int attempt,
2982                      const char *token_url,
2983                      const char *token_label,
2984                      unsigned int flags, char *pin,
2985                      size_t pin_max);
2986 
2987 void gnutls_certificate_set_pin_function(gnutls_certificate_credentials_t,
2988                      gnutls_pin_callback_t fn,
2989                      void *userdata);
2990 
2991 
2992 typedef struct gnutls_buffer_st *gnutls_buffer_t;
2993 
2994 int gnutls_buffer_append_data(gnutls_buffer_t, const void *data,
2995                   size_t data_size);
2996 
2997 #define GNUTLS_UTF8_IGNORE_ERRS 1
2998 int gnutls_utf8_password_normalize(const unsigned char *password,
2999                    unsigned password_len, gnutls_datum_t *out,
3000                    unsigned flags);
3001 
3002 
3003 
3004 typedef void *gnutls_ext_priv_data_t;
3005 
3006 void gnutls_ext_set_data(gnutls_session_t session, unsigned type,
3007              gnutls_ext_priv_data_t);
3008 int gnutls_ext_get_data(gnutls_session_t session, unsigned type,
3009             gnutls_ext_priv_data_t *);
3010 
3011 unsigned gnutls_ext_get_current_msg(gnutls_session_t session);
3012 
3013 typedef int (*gnutls_ext_recv_func)(gnutls_session_t session,
3014                     const unsigned char *data, size_t len);
3015 
3016 typedef int (*gnutls_ext_send_func)(gnutls_session_t session,
3017                     gnutls_buffer_t extdata);
3018 
3019 typedef void (*gnutls_ext_deinit_data_func)(gnutls_ext_priv_data_t data);
3020 
3021 typedef int (*gnutls_ext_pack_func)(gnutls_ext_priv_data_t data,
3022                     gnutls_buffer_t packed_data);
3023 
3024 typedef int (*gnutls_ext_unpack_func)(gnutls_buffer_t packed_data,
3025                       gnutls_ext_priv_data_t *data);
3026 
3027 #define GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO 1
3028 #define GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO (1 << 1)
3029 typedef int (*gnutls_ext_raw_process_func)(void *ctx, unsigned tls_id,
3030                        const unsigned char *data,
3031                        unsigned data_size);
3032 int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb,
3033              const gnutls_datum_t *data, unsigned int flags);
3034 
3035 
3036 
3037 
3038 
3039 
3040 
3041 
3042 
3043 
3044 
3045 
3046 
3047 
3048 typedef enum {
3049     GNUTLS_EXT_ANY = 0,
3050     GNUTLS_EXT_APPLICATION = 1,
3051     GNUTLS_EXT_TLS = 2,
3052     GNUTLS_EXT_MANDATORY = 3,
3053     GNUTLS_EXT_NONE = 4,
3054     GNUTLS_EXT_VERSION_NEG = 5
3055 } gnutls_ext_parse_type_t;
3056 
3057 
3058 
3059 
3060 
3061 
3062 
3063 
3064 
3065 
3066 
3067 
3068 
3069 
3070 
3071 typedef enum {
3072     GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL = 1,
3073     GNUTLS_EXT_FLAG_CLIENT_HELLO = (1 << 1),
3074     GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO = (1 << 2),
3075     GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO = (1 << 3),
3076     GNUTLS_EXT_FLAG_EE = (1 << 4), 
3077     GNUTLS_EXT_FLAG_HRR = (1 << 5),
3078     GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST = (1 << 6),
3079     GNUTLS_EXT_FLAG_TLS = (1 << 7),
3080     GNUTLS_EXT_FLAG_DTLS = (1 << 8)
3081 } gnutls_ext_flags_t;
3082 
3083 
3084 
3085 int gnutls_ext_register(const char *name, int type,
3086             gnutls_ext_parse_type_t parse_point,
3087             gnutls_ext_recv_func recv_func,
3088             gnutls_ext_send_func send_func,
3089             gnutls_ext_deinit_data_func deinit_func,
3090             gnutls_ext_pack_func pack_func,
3091             gnutls_ext_unpack_func unpack_func);
3092 
3093 int gnutls_session_ext_register(gnutls_session_t, const char *name, int type,
3094                 gnutls_ext_parse_type_t parse_point,
3095                 gnutls_ext_recv_func recv_func,
3096                 gnutls_ext_send_func send_func,
3097                 gnutls_ext_deinit_data_func deinit_func,
3098                 gnutls_ext_pack_func pack_func,
3099                 gnutls_ext_unpack_func unpack_func,
3100                 unsigned flags);
3101 
3102 const char *gnutls_ext_get_name(unsigned int ext);
3103 const char *gnutls_ext_get_name2(gnutls_session_t session, unsigned int tls_id,
3104                  gnutls_ext_parse_type_t parse_point);
3105 
3106 
3107 
3108 typedef int (*gnutls_supp_recv_func)(gnutls_session_t session,
3109                      const unsigned char *data,
3110                      size_t data_size);
3111 typedef int (*gnutls_supp_send_func)(gnutls_session_t session,
3112                      gnutls_buffer_t buf);
3113 
3114 int gnutls_supplemental_register(const char *name,
3115                  gnutls_supplemental_data_format_type_t type,
3116                  gnutls_supp_recv_func supp_recv_func,
3117                  gnutls_supp_send_func supp_send_func);
3118 
3119 int gnutls_session_supplemental_register(
3120     gnutls_session_t session, const char *name,
3121     gnutls_supplemental_data_format_type_t type,
3122     gnutls_supp_recv_func supp_recv_func,
3123     gnutls_supp_send_func supp_send_func, unsigned int flags);
3124 
3125 void gnutls_supplemental_recv(gnutls_session_t session,
3126                   unsigned do_recv_supplemental);
3127 
3128 void gnutls_supplemental_send(gnutls_session_t session,
3129                   unsigned do_send_supplemental);
3130 
3131 
3132 
3133 typedef struct gnutls_anti_replay_st *gnutls_anti_replay_t;
3134 
3135 int gnutls_anti_replay_init(gnutls_anti_replay_t *anti_replay);
3136 void gnutls_anti_replay_deinit(gnutls_anti_replay_t anti_replay);
3137 void gnutls_anti_replay_set_window(gnutls_anti_replay_t anti_replay,
3138                    unsigned int window);
3139 void gnutls_anti_replay_enable(gnutls_session_t session,
3140                    gnutls_anti_replay_t anti_replay);
3141 
3142 typedef int (*gnutls_db_add_func)(void *, time_t exp_time,
3143                   const gnutls_datum_t *key,
3144                   const gnutls_datum_t *data);
3145 
3146 void gnutls_anti_replay_set_add_function(gnutls_anti_replay_t,
3147                      gnutls_db_add_func add_func);
3148 
3149 void gnutls_anti_replay_set_ptr(gnutls_anti_replay_t, void *ptr);
3150 
3151 
3152 
3153 
3154 
3155 
3156 
3157 
3158 
3159 
3160 
3161 
3162 
3163 
3164 
3165 typedef enum {
3166     GNUTLS_ENCRYPTION_LEVEL_INITIAL,
3167     GNUTLS_ENCRYPTION_LEVEL_EARLY,
3168     GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE,
3169     GNUTLS_ENCRYPTION_LEVEL_APPLICATION
3170 } gnutls_record_encryption_level_t;
3171 
3172 
3173 
3174 
3175 
3176 
3177 
3178 
3179 
3180 
3181 
3182 
3183 
3184 
3185 
3186 typedef int (*gnutls_handshake_read_func)(gnutls_session_t session,
3187                       gnutls_record_encryption_level_t level,
3188                       gnutls_handshake_description_t htype,
3189                       const void *data, size_t data_size);
3190 
3191 void gnutls_handshake_set_read_function(gnutls_session_t session,
3192                     gnutls_handshake_read_func func);
3193 
3194 int gnutls_handshake_write(gnutls_session_t session,
3195                gnutls_record_encryption_level_t level,
3196                const void *data, size_t data_size);
3197 
3198 
3199 
3200 
3201 
3202 
3203 
3204 
3205 
3206 
3207 
3208 
3209 
3210 
3211 
3212 typedef int (*gnutls_handshake_secret_func)(
3213     gnutls_session_t session, gnutls_record_encryption_level_t level,
3214     const void *secret_read, const void *secret_write, size_t secret_size);
3215 
3216 void gnutls_handshake_set_secret_function(gnutls_session_t session,
3217                       gnutls_handshake_secret_func func);
3218 
3219 
3220 
3221 
3222 
3223 
3224 
3225 
3226 
3227 
3228 
3229 
3230 
3231 
3232 typedef int (*gnutls_alert_read_func)(gnutls_session_t session,
3233                       gnutls_record_encryption_level_t level,
3234                       gnutls_alert_level_t alert_level,
3235                       gnutls_alert_description_t alert_desc);
3236 
3237 void gnutls_alert_set_read_function(gnutls_session_t session,
3238                     gnutls_alert_read_func func);
3239 
3240 
3241 unsigned gnutls_fips140_mode_enabled(void);
3242 
3243 
3244 
3245 
3246 
3247 
3248 
3249 
3250 
3251 
3252 
3253 
3254 
3255 
3256 
3257 
3258 
3259 typedef enum gnutls_fips_mode_t {
3260     GNUTLS_FIPS140_DISABLED = 0,
3261     GNUTLS_FIPS140_STRICT = 1,
3262     GNUTLS_FIPS140_SELFTESTS = 2,
3263     GNUTLS_FIPS140_LAX = 3,
3264     GNUTLS_FIPS140_LOG = 4
3265 } gnutls_fips_mode_t;
3266 
3267 #define GNUTLS_FIPS140_SET_MODE_THREAD 1
3268 
3269 void gnutls_fips140_set_mode(gnutls_fips_mode_t mode, unsigned flags);
3270 
3271 #define GNUTLS_FIPS140_SET_LAX_MODE()                            \
3272     do {                                                     \
3273         if (gnutls_fips140_mode_enabled())               \
3274             gnutls_fips140_set_mode(                 \
3275                 GNUTLS_FIPS140_LAX,              \
3276                 GNUTLS_FIPS140_SET_MODE_THREAD); \
3277     } while (0)
3278 
3279 #define GNUTLS_FIPS140_SET_STRICT_MODE()                         \
3280     do {                                                     \
3281         if (gnutls_fips140_mode_enabled())               \
3282             gnutls_fips140_set_mode(                 \
3283                 GNUTLS_FIPS140_STRICT,           \
3284                 GNUTLS_FIPS140_SET_MODE_THREAD); \
3285     } while (0)
3286 
3287 typedef struct gnutls_fips140_context_st *gnutls_fips140_context_t;
3288 
3289 int gnutls_fips140_context_init(gnutls_fips140_context_t *context);
3290 void gnutls_fips140_context_deinit(gnutls_fips140_context_t context);
3291 
3292 
3293 
3294 
3295 
3296 
3297 
3298 
3299 
3300 
3301 
3302 
3303 
3304 
3305 
3306 
3307 
3308 
3309 
3310 
3311 
3312 
3313 typedef enum {
3314     GNUTLS_FIPS140_OP_INITIAL,
3315     GNUTLS_FIPS140_OP_APPROVED,
3316     GNUTLS_FIPS140_OP_NOT_APPROVED,
3317     GNUTLS_FIPS140_OP_ERROR
3318 } gnutls_fips140_operation_state_t;
3319 
3320 gnutls_fips140_operation_state_t
3321 gnutls_fips140_get_operation_state(gnutls_fips140_context_t context);
3322 
3323 int gnutls_fips140_push_context(gnutls_fips140_context_t context);
3324 int gnutls_fips140_pop_context(void);
3325 
3326 int gnutls_fips140_run_self_tests(void);
3327 
3328 
3329 
3330 
3331 
3332 
3333 
3334 
3335 
3336 
3337 
3338 
3339 typedef enum {
3340     GNUTLS_KTLS_RECV = 1 << 0,
3341     GNUTLS_KTLS_SEND = 1 << 1,
3342     GNUTLS_KTLS_DUPLEX = GNUTLS_KTLS_RECV | GNUTLS_KTLS_SEND,
3343 } gnutls_transport_ktls_enable_flags_t;
3344 
3345 gnutls_transport_ktls_enable_flags_t
3346 gnutls_transport_is_ktls_enabled(gnutls_session_t session);
3347 
3348 
3349 
3350 
3351 
3352 #define GNUTLS_E_SUCCESS 0
3353 #define GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM -3
3354 #define GNUTLS_E_UNKNOWN_CIPHER_TYPE -6
3355 #define GNUTLS_E_LARGE_PACKET -7
3356 #define GNUTLS_E_UNSUPPORTED_VERSION_PACKET -8 
3357 #define GNUTLS_E_TLS_PACKET_DECODING_ERROR GNUTLS_E_UNEXPECTED_PACKET_LENGTH
3358 #define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9 
3359 #define GNUTLS_E_INVALID_SESSION -10
3360 #define GNUTLS_E_FATAL_ALERT_RECEIVED -12
3361 #define GNUTLS_E_UNEXPECTED_PACKET -15 
3362 #define GNUTLS_E_WARNING_ALERT_RECEIVED -16
3363 #define GNUTLS_E_ERROR_IN_FINISHED_PACKET -18
3364 #define GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET -19
3365 #define GNUTLS_E_UNKNOWN_CIPHER_SUITE -21
3366 
3367 #define GNUTLS_E_UNWANTED_ALGORITHM -22
3368 #define GNUTLS_E_MPI_SCAN_FAILED -23
3369 #define GNUTLS_E_DECRYPTION_FAILED \
3370     -24 
3371 #define GNUTLS_E_MEMORY_ERROR -25
3372 #define GNUTLS_E_DECOMPRESSION_FAILED -26 
3373 #define GNUTLS_E_COMPRESSION_FAILED -27
3374 #define GNUTLS_E_AGAIN -28
3375 #define GNUTLS_E_EXPIRED -29
3376 #define GNUTLS_E_DB_ERROR -30
3377 #define GNUTLS_E_SRP_PWD_ERROR GNUTLS_E_KEYFILE_ERROR
3378 #define GNUTLS_E_KEYFILE_ERROR -31
3379 #define GNUTLS_E_INSUFFICIENT_CREDENTIALS -32
3380 #define GNUTLS_E_INSUFICIENT_CREDENTIALS \
3381     GNUTLS_E_INSUFFICIENT_CREDENTIALS 
3382 #define GNUTLS_E_INSUFFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS
3383 #define GNUTLS_E_INSUFICIENT_CRED \
3384     GNUTLS_E_INSUFFICIENT_CREDENTIALS 
3385 
3386 #define GNUTLS_E_HASH_FAILED -33
3387 #define GNUTLS_E_BASE64_DECODING_ERROR -34
3388 
3389 #define GNUTLS_E_MPI_PRINT_FAILED -35
3390 #define GNUTLS_E_REHANDSHAKE -37 
3391 #define GNUTLS_E_GOT_APPLICATION_DATA -38
3392 #define GNUTLS_E_RECORD_LIMIT_REACHED -39
3393 #define GNUTLS_E_ENCRYPTION_FAILED -40
3394 
3395 #define GNUTLS_E_PK_ENCRYPTION_FAILED -44
3396 #define GNUTLS_E_PK_DECRYPTION_FAILED -45
3397 #define GNUTLS_E_PK_SIGN_FAILED -46
3398 #define GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION -47
3399 #define GNUTLS_E_KEY_USAGE_VIOLATION -48
3400 #define GNUTLS_E_NO_CERTIFICATE_FOUND -49 
3401 #define GNUTLS_E_INVALID_REQUEST -50
3402 #define GNUTLS_E_SHORT_MEMORY_BUFFER -51
3403 #define GNUTLS_E_INTERRUPTED -52
3404 #define GNUTLS_E_PUSH_ERROR -53
3405 #define GNUTLS_E_PULL_ERROR -54
3406 #define GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER -55 
3407 #define GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -56
3408 #define GNUTLS_E_PKCS1_WRONG_PAD -57
3409 #define GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION -58
3410 #define GNUTLS_E_INTERNAL_ERROR -59
3411 #define GNUTLS_E_DH_PRIME_UNACCEPTABLE -63
3412 #define GNUTLS_E_FILE_ERROR -64
3413 #define GNUTLS_E_TOO_MANY_EMPTY_PACKETS -78
3414 #define GNUTLS_E_UNKNOWN_PK_ALGORITHM -80
3415 #define GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS -81
3416 #define GNUTLS_E_RECEIVED_DISALLOWED_NAME -82 
3417 #define GNUTLS_E_CERTIFICATE_REQUIRED -112 
3418 #define GNUTLS_E_UNSUPPORTED_ENCRYPTION_ALGORITHM -113
3419 
3420 
3421 
3422 
3423 #define GNUTLS_E_NO_TEMPORARY_RSA_PARAMS -84
3424 
3425 #define GNUTLS_E_NO_COMPRESSION_ALGORITHMS -86
3426 #define GNUTLS_E_NO_CIPHER_SUITES -87
3427 
3428 #define GNUTLS_E_OPENPGP_GETKEY_FAILED -88
3429 #define GNUTLS_E_PK_SIG_VERIFY_FAILED -89
3430 
3431 #define GNUTLS_E_ILLEGAL_SRP_USERNAME -90
3432 #define GNUTLS_E_SRP_PWD_PARSING_ERROR GNUTLS_E_KEYFILE_PARSING_ERROR
3433 #define GNUTLS_E_KEYFILE_PARSING_ERROR -91
3434 #define GNUTLS_E_NO_TEMPORARY_DH_PARAMS -93
3435 
3436 
3437 
3438 #define GNUTLS_E_ASN1_ELEMENT_NOT_FOUND -67
3439 #define GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND -68
3440 #define GNUTLS_E_ASN1_DER_ERROR -69
3441 #define GNUTLS_E_ASN1_VALUE_NOT_FOUND -70
3442 #define GNUTLS_E_ASN1_GENERIC_ERROR -71
3443 #define GNUTLS_E_ASN1_VALUE_NOT_VALID -72
3444 #define GNUTLS_E_ASN1_TAG_ERROR -73
3445 #define GNUTLS_E_ASN1_TAG_IMPLICIT -74
3446 #define GNUTLS_E_ASN1_TYPE_ANY_ERROR -75
3447 #define GNUTLS_E_ASN1_SYNTAX_ERROR -76
3448 #define GNUTLS_E_ASN1_DER_OVERFLOW -77
3449 #define GNUTLS_E_OPENPGP_UID_REVOKED -79
3450 #define GNUTLS_E_CERTIFICATE_ERROR -43
3451 #define GNUTLS_E_X509_CERTIFICATE_ERROR GNUTLS_E_CERTIFICATE_ERROR
3452 #define GNUTLS_E_CERTIFICATE_KEY_MISMATCH -60
3453 #define GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE \
3454     -61 
3455 #define GNUTLS_E_X509_UNKNOWN_SAN -62
3456 #define GNUTLS_E_OPENPGP_FINGERPRINT_UNSUPPORTED -94
3457 #define GNUTLS_E_X509_UNSUPPORTED_ATTRIBUTE -95
3458 #define GNUTLS_E_UNKNOWN_HASH_ALGORITHM -96
3459 #define GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE -97
3460 #define GNUTLS_E_UNKNOWN_PKCS_BAG_TYPE -98
3461 #define GNUTLS_E_INVALID_PASSWORD -99
3462 #define GNUTLS_E_MAC_VERIFY_FAILED -100 
3463 #define GNUTLS_E_CONSTRAINT_ERROR -101
3464 
3465 #define GNUTLS_E_WARNING_IA_IPHF_RECEIVED -102
3466 #define GNUTLS_E_WARNING_IA_FPHF_RECEIVED -103
3467 
3468 #define GNUTLS_E_IA_VERIFY_FAILED -104
3469 #define GNUTLS_E_UNKNOWN_ALGORITHM -105
3470 #define GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM -106
3471 #define GNUTLS_E_SAFE_RENEGOTIATION_FAILED -107
3472 #define GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED -108
3473 #define GNUTLS_E_UNKNOWN_SRP_USERNAME -109
3474 #define GNUTLS_E_PREMATURE_TERMINATION -110
3475 
3476 #define GNUTLS_E_MALFORMED_CIDR -111
3477 
3478 #define GNUTLS_E_BASE64_ENCODING_ERROR -201
3479 #define GNUTLS_E_INCOMPATIBLE_GCRYPT_LIBRARY -202 
3480 #define GNUTLS_E_INCOMPATIBLE_CRYPTO_LIBRARY -202
3481 #define GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY -203
3482 
3483 #define GNUTLS_E_OPENPGP_KEYRING_ERROR -204
3484 #define GNUTLS_E_X509_UNSUPPORTED_OID -205
3485 
3486 #define GNUTLS_E_RANDOM_FAILED -206
3487 #define GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR -207
3488 
3489 #define GNUTLS_E_OPENPGP_SUBKEY_ERROR -208
3490 
3491 #define GNUTLS_E_CRYPTO_ALREADY_REGISTERED GNUTLS_E_ALREADY_REGISTERED
3492 #define GNUTLS_E_ALREADY_REGISTERED -209
3493 
3494 #define GNUTLS_E_HANDSHAKE_TOO_LARGE -210
3495 
3496 #define GNUTLS_E_CRYPTODEV_IOCTL_ERROR -211
3497 #define GNUTLS_E_CRYPTODEV_DEVICE_ERROR -212
3498 
3499 #define GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE -213
3500 #define GNUTLS_E_BAD_COOKIE -214
3501 #define GNUTLS_E_OPENPGP_PREFERRED_KEY_ERROR -215
3502 #define GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL -216
3503 #define GNUTLS_E_INSUFFICIENT_SECURITY -217
3504 
3505 #define GNUTLS_E_HEARTBEAT_PONG_RECEIVED -292
3506 #define GNUTLS_E_HEARTBEAT_PING_RECEIVED -293
3507 
3508 #define GNUTLS_E_UNRECOGNIZED_NAME -294
3509 
3510 
3511 #define GNUTLS_E_PKCS11_ERROR -300
3512 #define GNUTLS_E_PKCS11_LOAD_ERROR -301
3513 #define GNUTLS_E_PARSING_ERROR -302
3514 #define GNUTLS_E_PKCS11_PIN_ERROR -303
3515 
3516 #define GNUTLS_E_PKCS11_SLOT_ERROR -305
3517 #define GNUTLS_E_LOCKING_ERROR -306
3518 #define GNUTLS_E_PKCS11_ATTRIBUTE_ERROR -307
3519 #define GNUTLS_E_PKCS11_DEVICE_ERROR -308
3520 #define GNUTLS_E_PKCS11_DATA_ERROR -309
3521 #define GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR -310
3522 #define GNUTLS_E_PKCS11_KEY_ERROR -311
3523 #define GNUTLS_E_PKCS11_PIN_EXPIRED -312
3524 #define GNUTLS_E_PKCS11_PIN_LOCKED -313
3525 #define GNUTLS_E_PKCS11_SESSION_ERROR -314
3526 #define GNUTLS_E_PKCS11_SIGNATURE_ERROR -315
3527 #define GNUTLS_E_PKCS11_TOKEN_ERROR -316
3528 #define GNUTLS_E_PKCS11_USER_ERROR -317
3529 
3530 #define GNUTLS_E_CRYPTO_INIT_FAILED -318
3531 #define GNUTLS_E_TIMEDOUT -319
3532 #define GNUTLS_E_USER_ERROR -320
3533 #define GNUTLS_E_ECC_NO_SUPPORTED_CURVES -321
3534 #define GNUTLS_E_ECC_UNSUPPORTED_CURVE -322
3535 #define GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE -323
3536 #define GNUTLS_E_CERTIFICATE_LIST_UNSORTED -324
3537 #define GNUTLS_E_ILLEGAL_PARAMETER -325 
3538 #define GNUTLS_E_NO_PRIORITIES_WERE_SET -326
3539 #define GNUTLS_E_X509_UNSUPPORTED_EXTENSION -327
3540 #define GNUTLS_E_SESSION_EOF -328
3541 
3542 #define GNUTLS_E_TPM_ERROR -329
3543 #define GNUTLS_E_TPM_KEY_PASSWORD_ERROR -330
3544 #define GNUTLS_E_TPM_SRK_PASSWORD_ERROR -331
3545 #define GNUTLS_E_TPM_SESSION_ERROR -332
3546 #define GNUTLS_E_TPM_KEY_NOT_FOUND -333
3547 #define GNUTLS_E_TPM_UNINITIALIZED -334
3548 #define GNUTLS_E_TPM_NO_LIB -335
3549 
3550 #define GNUTLS_E_NO_CERTIFICATE_STATUS -340
3551 #define GNUTLS_E_OCSP_RESPONSE_ERROR -341
3552 #define GNUTLS_E_RANDOM_DEVICE_ERROR -342
3553 #define GNUTLS_E_AUTH_ERROR -343
3554 #define GNUTLS_E_NO_APPLICATION_PROTOCOL -344
3555 #define GNUTLS_E_SOCKETS_INIT_ERROR -345
3556 #define GNUTLS_E_KEY_IMPORT_FAILED -346
3557 #define GNUTLS_E_INAPPROPRIATE_FALLBACK \
3558     -347 
3559 #define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR -348
3560 #define GNUTLS_E_PRIVKEY_VERIFICATION_ERROR -349
3561 #define GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH -350 
3562 #define GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING -351
3563 
3564 #define GNUTLS_E_SELF_TEST_ERROR -400
3565 #define GNUTLS_E_NO_SELF_TEST -401
3566 #define GNUTLS_E_LIB_IN_ERROR_STATE -402
3567 #define GNUTLS_E_PK_GENERATION_ERROR -403
3568 #define GNUTLS_E_IDNA_ERROR -404
3569 
3570 #define GNUTLS_E_NEED_FALLBACK -405
3571 #define GNUTLS_E_SESSION_USER_ID_CHANGED -406
3572 #define GNUTLS_E_HANDSHAKE_DURING_FALSE_START -407
3573 #define GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE -408
3574 #define GNUTLS_E_PK_INVALID_PUBKEY -409
3575 #define GNUTLS_E_PK_INVALID_PRIVKEY -410
3576 #define GNUTLS_E_NOT_YET_ACTIVATED -411
3577 #define GNUTLS_E_INVALID_UTF8_STRING -412
3578 #define GNUTLS_E_NO_EMBEDDED_DATA -413
3579 #define GNUTLS_E_INVALID_UTF8_EMAIL -414
3580 #define GNUTLS_E_INVALID_PASSWORD_STRING -415
3581 #define GNUTLS_E_CERTIFICATE_TIME_ERROR -416
3582 #define GNUTLS_E_RECORD_OVERFLOW -417 
3583 #define GNUTLS_E_ASN1_TIME_ERROR -418
3584 #define GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY -419
3585 #define GNUTLS_E_PK_INVALID_PUBKEY_PARAMS -420
3586 #define GNUTLS_E_PK_NO_VALIDATION_PARAMS -421
3587 #define GNUTLS_E_OCSP_MISMATCH_WITH_CERTS -422
3588 
3589 #define GNUTLS_E_NO_COMMON_KEY_SHARE -423
3590 #define GNUTLS_E_REAUTH_REQUEST -424
3591 #define GNUTLS_E_TOO_MANY_MATCHES -425
3592 #define GNUTLS_E_CRL_VERIFICATION_ERROR -426
3593 #define GNUTLS_E_MISSING_EXTENSION -427
3594 #define GNUTLS_E_DB_ENTRY_EXISTS -428
3595 #define GNUTLS_E_EARLY_DATA_REJECTED -429
3596 #define GNUTLS_E_X509_DUPLICATE_EXTENSION -430
3597 
3598 #define GNUTLS_E_UNIMPLEMENTED_FEATURE -1250
3599 
3600 
3601 
3602 #define GNUTLS_E_INT_RET_0 -1251
3603 #define GNUTLS_E_INT_CHECK_AGAIN -1252
3604 
3605 #define GNUTLS_E_APPLICATION_ERROR_MAX -65000
3606 #define GNUTLS_E_APPLICATION_ERROR_MIN -65500
3607 
3608 #ifdef __cplusplus
3609 }
3610 #endif
3611 
3612 #include <gnutls/compat.h>
3613 
3614 #endif