BSOne.SFC/Tocsg.Module/BSCrypto/DLL_BSCrypto/BSCrypto.h

124 lines
4.3 KiB
C

#ifndef BS_CryptoH
#define BS_CryptoH
#include "BSDefine.h"
#define VER_BSCRYPTO "BSCrypto 1.0"
#ifdef __cplusplus
extern "C" {
#endif
// BSCrypto의 버전을 표시합니다. (BSCrypto 1.0)
DLL_EXPORT char* BSCrypto_GetVersion();
// 블록 암호화 사용 시 모듈을 준비합니다.
// 자가시험 후 모듈을 초기화 합니다.
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_INIT
DLL_EXPORT int BSCrypto_Initialize();
// 자가시험을 시도합니다.
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_CRYPTO_SELFTEST_FAILED
DLL_EXPORT int BSCrypto_SelfTest();
// 암/복호화 정보를 초기화 합니다.
// 암호화 또는 복호화 중일 경우 실패합니다.
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_Clear();
// 현재 상태값을 반환합니다.
// BS_STATE_NONE : 준비가 안된 상태입니다. BSCrypto_Initialize() 호출 이전에 블록 암호화를 진행할 수 없습니다.
// BS_STATE_INIT : BSCrypto_Initialize() 호출 후 정상 동작이 가능한 상태입니다. 암호화, 복호화 대기중입니다.
// BS_STATE_ENC : 암호화 중입니다.
// BS_STATE_DEC : 복호화 중입니다.
DLL_EXPORT int BSCrypto_GetState();
// 첫번째 인자의 파일의 해시를 구합니다. (SHA-256)
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_OPEN_FILE
DLL_EXPORT int BSCrypto_FileToSha256(LPCWCH sPath, BYTE* pOutHash);
// 지정된 크기만큼 임의의 문자를 발생시킴니다.
DLL_EXPORT void BSCrypto_SetRandomStr(char* sRnd, int nLen);
// 블록 암호화를 준비합니다.
// 인자로 받은 키를 32byte binary키로 재구성 하고 대상 데이터 해시계산(SHA-256)을 준비합니다.
// 상태가 BS_STATE_INIT가 아닌경우 실패합니다.
// // 준비가 완료되면 상태를 BS_STATE_ENC로 변경합니다.
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_EncInit(const char* sKey);
// 데이터를 암호화 합니다. 원본데이터는 무결성 검사를 위해 해시를 업데이트 합니다.
// 상태가 BS_STATE_ENC가 아닌 경우 실패합니다.
// 성공 : BS_SUCCESS, 실패: BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_EncUpdate(const BYTE* pIn, BYTE* pOut, int nIn);
// 암호화를 종료 합니다. pOutHash 주소값이 NULL 아닌 경우 원본 데이터의 해키값을 반환합니다. (32byte 고정)
// 상태가 BS_STATE_ENC가 아닌 경우 실패합니다.
// 암호화 정보를 초기화 후 상태 정보를 BS_STATE_INIT로 되돌립니다.
// 성공 : BS_SUCCESS, 실패: BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_EncFinal(BYTE** pOutHash);
// 블록 복호화를 준비합니다.
// 인자로 받은 키를 32byte binary키로 재구성 하고 복호화된 데이터 해시계산(SHA-256)을 준비합니다.
// 상태가 BS_STATE_INIT가 아닌경우 실패합니다.
// 준비가 완료되면 상태를 BS_STATE_DEC로 변경합니다.
// 성공 : BS_SUCCESS, 실패 : BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_DecInit(const char* sKey);
// 데이터를 복호화 합니다. 복호화된 데이터는 무결성 검사를 위해 해시를 업데이트 합니다.
// 상태가 BS_STATE_DEC가 아닌 경우 실패합니다.
// 성공 : BS_SUCCESS, 실패: BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_DecUpdate(const BYTE* pIn, BYTE* pOut, int nIn);
// 복호화를 종료 합니다. pOutHash 주소값이 NULL 아닌 경우 복호화된 데이터의 해키값을 반환합니다. (32byte 고정)
// 상태가 BS_STATE_DEC가 아닌 경우 실패합니다.
// 암호화 정보를 초기화 후 상태 정보를 BS_STATE_INIT로 되돌립니다.
// 성공 : BS_SUCCESS, 실패: BS_ERROR_STATE_IN_ERROR
DLL_EXPORT int BSCrypto_DecFinal(BYTE** pOutHash);
// 파일을 암호화 합니다.
// 인자값 : 암호화 키, 대상 파일 경로, 암호화된 파일 저장 경로
//
// 결과값
// BS_SUCCESS : 성공
// BS_ERROR_OPEN_FILE : 원본 파일 열기 실패
DLL_EXPORT int BSCrypto_EncFile(const char* sKey, LPCWCH sSrcPath, LPCWCH sDestPath);
// 파일을 복호화 합니다.
// 인자값 : 복호화 키, 암호화된 파일 경로, 복호화된 파일 저장 경로
//
// 결과값
// BS_SUCCESS : 성공
// BS_ERROR_OPEN_FILE : 암호화된 파일 열기 실패
// BS_ERROR_INVALID_ENC_FILE : 잘못된 암호화 파일
// BS_ERROR_CREATE_FILE : 복호화 파일 생성 실패
// BS_ERROR_DECRYPT_FILE : 복호화 후 무결성 검사 실패, 복호화 키가 잘못 되었거나 파일이 손상된 경우 발생
DLL_EXPORT int BSCrypto_DecFile(const char* sKey, LPCWCH sSrcPath, LPCWCH sDestPath);
// 암호화된 파일의 헤더 정보에서 원본 파일의 해시값(SHA-256)을 반환합니다.
//
// 결과값
// BS_SUCCESS : 성공
// BS_ERROR_OPEN_FILE : 암호화된 파일 열기 실패
// BS_ERROR_INVALID_ENC_FILE : 잘못된 암호화 파일
DLL_EXPORT int BSCrypto_GetOrgFileHash(LPCWCH sEncPath, BYTE* pOutHash);
// 암호화된 파일인지 확인합니다.
//
// 결과값
// BS_SUCCESS : 성공
// BS_ERROR_OPEN_FILE : 대상 파일 열기 실패
// BS_ERROR_INVALID_ENC_FILE : 암호화 파일 아님
DLL_EXPORT int BSCrypto_IsEncFile(LPCWCH sEncPath);
#ifdef __cplusplus
}
#endif
#endif