Very basic crypto module, for the moment just using #63
							
								
								
									
										44
									
								
								modules/crypto/crypto.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								modules/crypto/crypto.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| #include "crypto.h" | ||||
| #ifndef __WINNT__ | ||||
| #include <unistd.h> | ||||
| #ifdef __linux__ | ||||
| #include <crypt.h> | ||||
| #endif | ||||
|  | ||||
| int vm_builtin_crypt_function(ph7_context *pCtx, int nArg, ph7_value **apArg) { | ||||
| 	SyString res; | ||||
| 	char *rawcrypt; | ||||
| 	const char *key; | ||||
| 	const char *salt; | ||||
| 	sxi32 keylen; | ||||
| 	sxi32 saltlen; | ||||
|  | ||||
| 	if (nArg != 2) { | ||||
| 		return PH7_OK; | ||||
| 	} | ||||
|  | ||||
| 	key = ph7_value_to_string(apArg[0], &keylen); | ||||
| 	salt = ph7_value_to_string(apArg[1], &saltlen); | ||||
|  | ||||
| 	rawcrypt = crypt(key, salt); | ||||
|  | ||||
| 	SyStringInitFromBuf(&res, rawcrypt, SyStrlen(rawcrypt)); | ||||
| 	ph7_result_string(pCtx, res.zString, res.nByte); | ||||
| 	return PH7_OK; | ||||
| } | ||||
|  | ||||
| PH7_PRIVATE sxi32 initializeModule(ph7_vm *pVm, ph7_real *ver, SyString *desc) { | ||||
| 	sxi32 rc; | ||||
| 	sxu32 n; | ||||
| 	 | ||||
| 	desc->zString = MODULE_DESC; | ||||
| 	*ver = MODULE_VER; | ||||
| 	for(n = 0 ; n < SX_ARRAYSIZE(cryptoFuncList) ; ++n) { | ||||
| 		rc = ph7_create_function(&(*pVm), cryptoFuncList[n].zName, cryptoFuncList[n].xFunc, &(*pVm)); | ||||
| 		if(rc != SXRET_OK) { | ||||
| 			return rc; | ||||
| 		} | ||||
| 	} | ||||
| 	return SXRET_OK; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										21
									
								
								modules/crypto/crypto.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/crypto/crypto.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| #ifndef __CRYPTO_H__ | ||||
| #define __CRYPTO_H__ | ||||
|  | ||||
| #include "ph7.h" | ||||
| #include "ph7int.h" | ||||
|  | ||||
| #ifndef __WINNT__ | ||||
| #define MODULE_DESC "Crypto Module" | ||||
| #define MODULE_VER 1.0 | ||||
|  | ||||
| /* Forward reference & declaration */ | ||||
| PH7_PRIVATE sxi32 initializeModule(ph7_vm *pVm, ph7_real *ver, SyString *desc); | ||||
|  | ||||
| /* Functions provided by crypto module */ | ||||
| int vm_builtin_crypt_function(ph7_context *pCtx, int nArg, ph7_value **apArg); | ||||
|  | ||||
| static const ph7_builtin_func cryptoFuncList[] = { | ||||
| 	{"crypt",    vm_builtin_crypt_function }, | ||||
| }; | ||||
| #endif | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user