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 }