Hello Freedom

This commit is contained in:
infidel 2022-02-01 23:45:47 +07:00
commit 7009cb27c4
964 changed files with 513364 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
infidel-code/.cipher/

22
README.md Normal file
View File

@ -0,0 +1,22 @@
# Restructure
## References
- ![Implementation 1](http://192.168.2.34/infidel/NTRU_IoT/raw/branch/master/assets/NTRU_IoT_Marcelino.pdf)
- ![Implementation 2](http://192.168.2.34/infidel/NTRU_IoT/raw/branch/master/assets/IEMS_GBS.pdf)
- ![Logic Gate](http://192.168.2.34/infidel/NTRU_IoT/raw/branch/master/assets/ntru.png)
## Infidel Code
- EES 593 enc, dec, genkey
- EES 401 enc, dec, genkey
- Python Wrapper
## Legacy Code
- Main Source
- Test Libs
- Weirds Things
## Future Implementation : esp, atmel
![Runner](http://192.168.2.34/infidel/NTRU_IoT/raw/branch/master/assets/High-speed-NTRU-architecture.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
assets/IEMS_GBS.pdf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

BIN
assets/ntru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

BIN
assets/runner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

View File

@ -0,0 +1,155 @@
sample/URG_decrypt.o: sample/URG_decrypt.c /usr/include/stdc-predef.h \
/usr/include/stdio.h /usr/include/features.h \
/usr/include/arm-linux-gnueabihf/sys/cdefs.h \
/usr/include/arm-linux-gnueabihf/bits/wordsize.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
/usr/include/arm-linux-gnueabihf/bits/types.h \
/usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
/usr/include/arm-linux-gnueabihf/bits/stdio.h /usr/include/stdlib.h \
/usr/include/arm-linux-gnueabihf/bits/waitflags.h \
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
/usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
/usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
/usr/include/arm-linux-gnueabihf/sys/select.h \
/usr/include/arm-linux-gnueabihf/bits/select.h \
/usr/include/arm-linux-gnueabihf/bits/sigset.h \
/usr/include/arm-linux-gnueabihf/bits/time.h \
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
/usr/include/alloca.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/arm-linux-gnueabihf/bits/string.h \
/usr/include/arm-linux-gnueabihf/bits/string2.h /usr/include/unistd.h \
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
/usr/include/arm-linux-gnueabihf/bits/environments.h \
/usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
/usr/include/fcntl.h /usr/include/arm-linux-gnueabihf/bits/fcntl.h \
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h \
/usr/include/arm-linux-gnueabihf/bits/stat.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h \
/usr/include/stdint.h /usr/include/arm-linux-gnueabihf/bits/wchar.h \
/usr/include/assert.h include/ntru_crypto_drbg.h \
include/ntru_crypto_error.h
/usr/include/stdc-predef.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/arm-linux-gnueabihf/sys/cdefs.h:
/usr/include/arm-linux-gnueabihf/bits/wordsize.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h:
/usr/include/arm-linux-gnueabihf/bits/types.h:
/usr/include/arm-linux-gnueabihf/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h:
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h:
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h:
/usr/include/arm-linux-gnueabihf/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/arm-linux-gnueabihf/bits/waitflags.h:
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h:
/usr/include/arm-linux-gnueabihf/sys/types.h:
/usr/include/time.h:
/usr/include/endian.h:
/usr/include/arm-linux-gnueabihf/bits/endian.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h:
/usr/include/arm-linux-gnueabihf/sys/select.h:
/usr/include/arm-linux-gnueabihf/bits/select.h:
/usr/include/arm-linux-gnueabihf/bits/sigset.h:
/usr/include/arm-linux-gnueabihf/bits/time.h:
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h:
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/xlocale.h:
/usr/include/arm-linux-gnueabihf/bits/string.h:
/usr/include/arm-linux-gnueabihf/bits/string2.h:
/usr/include/unistd.h:
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h:
/usr/include/arm-linux-gnueabihf/bits/environments.h:
/usr/include/arm-linux-gnueabihf/bits/confname.h:
/usr/include/getopt.h:
/usr/include/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h:
/usr/include/arm-linux-gnueabihf/bits/stat.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h:
/usr/include/stdint.h:
/usr/include/arm-linux-gnueabihf/bits/wchar.h:
/usr/include/assert.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:

View File

@ -0,0 +1,155 @@
sample/bin_URG_enc-URG_decrypt.o: sample/URG_decrypt.c \
/usr/include/stdc-predef.h /usr/include/stdio.h /usr/include/features.h \
/usr/include/arm-linux-gnueabihf/sys/cdefs.h \
/usr/include/arm-linux-gnueabihf/bits/wordsize.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
/usr/include/arm-linux-gnueabihf/bits/types.h \
/usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
/usr/include/arm-linux-gnueabihf/bits/stdio.h /usr/include/stdlib.h \
/usr/include/arm-linux-gnueabihf/bits/waitflags.h \
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
/usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
/usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
/usr/include/arm-linux-gnueabihf/sys/select.h \
/usr/include/arm-linux-gnueabihf/bits/select.h \
/usr/include/arm-linux-gnueabihf/bits/sigset.h \
/usr/include/arm-linux-gnueabihf/bits/time.h \
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
/usr/include/alloca.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/arm-linux-gnueabihf/bits/string.h \
/usr/include/arm-linux-gnueabihf/bits/string2.h /usr/include/unistd.h \
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
/usr/include/arm-linux-gnueabihf/bits/environments.h \
/usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
/usr/include/fcntl.h /usr/include/arm-linux-gnueabihf/bits/fcntl.h \
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h \
/usr/include/arm-linux-gnueabihf/bits/stat.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h \
/usr/include/stdint.h /usr/include/arm-linux-gnueabihf/bits/wchar.h \
/usr/include/assert.h include/ntru_crypto_drbg.h \
include/ntru_crypto_error.h
/usr/include/stdc-predef.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/arm-linux-gnueabihf/sys/cdefs.h:
/usr/include/arm-linux-gnueabihf/bits/wordsize.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h:
/usr/include/arm-linux-gnueabihf/bits/types.h:
/usr/include/arm-linux-gnueabihf/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h:
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h:
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h:
/usr/include/arm-linux-gnueabihf/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/arm-linux-gnueabihf/bits/waitflags.h:
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h:
/usr/include/arm-linux-gnueabihf/sys/types.h:
/usr/include/time.h:
/usr/include/endian.h:
/usr/include/arm-linux-gnueabihf/bits/endian.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h:
/usr/include/arm-linux-gnueabihf/sys/select.h:
/usr/include/arm-linux-gnueabihf/bits/select.h:
/usr/include/arm-linux-gnueabihf/bits/sigset.h:
/usr/include/arm-linux-gnueabihf/bits/time.h:
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h:
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/xlocale.h:
/usr/include/arm-linux-gnueabihf/bits/string.h:
/usr/include/arm-linux-gnueabihf/bits/string2.h:
/usr/include/unistd.h:
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h:
/usr/include/arm-linux-gnueabihf/bits/environments.h:
/usr/include/arm-linux-gnueabihf/bits/confname.h:
/usr/include/getopt.h:
/usr/include/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h:
/usr/include/arm-linux-gnueabihf/bits/stat.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h:
/usr/include/stdint.h:
/usr/include/arm-linux-gnueabihf/bits/wchar.h:
/usr/include/assert.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:

View File

@ -0,0 +1,155 @@
sample/sample_NTRUEncrypt.o: sample/sample_NTRUEncrypt.c \
/usr/include/stdc-predef.h /usr/include/stdio.h /usr/include/features.h \
/usr/include/arm-linux-gnueabihf/sys/cdefs.h \
/usr/include/arm-linux-gnueabihf/bits/wordsize.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs.h \
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h \
/usr/include/arm-linux-gnueabihf/bits/types.h \
/usr/include/arm-linux-gnueabihf/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h \
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h \
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h \
/usr/include/arm-linux-gnueabihf/bits/stdio.h /usr/include/stdlib.h \
/usr/include/arm-linux-gnueabihf/bits/waitflags.h \
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h \
/usr/include/arm-linux-gnueabihf/sys/types.h /usr/include/time.h \
/usr/include/endian.h /usr/include/arm-linux-gnueabihf/bits/endian.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap.h \
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h \
/usr/include/arm-linux-gnueabihf/sys/select.h \
/usr/include/arm-linux-gnueabihf/bits/select.h \
/usr/include/arm-linux-gnueabihf/bits/sigset.h \
/usr/include/arm-linux-gnueabihf/bits/time.h \
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h \
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h \
/usr/include/alloca.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h \
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/arm-linux-gnueabihf/bits/string.h \
/usr/include/arm-linux-gnueabihf/bits/string2.h /usr/include/unistd.h \
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h \
/usr/include/arm-linux-gnueabihf/bits/environments.h \
/usr/include/arm-linux-gnueabihf/bits/confname.h /usr/include/getopt.h \
/usr/include/fcntl.h /usr/include/arm-linux-gnueabihf/bits/fcntl.h \
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h \
/usr/include/arm-linux-gnueabihf/bits/stat.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h \
/usr/include/stdint.h /usr/include/arm-linux-gnueabihf/bits/wchar.h \
/usr/include/assert.h include/ntru_crypto_drbg.h \
include/ntru_crypto_error.h
/usr/include/stdc-predef.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/arm-linux-gnueabihf/sys/cdefs.h:
/usr/include/arm-linux-gnueabihf/bits/wordsize.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:
/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stddef.h:
/usr/include/arm-linux-gnueabihf/bits/types.h:
/usr/include/arm-linux-gnueabihf/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdarg.h:
/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h:
/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h:
/usr/include/arm-linux-gnueabihf/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/arm-linux-gnueabihf/bits/waitflags.h:
/usr/include/arm-linux-gnueabihf/bits/waitstatus.h:
/usr/include/arm-linux-gnueabihf/sys/types.h:
/usr/include/time.h:
/usr/include/endian.h:
/usr/include/arm-linux-gnueabihf/bits/endian.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:
/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h:
/usr/include/arm-linux-gnueabihf/sys/select.h:
/usr/include/arm-linux-gnueabihf/bits/select.h:
/usr/include/arm-linux-gnueabihf/bits/sigset.h:
/usr/include/arm-linux-gnueabihf/bits/time.h:
/usr/include/arm-linux-gnueabihf/sys/sysmacros.h:
/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h:
/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h:
/usr/include/string.h:
/usr/include/xlocale.h:
/usr/include/arm-linux-gnueabihf/bits/string.h:
/usr/include/arm-linux-gnueabihf/bits/string2.h:
/usr/include/unistd.h:
/usr/include/arm-linux-gnueabihf/bits/posix_opt.h:
/usr/include/arm-linux-gnueabihf/bits/environments.h:
/usr/include/arm-linux-gnueabihf/bits/confname.h:
/usr/include/getopt.h:
/usr/include/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl.h:
/usr/include/arm-linux-gnueabihf/bits/fcntl-linux.h:
/usr/include/arm-linux-gnueabihf/bits/stat.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h:
/usr/include/stdint.h:
/usr/include/arm-linux-gnueabihf/bits/wchar.h:
/usr/include/assert.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:

View File

View File

@ -0,0 +1,173 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
int main()
{
uint8_t *public_key;
uint8_t *private_key;
// uint8_t *message;
char message[60];
uint8_t *ciphertext;
uint8_t *plaintext;
uint16_t max_msg_len; uint16_t public_key_len; /* no. of octets in public key */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint16_t plaintext_len; /* no. of octets in plaintext */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
clock_t clk;
FILE *Handle=NULL; /* File Handler */
struct stat st = {0}; /* Dir Handler */
NTRU_ENCRYPT_PARAM_SET_ID param_set_id;
printf("------------------------------------------------\n");
printf("Enter Message \t\t: ");
// message = "Hello Bastard...";
fgets(message, 60, stdin);
printf("Your message is \t: %s\n",message);
param_set_id = PARAM_SET_IDS[0]; /* 0 : 401; 1 : 449; 14 : 593; */
fprintf(stderr, "Testing parameter set \t: %s\n", ntru_encrypt_get_param_set_name(param_set_id));
printf("------------------------------------------------\n");
fflush (stderr);
rc = ntru_crypto_drbg_external_instantiate(
(RANDOM_BYTES_FN) &randombytes, &drbg);
if (rc != DRBG_OK)
{
fprintf(stderr,"\tError: An error occurred instantiating the DRBG\n");
}
rc = ntru_crypto_ntru_encrypt_keygen(drbg, param_set_id, &public_key_len,
NULL, &private_key_len, NULL);
if (rc != NTRU_OK)
{
ntru_crypto_drbg_uninstantiate(drbg);
fprintf(stderr,"\tError: An error occurred getting the key lengths\n");
}
public_key = (uint8_t *)malloc(public_key_len * sizeof(uint8_t));
private_key = (uint8_t *)malloc(private_key_len * sizeof(uint8_t));
clk = clock();
rc = ntru_crypto_ntru_encrypt_keygen(drbg, param_set_id, &public_key_len,
public_key,
&private_key_len,
private_key);
clk = clock() - clk;
if (stat("./keys", &st) == -1) {
mkdir("./keys", 0700);
printf("Key directory created...\n");
}
Handle=fopen("keys/key-401.pub", "wb");
if(Handle!=NULL) {
printf("-> Writing Pub Key...\n");
fwrite(public_key, public_key_len, 1, Handle);
printf("-> Pub Key written...\n");
fclose(Handle);
}
Handle=fopen("keys/key-401.priv", "wb");
if(Handle!=NULL) {
printf("-> Writing Priv Key...\n");
fwrite(private_key, private_key_len, 1, Handle);
printf("-> Private Key written...\n");
fclose(Handle);
}
if (rc != NTRU_OK)
{
ntru_crypto_drbg_uninstantiate(drbg);
free(public_key);
free(private_key);
fprintf(stderr,"\tError: An error occurred during key generation\n");
}
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, 0, NULL,
&ciphertext_len, NULL);
if (rc != NTRU_OK)
{
fprintf(stderr,"\tError: Bad public key");
}
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key, 0, NULL,
&max_msg_len, NULL);
if (rc != NTRU_OK)
{
fprintf(stderr,"\tError: Bad private key");
}
//message = (uint8_t *) malloc(max_msg_len * sizeof(uint8_t));
printf("------------------------------------------------\n");
printf("Max message block \t: %d\n", max_msg_len * sizeof(uint8_t));
ciphertext = (uint8_t *) malloc(ciphertext_len * sizeof(uint8_t));
plaintext = (uint8_t *) malloc(max_msg_len * sizeof(uint8_t));
plaintext_len = max_msg_len;
//randombytes(message, max_msg_len);
//randombytes(ciphertext, ciphertext_len);
//randombytes(plaintext, plaintext_len);
clk = clock();
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key,
max_msg_len, message, &ciphertext_len, ciphertext);
clk = clock() - clk;
if (rc != NTRU_OK){
fprintf(stderr, "\tError: Encryption error %x\n", rc);
}
//printf("Cipher %s\n", ciphertext);
clk = clock();
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key,
ciphertext_len, ciphertext,
&plaintext_len, plaintext);
clk = clock() - clk;
if (rc != NTRU_OK)
{
fprintf(stderr, "\tError: Decryption error %x\n", rc);
}
printf("Decryption result \t: %s\n", plaintext);
if(plaintext_len != max_msg_len || memcmp(plaintext,message,max_msg_len))
{
fprintf(stderr,
"\tError: Decryption result does not match original plaintext\n");
}
ntru_crypto_drbg_uninstantiate(drbg);
//free(message);
//free(public_key);
//free(private_key);
//free(plaintext);
//free(ciphertext);
fprintf(stderr, "pk %d, sk %d, ct %d bytes\n",
public_key_len, private_key_len, ciphertext_len);
printf("------------------------------------------------\n");
fprintf(stderr, "\n");
}

View File

@ -0,0 +1,75 @@
#include "ntru_crypto.h"
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
uint32_t get_rand(uint8_t *out, uint32_t num_bytes) {
int rng = 50;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
char *main(char *user_input) {
uint8_t public_key[557]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[638]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[593]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[552]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[16]; /* size of AES-128 key */
uint16_t plaintext_len; /* no. of octets in plaintext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle = NULL; /* File Handle for writing NTRU key to file */
char *filename[33];
char **ptr = filename;
char buffer[638];
char *buffer2 = 0;
char *c = malloc(16);
int r;
int s;
double cpu_time_used;
rc = ntru_crypto_drbg_uninstantiate(drbg);
FILE *f = fopen("keys/key-401.priv", "rb");
r = fread(buffer, 1, 638, f);
fclose(f);
// printf("C Log DEC: %d bytes Private Key\n", r);
// printf("C Log DEC: user_input Len %d\n", sizeof(user_input));
rc = ntru_crypto_ntru_decrypt(r, buffer, 552, user_input, &plaintext_len,
NULL);
if (rc != NTRU_OK)
printf("ERROR 1\n");
rc = ntru_crypto_ntru_decrypt(r, buffer, 552, user_input, &plaintext_len,
plaintext);
if (rc != NTRU_OK)
printf("ERROR 2\n");
// printf("C Log DEC : your plain: %s\n", plaintext);
// printf("C Log DEC : your plain LEN: %d\n", plaintext_len);
// printf("your time spent: %lf\n", cpu_time_used);
// snprintf(c, sizeof(c), "%s", plaintext);
strcpy(c, plaintext);
return c;
error:
printf("PROBLEM BUDDY %d\n", rc);
exit(EXIT_FAILURE);
return 0;
}

View File

@ -0,0 +1,116 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include "ntru_crypto.h"
#include <time.h>
#include <sys/stat.h>
#include "ntru_crypto_drbg.h"
#include "test_common.h"
uint8_t new_rand(uint8_t *out, uint32_t num_bytes)
{
int rng;
FILE *fpointer;
fpointer = fopen("/dev/random", "rb");
fread(&rng, sizeof(int), 1, fpointer);
*out = rng;
fclose(fpointer);
return 0;
}
uint8_t get_rand(uint8_t *out, uint32_t num_bytes)
{
int rng = 10;
int urnd = open("/dev/random", "rb");
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
double main(char *user_input, char *i )
{
uint8_t public_key[557]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint16_t private_key_len; /* no. of octets in private key */
uint8_t private_key[607]; /* sized for EES401EP2 */
uint8_t encoded_public_key[593]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[552]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle=NULL; /* File Handle for writing NTRU key to file */
char *filename[33];
char **ptr = filename;
char buffer[557];
char *c;
char *f_name = ".cipher/ees401/cipher_";
char *f_ext = ".dat";
char *f_fin;
char f_spec[strlen(f_name)+strlen(f_ext)+5];
int r;
double cpu_time_used;
clock_t time_s, time_e;
struct stat st = {0}; /* Dir Handler */
NTRU_ENCRYPT_PARAM_SET_ID param_set_id;
param_set_id = PARAM_SET_IDS[1]; /* 0 : 401; 1 : 449; 14 : 593; */
FILE *f = fopen("keys/key-401.pub", "r");
r = fread(buffer, 1, 557, f);
fclose(f);
if (stat(".cipher/ees401", &st) == -1) {
mkdir(".cipher/ees401", 0700);
printf("Cipher directory created...\n");
}
// rc = ntru_crypto_drbg_external_instantiate(&new_rand, &drbg);
fprintf(stderr, "Testing parameter set \t: %s\n", ntru_encrypt_get_param_set_name(param_set_id));
rc = ntru_crypto_drbg_external_instantiate(
(RANDOM_BYTES_FN) &randombytes, &drbg);
if (rc != DRBG_OK)
{
printf("Error 1\n");
goto error;
}
rc = ntru_crypto_ntru_encrypt(drbg, r, buffer, 32, user_input, &ciphertext_len, NULL);
if (rc != DRBG_OK)
{
printf("Error 2\n");
goto error;
}
time_s = clock();
rc = ntru_crypto_ntru_encrypt(drbg, r, buffer, 32, user_input, &ciphertext_len, ciphertext);
time_e = clock();
cpu_time_used = (float)(time_e - time_s) / CLOCKS_PER_SEC;
if (rc != DRBG_OK)
{
printf("Error 3\n");
goto error;
}
snprintf(f_spec, sizeof(f_spec), "%s%s%s", f_name, i, f_ext);
printf("File destination : ");
printf("%s \n",f_spec);
Handle=fopen(f_spec, "wb");
fwrite(ciphertext, sizeof(ciphertext), 1, Handle);
fclose(Handle);
// free(f_spec);
// strcpy(ret_str, ciphertext);
return cpu_time_used;
error:
printf("ERROR %x\n", rc);
return 0;
}

View File

@ -0,0 +1,113 @@
#include "ntru_crypto.h"
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
// typedef uint32_t (*urnd)(uint8_t *out, uint32_t num_bytes);
// static uint8_t const aes_key[] = "Decrypt me, WTF";
uint32_t get_rand(uint8_t *out, uint32_t num_bytes) {
int rng = 112;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
int main(void) {
// uint8_t public_key[557];
uint8_t public_key[557]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[607]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[593]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[552]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[16]; /* size of AES-128 key */
uint16_t plaintext_len; /* no. of octets in plaintext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle = NULL; /* File Handle for writing NTRU key to file */
rc = ntru_crypto_drbg_external_instantiate(&get_rand, &drbg);
if (rc != DRBG_OK)
goto error;
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len,
NULL, &private_key_len, NULL);
if (rc != NTRU_OK) {
error = TRUE;
}
expected_private_key_len = private_key_len;
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len,
public_key, &private_key_len,
private_key);
if (rc != NTRU_OK)
error = TRUE;
if (expected_private_key_len != private_key_len) {
fprintf(stderr, "PRivate key length is different\n");
error = TRUE;
}
printf("Key sucessfully generated. \n");
rc = ntru_crypto_drbg_uninstantiate(drbg);
if ((rc != DRBG_OK) || error) {
error = TRUE;
}
printf("KEY DRBG Success. \n");
Handle = fopen("Nino-ntru-key.raw", "wb");
if (Handle != NULL) {
printf("Writing Pirvatkey\n");
fwrite(private_key, private_key_len, 1, Handle);
fclose(Handle);
}
Handle = fopen("Nino-ntru-pubkey.raw", "wb");
if (Handle != NULL) {
printf("Writing Publickey\n");
fwrite(public_key, public_key_len, 1, Handle);
fclose(Handle);
}
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(
public_key_len, public_key, &encoded_public_key_len, NULL);
if (rc != NTRU_OK)
goto error;
printf("DER encoded, sized requierd %d . \n", encoded_public_ket_len);
expected_encoded_public_key_len = encoded_public_key_len;
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(
public_key_len, public_key, &encoded_public_key_len, encoded_public_key);
if (expected_encoded_public_key_len != encoded_public_key_len) {
fprintf(stderr, "Different encoded pub key detected\n");
error = TRUE;
}
printf("Pub DER Encoding success\n");
rc = ntru_crypto_ntru_encrypt(dbrg, public_key_len, public_key,
sizeof(aes_key), aes_key, &ciphertext_len,
ciphertext);
printf("%s\n", ciphertext);
printf("Done BLyat!!!!\n");
error:
printf("ERROR %x\n", rc);
return 1;
}

Binary file not shown.

View File

@ -0,0 +1,209 @@
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
//typedef uint32_t (*urnd)(uint8_t *out, uint32_t num_bytes);
static uint8_t const aes_key[] = "0123456789abcdef";
uint32_t get_rand(uint8_t *out, uint32_t num_bytes)
{
int rng = 50;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
int main(void) {
//uint8_t public_key[557];
double cpu_time_used;
uint8_t public_key[557]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[607]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[593]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[552]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[16]; /* size of AES-128 key */
uint16_t plaintext_len; /* no. of octets in plaintext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle=NULL; /* File Handle for writing NTRU key to file */
clock_t time_s, time_e;
rc = ntru_crypto_drbg_external_instantiate(&get_rand, &drbg);
if (rc != DRBG_OK)
goto error;
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len, NULL, &private_key_len, NULL);
if (rc != NTRU_OK)
{
error = TRUE;
}
expected_private_key_len=private_key_len;
time_s = clock();
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len, public_key, &private_key_len, private_key);
time_e = clock();
if (rc != NTRU_OK)
error = TRUE;
if (expected_private_key_len!=private_key_len)
{
fprintf(stderr, "PRivate key length is different\n");
error = TRUE;
}
printf("Key sucessfully generated. \n");
rc = ntru_crypto_drbg_uninstantiate(drbg);
if ((rc != DRBG_OK) || error)
{
error = TRUE;
}
printf("KEY DRBG Success. \n");
Handle=fopen("EES401/EES401-ntru-priv.raw","wb");
if (Handle!=NULL){
printf("Writing Pirvatkey\n");
printf("Writing Pirvatkey Length %d\n", private_key_len);
fwrite(private_key, private_key_len, 1, Handle);
fclose(Handle);
}
Handle=fopen("EES401/EES401-ntru-pub.raw","wb");
if(Handle!=NULL){
printf("Writing Publickey\n");
printf("Public Key : %d\n", public_key_len);
fwrite(public_key, public_key_len, 1, Handle);
fclose(Handle);
}
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(public_key_len, public_key, &encoded_public_key_len, NULL);
if (rc != NTRU_OK)
goto error;
printf("DER encoded, sized requierd %d . \n", encoded_public_key_len);
expected_encoded_public_key_len = encoded_public_key_len;
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(public_key_len, public_key, &encoded_public_key_len, encoded_public_key);
if (expected_encoded_public_key_len!=encoded_public_key_len)
{
fprintf(stderr, "Different encoded pub key detected\n");
error = TRUE;
}
next = encoded_public_key;
next_len = encoded_public_key_len;
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(next, &public_key_len, NULL, &next, &next_len);
if (rc != NTRU_OK)
goto error;
printf("Pub key buffer must %d\n", public_key_len);
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(next, &public_key_len, public_key, &next, &next_len);
if (rc != NTRU_OK)
goto error;
printf("Pub DER Encoding success\n");
printf("Encryption Phase \n");
rc = ntru_crypto_drbg_external_instantiate(&get_rand, &drbg);
if (rc != DRBG_OK)
goto error;
printf("Sucess encrypt\n");
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, sizeof(aes_key), aes_key, &ciphertext_len, NULL);
if (rc != NTRU_OK)
goto error;
printf("String to be encrypted: %s\n", aes_key);
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, sizeof(aes_key), aes_key, &ciphertext_len, ciphertext);
if (rc != NTRU_OK)
goto error;
//printf("Ciphertext : %s\n", ciphertext);
rc = ntru_crypto_drbg_uninstantiate(drbg);
printf("Done BLyat!!!!\n");
if (rc != NTRU_OK)
goto error;
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key, ciphertext_len,
ciphertext, &plaintext_len, NULL);
if (rc != NTRU_OK)
/* An error occurred requesting the buffer size needed. */
goto error;
printf("Maximum plaintext buffer size required: %d octets.\n",
plaintext_len);
/* Now we could allocate a buffer of length plaintext_len to hold the
* plaintext, but note that plaintext_len has the maximum plaintext
* size for the EES401EP2 parameter set. Since we know that we've
* received an encrypted AES-128 key in this example, and since we
* already have a plaintext buffer as a local variable, we'll just
* supply the length of that plaintext buffer for decryption.
*/
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key, ciphertext_len,
ciphertext, &plaintext_len, plaintext);
if (rc != NTRU_OK)
{
fprintf(stderr,"Error: An error occurred decrypting the AES-128 key.\n");
return 1;
}
printf("AES-128 key decrypted successfully.\n");
printf("Decoded plaintext length: %d octets\n",plaintext_len);
if(plaintext_len!=sizeof(aes_key))
{
fprintf(stderr,"Error: Decrypted length does not match original plaintext length\n");
return 1;
}
if(memcmp(plaintext,aes_key,sizeof(aes_key)))
{
fprintf(stderr,"Error: Decrypted plaintext does not match original plaintext\n");
return 1;
}
Handle=fopen("sample-decoded-plaintext.bin","wb");
if(Handle!=NULL)
{
printf("Writing decoded plaintext to decoded-plaintext.bin\n");
printf("Plain text : %s\n", plaintext);
fwrite(plaintext,plaintext_len,1,Handle);
fclose(Handle);
}
cpu_time_used = (float)(time_e - time_s) / CLOCKS_PER_SEC;
printf("Time Keygen NTRU : %lf\n", cpu_time_used);
/* And now the plaintext buffer holds the decrypted AES-128 key. */
printf("Sample code completed successfully.\n");
error:
printf("ERROR %x\n", rc);
return 1;
}

View File

@ -0,0 +1,174 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
int main()
{
uint8_t *public_key;
uint8_t *private_key;
// uint8_t *message;
char message[87];
uint8_t *ciphertext;
uint8_t *plaintext;
uint16_t max_msg_len; uint16_t public_key_len; /* no. of octets in public key */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint16_t plaintext_len; /* no. of octets in plaintext */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
clock_t clk;
FILE *Handle=NULL; /* File Handler */
struct stat st = {0}; /* Dir Handler */
NTRU_ENCRYPT_PARAM_SET_ID param_set_id;
printf("------------------------------------------------\n");
printf("Enter Message \t\t: ");
// message = "Hello Bastard...";
fgets(message, 86, stdin);
printf("Your message is \t: %s\n",message);
param_set_id = PARAM_SET_IDS[14]; /* 0 : 401; 1 : 449; 14 : 593; */
fprintf(stderr, "Testing parameter set \t: %s\n", ntru_encrypt_get_param_set_name(param_set_id));
printf("------------------------------------------------\n");
fflush (stderr);
rc = ntru_crypto_drbg_external_instantiate(
(RANDOM_BYTES_FN) &randombytes, &drbg);
if (rc != DRBG_OK)
{
fprintf(stderr,"\tError: An error occurred instantiating the DRBG\n");
}
rc = ntru_crypto_ntru_encrypt_keygen(drbg, param_set_id, &public_key_len,
NULL, &private_key_len, NULL);
if (rc != NTRU_OK)
{
ntru_crypto_drbg_uninstantiate(drbg);
fprintf(stderr,"\tError: An error occurred getting the key lengths\n");
}
public_key = (uint8_t *)malloc(public_key_len * sizeof(uint8_t));
private_key = (uint8_t *)malloc(private_key_len * sizeof(uint8_t));
clk = clock();
rc = ntru_crypto_ntru_encrypt_keygen(drbg, param_set_id, &public_key_len,
public_key,
&private_key_len,
private_key);
clk = clock() - clk;
if (stat("./keys", &st) == -1) {
mkdir("./keys", 0700);
printf("Key directory created...\n");
}
Handle=fopen("keys/key-593.pub", "wb");
if(Handle!=NULL) {
printf("-> Writing Pub Key...\n");
fwrite(public_key, public_key_len, 1, Handle);
printf("-> Pub Key written...\n");
fclose(Handle);
}
Handle=fopen("keys/key-593.priv", "wb");
if(Handle!=NULL) {
printf("-> Writing Priv Key...\n");
fwrite(private_key, private_key_len, 1, Handle);
printf("-> Private Key written...\n");
fclose(Handle);
}
if (rc != NTRU_OK)
{
ntru_crypto_drbg_uninstantiate(drbg);
free(public_key);
free(private_key);
fprintf(stderr,"\tError: An error occurred during key generation\n");
}
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, 0, NULL,
&ciphertext_len, NULL);
if (rc != NTRU_OK)
{
fprintf(stderr,"\tError: Bad public key");
}
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key, 0, NULL,
&max_msg_len, NULL);
if (rc != NTRU_OK)
{
fprintf(stderr,"\tError: Bad private key");
}
//message = (uint8_t *) malloc(max_msg_len * sizeof(uint8_t));
printf("------------------------------------------------\n");
printf("Max message block \t: %d\n", max_msg_len * sizeof(uint8_t));
ciphertext = (uint8_t *) malloc(ciphertext_len * sizeof(uint8_t));
plaintext = (uint8_t *) malloc(max_msg_len * sizeof(uint8_t));
plaintext_len = max_msg_len;
//randombytes(message, max_msg_len);
//randombytes(ciphertext, ciphertext_len);
//randombytes(plaintext, plaintext_len);
clk = clock();
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key,
max_msg_len, message, &ciphertext_len, ciphertext);
clk = clock() - clk;
if (rc != NTRU_OK){
fprintf(stderr, "\tError: Encryption error %x\n", rc);
}
//printf("Cipher %s\n", ciphertext);
clk = clock();
rc = ntru_crypto_ntru_decrypt(private_key_len, private_key,
ciphertext_len, ciphertext,
&plaintext_len, plaintext);
clk = clock() - clk;
if (rc != NTRU_OK)
{
fprintf(stderr, "\tError: Decryption error %x\n", rc);
}
printf("Decryption result \t: %s\n", plaintext);
if(plaintext_len != max_msg_len || memcmp(plaintext,message,max_msg_len))
{
fprintf(stderr,
"\tError: Decryption result does not match original plaintext\n");
}
ntru_crypto_drbg_uninstantiate(drbg);
//free(message);
//free(public_key);
//free(private_key);
//free(plaintext);
//free(ciphertext);
fprintf(stderr, "pk %d, sk %d, ct %d bytes\n",
public_key_len, private_key_len, ciphertext_len);
printf("------------------------------------------------\n");
fprintf(stderr, "\n");
}

View File

@ -0,0 +1,78 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include "ntru_crypto.h"
uint32_t get_rand(uint8_t *out, uint32_t num_bytes)
{
int rng = 50;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
char * main(char * user_input)
{
uint8_t public_key[821]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[891]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[855]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[816]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[16]; /* size of AES-128 key */
uint16_t plaintext_len; /* no. of octets in plaintext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle=NULL; /* File Handle for writing NTRU key to file */
char buffer[891];
char *buffer2 = 0;
char *c = malloc(86);
char *d = malloc(816);
int r;
int s;
double cpu_time_used;
rc = ntru_crypto_drbg_uninstantiate(drbg);
FILE *f=fopen("keys/key-593.priv", "rb");
r = fread(buffer, 1,891, f);
fclose(f);
rc = ntru_crypto_ntru_decrypt(r, buffer, 816, user_input, &plaintext_len,
NULL);
if (rc != NTRU_OK)
printf("ERROR 1\n");
rc = ntru_crypto_ntru_decrypt(r, buffer, 816, user_input, &plaintext_len,
plaintext);
if (rc != NTRU_OK)
printf("ERROR 2\n");
// printf("C Log DEC : your plain: %s\n", plaintext);
// printf("C Log DEC : your plain LEN: %d\n", plaintext_len);
// printf("your time spent: %lf\n", cpu_time_used);
// snprintf(c, sizeof(c), "%s", plaintext);
strcpy(c, plaintext);
return c;
error:
printf("PROBLEM BUDDY %d\n", rc);
exit(EXIT_FAILURE);
return 0;
}

View File

@ -0,0 +1,139 @@
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
#include <time.h>
uint8_t new_rand(uint8_t *out, uint32_t num_bytes)
{
int rng;
FILE *fpointer;
fpointer = fopen("/dev/random", "rb");
fread(&rng, sizeof(int), 1, fpointer);
*out = rng;
fclose(fpointer);
return 0;
}
uint32_t get_rand(uint8_t *out, uint32_t num_bytes)
{
int rng = 50;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
double main(char user_input[], char *i )
{
uint8_t public_key[821]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[891]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[855]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[816]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[86]; /* sized fof EES401EP2 */
uint16_t plaintext_len; /* no. of octets in ciphertext */
char *ret_str = ciphertext;
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle=NULL; /* File Handle for writing NTRU key to file */
char *filename[33];
char **ptr = filename;
char buffer[821];
char *c;
char *f_name = ".cipher/ees593/cipher_";
// char *f_name = "./cipher/cipher_EES593_";
char *f_ext = ".dat";
char f_spec[strlen(f_name)+strlen(f_ext)+5];
int r;
double cpu_time_used;
clock_t time_s, time_e;
NTRU_ENCRYPT_PARAM_SET_ID param_set_id;
param_set_id = PARAM_SET_IDS[14]; /* 0 : 401; 1 : 449; 14 : 593; */
struct stat st = {0}; /* Dir Handler */
FILE *f = fopen("keys/key-593.pub", "rb");
r = fread(buffer, 1, 821, f);
fclose(f);
if (stat(".cipher/ees593", &st) == -1) {
mkdir(".cipher/ees593", 0700);
printf("Cipher directory created...\n");
}
// rc = ntru_crypto_drbg_external_instantiate(&new_rand, &drbg); /* urandom random gen */
fprintf(stderr, "Testing parameter set \t: %s\n", ntru_encrypt_get_param_set_name(param_set_id));
rc = ntru_crypto_drbg_external_instantiate(
(RANDOM_BYTES_FN) &randombytes, &drbg);
if (rc != DRBG_OK)
{
printf("Error 1");
goto error;
}
rc = ntru_crypto_ntru_encrypt(drbg, r, buffer, 86, user_input, &ciphertext_len, NULL);
if (rc != DRBG_OK)
{
printf("Error 1");
goto error;
}
time_s = clock();
rc = ntru_crypto_ntru_encrypt(drbg, r, buffer, 86, user_input, &ciphertext_len, ciphertext);
time_e = clock();
if (rc != DRBG_OK)
{
printf("Error 1");
goto error;
}
cpu_time_used = (float)(time_e - time_s) / CLOCKS_PER_SEC;
if (rc != DRBG_OK)
{
printf("Error 1");
goto error;
}
snprintf(f_spec, sizeof(f_spec), "%s%s%s", f_name, i, f_ext);
Handle=fopen(f_spec, "wb");
if(Handle!=NULL) {
fwrite(ciphertext, ciphertext_len, 1, Handle);
fclose(Handle);
} else {
printf("\t*******************************\n\n");
fprintf(stderr, "\tNo Dir Found ...\n\tProcess ABORTED...");
printf("\n\t*******************************\n");
return 0;
}
fprintf(stderr, "Cipher size : %d bytes\n",
ciphertext_len);
printf("------------------------------------------------\n");
fprintf(stderr, "\n");
return cpu_time_used;
error:
printf("ERROR %x\n", rc);
return 0;
}

View File

@ -0,0 +1,241 @@
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
//typedef uint32_t (*urnd)(uint8_t *out, uint32_t num_bytes);
static uint8_t const aes_key[] = "Decraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
uint32_t get_rand(uint8_t *out, uint32_t num_bytes)
{
int rng = 50;
int urnd = open("/dev/random", O_RDONLY);
read(urnd, &rng, sizeof(int));
*out = urnd;
close(urnd);
return 0;
}
int main(void) {
//uint8_t public_key[557];
double cpu_time_used;
uint8_t public_key[821]; /* sized for EES401EP2 */
uint16_t public_key_len; /* no. of octets in public key */
uint8_t private_key[891]; /* sized for EES401EP2 */
uint16_t private_key_len; /* no. of octets in private key */
uint16_t expected_private_key_len;
uint16_t expected_encoded_public_key_len;
uint8_t encoded_public_key[855]; /* sized for EES401EP2 */
uint16_t encoded_public_key_len; /* no. of octets in encoded public key */
uint8_t ciphertext[816]; /* sized fof EES401EP2 */
uint16_t ciphertext_len; /* no. of octets in ciphertext */
uint8_t plaintext[86]; /* size of AES-128 key */
uint16_t plaintext_len; /* no. of octets in plaintext */
uint8_t *next = NULL; /* points to next cert field to parse */
uint32_t next_len; /* no. of octets it next */
DRBG_HANDLE drbg; /* handle for instantiated DRBG */
uint32_t rc; /* return code */
bool error = FALSE; /* records if error occurred */
FILE *Handle=NULL; /* File Handle for writing NTRU key to file */
char buffer[891];
clock_t time_s, time_e;
rc = ntru_crypto_drbg_external_instantiate(&get_rand, &drbg);
if (rc != DRBG_OK)
{
printf("ERROR 1");
goto error;
}
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES593EP1, &public_key_len, NULL, &private_key_len, NULL);
if (rc != NTRU_OK)
{
printf("ERROR 2");
error = TRUE;
}
expected_private_key_len=private_key_len;
time_s = clock();
rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES593EP1, &public_key_len, public_key, &private_key_len, private_key);
time_e = clock();
if (rc != NTRU_OK)
{
printf("ERROR 3");
error = TRUE;
}
if (expected_private_key_len!=private_key_len)
{
fprintf(stderr, "PRivate key length is different\n");
error = TRUE;
}
printf("Key sucessfully generated. \n");
rc = ntru_crypto_drbg_uninstantiate(drbg);
if ((rc != DRBG_OK) || error)
{
printf("ERROR 4");
error = TRUE;
}
printf("KEY DRBG Success. \n");
Handle=fopen("EES593/EES593-ntru-priv.raw","wb");
if (Handle!=NULL){
printf("Writing Pirvate key\n");
fwrite(private_key, private_key_len, 1, Handle);
fclose(Handle);
}
Handle=fopen("EES593/EES593-ntru-pub.raw","wb");
if(Handle!=NULL){
printf("Writing Public key\n");
printf("Public Key : \n %s\n", public_key);
fwrite(public_key, public_key_len, 1, Handle);
fclose(Handle);
}
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(public_key_len, public_key, &encoded_public_key_len, NULL);
if (rc != NTRU_OK)
goto error;
printf("DER encoded, sized requierd %d . \n", encoded_public_key_len);
expected_encoded_public_key_len = encoded_public_key_len;
rc = ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(public_key_len, public_key, &encoded_public_key_len, encoded_public_key);
if (expected_encoded_public_key_len!=encoded_public_key_len)
{
fprintf(stderr, "Different encoded pub key detected\n");
error = TRUE;
}
next = encoded_public_key;
next_len = encoded_public_key_len;
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(next, &public_key_len, NULL, &next, &next_len);
if (rc != NTRU_OK)
{
printf("ERROR 5");
goto error;
}
printf("Pub key buffer must %d\n", public_key_len);
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(next, &public_key_len, public_key, &next, &next_len);
if (rc != NTRU_OK)
{
printf("ERROR 6");
goto error;
}
printf("Pub DER Encoding success\n");
printf("Encryption Phase \n");
rc = ntru_crypto_drbg_external_instantiate(&get_rand, &drbg);
if (rc != DRBG_OK)
{
printf("ERROR 7");
goto error;
}
printf("Sucess encrypt\n");
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, sizeof(aes_key), aes_key, &ciphertext_len, NULL);
if (rc != NTRU_OK)
{
printf("ERROR 7");
goto error;
}
printf("String to be encrypted: %s\n", aes_key);
rc = ntru_crypto_ntru_encrypt(drbg, public_key_len, public_key, sizeof(aes_key), aes_key, &ciphertext_len, ciphertext);
if (rc != NTRU_OK)
{
printf("ERROR 8");
goto error;
}
//printf("Ciphertext : %s\n", ciphertext);
rc = ntru_crypto_drbg_uninstantiate(drbg);
printf("Done BLyat!!!!\n");
if (rc != NTRU_OK)
{
printf("ERROR 9");
goto error;
}
Handle=fopen("EES593/EES593-ntru-priv.raw","rb");
if(Handle!=NULL){
printf("Read Public key\n");
fread(buffer, 891, 1, Handle);
fclose(Handle);
}
rc = ntru_crypto_ntru_decrypt(private_key_len, buffer, ciphertext_len,
ciphertext, &plaintext_len, NULL);
if (rc != NTRU_OK)
/* An error occurred requesting the buffer size needed. */
goto error;
printf("Maximum plaintext buffer size required: %d octets.\n",
plaintext_len);
/* Now we could allocate a buffer of length plaintext_len to hold the
* plaintext, but note that plaintext_len has the maximum plaintext
* size for the EES401EP2 parameter set. Since we know that we've
* received an encrypted AES-128 key in this example, and since we
* already have a plaintext buffer as a local variable, we'll just
* supply the length of that plaintext buffer for decryption.
*/
plaintext_len = sizeof(plaintext);
rc = ntru_crypto_ntru_decrypt(private_key_len, buffer, ciphertext_len,
ciphertext, &plaintext_len, plaintext);
if (rc != NTRU_OK)
{
fprintf(stderr,"Error: An error occurred decrypting the AES-128 key.\n");
return 1;
}
printf("AES-128 key decrypted successfully.\n");
printf("Decoded plaintext length: %d octets\n",plaintext_len);
if(plaintext_len!=sizeof(aes_key))
{
fprintf(stderr,"Error: Decrypted length does not match original plaintext length\n");
return 1;
}
if(memcmp(plaintext,aes_key,sizeof(aes_key)))
{
fprintf(stderr,"Error: Decrypted plaintext does not match original plaintext\n");
return 1;
}
Handle=fopen("sample-decoded-plaintext.bin","wb");
if(Handle!=NULL)
{
printf("Writing decoded plaintext to decoded-plaintext.bin\n");
printf("Plain text : %s\n", plaintext);
fwrite(plaintext,plaintext_len,1,Handle);
fclose(Handle);
}
cpu_time_used = (float)(time_e - time_s) / CLOCKS_PER_SEC;
printf("Time Keygen NTRU : %lf\n", cpu_time_used);
/* And now the plaintext buffer holds the decrypted AES-128 key. */
printf("Sample code completed successfully.\n");
error:
printf("ERROR %x\n", rc);
return 1;
}

37
infidel-code/Makefile Normal file
View File

@ -0,0 +1,37 @@
CC=sccache gcc
CFLAGS=-I include -I test -w
SFLAGS=-shared -fPIC
DEPS:=$(shell cat ./satan.txt)
MAKEFLAGS += --silent
all: test_401_full test_593_full
@echo "Compiled " $@
test_401_full:
$(CC) $(DEPS) EES401/URG_Keygen.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
test_593_full:
$(CC) $(DEPS) EES593/URG_Keygen.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
enc_593.so:
$(CC) $(SFLAGS) $(DEPS) EES593/URG_encrypt.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
dec_593.so:
$(CC) $(SFLAGS) $(DEPS) EES593/URG_decrypt.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
enc_401.so:
$(CC) $(SFLAGS) $(DEPS) EES401/URG_encrypt.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
dec_401.so:
$(CC) $(SFLAGS) $(DEPS) EES401/URG_decrypt.c -o bin/$@ $(CFLAGS)
@echo "Compiled " $@
clean:
@rm bin/*
@echo "Bin Cleaned ... "

18
infidel-code/README.md Normal file
View File

@ -0,0 +1,18 @@
# NTRU IoT Infidel
### Build
make test_401_full
make test_593_full
make test_593_full
### Shared Object Connector to Python Wrapper
python3 py-wrappers/python_Connector.py
### Test Runnner
./runner.sh
![Runner](http://192.168.2.34/infidel/NTRU_IoT/raw/branch/master/assets/runner.png)

BIN
infidel-code/bin/dec_401.so Executable file

Binary file not shown.

BIN
infidel-code/bin/dec_593.so Executable file

Binary file not shown.

BIN
infidel-code/bin/enc_401.so Executable file

Binary file not shown.

BIN
infidel-code/bin/enc_593.so Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
infidel-code/bin/test_401_full Executable file

Binary file not shown.

BIN
infidel-code/bin/test_593_full Executable file

Binary file not shown.

19
infidel-code/call.py Executable file
View File

@ -0,0 +1,19 @@
#!/bin/env python3
import py_wrappers.python_Connector as pC
print("Rapid Test : ")
print("1. EES 401")
print("2. EES 593")
case = input("-> : ")
rpt = input("-> Repetition : ")
if case == "1":
print("EES 401")
pC.enc_dec_test("401", int(rpt))
if case == "2":
print("EES 593")
pC.enc_dec_test("593", int(rpt))

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,276 @@
[{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-lAulad9GS3yk2Dpp","time":"2021-01-21T22:04:16.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-pq4H2IqZRd2FLaEL","time":"2021-01-21T22:04:39.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-caul5PRlSYywcCRG","time":"2021-01-21T22:05:01.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-WGsG8kNWTF-9szN1","time":"2021-01-21T22:05:24.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-TQRLh7_SShSt_3Ue","time":"2021-01-21T22:05:55.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:03:59\",\"Va\":222,\"Vb\":222.1,\"Vc\":222.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-i6VZtlhlRpmCA-eP","time":"2021-01-21T22:06:27.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:07:29\",\"Va\":220.2,\"Vb\":220.2,\"Vc\":220.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-JFsO9Xl3Qpi3_1Qw","time":"2021-01-21T22:07:33.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:07:29\",\"Va\":220.2,\"Vb\":220.2,\"Vc\":220.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-TvQDBkM5R4OrwxRH","time":"2021-01-21T22:08:05.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:07:29\",\"Va\":220.2,\"Vb\":220.2,\"Vc\":220.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-wfzjrBiHQzCYk8Ap","time":"2021-01-21T22:08:38.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-fpvlhlMWTny3D1Ww","time":"2021-01-21T22:09:07.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-TZkcro-RT1yijHmm","time":"2021-01-21T22:09:23.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-KUulkwjRSXSkT1r-","time":"2021-01-21T22:09:23.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-NAUqQcDyRlqk-DVu","time":"2021-01-21T22:09:23.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-wp4WT8o1R0KytziH","time":"2021-01-21T22:09:24.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-dv17LiVNSQCDIc4D","time":"2021-01-21T22:09:24.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:09:40\",\"Va\":220.7,\"Vb\":220.8,\"Vc\":220.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-mL88H6XQSgaYHeA8","time":"2021-01-21T22:09:56.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-Squn_5sLQ76UGLCs","time":"2021-01-21T22:10:41.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-B7UyB5TVRoChgHvB","time":"2021-01-21T22:10:47.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-edqsUIELRT--o1R5","time":"2021-01-21T22:10:47.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-RL1vd0N7SMiixkBY","time":"2021-01-21T22:10:47.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-9tFhXUEPS1qT2Rw9","time":"2021-01-21T22:10:47.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-OZTIqneVRsKxtGtf","time":"2021-01-21T22:10:52.000Z"}
,{"data":"{\"tanggal\":\"\",\"jam\":\"\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-75ETDBXzQOKDHZwG","time":"2021-01-21T22:10:57.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-FpVyO6boRjO3vMl6","time":"2021-01-21T22:11:05.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-CAS5Xd8TSmi35LKE","time":"2021-01-21T22:11:10.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-xr3H21INTYq5s5j2","time":"2021-01-21T22:11:10.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-c9s6OeGbRI--uG8G","time":"2021-01-21T22:11:15.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-OGHY0vifQ1aZBw5i","time":"2021-01-21T22:11:20.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-CHtzfKxEQS2HX5kS","time":"2021-01-21T22:11:25.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-1JY9MQpuT221NErt","time":"2021-01-21T22:11:31.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-sEAS55NiTAepuzq-","time":"2021-01-21T22:11:38.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:11:32\",\"Va\":222.5,\"Vb\":222.5,\"Vc\":222.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-uOjgfh0aR_aiOhdd","time":"2021-01-21T22:11:38.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-_mU0YkerTYObpLKv","time":"2021-01-21T22:12:09.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-hSDZf3bfTbyQF-s3","time":"2021-01-21T22:12:41.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-TvLCmKaOQceEzKq2","time":"2021-01-21T22:13:14.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-x6dUKeUGRTao-O9g","time":"2021-01-21T22:13:47.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-qPsdnsIJRaGsd2OA","time":"2021-01-21T22:14:19.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-6EY4TkirQKym7mXy","time":"2021-01-21T22:14:52.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-JxTbYPLLS72M4fGS","time":"2021-01-21T22:15:25.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-SfF8tjHKRG-BClfM","time":"2021-01-21T22:15:58.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Efo7dlycRiSnt1MJ","time":"2021-01-21T22:16:30.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-nUAmV3fZSCyXOOCf","time":"2021-01-21T22:17:03.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-geiKf_enRjaF5Zju","time":"2021-01-21T22:17:36.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:12:37\",\"Va\":223.5,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-F1DmBSqzRQi2lHJu","time":"2021-01-21T22:18:08.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-h0L0AaspRnameViB","time":"2021-01-21T22:19:14.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-3G2hWUr6TVmCvhhv","time":"2021-01-21T22:19:47.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-PseEhcSUQFWfcsIW","time":"2021-01-21T22:20:17.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-rnnxOpWAS6yHGtAK","time":"2021-01-21T22:20:30.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-m2Bbs-c4Qiei6Nr8","time":"2021-01-21T22:20:43.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin--v5W3GgpRIqYw6Pe","time":"2021-01-21T22:20:56.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Ps_OUhF4TKqb9gQl","time":"2021-01-21T22:21:08.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-yL58Kho5S4y2lSf8","time":"2021-01-21T22:21:21.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-EN8t9E8KTqS_fHFt","time":"2021-01-21T22:21:34.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Z7PdmRGaSLCMiiNP","time":"2021-01-21T22:21:46.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-EBQyTQjsRdeJdVRP","time":"2021-01-21T22:21:59.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin--KJ-Q_6wSzaypFlm","time":"2021-01-21T22:22:12.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-uQHjfmY7QbGI4e1y","time":"2021-01-21T22:22:25.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-88t8MaZdQVieEi05","time":"2021-01-21T22:22:37.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:19:42\",\"Va\":224.8,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-T9sZh_-JTFqIh0Gv","time":"2021-01-21T22:22:50.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-woGkSPnpQtCznt5S","time":"2021-01-21T22:23:26.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":22,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-dd5Ux05CSp-hBm_6","time":"2021-01-21T22:23:39.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:24:35\",\"Va\":224.9,\"Vb\":225,\"Vc\":225,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-v7x-qIl-QTKHqAAh","time":"2021-01-21T22:24:06.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:25:03\",\"Va\":225.1,\"Vb\":225.2,\"Vc\":225.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-4B8ECOp9TQKb2041","time":"2021-01-21T22:24:35.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:25:26\",\"Va\":225.6,\"Vb\":225.7,\"Vc\":225.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-HpwEr4m4Q0CkrOuY","time":"2021-01-21T22:24:57.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:25:48\",\"Va\":225.9,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-WzFTETnySceE2B_P","time":"2021-01-21T22:25:20.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:26:11\",\"Va\":224.7,\"Vb\":224.7,\"Vc\":224.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-sXzfeaY9ReWSBYso","time":"2021-01-21T22:25:43.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:26:34\",\"Va\":225.5,\"Vb\":225.5,\"Vc\":225.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-3f81PAqRRbSWggBW","time":"2021-01-21T22:26:05.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:26:57\",\"Va\":225,\"Vb\":225,\"Vc\":225,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-_wO1Nu5GRNikRbw_","time":"2021-01-21T22:26:28.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:27:19\",\"Va\":224.5,\"Vb\":224.6,\"Vc\":224.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-h7kni_pYR720wKk6","time":"2021-01-21T22:26:51.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:27:42\",\"Va\":225.3,\"Vb\":225.3,\"Vc\":225.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-RrzbA-a6SoChsXEB","time":"2021-01-21T22:27:14.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:28:05\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-BCldtztUSZiVoeBD","time":"2021-01-21T22:27:36.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:28:28\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-FOcxYMUpSYekt72Q","time":"2021-01-21T22:27:59.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:28:50\",\"Va\":225.2,\"Vb\":225.3,\"Vc\":225.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-hRFsKBdpSbaXQ8a8","time":"2021-01-21T22:28:22.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:29:13\",\"Va\":225.4,\"Vb\":225.4,\"Vc\":225.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-DJYedRUdTeuigsVA","time":"2021-01-21T22:28:44.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:29:36\",\"Va\":224.6,\"Vb\":224.6,\"Vc\":224.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-XfvzwHIuQ6egGKJ9","time":"2021-01-21T22:29:07.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:29:58\",\"Va\":224.6,\"Vb\":224.7,\"Vc\":224.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-43FylTOXRbiomrUm","time":"2021-01-21T22:29:30.000Z"}
,{"data":"{\"tanggal\":\"2021-01-21\",\"jam\":\"22:30:21\",\"Va\":223.5,\"Vb\":223.5,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-tln-BzvwSBq6rk7U","time":"2021-01-21T22:29:53.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:27:48\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-bXYDIg-ZRnCrDmlQ","time":"2021-02-08T10:26:48.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:28:11\",\"Va\":227.1,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-TZ0_SwbRSBCpRYX3","time":"2021-02-08T10:27:10.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:28:34\",\"Va\":227.2,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-I6AaSocWQWyWLtqj","time":"2021-02-08T10:27:33.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:30:56\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-kdYXRCO1SMuGdOqP","time":"2021-02-08T10:29:55.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:31:19\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-6f1gl5K6ScOLSp-8","time":"2021-02-08T10:30:18.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:31:41\",\"Va\":227.2,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-AkvNqRiOR2u045pF","time":"2021-02-08T10:30:41.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:32:04\",\"Va\":227,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-AGy38PmvRBiPteUq","time":"2021-02-08T10:31:04.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:32:27\",\"Va\":227.1,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-eORNvsxtRBy1dK5S","time":"2021-02-08T10:31:26.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:32:49\",\"Va\":227,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-c0yYAe0QQLqXxDmc","time":"2021-02-08T10:31:49.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:33:12\",\"Va\":227,\"Vb\":227,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-s4Yax_amR2eIVvIm","time":"2021-02-08T10:32:12.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:33:35\",\"Va\":227,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-jJdf-IwsReC6bDf-","time":"2021-02-08T10:32:34.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:33:58\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-10Ml0ThYSlaBzfsR","time":"2021-02-08T10:32:57.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:34:20\",\"Va\":227.1,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-dh_pTgxgRJCJYzW5","time":"2021-02-08T10:33:20.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:34:43\",\"Va\":227.3,\"Vb\":227.3,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-KB7-d87wQaOR-tp1","time":"2021-02-08T10:33:43.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:35:06\",\"Va\":227.4,\"Vb\":227.3,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-cd761Jw_SDKc_HAA","time":"2021-02-08T10:34:05.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:35:28\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-F99rSaGoSfqekjTa","time":"2021-02-08T10:34:28.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:35:51\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-K99E0elmRc-sEAHF","time":"2021-02-08T10:34:51.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:36:14\",\"Va\":227.3,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-6JaSOtgmSFmKPp65","time":"2021-02-08T10:35:13.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:36:37\",\"Va\":227.3,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-juZhjhLzR5e-q3iD","time":"2021-02-08T10:35:36.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:36:59\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-c7UPoVg4TeqHGBDu","time":"2021-02-08T10:35:59.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:37:22\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-bldH_EGnShK0mZm4","time":"2021-02-08T10:36:22.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:37:45\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-moMarPF_SASHqyJr","time":"2021-02-08T10:36:44.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:38:08\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-_nol1pk5TXiy1mwv","time":"2021-02-08T10:37:07.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:38:30\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-r50AzgDmSL6ET-Mn","time":"2021-02-08T10:37:30.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:38:53\",\"Va\":226.1,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-QtUTDSWLTdu1Sg_Y","time":"2021-02-08T10:37:53.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:39:16\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-JHaElLDZS0O2M0Ed","time":"2021-02-08T10:38:15.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:39:38\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-ScUT4zf9Tw6n2ePl","time":"2021-02-08T10:38:38.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:40:01\",\"Va\":226.4,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-4RVDN_hEQVOBOrSt","time":"2021-02-08T10:39:01.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:40:24\",\"Va\":227.3,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-JGY-qtqpTgeWSkv7","time":"2021-02-08T10:39:23.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:40:47\",\"Va\":227.1,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-d1OtNOr-SP-2Ijex","time":"2021-02-08T10:39:46.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:41:09\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-nLM8KHouQG2Un2r_","time":"2021-02-08T10:40:09.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:41:32\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-FmnLKNiYSR2c7aSK","time":"2021-02-08T10:40:32.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:41:55\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-nOnCzeCrTwKud5Ag","time":"2021-02-08T10:40:54.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:42:17\",\"Va\":227,\"Vb\":227,\"Vc\":227,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Alkc7YG7RnyOexPP","time":"2021-02-08T10:41:17.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:42:40\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-OHzAdTB5QYSu7o8S","time":"2021-02-08T10:41:40.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:43:03\",\"Va\":227,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Cws7_UP3RjGIQouv","time":"2021-02-08T10:42:02.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:43:26\",\"Va\":227.1,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-oXstofDrTJiGIz_6","time":"2021-02-08T10:42:25.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:43:48\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-iU8fHllwRIOt9bUU","time":"2021-02-08T10:42:48.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:44:11\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":10,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-byWtcUWiQli_4HkZ","time":"2021-02-08T10:43:37.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-Kk1D23BWTqyObUeD","time":"2021-02-08T10:44:01.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-sndIBvftRfKbu3Bs","time":"2021-02-08T10:44:05.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:45:29\",\"Va\":227.6,\"Vb\":227.6,\"Vc\":227.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-1gMdUHZYR8W6sGec","time":"2021-02-08T10:44:29.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$50.00_0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":10,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-n6XKMNtLTvSbXSAt","time":"2021-02-08T10:44:51.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-ZJY8JobbSsiqzzm-","time":"2021-02-08T10:45:16.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-W5skYrKDRp2qy2_T","time":"2021-02-08T10:45:40.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-ws2YGCcRTD6E-oma","time":"2021-02-08T10:46:05.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-nzK9o4t4T6uNSVrG","time":"2021-02-08T10:46:30.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-6LjoAcp_Q_Wdy_xJ","time":"2021-02-08T10:46:34.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:47:57\",\"Va\":227,\"Vb\":227,\"Vc\":227,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-B9pPqxQlRQGFg4sh","time":"2021-02-08T10:46:56.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$50.00_0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":10,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-807rTlgzT-S6ZaZf","time":"2021-02-08T10:47:19.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-wHzY_GAuRweSgxaE","time":"2021-02-08T10:47:44.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-im9jNbT7S_2K0SVU","time":"2021-02-08T10:48:09.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-VCrKn7PKR8mtV6Gy","time":"2021-02-08T10:48:34.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-_inI_hdXShuF5KLq","time":"2021-02-08T10:48:58.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-4eIGpU1-SxqtRiji","time":"2021-02-08T10:49:23.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-ueBbrY7LRGmuz7NK","time":"2021-02-08T10:49:48.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-CReMwd1KTreu_KpF","time":"2021-02-08T10:50:12.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-Fn4_xo0kTYubQRFS","time":"2021-02-08T10:50:37.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-szhLIqAPSRqhNICh","time":"2021-02-08T10:51:02.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-bQgaLZhcTv6tmN_W","time":"2021-02-08T10:51:26.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-RVIoE2D1QQizCriV","time":"2021-02-08T10:51:51.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-IKgxHQiRQQWyvTHV","time":"2021-02-08T10:52:16.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-XWZns7_KTwKEcrOp","time":"2021-02-08T10:52:41.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-SLsUOntJQWmPwX15","time":"2021-02-08T10:53:05.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-wdfVmnCIRpuIk7HV","time":"2021-02-08T10:53:09.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:54:32\",\"Va\":227.2,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-PG8iJqFwQAWK05FY","time":"2021-02-08T10:53:32.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$50.00_0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":10,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-gnWcClpoSSu7CJpu","time":"2021-02-08T10:53:55.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-wNxGcnXhRwWntmRC","time":"2021-02-08T10:54:19.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-jmxwjoAyQ7mthMhu","time":"2021-02-08T10:54:44.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$1.00_1.00?1.00;0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-HIZ3La2QRDGpaDd6","time":"2021-02-08T10:55:09.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$50.00_0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":10,\"Pc\":0,\"Pt\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0}","ri":"cin-NNQIau3NTJm87Jln","time":"2021-02-08T10:56:00.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:57:25\",\"Va\":227.5,\"Vb\":227.6,\"Vc\":227.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin--Nocwis3SyiyVa1C","time":"2021-02-08T10:56:28.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:57:50\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-Jf4_QbSEQ8e5j-Ci","time":"2021-02-08T10:56:52.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:58:15\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-npxrMRxNQDi8FDae","time":"2021-02-08T10:57:16.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:58:40\",\"Va\":226.8,\"Vb\":226.9,\"Vc\":226.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-GuVtnSMnTgiy43Uh","time":"2021-02-08T10:57:41.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:59:04\",\"Va\":228,\"Vb\":228,\"Vc\":228.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-ocWZLn8pQJ2oi_0Y","time":"2021-02-08T10:58:06.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:59:29\",\"Va\":227.3,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-YeuC8n1aRfCqHKYj","time":"2021-02-08T10:58:31.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"10:59:54\",\"Va\":227.3,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-5N44Y_xVSZqO-9XN","time":"2021-02-08T10:58:56.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:00:19\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0}","ri":"cin-v-a4QrroQ_CUN5Pd","time":"2021-02-08T10:59:20.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:01:08\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-WbQuPHxiQJS9425U","time":"2021-02-08T11:00:10.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:01:33\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-C8P8aXPST-Cjb-VR","time":"2021-02-08T11:00:34.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:01:57\",\"Va\":227.5,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-Dv__TShOQheDB9pW","time":"2021-02-08T11:00:59.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:02:22\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-fDcVnKghSX2-xtri","time":"2021-02-08T11:01:24.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:02:47\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-oQFZM_dyTFyGqLIp","time":"2021-02-08T11:01:48.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:03:12\",\"Va\":227.3,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-9VLC4GXMQCKVFoyu","time":"2021-02-08T11:02:13.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:03:36\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-qddC_e0NT7WK6mK3","time":"2021-02-08T11:02:38.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:04:01\",\"Va\":227.3,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-JXlMuFNGSySLnPyZ","time":"2021-02-08T11:03:03.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:04:26\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-8OTtvd2BSii4X7fF","time":"2021-02-08T11:03:27.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:04:50\",\"Va\":227.4,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-lNlxp4yoRo67giPh","time":"2021-02-08T11:03:52.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:05:15\",\"Va\":227.4,\"Vb\":227.5,\"Vc\":227.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":0,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-hzEuj74FQEqGfC9Q","time":"2021-02-08T11:04:17.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:05:40\",\"Va\":227.3,\"Vb\":227.4,\"Vc\":227.4,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-_XyaQGHeRjS8nOgA","time":"2021-02-08T11:04:41.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:06:05\",\"Va\":227.2,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-5876FSv9S0KNdTku","time":"2021-02-08T11:05:06.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:06:29\",\"Va\":227.2,\"Vb\":227.3,\"Vc\":227.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-ucfvYxH4TT-tzceL","time":"2021-02-08T11:05:31.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:07:41\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.2,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-TZDdU7HkQFqSMhcD","time":"2021-02-08T11:06:43.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:08:06\",\"Va\":226.9,\"Vb\":226.9,\"Vc\":226.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-yEdr6oBqQnWbK5l3","time":"2021-02-08T11:07:08.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"11:08:31\",\"Va\":227,\"Vb\":227,\"Vc\":227,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-aW1WnXYuTLeiL-0-","time":"2021-02-08T11:07:35.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"13:21:35\",\"Va\":223.6,\"Vb\":223.7,\"Vc\":223.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-mQ7lv8pMQVuL5YJ8","time":"2021-02-08T13:20:36.000Z"}
,{"data":"{\"tanggal\":\"2021-02-08\",\"jam\":\"13:22:01\",\"Va\":223.6,\"Vb\":223.6,\"Vc\":223.6,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-EZp6RfeQQfe3S-B-","time":"2021-02-08T13:21:05.000Z"}
,{"data":"{\"tanggal\":\"0.0,0.0/0.0;0.0-0.0&0.0)\",\"jam\":\"#0.0,0.0/0.0;0.0-0.0&0.0)\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":13,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0,\"Eq\":1,\"Freq\":1}","ri":"cin-0RkAqfd5SKiv5igK","time":"2021-02-08T13:21:27.000Z"}
,{"data":"{\"tanggal\":\"@0.00]0.00\",\"jam\":\"0.00)0.000^0.00$50.00_0.00%\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":0,\"PFb\":0,\"PFc\":0,\"Ep\":0,\"Eq\":1,\"Freq\":1}","ri":"cin-x5IB2PMaSL-1HzDv","time":"2021-02-08T13:21:54.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:23:48\",\"Va\":223.5,\"Vb\":223.5,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":223.5,\"Cu\":223.5,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-Hj9lGg_1R6-qixsg","time":"2021-02-08T13:23:14.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"(0.00)0.000^0.00$50.00#\",\"time\":\"0.00)0.000^0.00$50.00#2021-02-08(13:24:42\",\"Va\":223.1,\"Vb\":223.2,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":223.1,\"Cu\":223.2,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-oPtCEL5wTMO8zTw7","time":"2021-02-08T13:24:08.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"(0.00)0.000^0.00$50.00#\",\"time\":\"0.00)0.000^0.00$50.00#2021-02-08(13:25:35\",\"Va\":222.9,\"Vb\":222.9,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":222.9,\"Cu\":222.9,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-0XLt2R2hQ76eNNMo","time":"2021-02-08T13:25:01.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"(0.00)0.000^0.00$1.00_#\",\"time\":\"0.00)0.000^0.00$1.00_#0.0,0.0/0.0;0.0-0.0&0.0)\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":13,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":0,\"PFc\":0,\"Vu\":0,\"Cu\":0,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":0,\"Sq\":0,\"Freq\":50}","ri":"cin-UPf8sk_WRaejtbAC","time":"2021-02-08T13:26:25.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:27:49\",\"Va\":222.6,\"Vb\":222.7,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":2021,\"Cu\":222.7,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-5V4QEudtSqepcwVl","time":"2021-02-08T13:27:15.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:30:34\",\"Va\":222.6,\"Vb\":222.6,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":2021,\"Cu\":222.5,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-V8UXl_smRtyII-LA","time":"2021-02-08T13:30:04.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"(0.00)0.000^0.00$50.00#\",\"time\":\"0.00)0.000^0.00$50.00#0.0,0.0/0.0;0.0-0.0&0.0)\",\"Va\":0,\"Vb\":0,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":13,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":0,\"PFc\":0,\"Vu\":0,\"Cu\":0,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":0,\"Sq\":0,\"Freq\":50}","ri":"cin-gVKFj7SMS6Ounolf","time":"2021-02-08T13:30:39.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:32:03\",\"Va\":222.2,\"Vb\":222.3,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Vu\":2021,\"Cu\":222.6,\"Ep\":0,\"Eq\":0,\"Fp\":0,\"Fq\":0,\"Sp\":2,\"Sq\":0,\"Freq\":0}","ri":"cin-CAmdGMeOTvGSlkrn","time":"2021-02-08T13:31:33.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:34:09\",\"Va\":226,\"Vb\":226,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":13,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Ep\":0,\"Eq\":0,\"Freq\":1}","ri":"cin-H3ayZKN5Q3WyXy9R","time":"2021-02-08T13:33:36.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"(0.00)0.000^0.00$50.00#\",\"time\":\"0.00)0.000^0.00$50.00#2021-02-08(13:35:03\",\"Va\":226.6,\"Vb\":226.6,\"Vc\":0,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":13,\"Sc\":0,\"St\":0,\"PFa\":50,\"PFb\":0,\"PFc\":0,\"Ep\":0,\"Eq\":0,\"Freq\":1}","ri":"cin-K_KqgebKQLecRk10","time":"2021-02-08T13:35:28.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:37:18\",\"Va\":226,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-Jo9O-mxyTKW5V0Jx","time":"2021-02-08T13:36:21.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:37:43\",\"Va\":226,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-3Z89MSicT46DZULL","time":"2021-02-08T13:36:47.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-08\",\"time\":\"13:38:08\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-ayEz6AhhRRW7FRBA","time":"2021-02-08T13:37:11.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:45:15\",\"Va\":227.7,\"Vb\":227.7,\"Vc\":227.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-bdGo7AW2StGw3wOZ","time":"2021-02-10T12:44:14.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:45:40\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-emNllAbuSpSEw8m8","time":"2021-02-10T12:44:37.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:46:04\",\"Va\":226.9,\"Vb\":227,\"Vc\":227,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-RytgSf1pRyKfvGBR","time":"2021-02-10T12:45:02.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:46:29\",\"Va\":226.9,\"Vb\":226.9,\"Vc\":227,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-LG8jYy90RCaP7TIF","time":"2021-02-10T12:45:27.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:46:54\",\"Va\":226.8,\"Vb\":226.9,\"Vc\":226.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-lUADqzmUQh29HI9q","time":"2021-02-10T12:45:54.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:47:19\",\"Va\":226.5,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-R9eT9R3USpWQV2Zl","time":"2021-02-10T12:46:16.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:47:43\",\"Va\":226.2,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-4aQIE8iHQlK7F5Ot","time":"2021-02-10T12:46:41.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:48:08\",\"Va\":226.2,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-7caJtmTbQZSOAbHW","time":"2021-02-10T12:47:06.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:48:33\",\"Va\":226.2,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-v2OY0f9NTDS6P44i","time":"2021-02-10T12:47:30.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:48:57\",\"Va\":226,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-PsXIF4LWSDydtbgJ","time":"2021-02-10T12:47:55.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:49:47\",\"Va\":225.9,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50.11}","ri":"cin-RxrE7vINQPavREJm","time":"2021-02-10T12:48:45.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:50:12\",\"Va\":225.9,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-2tdXXqVOQLmsi7YE","time":"2021-02-10T12:49:09.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:50:59\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-WVnaFMxoRmu_E3GG","time":"2021-02-10T12:49:57.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:51:24\",\"Va\":225.8,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-wr2bQ3whTHi76Nxp","time":"2021-02-10T12:50:21.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:51:48\",\"Va\":226.7,\"Vb\":226.7,\"Vc\":226.8,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-ahDfoZ4NRtWRF_Ac","time":"2021-02-10T12:50:46.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:52:13\",\"Va\":226.6,\"Vb\":226.6,\"Vc\":226.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-laGnCifmQYu-ajix","time":"2021-02-10T12:51:11.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:52:38\",\"Va\":226.2,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-sxQpY56AT5yVoyQ1","time":"2021-02-10T12:51:36.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:53:03\",\"Va\":225.9,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-X4t88mXnSVi0YgbE","time":"2021-02-10T12:52:00.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:53:27\",\"Va\":225.9,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-lf_wJQKgSPKtG2zz","time":"2021-02-10T12:52:25.000Z"}
,{"data":"{\"token\":\"\",\"date\":\"2021-02-10\",\"time\":\"12:53:52\",\"Va\":225.6,\"Vb\":225.6,\"Vc\":225.7,\"Ia\":0,\"Ib\":0,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0,\"Pc\":0,\"Pt\":0,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":0,\"Eq\":0,\"Freq\":50}","ri":"cin-BCgc1MJHSciXUZAu","time":"2021-02-10T12:52:50.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:17:48\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-FEqVN2kuSZCwwX7C","time":"2021-03-25T09:17:37.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2165-165-165\",\"time\":\"165:165:85\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-165,\"Qb\":165,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-nDykW94_R7KXjtvS","time":"2021-03-25T09:18:08.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2165-165-165\",\"time\":\"165:165:85\",\"Va\":226,\"Vb\":226,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-165,\"Qb\":165,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-_OLIWJ8DS2yd0k10","time":"2021-03-25T09:18:31.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:19:06\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-K9vZnrrwQ_G5te-9","time":"2021-03-25T09:18:55.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:19:30\",\"Va\":226,\"Vb\":226,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-uxw0QzB_R0-t9b66","time":"2021-03-25T09:19:18.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:20:58\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-R03Vheg9SgK2_Zp_","time":"2021-03-25T09:20:44.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:21:14\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.4,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-uYpvAtqjTPWI8zad","time":"2021-03-25T09:21:01.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:21:31\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.4,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-id_-H3KVRUeO3vz4","time":"2021-03-25T09:21:18.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:21:48\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-IDUXWv1RQaqEahJ2","time":"2021-03-25T09:21:35.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:22:04\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.4,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-PQ3g4UUQQIC8cx8E","time":"2021-03-25T09:21:51.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:22:21\",\"Va\":226.5,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-z66qmv8HQXeFeYxV","time":"2021-03-25T09:22:08.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:22:38\",\"Va\":226.5,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-iGs88cXIQYKOTp3h","time":"2021-03-25T09:22:25.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:22:55\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.5,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-FVQkYNj-RoifPMu_","time":"2021-03-25T09:22:41.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:23:11\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.4,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-SRcwf_6JQh6_zcfD","time":"2021-03-25T09:22:58.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:23:28\",\"Va\":227.2,\"Vb\":227.2,\"Vc\":227.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-nP8deUmFQaOmJhw5","time":"2021-03-25T09:23:15.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:23:45\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-ckk1kHakTaqs-xMr","time":"2021-03-25T09:23:32.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:24:02\",\"Va\":226.3,\"Vb\":226.2,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-D6Z_JueHTfqzpokE","time":"2021-03-25T09:23:48.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:24:18\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-Og34gX4fQqi5LXIZ","time":"2021-03-25T09:24:05.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:24:35\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-3BdRkLnaSFuWcoqY","time":"2021-03-25T09:24:22.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:24:52\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":0,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-e68PRyQHToaak8Wi","time":"2021-03-25T09:24:39.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:25:08\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-DX-UaTpHTNO72Sqm","time":"2021-03-25T09:24:55.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:25:25\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-HMlF6QY_TRCWeui2","time":"2021-03-25T09:25:12.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:25:42\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-e_evu2U1RViL5lLu","time":"2021-03-25T09:25:29.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:25:59\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin--rsI12qGR3CYDfkr","time":"2021-03-25T09:25:45.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:26:15\",\"Va\":224.9,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-Akqb-RyqR8mRS9CV","time":"2021-03-25T09:26:02.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:26:32\",\"Va\":224.9,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-qW7dbCklSVKSMoQm","time":"2021-03-25T09:26:19.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:26:49\",\"Va\":224.9,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-MA2Po7uPSJmg3_CA","time":"2021-03-25T09:26:36.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:27:06\",\"Va\":224.9,\"Vb\":224.9,\"Vc\":224.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-tPyLQeRMSvGg6qGi","time":"2021-03-25T09:26:52.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:27:22\",\"Va\":224.7,\"Vb\":224.7,\"Vc\":224.8,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-qf4JIv6pQ_i94jdj","time":"2021-03-25T09:27:09.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:28:12\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-z4BubQ4gR4u14DaE","time":"2021-03-25T09:27:59.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:28:29\",\"Va\":225.6,\"Vb\":225.6,\"Vc\":225.6,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-0mliGyRRSIidzI6V","time":"2021-03-25T09:28:16.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:28:46\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-nz1ZCksVRWiilZiy","time":"2021-03-25T09:28:33.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:29:13\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-PfN--oOaRR22lFcG","time":"2021-03-25T09:29:00.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:29:30\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-867MXQzcRMSq8A4c","time":"2021-03-25T09:29:16.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:29:46\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-DNtGddJrTWOLxGgL","time":"2021-03-25T09:29:33.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:30:03\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-jAzMx6MIRBqIxLGF","time":"2021-03-25T09:29:50.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:30:20\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-uRvotM02QGuzHnZn","time":"2021-03-25T09:30:07.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:30:37\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":-3,\"Qb\":3,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-Nths6v4HQVKWXDQB","time":"2021-03-25T09:30:23.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:31:29\",\"Va\":226.6,\"Vb\":226.6,\"Vc\":226.7,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-dx5AGTk9T4yn_IzZ","time":"2021-03-25T09:31:16.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:31:46\",\"Va\":226.5,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-zT9y7KIYSsaZw_Ib","time":"2021-03-25T09:31:33.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:32:03\",\"Va\":226.7,\"Vb\":226.7,\"Vc\":226.7,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-LSq-yNTMTkmXMHMl","time":"2021-03-25T09:31:50.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:32:20\",\"Va\":227.1,\"Vb\":227.1,\"Vc\":227.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-1uwmuydwQPWebSRh","time":"2021-03-25T09:32:06.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:32:36\",\"Va\":226.4,\"Vb\":226.4,\"Vc\":226.4,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-IEewhLk8Sta9wKDF","time":"2021-03-25T09:32:23.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:32:53\",\"Va\":226.5,\"Vb\":226.5,\"Vc\":226.5,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-Y_-QWX9ZTAai9TgE","time":"2021-03-25T09:32:40.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:33:10\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-N0Quk8DwSYCaz6PQ","time":"2021-03-25T09:32:57.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:33:26\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-OjFqT9pwSU66rEm1","time":"2021-03-25T09:33:13.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:33:43\",\"Va\":226.9,\"Vb\":226.9,\"Vc\":226.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-JOd2V-QUSfiCG6Jy","time":"2021-03-25T09:33:30.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:34:00\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-J2R3fioRRhODskJa","time":"2021-03-25T09:33:47.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:34:17\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-H4xnu0xITtCa_3tF","time":"2021-03-25T09:34:03.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:34:33\",\"Va\":226.2,\"Vb\":226.2,\"Vc\":226.2,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-32sc668gT3yBH5Na","time":"2021-03-25T09:34:20.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:34:50\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-mZL-gTYiTzuysAH7","time":"2021-03-25T09:34:37.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:35:07\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-3fKeZ0uqRTKhQdbb","time":"2021-03-25T09:34:54.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:35:24\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-9qyqEWdiTLCy0jep","time":"2021-03-25T09:35:10.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:35:40\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-SfXkeaa1RyioHEJc","time":"2021-03-25T09:35:27.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:35:57\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-YQqV3q8XSyamnN7u","time":"2021-03-25T09:35:44.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:36:14\",\"Va\":226.3,\"Vb\":226.3,\"Vc\":226.3,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-pvDaM0WdTy68So3B","time":"2021-03-25T09:36:00.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:36:30\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-9PreGiSfQh2qoDNh","time":"2021-03-25T09:36:17.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:36:47\",\"Va\":226.1,\"Vb\":226.1,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-GRKMZ0_cSsaTO4Ic","time":"2021-03-25T09:36:34.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:37:04\",\"Va\":226,\"Vb\":226,\"Vc\":226.1,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-RX_pbJwXTXKMvDXi","time":"2021-03-25T09:36:51.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:37:21\",\"Va\":225.9,\"Vb\":225.9,\"Vc\":225.9,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-STq2qS2bSJipWxKV","time":"2021-03-25T09:37:07.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-03-25\",\"time\":\"09:37:37\",\"Va\":226,\"Vb\":226,\"Vc\":226,\"Ia\":0,\"Ib\":0.14,\"Ic\":0,\"Qa\":0,\"Qb\":0,\"Qc\":0,\"Qt\":0,\"Pa\":0,\"Pb\":0.03,\"Pc\":0,\"Pt\":0.03,\"Sa\":0,\"Sb\":0.03,\"Sc\":0,\"St\":0.03,\"PFa\":1,\"PFb\":1,\"PFc\":1,\"Ep\":6,\"Freq\":50}","ri":"cin-QlkFl6YlTLaDJNVs","time":"2021-03-25T09:37:24.000Z"}
,{"data":"{\"token\":\"cea949ea3537bc59e96b3a8ce119dfc3\",\"date\":\"2021-04-13\",\"time\":\"11:03:25\",\"Va\":\"223.5\",\"Vb\":\"223.6\",\"Vc\":\"0.0\",\"Ia\":\"1.70\",\"Ib\":\"3.50\",\"Ic\":\"0.00\",\"Qa\":\"0.31\",\"Qb\":\"0.62\",\"Qc\":\"0.00\",\"Qt\":\"0.31\",\"Pa\":\"0.07\",\"Pb\":\"0.35\",\"Pc\":\"0.00\",\"Pt\":\"0.42\",\"Sa\":\"0.31\",\"Sb\":\"0.71\",\"Sc\":\"0.00\",\"St\":\"0.52\",\"PFa\":\"0.23\",\"PFb\":\"0.49\",\"PFc\":\"0.31\",\"Ep\":\"19265.00\",\"Fp\":\"11065.00\",\"Freq\":\"50.00\"}","ri":"cin-KQcyAp5vS225xpV1","time":"2021-04-13T10:59:47.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-04-13\",\"time\":\"11:15:39\",\"Va\":\"223.5\",\"Vb\":\"223.5\",\"Vc\":\"0.0\",\"Ia\":\"1.60\",\"Ib\":\"3.50\",\"Ic\":\"0.00\",\"Qa\":\"0.31\",\"Qb\":\"0.62\",\"Qc\":\"0.00\",\"Qt\":\"0.31\",\"Pa\":\"0.07\",\"Pb\":\"0.35\",\"Pc\":\"0.00\",\"Pt\":\"0.42\",\"Sa\":\"0.31\",\"Sb\":\"0.71\",\"Sc\":\"0.00\",\"St\":\"0.52\",\"PFa\":\"0.23\",\"PFb\":\"0.50\",\"PFc\":\"0.31\",\"Ep\":\"19265.00\",\"Fp\":\"11065.00\",\"Sp\":\"11065.00\",\"Freq\":\"50.00\"}","ri":"cin-ZR0rpWEfQ02wVAHG","time":"2021-04-13T11:12:01.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-04-13\",\"time\":\"11:17:03\",\"Va\":\"223.8\",\"Vb\":\"223.8\",\"Vc\":\"0.0\",\"Ia\":\"1.60\",\"Ib\":\"3.50\",\"Ic\":\"0.00\",\"Qa\":\"0.31\",\"Qb\":\"0.62\",\"Qc\":\"0.00\",\"Qt\":\"0.31\",\"Pa\":\"0.07\",\"Pb\":\"0.35\",\"Pc\":\"0.00\",\"Pt\":\"0.42\",\"Sa\":\"0.31\",\"Sb\":\"0.71\",\"Sc\":\"0.00\",\"St\":\"0.52\",\"PFa\":\"0.23\",\"PFb\":\"0.50\",\"PFc\":\"0.31\",\"Ep\":\"19265.00\",\"Fp\":\"11065.00\",\"Sp\":\"30331.00\",\"Freq\":\"50.00\"}","ri":"cin-jXFJ859GRtW3m40C","time":"2021-04-13T11:13:24.000Z"}
,{"data":"{\"token\":\"6cc5dc0059d39c5392784721c78d4bb3\",\"date\":\"2021-04-13\",\"time\":\"11:22:03\",\"Va\":\"223.8\",\"Vb\":\"223.8\",\"Vc\":\"0.0\",\"Ia\":\"1.70\",\"Ib\":\"3.50\",\"Ic\":\"0.00\",\"Qa\":\"0.31\",\"Qb\":\"0.63\",\"Qc\":\"0.00\",\"Qt\":\"0.31\",\"Pa\":\"0.07\",\"Pb\":\"0.35\",\"Pc\":\"0.00\",\"Pt\":\"0.42\",\"Sa\":\"0.31\",\"Sb\":\"0.71\",\"Sc\":\"0.00\",\"St\":\"0.52\",\"PFa\":\"0.22\",\"PFb\":\"0.50\",\"PFc\":\"0.31\",\"Ep\":\"19265.00\",\"Fp\":\"11065.00\",\"Sp\":\"30331.00\",\"Freq\":\"50.00\"}","ri":"cin-xNdk3heETxuG1vaC","time":"2021-04-13T11:18:26.000Z"}
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,351 @@
/******************************************************************************
* NTRU Cryptography Reference Source Code
*
* Copyright (C) 2009-2016 Security Innovation (SI)
*
* SI has dedicated the work to the public domain by waiving all of its rights
* to the work worldwide under copyright law, including all related and
* neighboring rights, to the extent allowed by law.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* You can copy, modify, distribute and perform the work, even for commercial
* purposes, all without asking permission. You should have received a copy of
* the creative commons license (CC0 1.0 universal) along with this program.
* See the license file for more information.
*
*
*********************************************************************************/
/******************************************************************************
*
* File: ntru_crypto.h
*
* Contents: Public header file for NTRUEncrypt.
*
*****************************************************************************/
#ifndef NTRU_CRYPTO_H
#define NTRU_CRYPTO_H
#include "ntru_crypto_platform.h"
#include "ntru_crypto_drbg.h"
#include "ntru_crypto_error.h"
#if !defined( NTRUCALL )
#if !defined(WIN32) || defined (NTRUCRYPTO_STATIC)
// Linux, or a Win32 static library
#define NTRUCALL extern uint32_t
#elif defined (NTRUCRYPTO_EXPORTS)
// Win32 DLL build
#define NTRUCALL extern __declspec(dllexport) uint32_t
#else
// Win32 DLL import
#define NTRUCALL extern __declspec(dllimport) uint32_t
#endif
#endif /* NTRUCALL */
#if defined ( __cplusplus )
extern "C" {
#endif /* __cplusplus */
/* parameter set ID list */
typedef enum _NTRU_ENCRYPT_PARAM_SET_ID {
NTRU_EES401EP1,
NTRU_EES449EP1,
NTRU_EES677EP1,
NTRU_EES1087EP2,
NTRU_EES541EP1,
NTRU_EES613EP1,
NTRU_EES887EP1,
NTRU_EES1171EP1,
NTRU_EES659EP1,
NTRU_EES761EP1,
NTRU_EES1087EP1,
NTRU_EES1499EP1,
NTRU_EES401EP2,
NTRU_EES439EP1,
NTRU_EES593EP1,
NTRU_EES743EP1,
NTRU_EES443EP1,
NTRU_EES587EP1,
} NTRU_ENCRYPT_PARAM_SET_ID;
/* error codes */
#define NTRU_OK 0
#define NTRU_FAIL 1
#define NTRU_BAD_PARAMETER 2
#define NTRU_BAD_LENGTH 3
#define NTRU_BUFFER_TOO_SMALL 4
#define NTRU_INVALID_PARAMETER_SET 5
#define NTRU_BAD_PUBLIC_KEY 6
#define NTRU_BAD_PRIVATE_KEY 7
#define NTRU_OUT_OF_MEMORY 8
#define NTRU_BAD_ENCODING 9
#define NTRU_OID_NOT_RECOGNIZED 10
#define NTRU_UNSUPPORTED_PARAM_SET 11
#define NTRU_RESULT(r) ((uint32_t)((r) ? NTRU_ERROR_BASE + (r) : (r)))
#define NTRU_RET(r) return NTRU_RESULT((r))
/* function declarations */
/* ntru_crypto_ntru_encrypt
*
* Implements NTRU encryption (SVES) for the parameter set specified in
* the public key blob.
*
* Before invoking this function, a DRBG must be instantiated using
* ntru_crypto_drbg_instantiate() to obtain a DRBG handle, and in that
* instantiation the requested security strength must be at least as large
* as the security strength of the NTRU parameter set being used.
* Failure to instantiate the DRBG with the proper security strength will
* result in this function returning DRBG_ERROR_BASE + DRBG_BAD_LENGTH.
*
* The required minimum size of the output ciphertext buffer (ct) may be
* queried by invoking this function with ct = NULL. In this case, no
* encryption is performed, NTRU_OK is returned, and the required minimum
* size for ct is returned in ct_len.
*
* When ct != NULL, at invocation *ct_len must be the size of the ct buffer.
* Upon return it is the actual size of the ciphertext.
*
* Returns NTRU_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_BAD_PARAMETER if the DRBG handle is invalid.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PARAMETER if an argument pointer
* (other than ct) is NULL.
* Returns NTRU_ERROR_BASE + NTRU_BAD_LENGTH if a length argument
* (pubkey_blob_len or pt_len) is zero, or if pt_len exceeds the
* maximum plaintext length for the parameter set.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PUBLIC_KEY if the public-key blob is
* invalid (unknown format, corrupt, bad length).
* Returns NTRU_ERROR_BASE + NTRU_BUFFER_TOO_SMALL if the ciphertext buffer
* is too small.
* Returns NTRU_ERROR_BASE + NTRU_NO_MEMORY if memory needed cannot be
* allocated from the heap.
*/
NTRUCALL
ntru_crypto_ntru_encrypt(
DRBG_HANDLE drbg_handle, /* in - handle for DRBG */
uint16_t pubkey_blob_len, /* in - no. of octets in public key
blob */
uint8_t const *pubkey_blob, /* in - pointer to public key */
uint16_t pt_len, /* in - no. of octets in plaintext */
uint8_t const *pt, /* in - pointer to plaintext */
uint16_t *ct_len, /* in/out - no. of octets in ct, addr for
no. of octets in ciphertext */
uint8_t *ct); /* out - address for ciphertext */
/* ntru_crypto_ntru_decrypt
*
* Implements NTRU decryption (SVES) for the parameter set specified in
* the private key blob.
*
* The maximum size of the output plaintext may be queried by invoking
* this function with pt = NULL. In this case, no decryption is performed,
* NTRU_OK is returned, and the maximum size the plaintext could be is
* returned in pt_len.
* Note that until the decryption is performed successfully, the actual size
* of the resulting plaintext cannot be known.
*
* When pt != NULL, at invocation *pt_len must be the size of the pt buffer.
* Upon return it is the actual size of the plaintext.
*
* Returns NTRU_OK if successful.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PARAMETER if an argument pointer
* (other than pt) is NULL.
* Returns NTRU_ERROR_BASE + NTRU_BAD_LENGTH if a length argument
* (privkey_blob) is zero, or if ct_len is invalid for the parameter set.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PRIVATE_KEY if the private-key blob is
* invalid (unknown format, corrupt, bad length).
* Returns NTRU_ERROR_BASE + NTRU_BUFFER_TOO_SMALL if the plaintext buffer
* is too small.
* Returns NTRU_ERROR_BASE + NTRU_NO_MEMORY if memory needed cannot be
* allocated from the heap.
* Returns NTRU_ERROR_BASE + NTRU_FAIL if a decryption error occurs.
*/
NTRUCALL
ntru_crypto_ntru_decrypt(
uint16_t privkey_blob_len, /* in - no. of octets in private key
blob */
uint8_t const *privkey_blob, /* in - pointer to private key */
uint16_t ct_len, /* in - no. of octets in ciphertext */
uint8_t const *ct, /* in - pointer to ciphertext */
uint16_t *pt_len, /* in/out - no. of octets in pt, addr for
no. of octets in plaintext */
uint8_t *pt); /* out - address for plaintext */
/* ntru_crypto_ntru_encrypt_keygen
*
* Implements key generation for NTRUEncrypt for the parameter set specified.
*
* Before invoking this function, a DRBG must be instantiated using
* ntru_crypto_drbg_instantiate() to obtain a DRBG handle, and in that
* instantiation the requested security strength must be at least as large
* as the security strength of the NTRU parameter set being used.
* Failure to instantiate the DRBG with the proper security strength will
* result in this function returning DRBG_ERROR_BASE + DRBG_BAD_LENGTH.
*
* The required minimum size of the output public-key buffer (pubkey_blob)
* may be queried by invoking this function with pubkey_blob = NULL.
* In this case, no key generation is performed, NTRU_OK is returned, and
* the required minimum size for pubkey_blob is returned in pubkey_blob_len.
*
* The required minimum size of the output private-key buffer (privkey_blob)
* may be queried by invoking this function with privkey_blob = NULL.
* In this case, no key generation is performed, NTRU_OK is returned, and
* the required minimum size for privkey_blob is returned in privkey_blob_len.
*
* The required minimum sizes of both pubkey_blob and privkey_blob may be
* queried as described above, in a single invocation of this function.
*
* When pubkey_blob != NULL and privkey_blob != NULL, at invocation
* *pubkey_blob_len must be the size of the pubkey_blob buffer and
* *privkey_blob_len must be the size of the privkey_blob buffer.
* Upon return, *pubkey_blob_len is the actual size of the public-key blob
* and *privkey_blob_len is the actual size of the private-key blob.
*
* Returns NTRU_OK if successful.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PARAMETER if an argument pointer
* (other than pubkey_blob or privkey_blob) is NULL.
* Returns NTRU_ERROR_BASE + NTRU_INVALID_PARAMETER_SET if the parameter-set
* ID is invalid.
* Returns NTRU_ERROR_BASE + NTRU_BAD_LENGTH if a length argument is invalid.
* Returns NTRU_ERROR_BASE + NTRU_BUFFER_TOO_SMALL if either the pubkey_blob
* buffer or the privkey_blob buffer is too small.
* Returns NTRU_ERROR_BASE + NTRU_NO_MEMORY if memory needed cannot be
* allocated from the heap.
* Returns NTRU_ERROR_BASE + NTRU_FAIL if the polynomial generated for f is
* not invertible in (Z/qZ)[X]/(X^N - 1), which is extremely unlikely.
* Should this occur, this function should simply be invoked again.
*/
NTRUCALL
ntru_crypto_ntru_encrypt_keygen(
DRBG_HANDLE drbg_handle, /* in - handle of DRBG */
NTRU_ENCRYPT_PARAM_SET_ID param_set_id, /* in - parameter set ID */
uint16_t *pubkey_blob_len, /* in/out - no. of octets in
pubkey_blob, addr
for no. of octets
in pubkey_blob */
uint8_t *pubkey_blob, /* out - address for
public key blob */
uint16_t *privkey_blob_len, /* in/out - no. of octets in
privkey_blob, addr
for no. of octets
in privkey_blob */
uint8_t *privkey_blob); /* out - address for
private key blob */
/* ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo
*
* DER-encodes an NTRUEncrypt public-key from a public-key blob into a
* SubjectPublicKeyInfo field for inclusion in an X.509 certificate.
*
* The required minimum size of the output SubjectPublicKeyInfo buffer
* (encoded_subjectPublicKeyInfo) may be queried by invoking this function
* with encoded_subjectPublicKeyInfo = NULL. In this case, no encoding is
* performed, NTRU_OK is returned, and the required minimum size for
* encoded_subjectPublicKeyInfo is returned in encoded_subjectPublicKeyInfo_len.
*
* When encoded_subjectPublicKeyInfo != NULL, at invocation
* *encoded_subjectPublicKeyInfo_len must be the size of the
* encoded_subjectPublicKeyInfo buffer.
* Upon return, it is the actual size of the encoded public key.
*
* Returns NTRU_OK if successful.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PARAMETER if an argument pointer
* (other than encoded_subjectPublicKeyInfo) is NULL.
* Returns NTRU_ERROR_BASE + NTRU_BAD_LENGTH if pubkey_blob_len is zero.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PUBLIC_KEY if the public-key blob is
* invalid (unknown format, corrupt, bad length).
* Returns NTRU_ERROR_BASE + NTRU_BUFFER_TOO_SMALL if the SubjectPublicKeyInfo
* buffer is too small.
*/
NTRUCALL
ntru_crypto_ntru_encrypt_publicKey2SubjectPublicKeyInfo(
uint16_t pubkey_blob_len, /* in - no. of octets in public-key
blob */
uint8_t const *pubkey_blob, /* in - ptr to public-key blob */
uint16_t *encoded_subjectPublicKeyInfo_len,
/* in/out - no. of octets in encoded info,
address for no. of octets in
encoded info */
uint8_t *encoded_subjectPublicKeyInfo);
/* out - address for encoded info */
/* ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey
*
* Decodes a DER-encoded NTRUEncrypt public-key from a
* SubjectPublicKeyInfo field in an X.509 certificate and returns the
* public-key blob itself.
*
* The required minimum size of the output public-key buffer (pubkey_blob)
* may be queried by invoking this function with pubkey_blob = NULL.
* In this case, no decoding is performed, NTRU_OK is returned, and the
* required minimum size for pubkey_blob is returned in pubkey_blob_len.
*
* When pubkey_blob != NULL, at invocation *pubkey_blob_len must be the
* size of the pubkey_blob buffer.
* Upon return, it is the actual size of the public-key blob.
*
* Returns NTRU_OK if successful.
* Returns NTRU_ERROR_BASE + NTRU_BAD_LENGTH if the encoded data buffer
* does not contain a full der prefix and public key.
* Returns NTRU_ERROR_BASE + NTRU_BAD_PARAMETER if an argument pointer
* (other than pubkey_blob) is NULL.
* Returns NTRU_ERROR_BASE + NTRU_BAD_ENCODING if the encoded data is
* an invalid encoding of an NTRU public key.
* Returns NTRU_ERROR_BASE + NTRU_OID_NOT_RECOGNIZED if the
* encoded data contains an OID that identifies an object other than
* an NTRU public key.
* Returns NTRU_ERROR_BASE + NTRU_BUFFER_TOO_SMALL if the pubkey_blob buffer
* is too small.
*/
NTRUCALL
ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(
uint8_t const *encoded_data, /* in - ptr to subjectPublicKeyInfo
in the encoded data */
uint16_t *pubkey_blob_len, /* in/out - no. of octets in pubkey blob,
address for no. of octets in
pubkey blob */
uint8_t *pubkey_blob, /* out - address for pubkey blob */
uint8_t **next, /* out - address for ptr to encoded
data following the
subjectPublicKeyInfo */
uint32_t *remaining_data_len);/* in/out - number of bytes remaining in
buffer *next */
/* ntru_encrypt_get_param_set_name
*
* Returns pointer to null terminated parameter set name
* or NULL if parameter set ID is not found.
*/
const char *
ntru_encrypt_get_param_set_name(
NTRU_ENCRYPT_PARAM_SET_ID id); /* in - parameter-set id */
#if defined ( __cplusplus )
}
#endif /* __cplusplus */
#endif /* NTRU_CRYPTO_H */

Binary file not shown.

View File

@ -0,0 +1,221 @@
/******************************************************************************
* NTRU Cryptography Reference Source Code
*
* Copyright (C) 2009-2016 Security Innovation (SI)
*
* SI has dedicated the work to the public domain by waiving all of its rights
* to the work worldwide under copyright law, including all related and
* neighboring rights, to the extent allowed by law.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* You can copy, modify, distribute and perform the work, even for commercial
* purposes, all without asking permission. You should have received a copy of
* the creative commons license (CC0 1.0 universal) along with this program.
* See the license file for more information.
*
*
*********************************************************************************/
/******************************************************************************
*
* File: ntru_crypto_drbg.h
*
* Contents: Public header file for ntru_crypto_drbg.c.
*
*****************************************************************************/
#ifndef NTRU_CRYPTO_DRBG_H
#define NTRU_CRYPTO_DRBG_H
#include "ntru_crypto_platform.h"
#include "ntru_crypto_error.h"
#if !defined( NTRUCALL )
#if !defined(WIN32) || defined (NTRUCRYPTO_STATIC)
/* Linux, or a Win32 static library */
#define NTRUCALL extern uint32_t
#elif defined (NTRUCRYPTO_EXPORTS)
/* Win32 DLL build */
#define NTRUCALL extern __declspec(dllexport) uint32_t
#else
/* Win32 DLL import */
#define NTRUCALL extern __declspec(dllimport) uint32_t
#endif
#endif /* NTRUCALL */
#if defined ( __cplusplus )
extern "C" {
#endif /* __cplusplus */
/*******************
* DRBG parameters *
*******************/
#if !defined(DRBG_MAX_INSTANTIATIONS)
#define DRBG_MAX_INSTANTIATIONS 4
#endif
#define DRBG_MAX_SEC_STRENGTH_BITS 256
#define DRBG_MAX_BYTES_PER_BYTE_OF_ENTROPY 8
/************************
* HMAC_DRBG parameters *
************************/
#define HMAC_DRBG_MAX_PERS_STR_BYTES 32
#define HMAC_DRBG_MAX_BYTES_PER_REQUEST 1024
/********************
* type definitions *
********************/
typedef uint32_t DRBG_HANDLE; /* drbg handle */
typedef enum { /* drbg types */
EXTERNAL_DRBG,
SHA256_HMAC_DRBG,
} DRBG_TYPE;
typedef enum { /* entropy-function commands */
GET_NUM_BYTES_PER_BYTE_OF_ENTROPY = 0,
INIT,
GET_BYTE_OF_ENTROPY,
} ENTROPY_CMD;
typedef uint8_t (*ENTROPY_FN)( /* get entropy function */
ENTROPY_CMD cmd, /* command */
uint8_t *out); /* address for output */
/* Type for external PRNG functions. Must return DRBG_OK on success */
typedef uint32_t (*RANDOM_BYTES_FN)( /* random bytes function */
uint8_t *out, /* output buffer */
uint32_t num_bytes); /* number of bytes */
/***************
* error codes *
***************/
#define DRBG_OK 0x00000000 /* no errors */
#define DRBG_OUT_OF_MEMORY 0x00000001 /* can't allocate memory */
#define DRBG_BAD_PARAMETER 0x00000002 /* null pointer */
#define DRBG_BAD_LENGTH 0x00000003 /* invalid no. of bytes */
#define DRBG_NOT_AVAILABLE 0x00000004 /* no instantiation slot available */
#define DRBG_ENTROPY_FAIL 0x00000005 /* entropy function failure */
/***************
* error macro *
***************/
#define DRBG_RESULT(r) ((uint32_t)((r) ? DRBG_ERROR_BASE + (r) : (r)))
#define DRBG_RET(r) return DRBG_RESULT(r);
/*************************
* function declarations *
*************************/
/* ntru_crypto_drbg_instantiate
*
* This routine instantiates a drbg with the requested security strength.
* See ANS X9.82: Part 3-2007.
*
* Returns DRBG_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_BAD_PARAMETER if an argument pointer is NULL.
* Returns DRBG_ERROR_BASE + DRBG_BAD_LENGTH if the security strength requested
* or the personalization string is too large.
* Returns DRBG_ERROR_BASE + DRBG_OUT_OF_MEMORY if the internal state cannot be
* allocated from the heap.
*/
NTRUCALL
ntru_crypto_drbg_instantiate(
uint32_t sec_strength_bits, /* in - requested sec strength in bits */
uint8_t const *pers_str, /* in - ptr to personalization string */
uint32_t pers_str_bytes, /* in - no. personalization str bytes */
ENTROPY_FN entropy_fn, /* in - pointer to entropy function */
DRBG_HANDLE *handle); /* out - address for drbg handle */
/* ntru_crypto_drbg_external_instantiate
*
* This routine instruments an external DRBG so that ntru_crypto routines
* can call it. randombytesfn must be of type
* uint32_t (randombytesfn*)(unsigned char *out, unsigned long long num_bytes);
* and should return DRBG_OK on success.
*
* Returns DRBG_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_NOT_AVAILABLE if there are no instantiation
* slots available
* Returns DRBG_ERROR_BASE + DRBG_OUT_OF_MEMORY if the internal state cannot be
* allocated from the heap.
*/
NTRUCALL
ntru_crypto_drbg_external_instantiate(
RANDOM_BYTES_FN randombytesfn, /* in - pointer to random bytes function */
DRBG_HANDLE *handle); /* out - address for drbg handle */
/* ntru_crypto_drbg_uninstantiate
*
* This routine frees a drbg given its handle.
*
* Returns DRBG_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_BAD_PARAMETER if handle is not valid.
*/
NTRUCALL
ntru_crypto_drbg_uninstantiate(
DRBG_HANDLE handle); /* in - drbg handle */
/* ntru_crypto_drbg_reseed
*
* This routine reseeds an instantiated drbg.
* See ANS X9.82: Part 3-2007.
*
* Returns DRBG_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_BAD_PARAMETER if handle is not valid.
* Returns NTRU_CRYPTO_HMAC errors if they occur.
*/
NTRUCALL
ntru_crypto_drbg_reseed(
DRBG_HANDLE handle); /* in - drbg handle */
/* ntru_crypto_drbg_generate
*
* This routine generates pseudorandom bytes using an instantiated drbg.
* If the maximum number of requests has been reached, reseeding will occur.
* See ANS X9.82: Part 3-2007.
*
* Returns DRBG_OK if successful.
* Returns DRBG_ERROR_BASE + DRBG_BAD_PARAMETER if handle is not valid or if
* an argument pointer is NULL.
* Returns DRBG_ERROR_BASE + DRBG_BAD_LENGTH if the security strength requested
* is too large or the number of bytes requested is zero or too large.
* Returns NTRU_CRYPTO_HMAC errors if they occur.
*/
NTRUCALL
ntru_crypto_drbg_generate(
DRBG_HANDLE handle, /* in - drbg handle */
uint32_t sec_strength_bits, /* in - requested sec strength in bits */
uint32_t num_bytes, /* in - number of octets to generate */
uint8_t *out); /* out - address for generated octets */
#if defined ( __cplusplus )
}
#endif /* __cplusplus */
#endif /* NTRU_CRYPTO_DRBG_H */

View File

@ -0,0 +1,44 @@
/******************************************************************************
* NTRU Cryptography Reference Source Code
*
* Copyright (C) 2009-2016 Security Innovation (SI)
*
* SI has dedicated the work to the public domain by waiving all of its rights
* to the work worldwide under copyright law, including all related and
* neighboring rights, to the extent allowed by law.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* You can copy, modify, distribute and perform the work, even for commercial
* purposes, all without asking permission. You should have received a copy of
* the creative commons license (CC0 1.0 universal) along with this program.
* See the license file for more information.
*
*
*********************************************************************************/
/******************************************************************************
*
* File: ntru_crypto_error.h
*
* Contents: Contains base values for crypto error codes.
*
*****************************************************************************/
#ifndef NTRU_CRYPTO_ERROR_H
#define NTRU_CRYPTO_ERROR_H
/* define base values for crypto error codes */
#define HASH_ERROR_BASE ((uint32_t)0x00000100)
#define HMAC_ERROR_BASE ((uint32_t)0x00000200)
#define SHA_ERROR_BASE ((uint32_t)0x00000400)
#define DRBG_ERROR_BASE ((uint32_t)0x00000a00)
#define NTRU_ERROR_BASE ((uint32_t)0x00003000)
#define MGF1_ERROR_BASE ((uint32_t)0x00004100)
#endif /* NTRU_CRYPTO_ERROR_H */

View File

@ -0,0 +1,98 @@
/******************************************************************************
* NTRU Cryptography Reference Source Code
*
* Copyright (C) 2009-2016 Security Innovation (SI)
*
* SI has dedicated the work to the public domain by waiving all of its rights
* to the work worldwide under copyright law, including all related and
* neighboring rights, to the extent allowed by law.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* You can copy, modify, distribute and perform the work, even for commercial
* purposes, all without asking permission. You should have received a copy of
* the creative commons license (CC0 1.0 universal) along with this program.
* See the license file for more information.
*
*
*********************************************************************************/
/******************************************************************************
*
* File: ntru_crypto_platform.h
*
* Contents: Platform-specific basic definitions.
*
*****************************************************************************/
#ifndef NTRU_CRYPTO_PLATFORM_H
#define NTRU_CRYPTO_PLATFORM_H
/* The default implementation is to use stdint.h, a part of the C99 standard.
* Systems that don't support this are handled on a case-by-case basis.
*/
#if defined(WIN32) && (_MSC_VER < 1600)
#include <basetsd.h>
typedef unsigned char uint8_t;
typedef signed char int8_t;
typedef unsigned short int uint16_t;
typedef short int int16_t;
typedef UINT32 uint32_t;
typedef UINT64 uint64_t;
#elif defined(linux) && defined(__KERNEL__)
#include <linux/types.h>
#else
#include <stdint.h>
#endif
/* For linux kernel drivers:
* Use kmalloc and kfree in place of malloc / free
* Use BUG_ON in place of assert */
#if defined(linux) && defined(__KERNEL__)
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/slab.h>
# include <linux/string.h>
# define MALLOC(size) (kmalloc(size, GFP_KERNEL))
# define FREE(x) (kfree(x))
#else
# include <stdlib.h>
# include <assert.h>
# include <string.h>
# define MALLOC(size) (malloc(size))
# define FREE(x) (free(x))
#endif
#if !defined(HAVE_BOOL) && !defined(__cplusplus)
#define HAVE_BOOL
typedef uint8_t bool;
#endif /* HAVE_BOOL */
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#endif /* NTRU_CRYPTO_PLATFORM_H */

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,27 @@
import time
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
def rsa3072():
start = time.time()
key = RSA.generate(2048)
end = time.time()-start
with open('RSA3072_priv.pem','wb') as a:
a.write(key.exportKey('PEM'))
with open('RSA3072_pub.pem','wb') as b:
b.write(key.publickey().exportKey('PEM'))
print("Time spent RSA 3072 ", end)
def rsa7680():
start = time.time()
key = RSA.generate(7680)
end = time.time()-start
with open('RSA7680_priv.pem','wb') as c:
c.write(key.exportKey('PEM'))
with open('RSA7680_pub.pem','wb') as d:
d.write(key.publickey().exportKey('PEM'))
print("Time spent rsa7680 : ", end)
rsa3072()
rsa7680()

View File

@ -0,0 +1,98 @@
import paho.mqtt.client as paho
# from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
# Konfigurasi MQTT server
# broker = "192.168.43.134"
broker = "nnag.xyz"
client = paho.Client()
port = 1883
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log : C Return ", c_return)
_ctypes.dlclose(u_enc._handle)
def u_decrypt(arg):
# arg = base64.b64decode(arg)
so_file2 = './URG_decrypt.so'
arg_len = len(arg)
arg = c_char_p(arg)
print("Python Log : Current Cipher ", arg)
print("Python Log : Length to be Dec ", arg_len)
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
return c_return
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
return f.read()
# Proses enkripsi
def payload_process(plain):
u_encrypt(plain)
plain = file_handler("cipher_EES401", 7)
print("Python LOG Cipher Length : ", len(plain))
send_data = base64.b64encode(plain)
return send_data
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
n = input("Enter number of plain : ")
n = int(n)
for i in range(1, n+1):
plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
x = 16 - (len(plain) % 4)
plain = plain+(" "*x)
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
print("Join List Test ", ''.join(plain_arr))
client.connect(broker,port)
# plain_now = plain_arr[1]
for i in range(len(plain_arr)):
data_now = payload_process(plain_arr[i])
cipher_arr.append(data_now)
print("Plain now : ", plain)
msg_data = b''.join(cipher_arr)
# send_data = my_ip+identifier+msg_data.decode('ascii')
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
print("Python LOG Plain Length : ", len(plain))
print("Sending Cipher with length ", len(send_data))
print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
client.publish("device01/msg", send_data)
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,100 @@
import paho.mqtt.client as paho
#from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
# Konfigurasi MQTT server
broker = "localhost"
client = paho.Client()
port = 1883
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
_ctypes.dlclose(u_enc._handle)
def u_decrypt(arg):
#arg = base64.b64decode(arg)
so_file2 = './URG_decrypt.so'
arg_len = len(arg)
arg = c_char_p(arg)
print("Python Log : Current Cipher ", arg)
print("Python Log : Length to be Dec ", arg_len)
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
return c_return
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
return f.read()
#Proses enkripsi
def payload_process(plain):
u_encrypt(plain)
plain = file_handler("cipher_EES401", 7)
print("Cipher Length : ", len(plain))
send_data = base64.b64encode(plain)
return send_data
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
plain = input("Enter The Message : ")
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
x = 16 - (len(plain)%16)
plain = plain+(" "*x)
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
client.connect(broker,port)
# plain_now = plain_arr[1]
for i in range(len(plain_arr)):
print(" ")
print("===== [ Sequence "+str(i)+" ] "+"======================================================")
data_now = payload_process(plain_arr[i])
cipher_arr.append(data_now)
msg_data = b''.join(cipher_arr)
# send_data = my_ip+identifier+msg_data.decode('ascii')
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
print(" ")
print("===== Result ======================================================")
print("Python LOG Plain Length : ", len(plain_ori))
print("Python LOG Plain with Padding Length : ", len(plain))
print("Sending Cipher with length : ", len(send_data))
print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
client.publish("device01/msg", send_data)
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,156 @@
import paho.mqtt.client as paho
import paho.mqtt.publish as pahopub
#from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
import time
import csv
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP as Cipher
# Konfigurasi MQTT server
broker = "nnag.xyz"
client = paho.Client()
port = 1883
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
# time.sleep(0.01)
_ctypes.dlclose(u_enc._handle)
return c_return
def rsa_encrypt(plain):
rsa3072 = open("RSA3072_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
rsa_pub = Cipher.new(rsa_pub)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'))
# RSA_enc = rsa_pub.encrypt(plain)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc
# cipher = str(cipher).encode('utf-8')
# rsa_file_handler(base_name_RSA3, i, cipher)
print("RSA Encryption Time : ", end)
print("Cipher ", cipher)
print("Length ", len(cipher))
print(" ")
return end, cipher
def file_handler(f_name, num):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f = open("/tmp/cipher_07.dat", "rb")
ret = f.read()
f.close()
return ret
# def rsa_file_handler(f_name, num, cipher):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
# f.write(cipher)
#Proses enkripsi
def payload_process(plain):
dec_time = u_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
cipher = file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_RSA(plain):
dec_time, cipher = rsa_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
# cipher = rsa_file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
def main(msg):
# plain = input("Enter The Message : ")
plain = msg
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
x = 16 - (len(plain)%16)
plain = plain+(" "*x)
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
status = client.connect(broker,port)
print("Connection status, ", status)
# input()
# plain_now = plain_arr[1]
time_tmp = []
for i in range(len(plain_arr)):
# print(" ")
# print("===== [ Sequence "+str(i)+" ] "+"======================================================")
# data_now, dec_time = payload_process(plain_arr[i])
data_now, dec_time = payload_RSA(plain_arr[i])
cipher_arr.append(data_now)
time_tmp.append(dec_time)
dec_acc = sum(map(float, time_tmp))
xxx = (base64.b64decode(cipher_arr[0]))
print(len(xxx))
print(len(data_now))
msg_data = b''.join(cipher_arr)
# send_data = my_ip+identifier+msg_data.decode('ascii')
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
# print(" ")
# print("===== Result ======================================================")
# print("Python LOG Plain Length : ", len(plain_ori))
# print("Python LOG Plain with Padding Length : ", len(plain))
# print("Sending Cipher with length : ", len(send_data))
# print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
# client.publish("device01/msg", "XXXXX")
print(len(send_data));
client.loop_start()
# client.connect("nnag.xyz", 1883)
# pahopub.single("device01/msg", "xxxx")
client.publish("device01/msg", msg_data)
return dec_acc
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,224 @@
import paho.mqtt.client as paho
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import paho.mqtt.publish as pahopub
#from simplecrypt import encrypt, decrypt
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
import time
import csv
from Crypto.Cipher import AES
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP as Cipher
# Konfigurasi MQTT server
broker = "nnag.xyz"
client = paho.Client()
port = 1883
aes_key = "1234123412341234"
IV = 16*"\x00"
def fernet_keygen():
password="urg123"
pass_byte=password.encode()
salt=b'salt_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(pass_byte))
return key
def fernet_encrypt(plain):
time_s = time.perf_counter()
fernet_key = fernet_keygen()
send_data = Fernet(fernet_key).encrypt(plain.encode())
time_e = time.perf_counter()
end = time_e - time_s
print("Fernet Plain Length : ",len(plain))
print("Fernet Key Length : ",len(fernet_key))
print("Fernet Encryption Time : ",end)
print(" ")
return end, send_data
def aes_encrypt(plain):
start = time.perf_counter()
key = AES.new(aes_key.encode("utf-8"), AES.MODE_CBC, IV=IV.encode("utf-8"))
# cipher = key.encrypt(plain.encode("utf-8"))
# plain = "x"*16
print(len(plain))
x = 16 - (len(plain) % 16)
plain = plain+" "*x
print(x)
# input()
cipher = key.encrypt(plain.encode("utf-8"))
end = time.perf_counter()-start
return end, cipher
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
# time.sleep(0.01)
_ctypes.dlclose(u_enc._handle)
return c_return
def rsa_encrypt(plain):
rsa3072 = open("RSA7680_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
rsa_pub = Cipher.new(rsa_pub)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'))
# RSA_enc = rsa_pub.encrypt(plain)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc
# cipher = str(cipher).encode('utf-8')
# rsa_file_handler(base_name_RSA3, i, cipher)
print("RSA Encryption Time : ", end)
print("Cipher ", cipher)
print("Length ", len(cipher))
print(" ")
return end, cipher
def file_handler(f_name, num):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f = open("/tmp/cipher_07.dat", "rb")
ret = f.read()
f.close()
return ret
# def rsa_file_handler(f_name, num, cipher):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
# f.write(cipher)
#Proses enkripsi
def payload_process(plain):
dec_time = u_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
cipher = file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_aes(plain):
dec_time, cipher = aes_encrypt(plain)
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_fernet(plain):
dec_time, cipher = fernet_encrypt(plain)
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_RSA(plain):
dec_time, cipher = rsa_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
# cipher = rsa_file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
def main(msg):
# plain = input("Enter The Message : ")
plain = msg
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
# x = 16 - (len(plain)%16)
# plain = plain+(" "*x)
# plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
status = client.connect(broker,port)
print("Connection status, ", status)
# input()
# plain_now = plain_arr[1]
time_tmp = []
# ******************************8
# for i in range(len(plain_arr)):
# # print(" ")
# # print("===== [ Sequence "+str(i)+" ] "+"======================================================")
# # data_now, dec_time = payload_process(plain_arr[i])
# # data_now, dec_time = payload_RSA(plain_arr[i])
# data_now, dec_time = payload_fernet(plain_arr[i])
# cipher_arr.append(data_now)
# time_tmp.append(dec_time)
# dec_acc = sum(map(float, time_tmp))
# xxx = (base64.b64decode(cipher_arr[0]))
# print("cipher len : ",len(xxx))
# print("base64 cipher len : ",len(data_now))
# msg_data = b''.join(cipher_arr)
# ******************************8
# send_data = my_ip+identifier+msg_data.decode('ascii')
# msg_data, dec_time = payload_fernet(plain)
msg_data, dec_time = payload_aes(plain)
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
# print(" ")
# print("===== Result ======================================================")
# print("Python LOG Plain Length : ", len(plain_ori))
# print("Python LOG Plain with Padding Length : ", len(plain))
# print("Sending Cipher with length : ", len(send_data))
# print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
# client.publish("device01/msg", "XXXXX")
client.loop_start()
print("Total sent data ", len(send_data));
# client.connect("nnag.xyz", 1883)
# pahopub.single("device01/msg", "xxxx")
client.publish("device01/msg", msg_data)
# input()
return dec_time
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,199 @@
import paho.mqtt.client as paho
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import paho.mqtt.publish as pahopub
#from simplecrypt import encrypt, decrypt
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
import time
import csv
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP as Cipher
# Konfigurasi MQTT server
broker = "nnag.xyz"
client = paho.Client()
port = 1883
def fernet_keygen():
password="urg123"
pass_byte=password.encode()
salt=b'salt_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(pass_byte))
return key
def fernet_encrypt(plain):
time_s = time.perf_counter()
fernet_key = fernet_keygen()
send_data = Fernet(fernet_key).encrypt(plain.encode())
time_e = time.perf_counter()
end = time_e - time_s
print("Fernet Plain Length : ",len(plain))
print("Fernet Key Length : ",len(fernet_key))
print("Fernet Encryption Time : ",end)
print(" ")
return end, send_data
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
# time.sleep(0.01)
_ctypes.dlclose(u_enc._handle)
return c_return
def rsa_encrypt(plain):
rsa3072 = open("RSA7680_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
rsa_pub = Cipher.new(rsa_pub)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'))
# RSA_enc = rsa_pub.encrypt(plain)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc
# cipher = str(cipher).encode('utf-8')
# rsa_file_handler(base_name_RSA3, i, cipher)
print("RSA Encryption Time : ", end)
print("Cipher ", cipher)
print("Length ", len(cipher))
print(" ")
return end, cipher
def file_handler(f_name, num):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f = open("/tmp/cipher_07.dat", "rb")
ret = f.read()
f.close()
return ret
# def rsa_file_handler(f_name, num, cipher):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
# f.write(cipher)
#Proses enkripsi
def payload_process(plain):
dec_time = u_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
cipher = file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_fernet(plain):
dec_time, cipher = fernet_encrypt(plain)
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_RSA(plain):
dec_time, cipher = rsa_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
# cipher = rsa_file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
def main(msg):
# plain = input("Enter The Message : ")
plain = msg
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
# x = 16 - (len(plain)%16)
# plain = plain+(" "*x)
# plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
status = client.connect(broker,port)
print("Connection status, ", status)
# input()
# plain_now = plain_arr[1]
time_tmp = []
# ******************************8
# for i in range(len(plain_arr)):
# # print(" ")
# # print("===== [ Sequence "+str(i)+" ] "+"======================================================")
# # data_now, dec_time = payload_process(plain_arr[i])
# # data_now, dec_time = payload_RSA(plain_arr[i])
# data_now, dec_time = payload_fernet(plain_arr[i])
# cipher_arr.append(data_now)
# time_tmp.append(dec_time)
# dec_acc = sum(map(float, time_tmp))
# xxx = (base64.b64decode(cipher_arr[0]))
# print("cipher len : ",len(xxx))
# print("base64 cipher len : ",len(data_now))
# msg_data = b''.join(cipher_arr)
# ******************************8
# send_data = my_ip+identifier+msg_data.decode('ascii')
msg_data, dec_time = payload_fernet(plain)
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
# print(" ")
# print("===== Result ======================================================")
# print("Python LOG Plain Length : ", len(plain_ori))
# print("Python LOG Plain with Padding Length : ", len(plain))
# print("Sending Cipher with length : ", len(send_data))
# print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
# client.publish("device01/msg", "XXXXX")
client.loop_start()
print("Total sent data ", len(send_data));
# client.connect("nnag.xyz", 1883)
# pahopub.single("device01/msg", "xxxx")
client.publish("device01/msg", msg_data)
# input()
return dec_time
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,161 @@
import paho.mqtt.client as paho
import paho.mqtt.publish as pahopub
#from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
import time
import csv
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP as Cipher
from SABER_KEM.test.so_handler import main as sec_pub
# Konfigurasi MQTT server
broker = "192.168.1.17"
client = paho.Client()
port = 1883
def u_encrypt(arg):
sce_pub(arg)
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
# time.sleep(0.01)
_ctypes.dlclose(u_enc._handle)
return c_return
def rsa_encrypt(plain):
rsa3072 = open("RSA7680_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
rsa_pub = Cipher.new(rsa_pub)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'))
# RSA_enc = rsa_pub.encrypt(plain)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc
# cipher = str(cipher).encode('utf-8')
# rsa_file_handler(base_name_RSA3, i, cipher)
print("RSA Encryption Time : ", end)
print("Cipher ", cipher)
print("Length ", len(cipher))
print(" ")
return end, cipher
def file_handler(f_name, num):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f = open("/tmp/cipher_07.dat", "rb")
ret = f.read()
f.close()
return ret
# def rsa_file_handler(f_name, num, cipher):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
# f.write(cipher)
#Proses enkripsi
def payload_process(plain):
dec_time = u_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
cipher = file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_RSA(plain):
dec_time, cipher = rsa_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
# cipher = rsa_file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
def main(msg):
# plain = input("Enter The Message : ")
plain = msg
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
x = 16 - (len(plain)%16)
plain = plain+(" "*x)
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
status = client.connect(broker,port)
print("Connection status, ", status)
# input()
# plain_now = plain_arr[1]
time_tmp = []
for i in range(len(plain_arr)):
# print(" ")
# print("===== [ Sequence "+str(i)+" ] "+"======================================================")
data_now, dec_time = payload_process(plain_arr[i])
# data_now, dec_time = payload_RSA(plain_arr[i])
cipher_arr.append(data_now)
time_tmp.append(dec_time)
dec_acc = sum(map(float, time_tmp))
xxx = (base64.b64decode(cipher_arr[0]))
print(len(xxx))
print(len(data_now))
msg_data = b''.join(cipher_arr)
# send_data = my_ip+identifier+msg_data.decode('ascii')
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
# print(" ")
# print("===== Result ======================================================")
# print("Python LOG Plain Length : ", len(plain_ori))
# print("Python LOG Plain with Padding Length : ", len(plain))
# print("Sending Cipher with length : ", len(send_data))
# print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
# client.publish("device01/msg", "XXXXX")
client.loop_start()
print(len(send_data));
# client.connect("nnag.xyz", 1883)
# pahopub.single("device01/msg", "xxxx")
# client.publish("device01/msg", msg)
client.publish("device01/msg", msg_data)
return dec_acc
# #main("AAA")
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,155 @@
import paho.mqtt.client as paho
import paho.mqtt.publish as pahopub
#from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
import time
import csv
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP as Cipher
# Konfigurasi MQTT server
broker = "nnag.xyz"
client = paho.Client()
port = 1883
def u_encrypt(arg):
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = c_char_p
str_temp = "07"
c_return = u_enc.main(arg.encode('utf-8'), str_temp.encode('utf-8'))
print("Python Log, C Return : ", c_return)
# time.sleep(0.01)
_ctypes.dlclose(u_enc._handle)
return c_return
def rsa_encrypt(plain):
rsa3072 = open("RSA7680_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
rsa_pub = Cipher.new(rsa_pub)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'))
# RSA_enc = rsa_pub.encrypt(plain)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc
# cipher = str(cipher).encode('utf-8')
# rsa_file_handler(base_name_RSA3, i, cipher)
print("RSA Encryption Time : ", end)
print("Cipher ", cipher)
print("Length ", len(cipher))
print(" ")
return end, cipher
def file_handler(f_name, num):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f = open("/tmp/cipher_07.dat", "rb")
ret = f.read()
f.close()
return ret
# def rsa_file_handler(f_name, num, cipher):
# num = str(num).zfill(2)
# f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
# f.write(cipher)
#Proses enkripsi
def payload_process(plain):
dec_time = u_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
cipher = file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def payload_RSA(plain):
dec_time, cipher = rsa_encrypt(plain)
# cipher = u_encrypt(plain)
# time.sleep(0.05)
# cipher = rsa_file_handler("cipher_EES401", 7)
# print("Cipher Length : ", len(plain))
send_data = base64.b64encode(cipher)
return send_data, dec_time
def plain_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
# Add this to test the Blacklist feature
# blacklist_trigger = base64.b64encode(b"I'm gonna make this program crash!"*10)
# cipher_arr.append(blacklist_trigger)
# msg_data = blacklist_trigger
# ======================== || START FROM HERE BUDDY || ==================
def main(msg):
# plain = input("Enter The Message : ")
plain = msg
plain_ori = plain
# plain = plain_handler("plain", i)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher_EES401"
plain_arr = []
cipher_arr = []
# plain = input("Enter plain : ")
# plain = "This message is longer than 4 char"
x = 16 - (len(plain)%16)
plain = plain+(" "*x)
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
# print("Join List Test ", ''.join(plain_arr))
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
status = client.connect(broker,port)
print("Connection status, ", status)
# input()
# plain_now = plain_arr[1]
time_tmp = []
for i in range(len(plain_arr)):
# print(" ")
# print("===== [ Sequence "+str(i)+" ] "+"======================================================")
# data_now, dec_time = payload_process(plain_arr[i])
data_now, dec_time = payload_RSA(plain_arr[i])
cipher_arr.append(data_now)
time_tmp.append(dec_time)
dec_acc = sum(map(float, time_tmp))
xxx = (base64.b64decode(cipher_arr[0]))
print(len(xxx))
print(len(data_now))
msg_data = b''.join(cipher_arr)
# send_data = my_ip+identifier+msg_data.decode('ascii')
send_data = msg_data.decode('ascii')
# print("Python LOG Plain : ", plain)
# print(" ")
# print("===== Result ======================================================")
# print("Python LOG Plain Length : ", len(plain_ori))
# print("Python LOG Plain with Padding Length : ", len(plain))
# print("Sending Cipher with length : ", len(send_data))
# print("Python LOG Plain Array : ", plain_arr)
# print("Python LOG Cipher Length : ", len(send_data))
# client.publish("device01/msg", "XXXXX")
client.loop_start()
print(len(send_data));
# client.connect("nnag.xyz", 1883)
# pahopub.single("device01/msg", "xxxx")
client.publish("device01/msg", msg_data)
return dec_acc
# test_str = "Test String"
# client.publish("device01/msg", base64.b64encode(test_str.encode("utf-8")) )

View File

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkFileFilter" id="filefilter1"/>
<object class="GtkWindow" id="windowMain">
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="default_width">400</property>
<property name="default_height">400</property>
<property name="icon_name">dialog-password</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">NTRU ENCRYPT</property>
<child>
<object class="GtkButton" id="close_window">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="always_show_image">True</property>
<signal name="clicked" handler="on_close_window_clicked" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">dialog-close</property>
</object>
</child>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<property name="baseline_position">bottom</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="column_spacing">20</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Key File </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="openfile">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="filter">filefilter1</property>
<property name="title" translatable="yes"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">etched-out</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="enc_401">
<property name="label" translatable="yes">NTRU EES 401</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="enc_m01" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="enc_593">
<property name="label" translatable="yes">NTRU EES 593</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="focus_on_click">False</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="enc_m02" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Encryption Method</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkEntry" id="message">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Enter Message : </property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">etched-out</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="result_text">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word-char</property>
<property name="indent">3</property>
<property name="cursor_visible">False</property>
<property name="accepts_tab">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Encrypted Message Content : </property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Message Length</property>
<property name="justify">fill</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="msg_arr">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="msg_len">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Message Array</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="label" translatable="yes">Message Details</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkButton" id="msg">
<property name="label" translatable="yes">Encrypt</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">center</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_msg_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">etched-out</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Cipher Size</property>
<property name="justify">fill</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="enc_time">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="enc_size">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Encryption Sequence</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="enc_seq">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Encryption Time </property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Encryption Details</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkFileFilter" id="filefilter2"/>
<object class="GtkTextBuffer" id="textbuffer1"/>
</interface>

View File

@ -0,0 +1,158 @@
#!/usr/bin/env python3
import gi
gi.require_version('Gtk','3.0')
from gi.repository import Gtk, Gdk, GLib, GdkPixbuf
import paho.mqtt.client as paho
#from simplecrypt import encrypt, decrypt
import base64
from ctypes import *
import _ctypes
from textwrap import wrap
broker = "192.168.2.16"
client = paho.Client()
port = 1883
# print("")
builder = Gtk.Builder()
builder.add_from_file("py_wrappers/Publisher.glade")
# File filter
window = builder.get_object("windowMain")
msg = builder.get_object("message")
key_file = builder.get_object("openfile")
res_text = builder.get_object("result_text")
enc_time = builder.get_object("enc_time")
enc_size = builder.get_object("enc_size")
enc_seq = builder.get_object("enc_seq")
msg_len = builder.get_object("msg_len")
msg_arr = builder.get_object("msg_arr")
enc_401 = builder.get_object("enc_401")
enc_593 = builder.get_object("enc_593")
filterfilter1 = Gtk.FileFilter()
filterfilter1.set_name("Keys")
filterfilter1.add_pattern("*.pub")
key_file.add_filter(filterfilter1)
window.show_all()
class mainWindowHandler:
def u_encrypt(self, arg, enc_method):
so_file = enc_method
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
tmp_num = "001"
c_return = u_enc.main(arg.encode('utf-8'), tmp_num.encode("utf-8"))
#print("Python Log : C Return ", c_return)
_ctypes.dlclose(u_enc._handle)
return c_return
def file_handler(self, f_name, num):
num = str(num).zfill(3)
f = open(".cipher/"+f_name+"_"+num+".dat", "rb")
return f.read()
def payload_process(self, plain):
enc_glob = enc_box
cip_glob = cip_box
print(enc_glob)
#time_enc = self.u_encrypt(plain, key_file.get_filename())
time_enc = self.u_encrypt(plain, enc_glob)
#plain = self.file_handler("cipher_EES401", 7)
plain = self.file_handler(cip_glob, 7)
bff_text = Gtk.TextBuffer()
bff_text.set_text(str(plain, errors="replace"))
res_text.set_buffer(bff_text)
enc_size.set_text(str(len(plain)))
send_data = base64.b64encode(plain)
return send_data, time_enc
def on_windowMain_destroy(self, *args):
Gtk.main_quit()
def on_close_window_clicked(self, button):
Gtk.main_quit()
def enc_m01(self, button):
print("Checkbox 1 Called")
if enc_401.get_active():
enc_593.set_sensitive(False)
else:
enc_593.set_sensitive(True)
#enc_593.set_active(True)
print("Release m02")
global enc_box
global cip_box
global max_block
# enc_box = "/home/nino/Documents/Papers/MQTT_2.0/Crypto/NTRUEncrypt_Benchmark/EES401/URG_encrypt.so"
enc_box = "./bin/enc_401.so"
cip_box = "ees401/cipher"
max_block = 60
def enc_m02(self, button):
print("Checkbox 2 Called")
if enc_593.get_active():
enc_401.set_sensitive(False)
else:
enc_401.set_sensitive(True)
print("Release m01")
global enc_box
global cip_box
global max_block
# enc_box = "/home/nino/Documents/Papers/MQTT_2.0/Crypto/NTRUEncrypt_Benchmark/EES593/URG_encrypt.so"
enc_box = "./bin/enc_593.so"
cip_box = "ees593/cipher"
max_block = 86
def on_msg_clicked(self, button):
bff_text = Gtk.TextBuffer()
bff_text.set_text("Loading . . . ")
res_text.set_buffer(bff_text)
i = 0
my_ip = "device01"
identifier = "&"
f_name = "cipher"
time_arr = []
plain_arr = []
cipher_arr = []
plain = str(msg.get_text())
# if enc_box == None:
# bff_text.set_text("Please Enter Message First !")
# res_text.set_buffer(bff_text)
plain_original = plain
print(plain)
print(max_block)
x = max_block - (len(plain)%max_block)
plain = plain+(" "*x)
plain_arr = wrap(plain, max_block, replace_whitespace=False, drop_whitespace=False)
print(plain_arr)
print("Join List Test ", ''.join(plain_arr))
client.connect(broker,port)
for i in range(len(plain_arr)):
data_now, time_enc = self.payload_process(plain_arr[i])
cipher_arr.append(data_now)
time_arr.append(time_enc)
enc_time.set_text(str(sum(time_arr)))
enc_seq.set_text(str(i))
msg_arr.set_text(str(plain_arr))
msg_len.set_text(str(len(plain_original)))
print(time_arr)
print(msg.get_text())
cipher_arr = b''.join(cipher_arr)
cipher_arr = cipher_arr.decode('ascii')
client.loop_start()
client.publish("device01/msg", cipher_arr)
client.loop_stop()
# print("Your File ",key_file.get_filename())
builder.connect_signals(mainWindowHandler())
Gtk.main()

View File

@ -0,0 +1,117 @@
import paho.mqtt.client as paho
# from simplecrypt import encrypt, decrypt
from cryptography.fernet import Fernet
# from memory_profiler import profile
import base64
import _ctypes
from ctypes import *
from textwrap import wrap
import csv
import time
# Konfigurasi MQTT server
broker = "tiplab.duckdns.org"
client = paho.Client()
port = 1883
def u_decrypt(arg):
# print("Cipher Length : ", len(arg))
so_file2 = './EES401/URG_decrypt.so'
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
# print("Python Log, C RETURN TYPE : ", type(c_return))
return c_return.decode('ascii')
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f_val = f.read()
f.close()
return f_val
def write_handler(f_name, num, arg):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
f.write(arg)
f.close()
def rsa_file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f_val = f.read()
return f.val
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("device01/msg")
#Proses enkripsi
def payload_process(msg):
msg_dec = base64.b64decode(msg)
print("Before decryption : "+str(msg_dec[:100])+"...")
dec_time = 0
if len(msg) > 736:
msg_arr = wrap(msg, 736)
dec_msg_arr = []
for i in range(len(msg_arr)):
time_tmp = []
msg = base64.b64decode(msg_arr[i])
# print("=====[ Decryption Sequence "+str(i+1)+" ]=================")
start = time.perf_counter()
dec_msg = u_decrypt(msg)
end = time.perf_counter()-start
print(end)
dec_msg_arr.append(dec_msg)
# print("C Return String : ", dec_msg )
time_tmp.append(end)
dec_time = sum(map(float, time_tmp))
final_msg = ''.join(dec_msg_arr)
else:
msg = base64.b64decode(msg)
final_msg = u_decrypt(msg)
return final_msg, dec_time
def on_message(client, userdata, msg):
# print("========================================")
# print("Topic : ", msg.topic)
# print("QOS : ", msg.qos)
# print("Payload : ", msg.payload)
msg = msg.payload.decode()
if len(msg) != 0:
# all_data = msg.split('&', 1)
# user_ip = all_data[0]
# msg = all_data[1]
# print("Publisher : ",user_ip)
print("====[ Incomming Msg ]=======================")
print("Incomming Message Length : ", len(msg))
# print("Incomming Message Type : ", type(msg))
real_data,dec_time = payload_process(msg)
with open("dec_report.csv", "a+") as f:
writer = csv.writer(f)
writer.writerow([len(msg), dec_time, real_data])
# real_data = real_data[1]
print("Decryption Result (Plaintext) : ", real_data)
# print("Result Length : ", len(real_data))
print(" ")
return real_data
base_name = "cipher"
base_name_RSA3 = "RSA_3072"
base_name_RSA7 = "RSA_7680"
header = ["Message Length", "Decryption Time", "Message"]
with open("dec_report.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(header)
# client.tls_set()
# client.username_pw_set(username="aaa", password="pass")
client.connect(broker,port)
client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()

View File

@ -0,0 +1,95 @@
import paho.mqtt.client as paho
# from simplecrypt import encrypt, decrypt
from cryptography.fernet import Fernet
import base64
import _ctypes
from ctypes import *
from textwrap import wrap
# Konfigurasi MQTT server
broker = "nnag.xyz"
client = paho.Client()
port = 1883
def u_decrypt(arg):
print("Cipher Length : ", len(arg))
so_file2 = './EES593/URG_decrypt.so'
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
# print("Python Log, C RETURN TYPE : ", type(c_return))
return c_return.decode('ascii')
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f_val = f.read()
f.close()
return f_val
def write_handler(f_name, num, arg):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
f.write(arg)
f.close()
def rsa_file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
f_val = f.read()
return f.val
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("device01/msg")
#Proses enkripsi
def payload_process(msg):
if len(msg) > 736:
msg_arr = wrap(msg, 736)
dec_msg_arr = []
for i in range(len(msg_arr)):
msg = base64.b64decode(msg_arr[i])
# print("=====[ Decryption Sequence "+str(i+1)+" ]=================")
dec_msg = u_decrypt(msg)
dec_msg_arr.append(dec_msg)
# print("C Return String : ", dec_msg )
final_msg = ''.join(dec_msg_arr)
else:
msg = base64.b64decode(msg)
final_msg = u_decrypt(msg)
return final_msg
def on_message(client, userdata, msg):
# print("========================================")
# print("Topic : ", msg.topic)
# print("QOS : ", msg.qos)
# print("Payload : ", msg.payload)
msg = msg.payload.decode()
if len(msg) != 0:
# all_data = msg.split('&', 1)
# user_ip = all_data[0]
# msg = all_data[1]
# print("Publisher : ",user_ip)
print("====[ Result ]=======================")
print("Incomming Message Length : ", len(msg))
# print("Incomming Message Type : ", type(msg))
real_data = payload_process(msg)
# real_data = real_data[1]
print("Decryption Result (Plaintext) : ", real_data)
print("Result Length : ", len(real_data))
print(" ")
return real_data
base_name = "cipher"
base_name_RSA3 = "RSA_3072"
base_name_RSA7 = "RSA_7680"
client.connect(broker,port)
client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()

View File

@ -0,0 +1,31 @@
import random
import string
plain_length = []
def randstring(n):
letters = string.digits
return ''.join(random.choice(letters) for i in range(n))
def rand_int(n):
range_start = 10**(n-1)
range_end = (10**n)-1
return random.randint(range_start, range_end)
i = 1
while i <=16 :
plain_length.append(i*1)
i = i + 1
base_name = "plain"
def file_handler(f_name, num, plain):
plain = str(plain)
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "w")
f.write(plain)
for i in plain_length:
plain = rand_int(i)
file_handler(base_name, i, plain)

View File

View File

@ -0,0 +1,52 @@
from Crypto.Cipher import AES
import os
import binascii
import time
import hashlib
def aes(key,PLAIN):
# print("=====================================AES128")
# print("Length Key AES: ",len(key))
# key = '12345678901234567890123456789012'
IV = 16 * '\x00'
cipher = AES.new(key, AES.MODE_CBC, IV=IV)
msg =cipher.encrypt(PLAIN)
# haha="Let the Silence be with us all, through all the hard time we embrace"
# haha=haha.zfill(96)
# print(len(haha))# #
decipher = AES.new(key, AES.MODE_CBC,IV=IV)
# print(decipher.decrypt(msg))
hal=(binascii.hexlify(msg).decode('utf8'))
print("Length AES Cipher: ",len(hal))
return msg
def rsa(key2,PLAIN):
# print("=====================================RSA128"
# from Crypto.PublicKey import RSA
# key2=RSA.generate(3072)
start=time.time()
publickey=key2.publickey()
# enc=publickey.encrypt("Attack the Fortress at midnight ",0)
print(PLAIN)
enc=publickey.encrypt(PLAIN.encode('utf-8'),0)
o=(binascii.hexlify(enc[0])).decode('utf8')
print("Length RSA Cipher: ",len(o))
end=time.time()-start
return o, end
# b=binascii.unhexlify(o)
# if b==enc[0]:
# print("TRUE")
def ntru(key,PLAIN):
# print("=====================================NTRU")
with open("fortress","rb") as n:
d=n.read()
nn=(binascii.hexlify(d).decode('utf8'))
print("Length: ",len(nn))
# with open("aes128.txt","w") as aes:
# aes.write(msg.encode("hex"))
# with open("rsa128.txt","w") as rsa:
# rsa.write(o)
# with open("ntru128.txt","w") as ntru:
# ntru.write(nn)

View File

@ -0,0 +1,55 @@
#!/bin/env python3
import paho.mqtt.client as paho
import csv
import pandas as pd
# from Publish_rciot_NTRU import main as sec_pub
## from SABER_KEM.test.so_handler import main as sec_pub
import time
broker = "192.168.1.17"
client = paho.Client()
port = 1883
with open('data/rciot_data.csv') as f: # 1 Fasa
# with open('./file.csv') as f: # 3 Fasa
data=[tuple(line) for line in csv.reader(f)]
# data = pd.DataFrame()
print(data[0])
header = ["Message Length", "Encryption Time"]
with open("data/saber_enc_time.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(header)
def publish_enc():
x = 0
for i in data[10:500]:
print("===> : "+str(x))
dec_time = sec_pub(str(i))
with open("data/saber_enc_time.csv", "a+") as f:
writer = csv.writer(f)
writer.writerow([len(str(i)), dec_time])
x = x+1
time.sleep(0.5)
def publish_nonenc():
x = 0
for i in data[10:500]:
print("===> : "+str(x))
status = client.connect(broker,port)
client.loop_start()
client.publish("device01/msg", str(i))
# with open("saber_enc_time.csv", "a+") as f:
# writer = csv.writer(f)
# writer.writerow([len(str(i)), dec_time])
x = x+1
time.sleep(0.5)
# publish_enc()
for i in data[1:5]:
print(str(i))

View File

@ -0,0 +1,68 @@
from ctypes import *
import time
import _ctypes
def u_encrypt(message, rec,x):
so_file = 'bin/enc_'+x+'.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
c_return = u_enc.main(message.encode('utf-8'), rec.encode('utf-8'))
_ctypes.dlclose(u_enc._handle)
return c_return
def u_decrypt(arg,x):
so_file2 = 'bin/dec_'+x+'.so'
arg_len = len(arg)
print("Length ", arg_len)
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
print("C Return ",c_return)
return c_return
def in_test():
plain = input("Enter plain text : ")
result = u_encrypt(plain)
# u_decrypt()
print(result)
def rapid_enc(x):
print("input len : %d" % len(plain))
u_encrypt(plain, x)
def rapid_dec(x):
u_decrypt(x)
def file_handler(f_name, num, std):
num = str(num).zfill(2)
f = open(".cipher/ees"+std+"/"+f_name+"_"+num+".dat", "rb")
cipher = f.read()
print("Python log : cipher len ",len(cipher))
return cipher
# print("C decrypt time : ", u_decrypt())
# print("C Enc : ", u_encrypt("ADADADADA"))
def dec_test(std, rpt):
for i in range(rpt):
recs = str(i).zfill(3)
# rapid_enc(recs)
args = file_handler("cipher", recs, std)
u_decrypt(args, std)
print("-"*100)
def enc_test(std, rpt):
for i in range(rpt):
recs = str(i).zfill(3)
plain = "This is Legit "+recs+" "+std
u_encrypt(plain, recs, std)
print("-"*100)
def enc_dec_test(x, rpt):
enc_test(x, rpt)
dec_test(x, rpt)

View File

@ -0,0 +1,205 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
from matplotlib.pyplot import rcParams
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from Crypto.Cipher import AES
import base64
import csv
import struct
import time
import string
import random
import aes
import numpy as np
from ctypes import *
import _ctypes
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import os
#from multiprocessing import Pool
def u_decrypt(arg):
so_file2 = 'EES401/URG_decrypt.so'
arg_len = len(arg)
print("Length ", arg_len)
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
print("C Return ",c_return)
return c_return
def u_decrypt593(arg):
so_file2 = 'EES593/URG_decrypt.so'
arg_len = len(arg)
print("Length ", arg_len)
u_dec = CDLL(so_file2)
u_dec.main.restype = c_char_p
u_dec.main.argtype = c_char_p
c_return = u_dec.main(arg)
_ctypes.dlclose(u_dec._handle)
print("C Return ",c_return)
return c_return
def Fernet_process():
password="urg123"
pass_byte=password.encode()
salt=b'salt_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(pass_byte))
return key
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher_bak/"+f_name+"_"+num+".dat", "rb")
#file_val = list(f.read())
#file_val = bytearray(file_val)
file_val = f.read()
return file_val
def rsa_file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "rb")
return f.read()
NTRU_var = []
NTRU593_var = []
RSA_var = []
RSA2_var = []
AES_var = []
Fernet_var = []
plain_length = []
aes_key = "1234123412341234"
IV = 16 * '\x00'
base_name = "cipher_EES401"
base_name_593 = "cipher_EES593"
base_name_RSA3 = "RSA_3072"
base_name_RSA7 = "RSA_7680"
base_name_aes = "AES_128"
base_name_Fernet = "Fernet_128"
i = 1
while i <= 16:
plain_length.append(i)
i = i+1
for i in plain_length:
plain = rsa_file_handler(base_name, i)
plain2 = rsa_file_handler(base_name_593, i)
fernet_key = Fernet_process()
#print("Cip now : ", plain)
start = time.perf_counter()
print("NTRU PLAIN ",u_decrypt(plain))
end=time.perf_counter()-start
NTRU_var.append(end)
start=time.perf_counter()
print("NTRU PLAIN 593 ",u_decrypt593(plain2))
end=time.perf_counter()-start
NTRU593_var.append(end)
fernet_cipher = rsa_file_handler(base_name_Fernet, i)
time_s = time.perf_counter()
Fernet_data = Fernet(fernet_key).decrypt(fernet_cipher)
time_e = time.perf_counter()
end = time_e - time_s
Fernet_var.append(time_e - time_s)
print("Fernet Result : ", Fernet_data)
print("Fernet Cipher Length : ",len(fernet_cipher))
print("Fernet Decryption Time : ",end)
print(" ")
aes_cipher = rsa_file_handler(base_name_aes, i)
start=time.perf_counter()
AES128= AES.new(aes_key, AES.MODE_CBC, IV).decrypt(aes_cipher)
end=time.perf_counter()-start
AES_var.append(end)
print("AES Result : ", AES128.decode('ascii'))
print("AES128 Cipher Length : ",len(aes_cipher))
print("AES128 Decryption Time : ",end)
print(" ")
rsa3072 = open("RSA3072_priv.pem", "r").read()
start=time.perf_counter()
rsa_priv = RSA.importKey(rsa3072)
RSA_dec = rsa_priv.decrypt(rsa_file_handler(base_name_RSA3, i))
end=time.perf_counter()-start
RSA_var.append(end)
print("3072 Result : ", RSA_dec)
print("RSA Cipher length", len(plain))
print("RSA Decryption Time : ", end)
print(" ")
rsa7680 = open("RSA7680_priv.pem", "r").read()
start=time.perf_counter()
RSA2_priv = RSA.importKey(rsa7680)
RSA2_dec = RSA2_priv.decrypt(rsa_file_handler(base_name_RSA3, i))
end=time.perf_counter()-start
RSA2_var.append(end)
print("7680 Result : ", RSA_dec)
print("RSA2 Plain length", len(plain))
print("RSA2 Encryption Time : ", end)
print(" ")
NTRU_var = [ round(i * 1000, 3) for i in NTRU_var ]
NTRU593_var = [ round(i * 1000, 3) for i in NTRU593_var ]
RSA_var = [ round(i * 1000, 3) for i in RSA_var ]
RSA2_var = [ round(i * 1000, 3) for i in RSA2_var ]
AES_var = [ round(i * 1000, 3) for i in AES_var ]
Fernet_var = [ round(i * 1000, 3) for i in Fernet_var ]
header = ["NTRU 401","NTRU 593", "RSA_2048", "RSA_7680", "AES128", "Fernet128"]
all_time = zip(NTRU_var, NTRU593_var, RSA_var, RSA2_var, AES_var, Fernet_var)
with open("Benchmark_Decryption_Time.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(header)
for row in all_time:
writer.writerow(row)
print(NTRU_var)
print(AES_var)
y =np.array(plain_length)
plt.figure(figsize=(11,5))
rcParams['legend.fontsize'] = '50'
rcParams['font.family'] = 'sans-serif'
rcParams['font.size'] = '16'
plt.scatter(y ,AES_var ,marker="x" ,label='AES 128' )
plt.scatter(y ,Fernet_var ,marker="^" ,label='Fernet 128')
plt.scatter(y ,RSA_var ,marker="P" ,label='RSA 2048' )
plt.scatter(y ,RSA2_var ,marker="d" ,label='RSA 7680' )
plt.scatter(y ,NTRU_var ,marker="v" ,label='NTRU 401' )
plt.scatter(y ,NTRU593_var ,marker="o" ,label='NTRU 593' )
plt.plot(y, AES_var, linestyle=':')
plt.plot(y, Fernet_var, linestyle=':')
plt.plot(y, RSA_var, linestyle=':')
plt.plot(y, RSA2_var, linestyle=':')
plt.plot(y, NTRU_var, linestyle=':')
plt.plot(y, NTRU593_var, linestyle=':')
plt.xticks(list(range(1,17)))
plt.xlabel("Length Plain text")
plt.ylabel("Time (ms)")
plt.yscale('log')
plt.gca().set_yticks([0.03, 1.90], minor=True)
plt.legend(bbox_to_anchor=(1.04,1), loc="upper left", fontsize='14')
plt.subplots_adjust(right=0.8)
plt.tight_layout()
plt.savefig('time_comparsion_DEC.eps', format='eps', dpi=900)

View File

@ -0,0 +1,221 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
from matplotlib.pyplot import rcParams
from matplotlib.ticker import FormatStrFormatter
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import numpy as np
import base64
import time
import string
import random
import aes
import numpy as np
from ctypes import *
import _ctypes
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import csv
#from multiprocessing import Pool
# C stuff
def u_encrypt(arg, num):
if len(str(num)) < 2:
num = str(num).zfill(2)
num = str(num)
so_file = 'EES401/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = [c_char_p, c_char_p]
c_return = u_enc.main(arg.encode('utf-8'), num.encode('utf-8'))
_ctypes.dlclose(u_enc._handle)
print("C Return ", c_return)
return c_return
def u_encrypt593(arg, num):
if len(str(num)) < 2:
num = str(num).zfill(2)
num = str(num)
so_file = 'EES593/URG_encrypt.so'
u_enc = CDLL(so_file)
u_enc.main.restype = c_double
u_enc.main.argtype = [c_char_p, c_char_p]
c_return = u_enc.main(arg.encode('utf-8'), num.encode('utf-8'))
_ctypes.dlclose(u_enc._handle)
print("C Return ", c_return)
return c_return
def Fernet_process():
password="urg123"
pass_byte=password.encode()
salt=b'salt_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(pass_byte))
return key
def randString(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
def file_handler(f_name, num):
num = str(num).zfill(2)
f = open("./plain/"+f_name+"_"+num+".txt", "r")
return f.read()
def rsa_file_handler(f_name, num, cipher):
num = str(num).zfill(2)
f = open("./cipher/"+f_name+"_"+num+".dat", "wb")
f.write(cipher)
NTRU_var = []
NTRU593_var = []
RSA_var = []
RSA2_var = []
AES_var = []
Fernet_var = []
aes_key = "1234123412341234"
base_name = "plain"
base_name_RSA3 = "RSA_3072"
base_name_RSA7 = "RSA_7680"
base_name_aes = "AES_128"
base_name_Fernet = "Fernet_128"
# i = 3
# while i <= 5 :
# plain_length.append(i*1)
# i = i + 1
n = input("Enter number of file ")
n = int(n)
for i in range(1, n+1):
plain = file_handler(base_name, i)
print("Plain now : ", plain)
fernet_key = Fernet_process()
x = 16 - len(plain)
aes_plain = plain + (" "*x)
NTRU_var.append(u_encrypt(plain, i))
print("NTRU EES401 Plain Length : ",len(plain))
print(" ")
NTRU593_var.append(u_encrypt593(plain, i))
print("NTRU EES593 Plain Length : ",len(plain))
print(" ")
time_s = time.perf_counter()
send_data = Fernet(fernet_key).encrypt(plain.encode())
rsa_file_handler(base_name_Fernet, i, send_data)
time_e = time.perf_counter()
end = time_e - time_s
Fernet_var.append(time_e - time_s)
print("Fernet Plain Length : ",len(plain))
print("Fernet Key Length : ",len(fernet_key))
print("Fernet Encryption Time : ",end)
print(" ")
start=time.perf_counter()
AES128=aes.aes(aes_key, aes_plain)
end=time.perf_counter()-start
rsa_file_handler(base_name_aes, i, AES128)
AES_var.append(end)
print("AES128 Plain Length : ",len(aes_plain))
print("AES128 Key Length : ",len(aes_key))
print("AES128 Encryption Time : ",end)
print(" ")
rsa3072 = open("RSA3072_pub.pem", "r").read()
start=time.perf_counter()
rsa_pub = RSA.importKey(rsa3072)
RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
#RSA_enc = rsa_pub.encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
cipher = RSA_enc[0]
#cipher = str(cipher).encode('utf-8')
rsa_file_handler(base_name_RSA3, i, cipher)
RSA_var.append(end)
print("RSA Plain length", len(plain))
print("RSA Key Length : ",len(str(rsa_pub.n)))
print("RSA Encryption Time : ", end)
print(" ")
rsa7680 = open("RSA7680_pub.pem", "r").read()
start=time.perf_counter()
RSA2_pub = RSA.importKey(rsa7680)
#RSA2_pub = RSA2_key.publickey().exportKey("PEM")
RSA2_enc = RSA2_pub.encrypt(plain.encode('utf8'), 32)
#RSA2_enc = PKCS1_OAEP.new(RSA2_pub).encrypt(plain.encode('utf8'), 32)
end=time.perf_counter()-start
#print("RSA Stufff ", RSA2_enc[0])
cipher = RSA2_enc[0]
#cipher = str(cipher).encode('utf-8')
rsa_file_handler(base_name_RSA7, i, cipher )
RSA2_var.append(end)
print("RSA2 Plain length", len(plain))
print("RSA2 Key Length : ",len(str(RSA2_pub.n.bit_length)))
print("RSA2 Encryption Time : ", end)
print(" ")
NTRU_var = [ round(i * 1000, 3) for i in NTRU_var ]
NTRU593_var = [ round(i * 1000, 3) for i in NTRU593_var ]
RSA_var = [ round(i * 1000, 3) for i in RSA_var ]
RSA2_var = [ round(i * 1000, 3) for i in RSA2_var ]
AES_var = [ round(i * 1000, 3) for i in AES_var ]
Fernet_var = [ round(i * 1000, 3) for i in Fernet_var ]
plain_length = range(1, n+1)
header = ["NTRU 401","NTRU 593", "RSA_2048", "RSA_7680", "AES128", "Fernet128"]
all_time = zip(NTRU_var, NTRU593_var, RSA_var, RSA2_var, AES_var, Fernet_var)
with open("Benchmark_Encryption_Time.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(header)
for row in all_time:
writer.writerow(row)
v = np.linspace(0, 0.5, 5)
y =np.array(plain_length)
print(NTRU_var)
print(AES_var)
plt.figure(figsize=(11,5))
rcParams['font.family'] = 'sans-serif'
rcParams['font.size'] = '16'
plt.scatter(y ,AES_var ,marker="x" ,label='AES 128' )
plt.scatter(y ,Fernet_var ,marker="^" ,label='Fernet 128')
plt.scatter(y ,RSA_var ,marker="P" ,label='RSA 2048' )
plt.scatter(y ,RSA2_var ,marker="d" ,label='RSA 7680' )
plt.scatter(y ,NTRU_var ,marker="v" ,label='NTRU 401' )
plt.scatter(y ,NTRU593_var ,marker="o" ,label='NTRU 593' )
plt.plot(y, AES_var, linestyle=':')
plt.plot(y, Fernet_var, linestyle=':')
plt.plot(y, RSA_var, linestyle=':')
plt.plot(y, RSA2_var, linestyle=':')
plt.plot(y, NTRU_var, linestyle=':')
plt.plot(y, NTRU593_var, linestyle=':')
plt.xticks(list(range(1,17)))
plt.xlabel("Length Plain text")
plt.ylabel("Time (ms)")
plt.yscale('log')
plt.gca().set_yticks([0.03, 1.90], minor=True)
plt.legend(bbox_to_anchor=(1.04,1), loc="upper left", fontsize='14')
plt.subplots_adjust(right=0.8)
plt.tight_layout()
plt.savefig('time_comparsion_ENC.eps', format='eps', dpi=900)
plt.show()

35
infidel-code/runner.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/bash
echo -e "NTRU Test Case - By Infidel"
echo -e "\t1. Key gen Test\n\t2. GUI Based Test\n\t3. Rapid Test\n\t4. Another Test"
echo -n "Enter the test you want to perform : "
read testType
echo -e "\n..................................................."
case $testType in
1)
# echo -e "\tFull Test"
echo -e "\t\tEES 401"
bin/test_401_full
echo -e "\t\tEES 593"
bin/test_593_full
;;
2)
echo -e "GUI Wrapper for NTRU "
python3 ./py_wrappers/Publisher_GUI.py
;;
3)
echo -e "Rapid Test"
./call.py
;;
4)
echo -e ""
python3 py-wrappers/python_Connector.py
;;
*)
echo -n "Wrong input"
;;
esac

View File

@ -0,0 +1 @@
Message Length,Encryption Time
1 Message Length Encryption Time

16
infidel-code/satan.txt Normal file
View File

@ -0,0 +1,16 @@
src/ntru_crypto_drbg.c
src/ntru_crypto_hash.c
src/ntru_crypto_hmac.c
src/ntru_crypto_msbyte_uint32.c
src/ntru_crypto_ntru_convert.c
src/ntru_crypto_ntru_encrypt.c
src/ntru_crypto_ntru_encrypt_key.c
src/ntru_crypto_ntru_encrypt_param_sets.c
src/ntru_crypto_ntru_mgf1.c
src/ntru_crypto_ntru_mult_coeffs_karat.c
src/ntru_crypto_ntru_mult_indices.c
src/ntru_crypto_ntru_poly.c
src/ntru_crypto_sha1.c
src/ntru_crypto_sha256.c
src/ntru_crypto_sha2.c
test/test_common.c

View File

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1 @@
# dummy

View File

@ -0,0 +1,193 @@
src/libntruencrypt_la-ntru_crypto_drbg.lo: src/ntru_crypto_drbg.c \
/usr/include/stdc-predef.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
include/ntru_crypto_drbg.h src/ntru_crypto_hmac.h \
include/ntru_crypto_platform.h src/ntru_crypto_hash.h \
include/ntru_crypto_error.h src/ntru_crypto_hash_basics.h \
src/ntru_crypto_sha1.h src/ntru_crypto_sha.h src/ntru_crypto_sha256.h \
src/ntru_crypto_sha2.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
include/ntru_crypto_drbg.h:
src/ntru_crypto_hmac.h:
include/ntru_crypto_platform.h:
src/ntru_crypto_hash.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hash_basics.h:
src/ntru_crypto_sha1.h:
src/ntru_crypto_sha.h:
src/ntru_crypto_sha256.h:
src/ntru_crypto_sha2.h:

View File

@ -0,0 +1,188 @@
src/libntruencrypt_la-ntru_crypto_hash.lo: src/ntru_crypto_hash.c \
/usr/include/stdc-predef.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_hash.h include/ntru_crypto_platform.h \
include/ntru_crypto_error.h src/ntru_crypto_hash_basics.h \
src/ntru_crypto_sha1.h src/ntru_crypto_sha.h src/ntru_crypto_sha256.h \
src/ntru_crypto_sha2.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hash.h:
include/ntru_crypto_platform.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hash_basics.h:
src/ntru_crypto_sha1.h:
src/ntru_crypto_sha.h:
src/ntru_crypto_sha256.h:
src/ntru_crypto_sha2.h:

View File

@ -0,0 +1,190 @@
src/libntruencrypt_la-ntru_crypto_hmac.lo: src/ntru_crypto_hmac.c \
/usr/include/stdc-predef.h include/ntru_crypto.h \
include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_hmac.h include/ntru_crypto_platform.h \
src/ntru_crypto_hash.h include/ntru_crypto_error.h \
src/ntru_crypto_hash_basics.h src/ntru_crypto_sha1.h \
src/ntru_crypto_sha.h src/ntru_crypto_sha256.h src/ntru_crypto_sha2.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hmac.h:
include/ntru_crypto_platform.h:
src/ntru_crypto_hash.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hash_basics.h:
src/ntru_crypto_sha1.h:
src/ntru_crypto_sha.h:
src/ntru_crypto_sha256.h:
src/ntru_crypto_sha2.h:

View File

@ -0,0 +1,173 @@
src/libntruencrypt_la-ntru_crypto_msbyte_uint32.lo: \
src/ntru_crypto_msbyte_uint32.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_msbyte_uint32.h include/ntru_crypto_platform.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_msbyte_uint32.h:
include/ntru_crypto_platform.h:

View File

@ -0,0 +1,171 @@
src/libntruencrypt_la-ntru_crypto_ntru_convert.lo: \
src/ntru_crypto_ntru_convert.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_convert.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_convert.h:

View File

@ -0,0 +1,203 @@
src/libntruencrypt_la-ntru_crypto_ntru_encrypt.lo: \
src/ntru_crypto_ntru_encrypt.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_encrypt_param_sets.h src/ntru_crypto_hash_basics.h \
include/ntru_crypto_platform.h src/ntru_crypto_ntru_encrypt_key.h \
src/ntru_crypto_ntru_convert.h src/ntru_crypto_ntru_poly.h \
src/ntru_crypto_ntru_mgf1.h src/ntru_crypto_hash.h \
include/ntru_crypto_error.h src/ntru_crypto_sha1.h src/ntru_crypto_sha.h \
src/ntru_crypto_sha256.h src/ntru_crypto_sha2.h \
include/ntru_crypto_drbg.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_encrypt_param_sets.h:
src/ntru_crypto_hash_basics.h:
include/ntru_crypto_platform.h:
src/ntru_crypto_ntru_encrypt_key.h:
src/ntru_crypto_ntru_convert.h:
src/ntru_crypto_ntru_poly.h:
src/ntru_crypto_ntru_mgf1.h:
src/ntru_crypto_hash.h:
include/ntru_crypto_error.h:
src/ntru_crypto_sha1.h:
src/ntru_crypto_sha.h:
src/ntru_crypto_sha256.h:
src/ntru_crypto_sha2.h:
include/ntru_crypto_drbg.h:

View File

@ -0,0 +1,181 @@
src/libntruencrypt_la-ntru_crypto_ntru_encrypt_key.lo: \
src/ntru_crypto_ntru_encrypt_key.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_encrypt_key.h src/ntru_crypto_ntru_convert.h \
src/ntru_crypto_ntru_encrypt_param_sets.h src/ntru_crypto_hash_basics.h \
include/ntru_crypto_platform.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_encrypt_key.h:
src/ntru_crypto_ntru_convert.h:
src/ntru_crypto_ntru_encrypt_param_sets.h:
src/ntru_crypto_hash_basics.h:
include/ntru_crypto_platform.h:

View File

@ -0,0 +1,176 @@
src/libntruencrypt_la-ntru_crypto_ntru_encrypt_param_sets.lo: \
src/ntru_crypto_ntru_encrypt_param_sets.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_encrypt_param_sets.h src/ntru_crypto_hash_basics.h \
include/ntru_crypto_platform.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_encrypt_param_sets.h:
src/ntru_crypto_hash_basics.h:
include/ntru_crypto_platform.h:

View File

@ -0,0 +1,193 @@
src/libntruencrypt_la-ntru_crypto_ntru_mgf1.lo: \
src/ntru_crypto_ntru_mgf1.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_mgf1.h src/ntru_crypto_hash.h \
include/ntru_crypto_platform.h include/ntru_crypto_error.h \
src/ntru_crypto_hash_basics.h src/ntru_crypto_sha1.h \
src/ntru_crypto_sha.h src/ntru_crypto_sha256.h src/ntru_crypto_sha2.h \
src/ntru_crypto_ntru_convert.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_mgf1.h:
src/ntru_crypto_hash.h:
include/ntru_crypto_platform.h:
include/ntru_crypto_error.h:
src/ntru_crypto_hash_basics.h:
src/ntru_crypto_sha1.h:
src/ntru_crypto_sha.h:
src/ntru_crypto_sha256.h:
src/ntru_crypto_sha2.h:
src/ntru_crypto_ntru_convert.h:

View File

@ -0,0 +1,176 @@
src/libntruencrypt_la-ntru_crypto_ntru_mult_coeffs_karat.lo: \
src/ntru_crypto_ntru_mult_coeffs_karat.c /usr/include/stdc-predef.h \
include/ntru_crypto.h include/ntru_crypto_platform.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/sys/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/sysmacros.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/assert.h \
/usr/include/string.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/strings.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
include/ntru_crypto_drbg.h include/ntru_crypto_error.h \
src/ntru_crypto_ntru_poly.h src/ntru_crypto_hash_basics.h \
include/ntru_crypto_platform.h
/usr/include/stdc-predef.h:
include/ntru_crypto.h:
include/ntru_crypto_platform.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:
/usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/features.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/x86_64-linux-gnu/bits/long-double.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/x86_64-linux-gnu/bits/types.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:
/usr/include/stdlib.h:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/x86_64-linux-gnu/bits/floatn-common.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/sys/select.h:
/usr/include/x86_64-linux-gnu/bits/select.h:
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:
/usr/include/x86_64-linux-gnu/bits/select2.h:
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/sysmacros.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/alloca.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h:
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h:
/usr/include/strings.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
include/ntru_crypto_drbg.h:
include/ntru_crypto_error.h:
src/ntru_crypto_ntru_poly.h:
src/ntru_crypto_hash_basics.h:
include/ntru_crypto_platform.h:

Some files were not shown because too many files have changed in this diff Show More