remove jsoncpp from this repository and use pkg-config + requirement to setup libjsoncpp
This commit is contained in:
parent
9bf38eca5a
commit
f2793e5a02
20
Makefile
20
Makefile
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
GCXX_DEBUG=-ggdb
|
GCXX_DEBUG=-ggdb
|
||||||
CFLAGS=-Wall -Wextra --std=c++14 $(GCXX_DEBUG)
|
CFLAGS=-Wall -Wextra --std=c++14 $(GCXX_DEBUG)
|
||||||
LDFLAGS=-lcrypto
|
LDFLAGS=$(shell pkg-config --libs libcrypto jsoncpp)
|
||||||
CXX=g++
|
CXX=g++
|
||||||
|
|
||||||
BIN_PATH=./bin
|
BIN_PATH=./bin
|
||||||
@ -11,26 +11,20 @@ OBJ_PATH=./obj
|
|||||||
|
|
||||||
EXEC=$(BIN_PATH)/cryptomain.ex
|
EXEC=$(BIN_PATH)/cryptomain.ex
|
||||||
SRC=main.cpp
|
SRC=main.cpp
|
||||||
JSONCPP_O=$(OBJ_PATH)/jsoncpp.o
|
|
||||||
BASE64_O=$(OBJ_PATH)/base64.o
|
BASE64_O=$(OBJ_PATH)/base64.o
|
||||||
|
|
||||||
cryptomain.ex: $(EXEC)
|
cryptomain.ex: $(EXEC)
|
||||||
|
|
||||||
# merge crypt and decrypt binary into cryptomain
|
# merge crypt and decrypt binary into cryptomain
|
||||||
$(EXEC): $(SRC) *.hpp $(JSONCPP_O) $(BASE64_O)
|
$(EXEC): $(SRC) *.hpp $(BASE64_O)
|
||||||
@echo "compilation de aes"
|
@echo "compilation de aes"
|
||||||
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC) $(SRC) $(JSONCPP_O) $(BASE64_O)
|
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC) $(SRC) $(BASE64_O)
|
||||||
|
|
||||||
SOURCES_BASE64=$(wildcard $(LIB_PATH)/base64/base64.*)
|
SOURCES_BASE64=$(wildcard $(LIB_PATH)/base64/base64.*)
|
||||||
$(BASE64_O): $(SOURCES_BASE64)
|
$(BASE64_O): $(SOURCES_BASE64)
|
||||||
@echo "compilation de base64"
|
@echo "compilation de base64"
|
||||||
@$(CXX) $(CFLAGS) -c $(LIB_PATH)/base64/base64.cpp -o $(BASE64_O)
|
@$(CXX) $(CFLAGS) -c $(LIB_PATH)/base64/base64.cpp -o $(BASE64_O)
|
||||||
|
|
||||||
SOURCES_JSON_CPP :=$(LIB_PATH)/jsoncpp.cpp $(wildcard $(LIB_PATH)/*.h)
|
|
||||||
$(JSONCPP_O): $(SOURCES_JSON_CPP)
|
|
||||||
@echo "compilation de jsoncpp"
|
|
||||||
@$(CXX) $(CFLAGS) -I ../lib/jsoncpp-master/include/ -c $(LIB_PATH)/jsoncpp.cpp -o $(JSONCPP_O)
|
|
||||||
|
|
||||||
run: $(EXEC)
|
run: $(EXEC)
|
||||||
@./$(EXEC) data/cryptomain/file
|
@./$(EXEC) data/cryptomain/file
|
||||||
|
|
||||||
@ -43,13 +37,13 @@ SRC_DECRYPT=mainDecrypt.cpp
|
|||||||
crypt.ex: $(EXEC_CRYPT)
|
crypt.ex: $(EXEC_CRYPT)
|
||||||
decrypt.ex: $(EXEC_DECRYPT)
|
decrypt.ex: $(EXEC_DECRYPT)
|
||||||
|
|
||||||
$(EXEC_CRYPT): $(SRC_CRYPT) *.hpp $(JSONCPP_O) $(BASE64_O)
|
$(EXEC_CRYPT): $(SRC_CRYPT) *.hpp $(BASE64_O)
|
||||||
@echo "compilation de crypt.ex"
|
@echo "compilation de crypt.ex"
|
||||||
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC_CRYPT) $(SRC_CRYPT) $(JSONCPP_O) $(BASE64_O)
|
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC_CRYPT) $(SRC_CRYPT) $(BASE64_O)
|
||||||
|
|
||||||
$(EXEC_DECRYPT): $(SRC_DECRYPT) *.hpp $(JSONCPP_O) $(BASE64_O)
|
$(EXEC_DECRYPT): $(SRC_DECRYPT) *.hpp $(BASE64_O)
|
||||||
@echo "compilation de decrypt.ex"
|
@echo "compilation de decrypt.ex"
|
||||||
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC_DECRYPT) $(SRC_DECRYPT) $(JSONCPP_O) $(BASE64_O)
|
@$(CXX) $(CFLAGS) $(LDFLAGS) -o $(EXEC_DECRYPT) $(SRC_DECRYPT) $(BASE64_O)
|
||||||
|
|
||||||
run2: $(EXEC_CRYPT) $(EXEC_DECRYPT)
|
run2: $(EXEC_CRYPT) $(EXEC_DECRYPT)
|
||||||
@./$(EXEC_CRYPT) data/crypt_decrypt/file && ./$(EXEC_DECRYPT) data/crypt_decrypt/file.enc data/crypt_decrypt/file.key
|
@./$(EXEC_CRYPT) data/crypt_decrypt/file && ./$(EXEC_DECRYPT) data/crypt_decrypt/file.enc data/crypt_decrypt/file.key
|
||||||
|
3
aes.hpp
3
aes.hpp
@ -17,7 +17,8 @@
|
|||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
#include "lib/json/json.h"
|
#include <json/json.h>
|
||||||
|
|
||||||
#include "lib/base64/base64.hpp"
|
#include "lib/base64/base64.hpp"
|
||||||
|
|
||||||
#define FAILURE -1
|
#define FAILURE -1
|
||||||
|
@ -1,256 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <openssl/evp.h>
|
|
||||||
#include <openssl/pem.h>
|
|
||||||
#include <openssl/aes.h>
|
|
||||||
#include <openssl/err.h>
|
|
||||||
#include <openssl/rand.h>
|
|
||||||
|
|
||||||
#define FAILURE -1
|
|
||||||
#define SUCCESS 0
|
|
||||||
|
|
||||||
#define AES_KEYLEN 256
|
|
||||||
#define AES_ROUNDS 6
|
|
||||||
|
|
||||||
|
|
||||||
int aesDecrypt(EVP_CIPHER_CTX* aesDecryptCtx, unsigned char* aesKey, unsigned char* aesIV, unsigned char *encMsg, size_t encMsgLen, unsigned char **decMsg) {
|
|
||||||
size_t decLen = 0;
|
|
||||||
size_t blockLen = 0;
|
|
||||||
|
|
||||||
*decMsg = (unsigned char*)malloc(encMsgLen);
|
|
||||||
if(*decMsg == NULL) return FAILURE;
|
|
||||||
|
|
||||||
if(!EVP_DecryptInit_ex(aesDecryptCtx, EVP_aes_256_cbc(), NULL, aesKey, aesIV)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!EVP_DecryptUpdate(aesDecryptCtx, (unsigned char*)*decMsg, (int*)&blockLen, encMsg, (int)encMsgLen)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
decLen += blockLen;
|
|
||||||
|
|
||||||
if(!EVP_DecryptFinal_ex(aesDecryptCtx, (unsigned char*)*decMsg + decLen, (int*)&blockLen)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
decLen += blockLen;
|
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup(aesDecryptCtx);
|
|
||||||
|
|
||||||
return (int)decLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
int aesEncrypt(EVP_CIPHER_CTX* aesEncryptCtx, unsigned char* aesKey, unsigned char* aesIV, const unsigned char *msg, size_t msgLen, unsigned char **encMsg) {
|
|
||||||
size_t blockLen = 0;
|
|
||||||
size_t encMsgLen = 0;
|
|
||||||
|
|
||||||
*encMsg = (unsigned char*)malloc(msgLen + AES_BLOCK_SIZE);
|
|
||||||
if(encMsg == NULL) return FAILURE;
|
|
||||||
|
|
||||||
if(!EVP_EncryptInit_ex(aesEncryptCtx, EVP_aes_256_cbc(), NULL, aesKey, aesIV)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!EVP_EncryptUpdate(aesEncryptCtx, *encMsg, (int*)&blockLen, (unsigned char*)msg, msgLen)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
encMsgLen += blockLen;
|
|
||||||
|
|
||||||
if(!EVP_EncryptFinal_ex(aesEncryptCtx, *encMsg + encMsgLen, (int*)&blockLen)) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup(aesEncryptCtx);
|
|
||||||
|
|
||||||
return encMsgLen + blockLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear_all(EVP_CIPHER_CTX* aesEncryptCtx, EVP_CIPHER_CTX* aesDecryptCtx, unsigned char* aesKey, unsigned char* aesIV) {
|
|
||||||
EVP_CIPHER_CTX_cleanup(aesEncryptCtx);
|
|
||||||
EVP_CIPHER_CTX_cleanup(aesDecryptCtx);
|
|
||||||
|
|
||||||
free(aesEncryptCtx);
|
|
||||||
free(aesDecryptCtx);
|
|
||||||
|
|
||||||
free(aesIV);
|
|
||||||
free(aesKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_all(EVP_CIPHER_CTX* aesEncryptCtx, EVP_CIPHER_CTX* aesDecryptCtx, unsigned char* aesKey, unsigned char* aesIV) {
|
|
||||||
EVP_CIPHER_CTX_init(aesEncryptCtx);
|
|
||||||
EVP_CIPHER_CTX_init(aesDecryptCtx);
|
|
||||||
|
|
||||||
unsigned char *aesPass = (unsigned char*)malloc(AES_KEYLEN/8);
|
|
||||||
unsigned char *aesSalt = (unsigned char*)malloc(8);
|
|
||||||
|
|
||||||
if(aesKey == NULL || aesIV == NULL || aesPass == NULL || aesSalt == NULL) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define USE_PBKDF
|
|
||||||
#ifdef USE_PBKDF
|
|
||||||
std::cerr << "utilisation de USE_PBKDF" << std::endl;
|
|
||||||
// Get some random data to use as the AES pass and salt
|
|
||||||
if(RAND_bytes(aesPass, AES_KEYLEN/8) == 0) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(RAND_bytes(aesSalt, 8) == 0) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha256(), aesSalt, aesPass, AES_KEYLEN/8, AES_ROUNDS, aesKey, aesIV) == 0) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if(RAND_bytes(aesKey, AES_KEYLEN/8) == 0) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(RAND_bytes(aesIV, AES_KEYLEN/8) == 0) {
|
|
||||||
exit(FAILURE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
free(aesPass);
|
|
||||||
free(aesSalt);
|
|
||||||
}
|
|
||||||
|
|
||||||
void writeFile(char *filename, unsigned char *file, size_t fileLength) {
|
|
||||||
FILE *fd = fopen(filename, "wb");
|
|
||||||
if(fd == NULL) {
|
|
||||||
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t bytesWritten = fwrite(file, 1, fileLength, fd);
|
|
||||||
|
|
||||||
if(bytesWritten != fileLength) {
|
|
||||||
fprintf(stderr, "Failed to write file\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
int readFile(char *filename, unsigned char **file) {
|
|
||||||
FILE *fd = fopen(filename, "rb");
|
|
||||||
if(fd == NULL) {
|
|
||||||
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Determine size of the file
|
|
||||||
fseek(fd, 0, SEEK_END);
|
|
||||||
size_t fileLength = ftell(fd);
|
|
||||||
fseek(fd, 0, SEEK_SET);
|
|
||||||
|
|
||||||
// Allocate space for the file
|
|
||||||
*file = (unsigned char*)malloc(fileLength);
|
|
||||||
if(*file == NULL) {
|
|
||||||
fprintf(stderr, "Failed to allocate memory\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the file into the buffer
|
|
||||||
size_t bytesRead = fread(*file, 1, fileLength, fd);
|
|
||||||
|
|
||||||
if(bytesRead != fileLength) {
|
|
||||||
fprintf(stderr, "Error reading file\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fd);
|
|
||||||
|
|
||||||
return fileLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
|
||||||
if(argc != 2) {
|
|
||||||
fprintf(stderr, "No file argument supplied.\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
EVP_CIPHER_CTX* aesEncryptCtx = (EVP_CIPHER_CTX*)malloc(sizeof(EVP_CIPHER_CTX));
|
|
||||||
EVP_CIPHER_CTX* aesDecryptCtx = (EVP_CIPHER_CTX*)malloc(sizeof(EVP_CIPHER_CTX));
|
|
||||||
if(aesDecryptCtx == NULL || aesEncryptCtx == NULL) {
|
|
||||||
return FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char* aesKey = (unsigned char*)malloc(AES_KEYLEN/8);
|
|
||||||
unsigned char* aesIV = (unsigned char*)malloc(AES_KEYLEN/8);
|
|
||||||
|
|
||||||
init_all(aesEncryptCtx, aesDecryptCtx, aesKey, aesIV);
|
|
||||||
|
|
||||||
//***************************************************
|
|
||||||
char* filename = argv[1];
|
|
||||||
|
|
||||||
// Read the file to encrypt
|
|
||||||
unsigned char *file;
|
|
||||||
size_t fileLength = readFile(filename, &file);
|
|
||||||
printf("%d bytes to be encrypted\n", (int)fileLength);
|
|
||||||
|
|
||||||
// Encrypt the file
|
|
||||||
unsigned char *encryptedFile;
|
|
||||||
int encryptedFileLength;
|
|
||||||
if((encryptedFileLength = aesEncrypt(aesEncryptCtx, aesKey, aesIV, (const unsigned char*)file, fileLength, &encryptedFile)) == -1) {
|
|
||||||
fprintf(stderr, "Encryption failed\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
printf("%d bytes encrypted\n", encryptedFileLength);
|
|
||||||
|
|
||||||
// Append .enc to the filename
|
|
||||||
char *encryptedFilename = (char*)malloc(strlen(filename) + 5);
|
|
||||||
if(encryptedFilename == NULL) {
|
|
||||||
fprintf(stderr, "Failed to allocate memory\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
sprintf(encryptedFilename, "%s.enc", filename);
|
|
||||||
|
|
||||||
// Write the encrypted file to its own file
|
|
||||||
writeFile(encryptedFilename, encryptedFile, encryptedFileLength);
|
|
||||||
|
|
||||||
std::cerr << "aesKey : ";
|
|
||||||
for (int i = 0; i < 32; i++) {
|
|
||||||
std::cerr << std::hex << aesKey[i];
|
|
||||||
}
|
|
||||||
std::cerr << std::endl;
|
|
||||||
|
|
||||||
printf("Encrypted message written to \"%s\"\n", encryptedFilename);
|
|
||||||
|
|
||||||
free(file);
|
|
||||||
//***************************************************
|
|
||||||
|
|
||||||
fileLength = readFile(encryptedFilename, &file);
|
|
||||||
|
|
||||||
// Decrypt the encrypted file
|
|
||||||
unsigned char *decryptedFile;
|
|
||||||
int decryptedFileLength;
|
|
||||||
if((decryptedFileLength = aesDecrypt(aesDecryptCtx, aesKey, aesIV, file, fileLength, &decryptedFile)) == -1) {
|
|
||||||
fprintf(stderr, "Decryption failed\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
printf("%d bytes decrypted\n", (int)decryptedFileLength);
|
|
||||||
|
|
||||||
// Append .dec to the filename
|
|
||||||
char *decryptedFilename = (char*)malloc(strlen(filename) + 5);
|
|
||||||
if(decryptedFilename == NULL) {
|
|
||||||
fprintf(stderr, "Failed to allocate memory\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
sprintf(decryptedFilename, "%s.dec", filename);
|
|
||||||
|
|
||||||
// Write the decrypted file to its own file
|
|
||||||
writeFile(decryptedFilename, decryptedFile, decryptedFileLength);
|
|
||||||
printf("Decrypted file written to \"%s\"\n", decryptedFilename);
|
|
||||||
|
|
||||||
free(decryptedFile);
|
|
||||||
free(file);
|
|
||||||
|
|
||||||
|
|
||||||
//***************************************************
|
|
||||||
clear_all(aesEncryptCtx, aesDecryptCtx, aesKey, aesIV);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,289 +0,0 @@
|
|||||||
/// Json-cpp amalgated forward header (http://jsoncpp.sourceforge.net/).
|
|
||||||
/// It is intended to be used with #include "json/json-forwards.h"
|
|
||||||
/// This header provides forward declaration for all JsonCpp types.
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// Beginning of content of file: LICENSE
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
/*
|
|
||||||
The JsonCpp library's source code, including accompanying documentation,
|
|
||||||
tests and demonstration applications, are licensed under the following
|
|
||||||
conditions...
|
|
||||||
|
|
||||||
The author (Baptiste Lepilleur) explicitly disclaims copyright in all
|
|
||||||
jurisdictions which recognize such a disclaimer. In such jurisdictions,
|
|
||||||
this software is released into the Public Domain.
|
|
||||||
|
|
||||||
In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
|
|
||||||
2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
|
|
||||||
released under the terms of the MIT License (see below).
|
|
||||||
|
|
||||||
In jurisdictions which recognize Public Domain property, the user of this
|
|
||||||
software may choose to accept it either as 1) Public Domain, 2) under the
|
|
||||||
conditions of the MIT License (see below), or 3) under the terms of dual
|
|
||||||
Public Domain/MIT License conditions described here, as they choose.
|
|
||||||
|
|
||||||
The MIT License is about as close to Public Domain as a license can get, and is
|
|
||||||
described in clear, concise terms at:
|
|
||||||
|
|
||||||
http://en.wikipedia.org/wiki/MIT_License
|
|
||||||
|
|
||||||
The full text of the MIT License follows:
|
|
||||||
|
|
||||||
========================================================================
|
|
||||||
Copyright (c) 2007-2010 Baptiste Lepilleur
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use, copy,
|
|
||||||
modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
========================================================================
|
|
||||||
(END LICENSE TEXT)
|
|
||||||
|
|
||||||
The MIT license is compatible with both the GPL and commercial
|
|
||||||
software, affording one all of the rights of Public Domain with the
|
|
||||||
minor nuisance of being required to keep the above copyright notice
|
|
||||||
and license text in the source code. Note also that by accepting the
|
|
||||||
Public Domain "license" you can re-license your copy using whatever
|
|
||||||
license you like.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// End of content of file: LICENSE
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef JSON_FORWARD_AMALGATED_H_INCLUDED
|
|
||||||
# define JSON_FORWARD_AMALGATED_H_INCLUDED
|
|
||||||
/// If defined, indicates that the source file is amalgated
|
|
||||||
/// to prevent private header inclusion.
|
|
||||||
#define JSON_IS_AMALGAMATION
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// Beginning of content of file: include/json/config.h
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Copyright 2007-2010 Baptiste Lepilleur
|
|
||||||
// Distributed under MIT license, or public domain if desired and
|
|
||||||
// recognized in your jurisdiction.
|
|
||||||
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
|
|
||||||
|
|
||||||
#ifndef JSON_CONFIG_H_INCLUDED
|
|
||||||
#define JSON_CONFIG_H_INCLUDED
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/// If defined, indicates that json library is embedded in CppTL library.
|
|
||||||
//# define JSON_IN_CPPTL 1
|
|
||||||
|
|
||||||
/// If defined, indicates that json may leverage CppTL library
|
|
||||||
//# define JSON_USE_CPPTL 1
|
|
||||||
/// If defined, indicates that cpptl vector based map should be used instead of
|
|
||||||
/// std::map
|
|
||||||
/// as Value container.
|
|
||||||
//# define JSON_USE_CPPTL_SMALLMAP 1
|
|
||||||
|
|
||||||
// If non-zero, the library uses exceptions to report bad input instead of C
|
|
||||||
// assertion macros. The default is to use exceptions.
|
|
||||||
#ifndef JSON_USE_EXCEPTION
|
|
||||||
#define JSON_USE_EXCEPTION 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// If defined, indicates that the source file is amalgated
|
|
||||||
/// to prevent private header inclusion.
|
|
||||||
/// Remarks: it is automatically defined in the generated amalgated header.
|
|
||||||
// #define JSON_IS_AMALGAMATION
|
|
||||||
|
|
||||||
#ifdef JSON_IN_CPPTL
|
|
||||||
#include <cpptl/config.h>
|
|
||||||
#ifndef JSON_USE_CPPTL
|
|
||||||
#define JSON_USE_CPPTL 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef JSON_IN_CPPTL
|
|
||||||
#define JSON_API CPPTL_API
|
|
||||||
#elif defined(JSON_DLL_BUILD)
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#define JSON_API __declspec(dllexport)
|
|
||||||
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
|
||||||
#endif // if defined(_MSC_VER)
|
|
||||||
#elif defined(JSON_DLL)
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#define JSON_API __declspec(dllimport)
|
|
||||||
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
|
||||||
#endif // if defined(_MSC_VER)
|
|
||||||
#endif // ifdef JSON_IN_CPPTL
|
|
||||||
#if !defined(JSON_API)
|
|
||||||
#define JSON_API
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
|
|
||||||
// integer
|
|
||||||
// Storages, and 64 bits integer support is disabled.
|
|
||||||
// #define JSON_NO_INT64 1
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) // MSVC
|
|
||||||
# if _MSC_VER <= 1200 // MSVC 6
|
|
||||||
// Microsoft Visual Studio 6 only support conversion from __int64 to double
|
|
||||||
// (no conversion from unsigned __int64).
|
|
||||||
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
|
||||||
// Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
|
|
||||||
// characters in the debug information)
|
|
||||||
// All projects I've ever seen with VS6 were using this globally (not bothering
|
|
||||||
// with pragma push/pop).
|
|
||||||
# pragma warning(disable : 4786)
|
|
||||||
# endif // MSVC 6
|
|
||||||
|
|
||||||
# if _MSC_VER >= 1500 // MSVC 2008
|
|
||||||
/// Indicates that the following function is deprecated.
|
|
||||||
# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#endif // defined(_MSC_VER)
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef JSON_HAS_RVALUE_REFERENCES
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010
|
|
||||||
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
||||||
#endif // MSVC >= 2010
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#if __has_feature(cxx_rvalue_references)
|
|
||||||
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
||||||
#endif // has_feature
|
|
||||||
|
|
||||||
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
|
||||||
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
|
|
||||||
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
||||||
#endif // GXX_EXPERIMENTAL
|
|
||||||
|
|
||||||
#endif // __clang__ || __GNUC__
|
|
||||||
|
|
||||||
#endif // not defined JSON_HAS_RVALUE_REFERENCES
|
|
||||||
|
|
||||||
#ifndef JSON_HAS_RVALUE_REFERENCES
|
|
||||||
#define JSON_HAS_RVALUE_REFERENCES 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
|
||||||
# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
|
|
||||||
# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
|
|
||||||
# elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
|
||||||
# define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
|
|
||||||
# endif // GNUC version
|
|
||||||
#endif // __clang__ || __GNUC__
|
|
||||||
|
|
||||||
#if !defined(JSONCPP_DEPRECATED)
|
|
||||||
#define JSONCPP_DEPRECATED(message)
|
|
||||||
#endif // if !defined(JSONCPP_DEPRECATED)
|
|
||||||
|
|
||||||
#if __GNUC__ >= 6
|
|
||||||
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Json {
|
|
||||||
typedef int Int;
|
|
||||||
typedef unsigned int UInt;
|
|
||||||
#if defined(JSON_NO_INT64)
|
|
||||||
typedef int LargestInt;
|
|
||||||
typedef unsigned int LargestUInt;
|
|
||||||
#undef JSON_HAS_INT64
|
|
||||||
#else // if defined(JSON_NO_INT64)
|
|
||||||
// For Microsoft Visual use specific types as long long is not supported
|
|
||||||
#if defined(_MSC_VER) // Microsoft Visual Studio
|
|
||||||
typedef __int64 Int64;
|
|
||||||
typedef unsigned __int64 UInt64;
|
|
||||||
#else // if defined(_MSC_VER) // Other platforms, use long long
|
|
||||||
typedef long long int Int64;
|
|
||||||
typedef unsigned long long int UInt64;
|
|
||||||
#endif // if defined(_MSC_VER)
|
|
||||||
typedef Int64 LargestInt;
|
|
||||||
typedef UInt64 LargestUInt;
|
|
||||||
#define JSON_HAS_INT64
|
|
||||||
#endif // if defined(JSON_NO_INT64)
|
|
||||||
} // end namespace Json
|
|
||||||
|
|
||||||
#endif // JSON_CONFIG_H_INCLUDED
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// End of content of file: include/json/config.h
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// Beginning of content of file: include/json/forwards.h
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Copyright 2007-2010 Baptiste Lepilleur
|
|
||||||
// Distributed under MIT license, or public domain if desired and
|
|
||||||
// recognized in your jurisdiction.
|
|
||||||
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
|
|
||||||
|
|
||||||
#ifndef JSON_FORWARDS_H_INCLUDED
|
|
||||||
#define JSON_FORWARDS_H_INCLUDED
|
|
||||||
|
|
||||||
#if !defined(JSON_IS_AMALGAMATION)
|
|
||||||
#include "config.h"
|
|
||||||
#endif // if !defined(JSON_IS_AMALGAMATION)
|
|
||||||
|
|
||||||
namespace Json {
|
|
||||||
|
|
||||||
// writer.h
|
|
||||||
class FastWriter;
|
|
||||||
class StyledWriter;
|
|
||||||
|
|
||||||
// reader.h
|
|
||||||
class Reader;
|
|
||||||
|
|
||||||
// features.h
|
|
||||||
class Features;
|
|
||||||
|
|
||||||
// value.h
|
|
||||||
typedef unsigned int ArrayIndex;
|
|
||||||
class StaticString;
|
|
||||||
class Path;
|
|
||||||
class PathArgument;
|
|
||||||
class Value;
|
|
||||||
class ValueIteratorBase;
|
|
||||||
class ValueIterator;
|
|
||||||
class ValueConstIterator;
|
|
||||||
|
|
||||||
} // namespace Json
|
|
||||||
|
|
||||||
#endif // JSON_FORWARDS_H_INCLUDED
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
// End of content of file: include/json/forwards.h
|
|
||||||
// //////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //ifndef JSON_FORWARD_AMALGATED_H_INCLUDED
|
|
2080
lib/json/json.h
2080
lib/json/json.h
File diff suppressed because it is too large
Load Diff
5207
lib/jsoncpp.cpp
5207
lib/jsoncpp.cpp
File diff suppressed because it is too large
Load Diff
@ -12,3 +12,11 @@
|
|||||||
products the uncrypted file.
|
products the uncrypted file.
|
||||||
|
|
||||||
:smiley:
|
:smiley:
|
||||||
|
|
||||||
|
## requirements
|
||||||
|
|
||||||
|
this program required jsoncpp : https://github.com/open-source-parsers/jsoncpp
|
||||||
|
|
||||||
|
> archlinux setup : `pacman -S jsoncpp`
|
||||||
|
|
||||||
|
gcc lib flag are retrieve thanks to [pkg-config](https://people.freedesktop.org/~dbn/pkg-config-guide.html) tool
|
||||||
|
Loading…
Reference in New Issue
Block a user