summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorgregor herrmann <gregoa@debian.org>2018-01-03 20:36:37 +0100
committergregor herrmann <gregoa@debian.org>2018-01-03 20:36:37 +0100
commit5b7253046b660592f2e7db7afd2857c8ac517621 (patch)
tree0bb309447b14b81de91bc8542da855a8083732b9 /inc
parentb3d0c9e280ed278158bcf1d15963b7c6f66057df (diff)
parent6e8abedfd93462d12874c2ba837012f2ab5eaaf9 (diff)
New upstream version 0.056
Diffstat (limited to 'inc')
-rw-r--r--inc/CryptX_AuthEnc_CCM.xs.inc8
-rw-r--r--inc/CryptX_Checksum_CRC32.xs.inc1
-rw-r--r--inc/CryptX_Cipher.xs.inc4
-rw-r--r--inc/CryptX_Digest_SHAKE.xs.inc2
-rw-r--r--inc/CryptX_PK_DH.xs.inc2
-rw-r--r--inc/CryptX_PK_DSA.xs.inc2
-rw-r--r--inc/CryptX_PK_ECC.xs.inc2
-rw-r--r--inc/CryptX_PK_RSA.xs.inc2
-rw-r--r--inc/CryptX_Stream_ChaCha.xs.inc2
-rw-r--r--inc/CryptX_Stream_RC4.xs.inc2
-rw-r--r--inc/CryptX_Stream_Rabbit.xs.inc97
-rw-r--r--inc/CryptX_Stream_Salsa20.xs.inc2
-rw-r--r--inc/CryptX_Stream_Sober128.xs.inc2
-rw-r--r--inc/CryptX_Stream_Sosemanuk.xs.inc2
14 files changed, 113 insertions, 17 deletions
diff --git a/inc/CryptX_AuthEnc_CCM.xs.inc b/inc/CryptX_AuthEnc_CCM.xs.inc
index 5711acfe..f2be57a1 100644
--- a/inc/CryptX_AuthEnc_CCM.xs.inc
+++ b/inc/CryptX_AuthEnc_CCM.xs.inc
@@ -27,7 +27,7 @@ _new(char * cipher_name, SV * key, SV * nonce, SV * adata, int tag_len, int pt_l
Newz(0, RETVAL, 1, struct ccm_struct);
if (!RETVAL) croak("FATAL: Newz failed");
- rv = ccm_init(&RETVAL->state, id, k, (unsigned long)k_len, pt_len, tag_len, h_len);
+ rv = ccm_init(&RETVAL->state, id, k, (int)k_len, (int)pt_len, (int)tag_len, (int)h_len); /* XXX-TODO why int? */
if (rv != CRYPT_OK) {
Safefree(RETVAL);
croak("FATAL: ccm_init failed: %s", error_to_string(rv));
@@ -90,7 +90,7 @@ encrypt_add(Crypt::AuthEnc::CCM self, SV * data)
SvREFCNT_dec(RETVAL);
croak("FATAL: ccm_process failed: %s", error_to_string(rv));
}
- self->pt_len -= in_data_len;
+ self->pt_len -= (unsigned long)in_data_len;
}
}
OUTPUT:
@@ -100,7 +100,7 @@ SV *
decrypt_add(Crypt::AuthEnc::CCM self, SV * data)
CODE:
{
- int rv, i;
+ int rv;
STRLEN in_data_len;
unsigned char *in_data, *out_data;
@@ -123,7 +123,7 @@ decrypt_add(Crypt::AuthEnc::CCM self, SV * data)
SvREFCNT_dec(RETVAL);
croak("FATAL: ccm_process failed: %s", error_to_string(rv));
}
- self->pt_len -= in_data_len;
+ self->pt_len -= (unsigned long)in_data_len;
}
}
OUTPUT:
diff --git a/inc/CryptX_Checksum_CRC32.xs.inc b/inc/CryptX_Checksum_CRC32.xs.inc
index b31ddebd..b4d591a7 100644
--- a/inc/CryptX_Checksum_CRC32.xs.inc
+++ b/inc/CryptX_Checksum_CRC32.xs.inc
@@ -4,7 +4,6 @@ Crypt::Checksum::CRC32
new(Class)
CODE:
{
- int rv;
Newz(0, RETVAL, 1, crc32_state);
if (!RETVAL) croak("FATAL: Newz failed");
crc32_init(RETVAL); /* returns void */
diff --git a/inc/CryptX_Cipher.xs.inc b/inc/CryptX_Cipher.xs.inc
index 65fee1b4..b45c40a9 100644
--- a/inc/CryptX_Cipher.xs.inc
+++ b/inc/CryptX_Cipher.xs.inc
@@ -83,7 +83,7 @@ encrypt(self, data)
if (len == 0) {
RETVAL = newSVpvn("", 0);
}
- else if (len == self->desc->block_length) {
+ else if (len == (STRLEN)self->desc->block_length) {
RETVAL = NEWSV(0, len);
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, len);
@@ -113,7 +113,7 @@ decrypt(self, data)
if (len == 0) {
RETVAL = newSVpvn("", 0);
}
- else if (len == self->desc->block_length) {
+ else if (len == (STRLEN)self->desc->block_length) {
RETVAL = NEWSV(0, len);
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, len);
diff --git a/inc/CryptX_Digest_SHAKE.xs.inc b/inc/CryptX_Digest_SHAKE.xs.inc
index cb8906a5..1ab196bc 100644
--- a/inc/CryptX_Digest_SHAKE.xs.inc
+++ b/inc/CryptX_Digest_SHAKE.xs.inc
@@ -72,7 +72,7 @@ done(Crypt::Digest::SHAKE self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = sha3_shake_done(&self->state, out_data, out_len);
+ rv = sha3_shake_done(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: sha3_shake_done failed: %s", error_to_string(rv));
diff --git a/inc/CryptX_PK_DH.xs.inc b/inc/CryptX_PK_DH.xs.inc
index 15f21787..0898e805 100644
--- a/inc/CryptX_PK_DH.xs.inc
+++ b/inc/CryptX_PK_DH.xs.inc
@@ -66,7 +66,7 @@ _generate_key_dhparam(Crypt::PK::DH self, SV * dhparam)
STRLEN data_len=0;
data = (unsigned char *)SvPVbyte(dhparam, data_len);
/* load d p q */
- rv = dh_set_pg_dhparam(data, data_len, &self->key);
+ rv = dh_set_pg_dhparam(data, (unsigned long)data_len, &self->key);
if (rv != CRYPT_OK) croak("FATAL: dh_set_pg_dhparam failed: %s", error_to_string(rv));
/* gen the key */
rv = dh_generate_key(&self->pstate, self->pindex, &self->key);
diff --git a/inc/CryptX_PK_DSA.xs.inc b/inc/CryptX_PK_DSA.xs.inc
index 3f8839b0..aebb53a3 100644
--- a/inc/CryptX_PK_DSA.xs.inc
+++ b/inc/CryptX_PK_DSA.xs.inc
@@ -42,7 +42,7 @@ _generate_key_dsaparam(Crypt::PK::DSA self, SV * dsaparam)
STRLEN data_len=0;
data = (unsigned char *)SvPVbyte(dsaparam, data_len);
/* load d p q */
- rv = dsa_set_pqg_dsaparam(data, data_len, &self->key);
+ rv = dsa_set_pqg_dsaparam(data, (unsigned long)data_len, &self->key);
if (rv != CRYPT_OK) croak("FATAL: dsa_set_pqg_dsaparam failed: %s", error_to_string(rv));
/* gen the key */
rv = dsa_generate_key(&self->pstate, self->pindex, &self->key);
diff --git a/inc/CryptX_PK_ECC.xs.inc b/inc/CryptX_PK_ECC.xs.inc
index 65176349..239376f2 100644
--- a/inc/CryptX_PK_ECC.xs.inc
+++ b/inc/CryptX_PK_ECC.xs.inc
@@ -64,7 +64,7 @@ _import_pkcs8(Crypt::PK::ECC self, SV * key_data, SV * passwd)
pwd = (unsigned char *)SvPVbyte(passwd, pwd_len);
}
_ecc_free_key(&self->key, &self->dp);
- rv = ecc_import_pkcs8(data, (unsigned long)data_len, pwd, pwd_len, &self->key, &self->dp);
+ rv = ecc_import_pkcs8(data, (unsigned long)data_len, pwd, (unsigned long)pwd_len, &self->key, &self->dp);
if (rv != CRYPT_OK) croak("FATAL: ecc_import_pkcs8 failed: %s", error_to_string(rv));
XPUSHs(ST(0)); /* return self */
}
diff --git a/inc/CryptX_PK_RSA.xs.inc b/inc/CryptX_PK_RSA.xs.inc
index ded33713..0c0cf852 100644
--- a/inc/CryptX_PK_RSA.xs.inc
+++ b/inc/CryptX_PK_RSA.xs.inc
@@ -62,7 +62,7 @@ _import_pkcs8(Crypt::PK::RSA self, SV * key_data, SV * passwd)
pwd = (unsigned char *)SvPVbyte(passwd, pwd_len);
}
if (self->key.type != -1) { rsa_free(&self->key); self->key.type = -1; }
- rv = rsa_import_pkcs8(data, (unsigned long)data_len, pwd, pwd_len, &self->key);
+ rv = rsa_import_pkcs8(data, (unsigned long)data_len, pwd, (unsigned long)pwd_len, &self->key);
if (rv != CRYPT_OK) croak("FATAL: rsa_import_pkcs8 failed: %s", error_to_string(rv));
XPUSHs(ST(0)); /* return self */
}
diff --git a/inc/CryptX_Stream_ChaCha.xs.inc b/inc/CryptX_Stream_ChaCha.xs.inc
index bb7d7e80..4b71a090 100644
--- a/inc/CryptX_Stream_ChaCha.xs.inc
+++ b/inc/CryptX_Stream_ChaCha.xs.inc
@@ -70,7 +70,7 @@ keystream(Crypt::Stream::ChaCha self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = chacha_keystream(&self->state, out_data, out_len);
+ rv = chacha_keystream(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: chacha_keystream failed: %s", error_to_string(rv));
diff --git a/inc/CryptX_Stream_RC4.xs.inc b/inc/CryptX_Stream_RC4.xs.inc
index bc0a1eb2..09a56147 100644
--- a/inc/CryptX_Stream_RC4.xs.inc
+++ b/inc/CryptX_Stream_RC4.xs.inc
@@ -49,7 +49,7 @@ keystream(Crypt::Stream::RC4 self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = rc4_stream_keystream(&self->state, out_data, out_len);
+ rv = rc4_stream_keystream(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: rc4_stream_keystream failed: %s", error_to_string(rv));
diff --git a/inc/CryptX_Stream_Rabbit.xs.inc b/inc/CryptX_Stream_Rabbit.xs.inc
new file mode 100644
index 00000000..6ef18249
--- /dev/null
+++ b/inc/CryptX_Stream_Rabbit.xs.inc
@@ -0,0 +1,97 @@
+MODULE = CryptX PACKAGE = Crypt::Stream::Rabbit
+
+Crypt::Stream::Rabbit
+new(Class, SV * key, SV * nonce=&PL_sv_undef)
+ CODE:
+ {
+ int rv;
+ STRLEN iv_len=0, k_len=0;
+ unsigned char *iv=NULL, *k=NULL;
+
+ if (!SvPOK(key)) croak("FATAL: key must be string/buffer scalar");
+ k = (unsigned char *)SvPVbyte(key, k_len);
+
+ Newz(0, RETVAL, 1, struct rabbit_struct);
+ if (!RETVAL) croak("FATAL: Newz failed");
+
+ rv = rabbit_setup(&RETVAL->state, k, (unsigned long)k_len);
+ if (rv != CRYPT_OK) {
+ Safefree(RETVAL);
+ croak("FATAL: rabbit_setup failed: %s", error_to_string(rv));
+ }
+
+ if (SvOK(nonce)) {
+ if (!SvPOK(nonce)) croak("FATAL: nonce must be string/buffer scalar");
+ iv = (unsigned char *)SvPVbyte(nonce, iv_len);
+ rv = rabbit_setiv(&RETVAL->state, iv, (unsigned long)iv_len);
+ if (rv != CRYPT_OK) {
+ Safefree(RETVAL);
+ croak("FATAL: rabbit_setiv failed: %s", error_to_string(rv));
+ }
+ }
+
+ }
+ OUTPUT:
+ RETVAL
+
+void
+DESTROY(Crypt::Stream::Rabbit self)
+ CODE:
+ rabbit_done(&self->state);
+ Safefree(self);
+
+Crypt::Stream::Rabbit
+clone(Crypt::Stream::Rabbit self)
+ CODE:
+ Newz(0, RETVAL, 1, struct rabbit_struct);
+ if (!RETVAL) croak("FATAL: Newz failed");
+ Copy(&self->state, &RETVAL->state, 1, struct rabbit_struct);
+ OUTPUT:
+ RETVAL
+
+SV *
+keystream(Crypt::Stream::Rabbit self, STRLEN out_len)
+ CODE:
+ {
+ int rv;
+ unsigned char *out_data;
+
+ RETVAL = NEWSV(0, out_len);
+ SvPOK_only(RETVAL);
+ SvCUR_set(RETVAL, out_len);
+ out_data = (unsigned char *)SvPVX(RETVAL);
+ rv = rabbit_keystream(&self->state, out_data, (unsigned long)out_len);
+ if (rv != CRYPT_OK) {
+ SvREFCNT_dec(RETVAL);
+ croak("FATAL: rabbit_keystream failed: %s", error_to_string(rv));
+ }
+ }
+ OUTPUT:
+ RETVAL
+
+SV *
+crypt(Crypt::Stream::Rabbit self, SV * data)
+ CODE:
+ {
+ int rv;
+ STRLEN in_data_len;
+ unsigned char *in_data, *out_data;
+
+ in_data = (unsigned char *)SvPVbyte(data, in_data_len);
+ if (in_data_len == 0) {
+ RETVAL = newSVpvn("", 0);
+ }
+ else {
+ RETVAL = NEWSV(0, in_data_len);
+ SvPOK_only(RETVAL);
+ SvCUR_set(RETVAL, in_data_len);
+ out_data = (unsigned char *)SvPVX(RETVAL);
+ rv = rabbit_crypt(&self->state, in_data, (unsigned long)in_data_len, out_data);
+ if (rv != CRYPT_OK) {
+ SvREFCNT_dec(RETVAL);
+ croak("FATAL: rabbit_crypt failed: %s", error_to_string(rv));
+ }
+ }
+ }
+ OUTPUT:
+ RETVAL
diff --git a/inc/CryptX_Stream_Salsa20.xs.inc b/inc/CryptX_Stream_Salsa20.xs.inc
index c21f7990..7430c3dc 100644
--- a/inc/CryptX_Stream_Salsa20.xs.inc
+++ b/inc/CryptX_Stream_Salsa20.xs.inc
@@ -57,7 +57,7 @@ keystream(Crypt::Stream::Salsa20 self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = salsa20_keystream(&self->state, out_data, out_len);
+ rv = salsa20_keystream(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: salsa20_keystream failed: %s", error_to_string(rv));
diff --git a/inc/CryptX_Stream_Sober128.xs.inc b/inc/CryptX_Stream_Sober128.xs.inc
index 497643fb..7802bb16 100644
--- a/inc/CryptX_Stream_Sober128.xs.inc
+++ b/inc/CryptX_Stream_Sober128.xs.inc
@@ -57,7 +57,7 @@ keystream(Crypt::Stream::Sober128 self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = sober128_stream_keystream(&self->state, out_data, out_len);
+ rv = sober128_stream_keystream(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: sober128_stream_keystream failed: %s", error_to_string(rv));
diff --git a/inc/CryptX_Stream_Sosemanuk.xs.inc b/inc/CryptX_Stream_Sosemanuk.xs.inc
index 16a49a9c..2f46859d 100644
--- a/inc/CryptX_Stream_Sosemanuk.xs.inc
+++ b/inc/CryptX_Stream_Sosemanuk.xs.inc
@@ -63,7 +63,7 @@ keystream(Crypt::Stream::Sosemanuk self, STRLEN out_len)
SvPOK_only(RETVAL);
SvCUR_set(RETVAL, out_len);
out_data = (unsigned char *)SvPVX(RETVAL);
- rv = sosemanuk_keystream(&self->state, out_data, out_len);
+ rv = sosemanuk_keystream(&self->state, out_data, (unsigned long)out_len);
if (rv != CRYPT_OK) {
SvREFCNT_dec(RETVAL);
croak("FATAL: sosemanuk_keystream failed: %s", error_to_string(rv));