Mercurial > hg > php_nacl
comparison nacl.c @ 4:81aaf4ba1eaa
Added partial untested support for sign_edwards25519sha512batch, replaced some whitespaces with tabs
author | Ivo Smits <Ivo@UCIS.nl> |
---|---|
date | Fri, 18 Mar 2011 16:58:48 +0100 |
parents | 04384d01b1d7 |
children | df71d49a6f98 |
comparison
equal
deleted
inserted
replaced
3:c0f3bf4aac47 | 4:81aaf4ba1eaa |
---|---|
33 #include "php.h" | 33 #include "php.h" |
34 #include "php_ini.h" | 34 #include "php_ini.h" |
35 #include "php_nacl.h" | 35 #include "php_nacl.h" |
36 | 36 |
37 static function_entry nacl_functions[] = { | 37 static function_entry nacl_functions[] = { |
38 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305, NULL) | 38 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305, NULL) |
39 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open, NULL) | 39 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open, NULL) |
40 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_getpublickey, NULL) | 40 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_getpublickey, NULL) |
41 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_beforenm, NULL) | 41 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_beforenm, NULL) |
42 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_afternm, NULL) | 42 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_afternm, NULL) |
43 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open_afternm, NULL) | 43 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open_afternm, NULL) |
44 {NULL, NULL, NULL} | 44 PHP_FE(nacl_crypto_sign_edwards25519sha512batch, NULL) |
45 PHP_FE(nacl_crypto_sign_edwards25519sha512batch_open, NULL) | |
46 // PHP_FE(nacl_crypto_sign_edwards25519sha512batch_keypair, NULL) | |
47 {NULL, NULL, NULL} | |
45 }; | 48 }; |
46 | 49 |
47 zend_module_entry nacl_module_entry = { | 50 zend_module_entry nacl_module_entry = { |
48 #if ZEND_MODULE_API_NO >= 20010901 | 51 #if ZEND_MODULE_API_NO >= 20010901 |
49 STANDARD_MODULE_HEADER, | 52 STANDARD_MODULE_HEADER, |
70 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_SECRETKEYBYTES", crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); | 73 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_SECRETKEYBYTES", crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); |
71 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BEFORENMBYTES", crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES, CONST_CS | CONST_PERSISTENT); | 74 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BEFORENMBYTES", crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES, CONST_CS | CONST_PERSISTENT); |
72 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_NONCEBYTES", crypto_box_curve25519xsalsa20poly1305_NONCEBYTES, CONST_CS | CONST_PERSISTENT); | 75 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_NONCEBYTES", crypto_box_curve25519xsalsa20poly1305_NONCEBYTES, CONST_CS | CONST_PERSISTENT); |
73 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_ZEROBYTES", crypto_box_curve25519xsalsa20poly1305_ZEROBYTES, CONST_CS | CONST_PERSISTENT); | 76 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_ZEROBYTES", crypto_box_curve25519xsalsa20poly1305_ZEROBYTES, CONST_CS | CONST_PERSISTENT); |
74 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BOXZEROBYTES", crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES, CONST_CS | CONST_PERSISTENT); | 77 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BOXZEROBYTES", crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES, CONST_CS | CONST_PERSISTENT); |
78 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_BYTES", crypto_sign_edwards25519sha512batch_BYTES, CONST_CS | CONST_PERSISTENT); | |
79 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_PUBLICKEYBYTES", crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); | |
80 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_SECRETKEYBYTES", crypto_sign_edwards25519sha512batch_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); | |
75 } | 81 } |
76 | 82 |
77 PHP_FUNCTION(nacl_crypto_box_curve25519xsalsa20poly1305) { //(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *) | 83 PHP_FUNCTION(nacl_crypto_box_curve25519xsalsa20poly1305) { //(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *) |
78 char *m, *n, *pk, *sk; | 84 char *m, *n, *pk, *sk; |
79 int lm, ln, lpk, lsk; | 85 int lm, ln, lpk, lsk; |
174 if (lsk != crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES) RETURN_FALSE; | 180 if (lsk != crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES) RETURN_FALSE; |
175 char* pk = emalloc(crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES); | 181 char* pk = emalloc(crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES); |
176 crypto_scalarmult_curve25519(pk, sk, base); | 182 crypto_scalarmult_curve25519(pk, sk, base); |
177 RETURN_STRINGL(pk, crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES, 0); | 183 RETURN_STRINGL(pk, crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES, 0); |
178 } | 184 } |
185 PHP_FUNCTION(nacl_crypto_sign_edwards25519sha512batch) { //(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); | |
186 char *m, *sk; | |
187 int lm, lsk; | |
188 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &m, &lm, &sk, &lsk) == FAILURE) RETURN_NULL(); | |
189 if (lsk != crypto_sign_edwards25519sha512batch_SECRETKEYBYTES) RETURN_FALSE; | |
190 int smlen = lm + crypto_sign_edwards25519sha512batch_BYTES; | |
191 char* smb = emalloc(smlen); | |
192 int ret = crypto_sign_edwards25519sha512batch(smb, &smlen, m, lm, sk); | |
193 char* sm = emalloc(smlen); | |
194 memcpy(sm, smb, smlen); | |
195 efree(smb); | |
196 if (ret == 0) RETURN_STRINGL(sm, smlen, 0); | |
197 efree(sm); | |
198 RETURN_FALSE; | |
199 } | |
200 PHP_FUNCTION(nacl_crypto_sign_edwards25519sha512batch_open) { //(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); | |
201 char *sm, *pk; | |
202 int lsm, lpk; | |
203 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &sm, &lsm, &pk, &lpk) == FAILURE) RETURN_NULL(); | |
204 if (lpk != crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES) RETURN_FALSE; | |
205 int mlen = lsm; | |
206 char* mb = emalloc(mlen); | |
207 int ret = crypto_sign_edwards25519sha512batch_open(mb, &mlen, sm, lsm, pk); | |
208 char* m = emalloc(mlen); | |
209 memcpy(m, mb, mlen); | |
210 efree(mb); | |
211 if (ret == 0) RETURN_STRINGL(m, mlen, 0); | |
212 efree(m); | |
213 RETURN_FALSE; | |
214 } | |
215 //extern int crypto_sign_edwards25519sha512batch_ref_keypair(unsigned char *,unsigned char *); |