Mercurial > hg > php_nacl
comparison nacl.c @ 6:ded86f4d6275
Added keypair generation functions (with random data input)
author | Ivo Smits <Ivo@UCIS.nl> |
---|---|
date | Tue, 12 Jul 2011 20:51:44 +0000 |
parents | df71d49a6f98 |
children | a139bed53614 |
comparison
equal
deleted
inserted
replaced
5:df71d49a6f98 | 6:ded86f4d6275 |
---|---|
40 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open, NULL) | 40 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open, NULL) |
41 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_getpublickey, NULL) | 41 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_getpublickey, NULL) |
42 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_beforenm, NULL) | 42 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_beforenm, NULL) |
43 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_afternm, NULL) | 43 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_afternm, NULL) |
44 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open_afternm, NULL) | 44 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_open_afternm, NULL) |
45 PHP_FE(nacl_crypto_box_curve25519xsalsa20poly1305_keypair, NULL) | |
45 PHP_FE(nacl_crypto_sign_edwards25519sha512batch, NULL) | 46 PHP_FE(nacl_crypto_sign_edwards25519sha512batch, NULL) |
46 PHP_FE(nacl_crypto_sign_edwards25519sha512batch_open, NULL) | 47 PHP_FE(nacl_crypto_sign_edwards25519sha512batch_open, NULL) |
47 // PHP_FE(nacl_crypto_sign_edwards25519sha512batch_keypair, NULL) | 48 PHP_FE(nacl_crypto_sign_edwards25519sha512batch_keypair, NULL) |
48 {NULL, NULL, NULL} | 49 {NULL, NULL, NULL} |
49 }; | 50 }; |
50 | 51 |
51 zend_module_entry nacl_module_entry = { | 52 zend_module_entry nacl_module_entry = { |
52 #if ZEND_MODULE_API_NO >= 20010901 | 53 #if ZEND_MODULE_API_NO >= 20010901 |
74 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_SECRETKEYBYTES", crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); | 75 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_SECRETKEYBYTES", crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); |
75 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BEFORENMBYTES", crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES, CONST_CS | CONST_PERSISTENT); | 76 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BEFORENMBYTES", crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES, CONST_CS | CONST_PERSISTENT); |
76 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_NONCEBYTES", crypto_box_curve25519xsalsa20poly1305_NONCEBYTES, CONST_CS | CONST_PERSISTENT); | 77 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_NONCEBYTES", crypto_box_curve25519xsalsa20poly1305_NONCEBYTES, CONST_CS | CONST_PERSISTENT); |
77 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_ZEROBYTES", crypto_box_curve25519xsalsa20poly1305_ZEROBYTES, CONST_CS | CONST_PERSISTENT); | 78 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_ZEROBYTES", crypto_box_curve25519xsalsa20poly1305_ZEROBYTES, CONST_CS | CONST_PERSISTENT); |
78 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BOXZEROBYTES", crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES, CONST_CS | CONST_PERSISTENT); | 79 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_BOXZEROBYTES", crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES, CONST_CS | CONST_PERSISTENT); |
80 REGISTER_LONG_CONSTANT("NACL_CRYPTO_BOX_curve25519xsalsa20poly1305_KEYPAIRRANDOMBYTES", crypto_box_curve25519xsalsa20poly1305_KEYPAIRRANDOMBYTES, CONST_CS | CONST_PERSISTENT); | |
79 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_BYTES", crypto_sign_edwards25519sha512batch_BYTES, CONST_CS | CONST_PERSISTENT); | 81 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_BYTES", crypto_sign_edwards25519sha512batch_BYTES, CONST_CS | CONST_PERSISTENT); |
80 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_PUBLICKEYBYTES", crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); | 82 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_PUBLICKEYBYTES", crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); |
81 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_SECRETKEYBYTES", crypto_sign_edwards25519sha512batch_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); | 83 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_SECRETKEYBYTES", crypto_sign_edwards25519sha512batch_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); |
84 REGISTER_LONG_CONSTANT("NACL_CRYPTO_SIGN_edwards25519sha512batch_KEYPAIRRANDOMBYTES", crypto_sign_edwards25519sha512batch_KEYPAIRRANDOMBYTES, CONST_CS | CONST_PERSISTENT); | |
82 } | 85 } |
83 | 86 |
84 PHP_FUNCTION(nacl_crypto_box_curve25519xsalsa20poly1305) { //(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *) | 87 PHP_FUNCTION(nacl_crypto_box_curve25519xsalsa20poly1305) { //(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *) |
85 char *m, *n, *pk, *sk; | 88 char *m, *n, *pk, *sk; |
86 int lm, ln, lpk, lsk; | 89 int lm, ln, lpk, lsk; |
180 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &sk, &lsk) == FAILURE) RETURN_NULL(); | 183 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &sk, &lsk) == FAILURE) RETURN_NULL(); |
181 if (lsk != crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES) RETURN_FALSE; | 184 if (lsk != crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES) RETURN_FALSE; |
182 char* pk = emalloc(crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES); | 185 char* pk = emalloc(crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES); |
183 crypto_scalarmult_curve25519(pk, sk, base); | 186 crypto_scalarmult_curve25519(pk, sk, base); |
184 RETURN_STRINGL(pk, crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES, 0); | 187 RETURN_STRINGL(pk, crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES, 0); |
188 } | |
189 PHP_FUNCTION(nacl_crypto_box_curve25519xsalsa20poly1305_keypair) { | |
190 char *rb; | |
191 int lrb; | |
192 zval *zsk; | |
193 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &zsk, &rb, &lrb) == FAILURE) RETURN_NULL(); | |
194 if (!zsk) RETURN_FALSE; | |
195 if (lrb != crypto_box_curve25519xsalsa20poly1305_KEYPAIRRANDOMBYTES) RETURN_FALSE; | |
196 char *spk = emalloc(crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES); | |
197 char *ssk = emalloc(crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES); | |
198 int ret = crypto_box_curve25519xsalsa20poly1305_keypair(spk, ssk, rb); | |
199 if (ret) RETURN_FALSE; | |
200 zval_dtor(zsk); | |
201 ZVAL_STRINGL(zsk, ssk, crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES, 0); | |
202 RETURN_STRINGL(spk, crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES, 0); | |
185 } | 203 } |
186 PHP_FUNCTION(nacl_crypto_sign_edwards25519sha512batch) { //(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); | 204 PHP_FUNCTION(nacl_crypto_sign_edwards25519sha512batch) { //(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); |
187 char *m, *sk; | 205 char *m, *sk; |
188 int lm, lsk; | 206 int lm, lsk; |
189 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &m, &lm, &sk, &lsk) == FAILURE) RETURN_NULL(); | 207 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &m, &lm, &sk, &lsk) == FAILURE) RETURN_NULL(); |
211 efree(mb); | 229 efree(mb); |
212 if (ret == 0) RETURN_STRINGL(m, mlen, 0); | 230 if (ret == 0) RETURN_STRINGL(m, mlen, 0); |
213 efree(m); | 231 efree(m); |
214 RETURN_FALSE; | 232 RETURN_FALSE; |
215 } | 233 } |
216 //extern int crypto_sign_edwards25519sha512batch_ref_keypair(unsigned char *,unsigned char *); | 234 PHP_FUNCTION(nacl_crypto_sign_edwards25519sha512batch_keypair) { //(unsigned char *,unsigned char *); |
235 char *rb; | |
236 int lrb; | |
237 zval *zsk; | |
238 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &zsk, &rb, &lrb) == FAILURE) RETURN_NULL(); | |
239 if (lrb != crypto_sign_edwards25519sha512batch_KEYPAIRRANDOMBYTES) RETURN_FALSE; | |
240 if (!zsk) RETURN_FALSE; | |
241 char *spk = emalloc(crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES); | |
242 char *ssk = emalloc(crypto_sign_edwards25519sha512batch_SECRETKEYBYTES); | |
243 int ret = crypto_sign_edwards25519sha512batch_keypair(spk, ssk, rb); | |
244 if (ret) RETURN_FALSE; | |
245 zval_dtor(zsk); | |
246 ZVAL_STRINGL(zsk, ssk, crypto_sign_edwards25519sha512batch_SECRETKEYBYTES, 0); | |
247 RETURN_STRINGL(spk, crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES, 0); | |
248 } |