require 'ffi' module LibNetPGP extend FFI::Library enum :pgp_s2k_usage_t, [ :PGP_S2KU_NONE, 0, :PGP_S2KU_ENCRYPTED_AND_HASHED, 254, :PGP_S2KU_ENCRYPTED, 255 ] enum :pgp_s2k_specifier_t, [ :PGP_S2KS_SIMPLE, 0, :PGP_S2KS_SALTED, 1, :PGP_S2KS_ITERATED_AND_SALTED, 3 ] enum :pgp_compression_type_t, [ :PGP_C_NONE, 0, :PGP_C_ZIP, 1, :PGP_C_ZLIB, 2, :PGP_C_BZIP2, 3 ] enum :pgp_symm_alg_t, [ :PGP_SA_PLAINTEXT, 0, :PGP_SA_IDEA, 1, :PGP_SA_TRIPLEDES, 2, :PGP_SA_CAST5, 3, :PGP_SA_BLOWFISH, 4, :PGP_SA_AES_128, 7, :PGP_SA_AES_192, 8, :PGP_SA_AES_256, 9, :PGP_SA_TWOFISH, 10, :PGP_SA_CAMELLIA_128, 100, :PGP_SA_CAMELLIA_192, 101, :PGP_SA_CAMELLIA_256, 102 ] enum :pgp_cb_ret_t, [ :PGP_RELEASE_MEMORY, :PGP_KEEP_MEMORY, :PGP_FINISHED ] enum :pgp_content_enum, [ :PGP_PTAG_CT_RESERVE, 0, :PGP_PTAG_CT_PK_SESSION_KEY, 1, :PGP_PTAG_CT_SIGNATURE, 2, :PGP_PTAG_CT_SK_SESSION_KEY, 3, :PGP_PTAG_CT_1_PASS_SIG, 4, :PGP_PTAG_CT_SECRET_KEY, 5, :PGP_PTAG_CT_PUBLIC_KEY, 6, :PGP_PTAG_CT_SECRET_SUBKEY, 7, :PGP_PTAG_CT_COMPRESSED, 8, :PGP_PTAG_CT_SE_DATA, 9, :PGP_PTAG_CT_MARKER, 10, :PGP_PTAG_CT_LITDATA, 11, :PGP_PTAG_CT_TRUST, 12, :PGP_PTAG_CT_USER_ID, 13, :PGP_PTAG_CT_PUBLIC_SUBKEY, 14, :PGP_PTAG_CT_RESERVED2, 15, :PGP_PTAG_CT_RESERVED3, 16, :PGP_PTAG_CT_USER_ATTR, 17, :PGP_PTAG_CT_SE_IP_DATA, 18, :PGP_PTAG_CT_MDC, 19, :PGP_PARSER_PTAG, 0x100, :PGP_PTAG_RAW_SS, 0x101, :PGP_PTAG_SS_ALL, 0x102, :PGP_PARSER_PACKET_END, 0x103, :PGP_PTAG_SIG_SUBPKT_BASE, 0x200, :PGP_PTAG_SS_CREATION_TIME, 0x200 + 2, :PGP_PTAG_SS_EXPIRATION_TIME, 0x200 + 3, :PGP_PTAG_SS_EXPORT_CERT, 0x200 + 4, :PGP_PTAG_SS_TRUST, 0x200 + 5, :PGP_PTAG_SS_REGEXP, 0x200 + 6, :PGP_PTAG_SS_REVOCABLE, 0x200 + 7, :PGP_PTAG_SS_KEY_EXPIRY, 0x200 + 9, :PGP_PTAG_SS_RESERVED, 0x200 + 10, :PGP_PTAG_SS_PREFERRED_SKA, 0x200 + 11, :PGP_PTAG_SS_REVOCATION_KEY, 0x200 + 12, :PGP_PTAG_SS_ISSUER_KEY_ID, 0x200 + 16, :PGP_PTAG_SS_NOTATION_DATA, 0x200 + 20, :PGP_PTAG_SS_PREFERRED_HASH, 0x200 + 21, :PGP_PTAG_SS_PREF_COMPRESS, 0x200 + 22, :PGP_PTAG_SS_KEYSERV_PREFS, 0x200 + 23, :PGP_PTAG_SS_PREF_KEYSERV, 0x200 + 24, :PGP_PTAG_SS_PRIMARY_USER_ID, 0x200 + 25, :PGP_PTAG_SS_POLICY_URI, 0x200 + 26, :PGP_PTAG_SS_KEY_FLAGS, 0x200 + 27, :PGP_PTAG_SS_SIGNERS_USER_ID, 0x200 + 28, :PGP_PTAG_SS_REVOCATION_REASON, 0x200 + 29, :PGP_PTAG_SS_FEATURES, 0x200 + 30, :PGP_PTAG_SS_SIGNATURE_TARGET, 0x200 + 31, :PGP_PTAG_SS_EMBEDDED_SIGNATURE, 0x200 + 32, :PGP_PTAG_SS_USERDEFINED00, 0x200 + 100, :PGP_PTAG_SS_USERDEFINED01, 0x200 + 101, :PGP_PTAG_SS_USERDEFINED02, 0x200 + 102, :PGP_PTAG_SS_USERDEFINED03, 0x200 + 103, :PGP_PTAG_SS_USERDEFINED04, 0x200 + 104, :PGP_PTAG_SS_USERDEFINED05, 0x200 + 105, :PGP_PTAG_SS_USERDEFINED06, 0x200 + 106, :PGP_PTAG_SS_USERDEFINED07, 0x200 + 107, :PGP_PTAG_SS_USERDEFINED08, 0x200 + 108, :PGP_PTAG_SS_USERDEFINED09, 0x200 + 109, :PGP_PTAG_SS_USERDEFINED10, 0x200 + 110, :PGP_PTAG_CT_LITDATA_HEADER, 0x300, :PGP_PTAG_CT_LITDATA_BODY, 0x300 + 1, :PGP_PTAG_CT_SIGNATURE_HEADER, 0x300 + 2, :PGP_PTAG_CT_SIGNATURE_FOOTER, 0x300 + 3, :PGP_PTAG_CT_ARMOUR_HEADER, 0x300 + 4, :PGP_PTAG_CT_ARMOUR_TRAILER, 0x300 + 5, :PGP_PTAG_CT_SIGNED_CLEARTEXT_HEADER, 0x300 + 6, :PGP_PTAG_CT_SIGNED_CLEARTEXT_BODY, 0x300 + 7, :PGP_PTAG_CT_SIGNED_CLEARTEXT_TRAILER, 0x300 + 8, :PGP_PTAG_CT_UNARMOURED_TEXT, 0x300 + 9, :PGP_PTAG_CT_ENCRYPTED_SECRET_KEY, 0x300 + 10, :PGP_PTAG_CT_ENCRYPTED_SECRET_SUBKEY, 0x300 + 11, :PGP_PTAG_CT_SE_DATA_HEADER, 0x300 + 12, :PGP_PTAG_CT_SE_DATA_BODY, 0x300 + 13, :PGP_PTAG_CT_SE_IP_DATA_HEADER, 0x300 + 14, :PGP_PTAG_CT_SE_IP_DATA_BODY, 0x300 + 15, :PGP_PTAG_CT_ENCRYPTED_PK_SESSION_KEY, 0x300 + 16, :PGP_GET_PASSPHRASE, 0x400, :PGP_GET_SECKEY, 0x400 + 1, :PGP_PARSER_ERROR, 0x500, :PGP_PARSER_ERRCODE, 0x500 + 1, ] enum :pgp_parse_type_t, [ :PGP_PARSE_RAW, :PGP_PARSE_PARSED, :PGP_PARSE_IGNORE ] enum :pgp_errcode_t, [ :PGP_E_OK, 0x0000, :PGP_E_FAIL, 0x0001, :PGP_E_SYSTEM_ERROR, 0x0002, :PGP_E_UNIMPLEMENTED, 0x0003, :PGP_E_R, 0x1000, :PGP_E_R_READ_FAILED, 0x1000 + 1, :PGP_E_R_EARLY_EOF, 0x1000 + 2, :PGP_E_R_BAD_FORMAT, 0x1000 + 3, :PGP_E_R_UNSUPPORTED, 0x1000 + 4, :PGP_E_R_UNCONSUMED_DATA, 0x1000 + 5, :PGP_E_W, 0x2000, :PGP_E_W_WRITE_FAILED, 0x2000 + 1, :PGP_E_W_WRITE_TOO_SHORT, 0x2000 + 2, :PGP_E_P, 0x3000, :PGP_E_P_NOT_ENOUGH_DATA, 0x3000 + 1, :PGP_E_P_UNKNOWN_TAG, 0x3000 + 2, :PGP_E_P_PACKET_CONSUMED, 0x3000 + 3, :PGP_E_P_MPI_FORMAT_ERROR, 0x3000 + 4, :PGP_E_P_PACKET_NOT_CONSUMED, 0x3000 + 5, :PGP_E_P_DECOMPRESSION_ERROR, 0x3000 + 6, :PGP_E_P_NO_USERID, 0x3000 + 7, :PGP_E_C, 0x4000, :PGP_E_V, 0x5000, :PGP_E_V_BAD_SIGNATURE, 0x5000 + 1, :PGP_E_V_NO_SIGNATURE, 0x5000 + 2, :PGP_E_V_UNKNOWN_SIGNER, 0x5000 + 3, :PGP_E_V_BAD_HASH, 0x5000 + 4, :PGP_E_ALG, 0x6000, :PGP_E_ALG_UNSUPPORTED_SYMMETRIC_ALG, 0x6000 + 1, :PGP_E_ALG_UNSUPPORTED_PUBLIC_KEY_ALG, 0x6000 + 2, :PGP_E_ALG_UNSUPPORTED_SIGNATURE_ALG, 0x6000 + 3, :PGP_E_ALG_UNSUPPORTED_HASH_ALG, 0x6000 + 4, :PGP_E_ALG_UNSUPPORTED_COMPRESS_ALG, 0x6000 + 5, :PGP_E_PROTO, 0x7000, :PGP_E_PROTO_BAD_SYMMETRIC_DECRYPT, 0x7000 + 2, :PGP_E_PROTO_UNKNOWN_SS, 0x7000 + 3, :PGP_E_PROTO_CRITICAL_SS_IGNORED, 0x7000 + 4, :PGP_E_PROTO_BAD_PUBLIC_KEY_VRSN, 0x7000 + 5, :PGP_E_PROTO_BAD_SIGNATURE_VRSN, 0x7000 + 6, :PGP_E_PROTO_BAD_ONE_PASS_SIG_VRSN, 0x7000 + 7, :PGP_E_PROTO_BAD_PKSK_VRSN, 0x7000 + 8, :PGP_E_PROTO_DECRYPTED_MSG_WRONG_LEN, 0x7000 + 9, :PGP_E_PROTO_BAD_SK_CHECKSUM, 0x7000 + 10 ] enum :pgp_ptag_of_lt_t, [ :PGP_PTAG_OLD_LEN_1, 0x00, :PGP_PTAG_OLD_LEN_2, 0x01, :PGP_PTAG_OLD_LEN_4, 0x02, :PGP_PTAG_OLD_LEN_INDETERMINATE, 0x03 ] enum :pgp_version_t, [ :PGP_V2, 2, :PGP_V3, 3, :PGP_V4, 4 ] PGP_PUBKEY_ALG_T = enum :pgp_pubkey_alg_t, [ :PGP_PKA_NOTHING, 0, :PGP_PKA_RSA, 1, :PGP_PKA_RSA_ENCRYPT_ONLY, 2, :PGP_PKA_RSA_SIGN_ONLY, 3, :PGP_PKA_ELGAMAL, 16, :PGP_PKA_DSA, 17, :PGP_PKA_RESERVED_ELLIPTIC_CURVE, 18, :PGP_PKA_RESERVED_ECDSA, 19, :PGP_PKA_ELGAMAL_ENCRYPT_OR_SIGN, 20, :PGP_PKA_RESERVED_DH, 21, :PGP_PKA_PRIVATE00, 100, :PGP_PKA_PRIVATE01, 101, :PGP_PKA_PRIVATE02, 102, :PGP_PKA_PRIVATE03, 103, :PGP_PKA_PRIVATE04, 104, :PGP_PKA_PRIVATE05, 105, :PGP_PKA_PRIVATE06, 106, :PGP_PKA_PRIVATE07, 107, :PGP_PKA_PRIVATE08, 108, :PGP_PKA_PRIVATE09, 109, :PGP_PKA_PRIVATE10, 110, ] enum :pgp_hash_alg_t, [ :PGP_HASH_UNKNOWN, -1, :PGP_HASH_MD5, 1, :PGP_HASH_SHA1, 2, :PGP_HASH_RIPEMD, 3, :PGP_HASH_SHA256, 8, :PGP_HASH_SHA384, 9, :PGP_HASH_SHA512, 10, :PGP_HASH_SHA224, 11 ] enum :pgp_sig_type_t, [ :PGP_SIG_BINARY, 0x00, :PGP_SIG_TEXT, 0x01, :PGP_SIG_STANDALONE, 0x02, :PGP_CERT_GENERIC, 0x10, :PGP_CERT_PERSONA, 0x11, :PGP_CERT_CASUAL, 0x12, :PGP_CERT_POSITIVE, 0x13, :PGP_SIG_SUBKEY, 0x18, :PGP_SIG_PRIMARY, 0x19, :PGP_SIG_DIRECT, 0x1f, :PGP_SIG_REV_KEY, 0x20, :PGP_SIG_REV_SUBKEY, 0x28, :PGP_SIG_REV_CERT, 0x30, :PGP_SIG_TIMESTAMP, 0x40, :PGP_SIG_3RD_PARTY, 0x50 ] enum :pgp_litdata_enum, [ :PGP_LDT_BINARY, 'b'.ord, :PGP_LDT_TEXT, 't'.ord, :PGP_LDT_UTF8, 'u'.ord, :PGP_LDT_LOCAL, 'l'.ord, :PGP_LDT_LOCAL2, '1'.ord ] end