pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
Create a glibcompat.h to define G_GNUC_(BEGIN,END)_IGNORE_DEPRECATIONS which was added in 2.32.0 but we only require 2.16.0
release-2.x.y
2019-11-11, Gary Kramlich
dc5e8cca7434
Create a glibcompat.h to define G_GNUC_(BEGIN,END)_IGNORE_DEPRECATIONS which was added in 2.32.0 but we only require 2.16.0
#include "module.h"
MODULE
=
Purple
::
Cipher
PACKAGE
=
Purple
::
Cipher
PREFIX
=
purple_cipher_
PROTOTYPES
:
ENABLE
BOOT
:
{
HV
*
stash
=
gv_stashpv
(
"Purple::Cipher::BatchMode"
,
1
);
HV
*
cipher_caps
=
gv_stashpv
(
"Purple::Cipher::Caps"
,
1
);
static
const
constiv
*
civ
,
const_iv
[]
=
{
#define const_iv(name) {#name, (IV)PURPLE_CIPHER_BATCH_MODE_##name}
const_iv
(
ECB
),
const_iv
(
CBC
),
#undef const_iv
};
static
const
constiv
bm_const_iv
[]
=
{
#define const_iv(name) {#name, (IV)PURPLE_CIPHER_CAPS_##name}
const_iv
(
SET_OPT
),
const_iv
(
GET_OPT
),
const_iv
(
INIT
),
const_iv
(
RESET
),
const_iv
(
UNINIT
),
const_iv
(
SET_IV
),
const_iv
(
APPEND
),
const_iv
(
DIGEST
),
const_iv
(
ENCRYPT
),
const_iv
(
DECRYPT
),
const_iv
(
SET_SALT
),
const_iv
(
GET_SALT_SIZE
),
const_iv
(
SET_KEY
),
const_iv
(
GET_KEY_SIZE
),
const_iv
(
SET_BATCH_MODE
),
const_iv
(
GET_BATCH_MODE
),
const_iv
(
GET_BLOCK_SIZE
),
const_iv
(
SET_KEY_WITH_LEN
),
const_iv
(
UNKNOWN
),
#undef const_iv
};
for
(
civ
=
const_iv
+
sizeof
(
const_iv
)
/
sizeof
(
const_iv
[
0
]);
civ
--
>
const_iv
;
)
newCONSTSUB
(
stash
,
(
char
*
)
civ
->
name
,
newSViv
(
civ
->
iv
));
for
(
civ
=
bm_const_iv
+
sizeof
(
bm_const_iv
)
/
sizeof
(
bm_const_iv
[
0
]);
civ
--
>
bm_const_iv
;
)
newCONSTSUB
(
cipher_caps
,
(
char
*
)
civ
->
name
,
newSViv
(
civ
->
iv
));
}
const
gchar
*
purple_cipher_get_name
(
cipher
)
Purple
::
Cipher
cipher
guint
purple_cipher_get_capabilities
(
cipher
)
Purple
::
Cipher
cipher
size_t
purple_cipher_digest_region
(
name
,
data_sv
,
in_len
,
digest
)
const
gchar
*
name
SV
*
data_sv
size_t
in_len
SV
*
digest
PREINIT
:
gboolean
ret
;
guchar
*
buff
=
NULL
;
guchar
*
data
=
NULL
;
size_t
data_len
;
CODE
:
data
=
(
guchar
*
)
SvPV
(
data_sv
,
data_len
);
SvUPGRADE
(
digest
,
SVt_PV
);
buff
=
(
guchar
*
)
SvGROW
(
digest
,
in_len
);
ret
=
purple_cipher_digest_region
(
name
,
data
,
data_len
,
in_len
,
buff
,
&
RETVAL
);
if
(
!
ret
)
{
SvSetSV_nosteal
(
digest
,
&
PL_sv_undef
);
XSRETURN_UNDEF
;
}
SvCUR_set
(
digest
,
RETVAL
);
/*
coverity
[
extra_comma
]
*/
SvPOK_only
(
digest
);
OUTPUT
:
RETVAL
gchar_own
*
purple_cipher_http_digest_calculate_response
(
algorithm
,
method
,
digest_uri
,
qop
,
entity
,
nonce
,
nonce_count
,
client_nonce
,
session_key
)
const
gchar
*
algorithm
const
gchar
*
method
const
gchar
*
digest_uri
const
gchar
*
qop
const
gchar
*
entity
const
gchar
*
nonce
const
gchar
*
nonce_count
const
gchar
*
client_nonce
const
gchar
*
session_key
gchar_own
*
purple_cipher_http_digest_calculate_session_key
(
algorithm
,
username
,
realm
,
password
,
nonce
,
client_nonce
)
const
gchar
*
algorithm
const
gchar
*
username
const
gchar
*
realm
const
gchar
*
password
const
gchar
*
nonce
const
gchar
*
client_nonce
MODULE
=
Purple
::
Cipher
PACKAGE
=
Purple
::
Ciphers
PREFIX
=
purple_ciphers_
PROTOTYPES
:
ENABLE
Purple
::
Cipher
purple_ciphers_find_cipher
(
name
)
gchar
*
name
Purple
::
Cipher
purple_ciphers_register_cipher
(
name
,
ops
)
gchar
*
name
Purple
::
Cipher
::
Ops
ops
gboolean
purple_ciphers_unregister_cipher
(
cipher
)
Purple
::
Cipher
cipher
void
purple_ciphers_get_ciphers
()
PREINIT
:
GList
*
l
;
PPCODE
:
for
(
l
=
purple_ciphers_get_ciphers
();
l
!=
NULL
;
l
=
l
->
next
)
{
XPUSHs
(
sv_2mortal
(
purple_perl_bless_object
(
l
->
data
,
"Purple::Cipher"
)));
}
Purple
::
Handle
purple_ciphers_get_handle
()
MODULE
=
Purple
::
Cipher
PACKAGE
=
Purple
::
Cipher
::
Context
PREFIX
=
purple_cipher_context_
PROTOTYPES
:
ENABLE
void
purple_cipher_context_set_option
(
context
,
name
,
value
)
Purple
::
Cipher
::
Context
context
gchar
*
name
gpointer
value
gpointer
purple_cipher_context_get_option
(
context
,
name
)
Purple
::
Cipher
::
Context
context
gchar
*
name
Purple
::
Cipher
::
Context
purple_cipher_context_new
(
klass
,
cipher
,
extra
=
NULL
)
Purple
::
Cipher
cipher
void
*
extra
C_ARGS
:
cipher
,
extra
Purple
::
Cipher
::
Context
purple_cipher_context_new_by_name
(
klass
,
name
,
extra
=
NULL
)
gchar
*
name
void
*
extra
C_ARGS
:
name
,
extra
void
purple_cipher_context_reset
(
context
,
extra
=
NULL
)
Purple
::
Cipher
::
Context
context
gpointer
extra
void
purple_cipher_context_destroy
(
context
)
Purple
::
Cipher
::
Context
context
void
purple_cipher_context_set_iv
(
Purple
::
Cipher
::
Context
context
,
guchar
*
iv
,
size_t
length
(
iv
))
PROTOTYPE
:
$$
void
purple_cipher_context_append
(
Purple
::
Cipher
::
Context
context
,
guchar
*
data
,
size_t
length
(
data
))
PROTOTYPE
:
$$
size_t
purple_cipher_context_digest
(
context
,
in_len
,
digest
)
Purple
::
Cipher
::
Context
context
size_t
in_len
SV
*
digest
PREINIT
:
gboolean
ret
;
guchar
*
buff
=
NULL
;
CODE
:
SvUPGRADE
(
digest
,
SVt_PV
);
buff
=
(
guchar
*
)
SvGROW
(
digest
,
in_len
);
ret
=
purple_cipher_context_digest
(
context
,
in_len
,
buff
,
&
RETVAL
);
if
(
!
ret
)
{
SvSetSV_nosteal
(
digest
,
&
PL_sv_undef
);
XSRETURN_UNDEF
;
}
SvCUR_set
(
digest
,
RETVAL
);
/*
coverity
[
extra_comma
]
*/
SvPOK_only
(
digest
);
OUTPUT
:
RETVAL
size_t
purple_cipher_context_digest_to_str
(
context
,
in_len
,
digest_s
)
Purple
::
Cipher
::
Context
context
size_t
in_len
SV
*
digest_s
PREINIT
:
gboolean
ret
;
gchar
*
buff
=
NULL
;
CODE
:
in_len
+=
1
;
/*
perl
shouldn
't need to care about '
\
0
' at the end */
SvUPGRADE
(
digest_s
,
SVt_PV
);
buff
=
SvGROW
(
digest_s
,
in_len
);
ret
=
purple_cipher_context_digest_to_str
(
context
,
in_len
,
buff
,
&
RETVAL
);
if
(
!
ret
)
{
SvSetSV_nosteal
(
digest_s
,
&
PL_sv_undef
);
XSRETURN_UNDEF
;
}
SvCUR_set
(
digest_s
,
RETVAL
);
/*
coverity
[
extra_comma
]
*/
SvPOK_only
(
digest_s
);
OUTPUT
:
RETVAL
gint
purple_cipher_context_encrypt
(
context
,
data_sv
,
output
,
OUTLIST
size_t
outlen
)
Purple
::
Cipher
::
Context
context
SV
*
data_sv
SV
*
output
PROTOTYPE
:
$$$
PREINIT
:
size_t
datalen
;
guchar
*
buff
=
NULL
;
guchar
*
data
=
NULL
;
CODE
:
data
=
(
guchar
*
)
SvPV
(
data_sv
,
datalen
);
SvUPGRADE
(
output
,
SVt_PV
);
buff
=
(
guchar
*
)
SvGROW
(
output
,
datalen
);
RETVAL
=
purple_cipher_context_encrypt
(
context
,
data
,
datalen
,
buff
,
&
outlen
);
if
(
outlen
!=
0
)
{
/*
coverity
[
extra_comma
]
*/
SvPOK_only
(
output
);
SvCUR_set
(
output
,
outlen
);
}
else
{
SvSetSV_nosteal
(
output
,
&
PL_sv_undef
);
}
OUTPUT
:
RETVAL
gint
purple_cipher_context_decrypt
(
context
,
data_sv
,
output
,
OUTLIST
size_t
outlen
)
Purple
::
Cipher
::
Context
context
SV
*
data_sv
SV
*
output
PROTOTYPE
:
$$$
PREINIT
:
size_t
datalen
;
guchar
*
buff
=
NULL
;
guchar
*
data
=
NULL
;
CODE
:
data
=
(
guchar
*
)
SvPV
(
data_sv
,
datalen
);
SvUPGRADE
(
output
,
SVt_PV
);
buff
=
(
guchar
*
)
SvGROW
(
output
,
datalen
);
RETVAL
=
purple_cipher_context_decrypt
(
context
,
data
,
datalen
,
buff
,
&
outlen
);
if
(
outlen
!=
0
)
{
/*
coverity
[
extra_comma
]
*/
SvPOK_only
(
output
);
SvCUR_set
(
output
,
outlen
);
}
else
{
SvSetSV_nosteal
(
output
,
&
PL_sv_undef
);
}
OUTPUT
:
RETVAL
void
purple_cipher_context_set_salt
(
context
,
salt
)
Purple
::
Cipher
::
Context
context
guchar
*
salt
size_t
purple_cipher_context_get_salt_size
(
context
)
Purple
::
Cipher
::
Context
context
void
purple_cipher_context_set_key
(
context
,
key
)
Purple
::
Cipher
::
Context
context
guchar
*
key
size_t
purple_cipher_context_get_key_size
(
context
)
Purple
::
Cipher
::
Context
context
void
purple_cipher_context_set_data
(
context
,
data
)
Purple
::
Cipher
::
Context
context
gpointer
data
gpointer
purple_cipher_context_get_data
(
context
)
Purple
::
Cipher
::
Context
context
Purple
::
Cipher
::
BatchMode
purple_cipher_context_get_batch_mode
(
context
)
Purple
::
Cipher
::
Context
context
size_t
purple_cipher_context_get_block_size
(
context
)
Purple
::
Cipher
::
Context
context
void
purple_cipher_context_set_batch_mode
(
context
,
mode
)
Purple
::
Cipher
::
Context
context
Purple
::
Cipher
::
BatchMode
mode
void
purple_cipher_context_set_key_with_len
(
Purple
::
Cipher
::
Context
context
,
guchar
*
key
,
size_t
length
(
key
))
PROTOTYPE
:
$$