3) SDF App API 명세서
Java Class API 함수 설명
▶ void SettingPathForProperty() : 설정 정보 파일의 경로를 알려주는 함수
- 제어방식 :
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 설정 정보 파일의 path를 알려주는 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | propertyPath | 설정 정보 파일(softcamp.properties)의 경로를 설정한다. | 파일명 포함 예) c:/softcamp.properties |
Return Value
- 없음
비고
설정 정보 파일을 사용하지 않는 경우, 기본 설정으로 동작하지만 4.x 키 파일을 사용하는 경우, 보안성 강화 기능으로 인하여 반드시 설정 정보 파일을 사용하여야 합니다.
이름 | 설정값 | 설명 | 기본값 |
---|---|---|---|
LogWrite | 0 이면 로그 남기지 않음 | 로그 파일 생성 여부 | 1 |
LogPath | 로그 파일 생성 경로 | 로그 파일 생성 경로 | ./log/ |
FileExt | 구분자는 ‘;’ 이며 소문자 사용 | 지원 확장자 목록 | doc;xls;ppt;csv;hwp;gul;txt;pdf;bmp;jpg;jpeg;gif;tif;tiff;rtf;jtd;pptx;docx;xlsx;tmp |
ServiceID | ID | 키 파일 인증 관련 서비스 ID | |
useServiceLinkerIcon | 0 이면 미사용 | 서비스링커 아이콘 지원 ( SCDSA004 문서는 해당되지 않음 ) | 0 |
nEncCache | 1 이면 Cache Mode | 암호화 시, 대상 파일이 존재하는 경우 파일 암호화 하지 않음 ( MAC 암호화 API만 지원 ) | 0 |
nMaxLoopCache | 1 보다 큰 값 | Cache Mode에서 대기 상태인 경우, 최대 대기 루프 횟수 | 300 |
FileBufferSize | 1 보다 큰 값 | File I/O 시, 읽어들이는 버퍼의 크기 | 65536 |
LogFilter | 구분자는 ‘;’ 사용 | 로그 파일에 남기려는 로그의 종류 | ERROR; INFO; WARNING; |
Algorithm | AES or ARIA | 문서 암호화 시, 사용되는 암호화 알고리즘 (ARIA로 설정 시, 키 알고리즘은 RSA를 사용) | AES |
DocumentVersion | 4 이면, SCDSA004 문서 | 문서 헤더 버전 (Algorithm 설정 값이 AES가 아닌 경우, DocumentVersion 은 4로 설정됨) | 3 |
AnsiCharset | Character Set | 시스템의 기본 Locale과 다른 Character Set을 사용하는 경우 설정 | 시스템의 기본 Locale |
KeyFileOffset | 0 이면 미사용 | 키 파일 메모리 로딩 시, 성능향상을 위하여 키 파일의 일부만을 로딩하여 처리하는 기능 | 4.1.3.0 이전 : 0 4.1.3.0 이후 : 1 |
-
useServiceLinkerIcon 설정 시, 서비스 링커로 암호화 한 파일은 클라이언트에서 붉은 색 아이콘으로 표시 됩니다. ( 클라이언트에서 지원하는 지, 여부를 확인한 후에 설정하시기 바랍니다. )
-
FileBufferSize는 File I/O 성능 향상을 위하여 버퍼를 사용하여 Read/Write 하도록 코드가 수정되었으며, 이 때 버퍼의 크기는 해당 네트웍의 성능에 영향을 받기 때문에 설정 가능합니다. 해당 시스템의 적절한 버퍼 크기는 SCSL.FindBufferSize 클래스로 찾을 수 있습니다.
-
Usage : java -classpath scsl.jar SCSL.FindBufferSize testFile (to execute a jar file) or java SCSL.FindBufferSize testFile (to execute a class)
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
sFile.SettingPathForProperty( "C:\\softcamp\\softcamp.properties" );
/* do working */
}
}
▶ public void SLDsInitDAC() : 초기화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 서비스링커를 사용하기 위한 초기화 작업 함수
Parameter
- 없음
Return Value
- 없음
비고
- SLDsAddUserDAC() or SLDsAddGroupDAC()으로 추가된 정보를 초기화
▶ int SLDsAddUserDAC() : 사용자 추가 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 보안문서의 헤더의 보안정책에 사용자를 추가하는 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | userID | 사용자 ID | |
[IN] String | auth | 권한 문자열 | 권한 문자열 참조 https://wiki.softcamp.co.kr/x/ng1YB |
[IN] int/String | expireDate | 유효기간 설정 | int - 0: 기한없음, 1: 당일만, 2: 명일까지, n: n일까지 String - YYYYMMDD 형식 예) "20231231" |
[IN] int | readLimit | 읽기 횟수 | 0: 읽기횟수 제한 없음, n: 읽기 n회 가능 |
[IN] int | printLimit | 프린트 횟수 | 0: 출력횟수 제한 없음, n: 출력 n회 가능 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
▶ int SLDsAddGroupDAC() : 그룹 추가 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 보안문서의 헤더의 보안정책 에 그룹을 추가하는 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | groupID | 그룹 ID | |
[IN] String | auth | 권한 문자열 | 권한 문자열 참조 https://wiki.softcamp.co.kr/x/ng1YB |
[IN] int/String | expireDate | 유효기간 설정 | int - 0: 기한없음, 1: 당일만, 2: 명일까지, n: n일까지 String - YYYYMMDD 형식 예) "20231231" |
[IN] int | readLimit | 읽기 횟수 | 0: 읽기횟수 제한 없음, n: 읽기 n회 가능 |
[IN] int | printLimit | 프린트 횟수 | 0: 출력횟수 제한 없음, n: 출력 n회 가능 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
▶ int SLDsAddUserDACCL() : User DAC 정보를 추가
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 보안문서의 헤더의 보안정책에 그룹을 추가하는 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | SERVERID | 서버 ID | |
[IN] String | userID | 사용자 ID | |
[IN] String | auth | 권한 문자열 | 권한 문자열 참조 https://wiki.softcamp.co.kr/x/ng1YB |
[IN] int/String | expireDate | 유효기간 설정 | int - 0: 기한없음, 1: 당일만, 2: 명일까지, n: n일까지 String - YYYYMMDD 형식 예) "20231231" |
[IN] int | readLimit | 읽기 횟수 | 0: 읽기횟수 제한 없음, n: 읽기 n회 가능 |
[IN] int | printLimit | 프린트 횟수 | 0: 출력횟수 제한 없음, n: 출력 n회 가능 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
▶ public void SLDsInitGrade() : 초기화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 서비스링커를 사용하기 위한 초기화 작업 함수
Parameter
- 없음
Return Value
- 없음
비고
- SLDsAddUserGrade() 으로 추가된 정보를 초기화
▶ int SLDsAddUserGrade() : 등급 문서 접근 대상 사용자 추가 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 보안문서의 헤더의 보안정책에 사용자를 추가하는 함수
Parameter
타입 | 변수명 | 설 명 | 비고 |
---|---|---|---|
[IN] String | userID | 사용자 ID, 그룹ID, 등급 ID | ** 등급 ID 설정 시 - 유효기간만 설정 가능 - auth 에 0000000 으로 설정 해야 함. |
[IN] String | auth | 권한 문자열 | 권한 문자열 참조 https://wiki.softcamp.co.kr/x/ng1YB |
[IN] int/String | expireDate | 유효기간 설정 | int - 0: 기한없음, 1: 당일만, 2: 명일까지, n: n일까지 String - YYYYMMDD 형식 예) "20231231" |
[IN] int | readLimit | 읽기 횟수 | 0: 읽기횟수 제한 없음, n: 읽기 n회 가능 |
[IN] int | printLimit | 프린트 횟수 | 0: 출력횟수 제한 없음, n: 출력 n회 가능 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
예제
SCSL.SLDsFile sFile = new SCSL.SLDsFile();
sFile.SLDsInitGrade();
sFile.SLDsAddUserGrade("0000005", "000000000", "20231231", 0, 0); //등급에 유효 기간 설정
sFile.SLDsAddUserGrade("SECURITYDOMAIN", "111001101", "20231231", 0, 0); //사용자 권한 및 유효기간 설정
▶ public int SLDsEncFileDAC(...) : DAC 방식 암호화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : DAC 방식의 파일 암호화 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
sFile.SLDsInitDAC();
sFile.SLDsAddUserDAC("hcjeong;bbbb", "011100110", 0, 0, 0);
sFile.SLDsAddGroupDAC("group1;group2","111100011", 0, 0, 0);
sFile.SLDsAddUserDAC("hong;ddd", "001100110", 0, 0, 0);
int ret = sFile.SLDsEncFileDAC("c:\\keyFile\\keyDAC.sc", "c:/a.doc", "c:/a(암호).doc", 1);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int SLDsEncFileDACV2(...) : DAC 방식 암호화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : DAC 방식의 파일 암호화 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | systemName | 연동 시스템 이름 | 생성자 정보에 연동시스템 이름이 들어감. |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0 : 성공
- 이외의 값 : 실패
비고
- 없음
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
sFile.SLDsInitDAC();
sFile.SLDsAddUserDAC("hcjeong;bbbb", "011100110", 0, 0, 0);
sFile.SLDsAddGroupDAC("group1;group2","111100011", 0, 0, 0);
sFile.SLDsAddUserDAC("hong;ddd", "001100110", 0, 0, 0);
int ret = sFile.SLDsEncFileDACV2("c:\\keyFile\\keyDAC.sc", "EDMS", "c:/a.doc", "c:/a(암호).doc", 1);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int CreateDecryptFileDAC(...) : DAC 방식 복호화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : DAC 방식의 파일 복호화 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | groupID | 권한을 구분 적용하는 그룹 ID | 사용자 ID도 가능 |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 암호화 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 복호화 문서 |
[IN] String | authInfo | 권한 정보(Base64 Encode) | SCGetFileType.dll 로 생성한 권한 정보 - 사용하지 않는 경우 생략 가능 |
Return Value
- 0 : 성공
- -36: 원본파일이 일반문서(비암호화 문서) -> 에러처리 불필요하며 성공과 동일하게 적용
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 원본 파일이 비암호화 파일인 경우, 대상 경로로 파일을 복사한 후, -36 코드 값 리턴
암호화 파일이 MAC 파일인 경우, ※13 변경 사항 참조
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
int ret = sFile. CreateDecryptFileDAC (
"c:\\keyDAC.sc", //키 파일 경로
"user0001", // 아이디
"c:\\a(암호).doc", // 복호화 할 소스 경로
"c:\\a(복호).doc", // 복호화 할 대상 경로
"" // 권한 정보 ( 사용하지 않는 경우 생략 가능 )
);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int CreateEncryptFile(...) : MAC 방식 암호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 암호화 함 수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | categoryName | 권한 구분을 위한 범주 이름 | 범주 명이 정해지지 않았을 시 'Server'입력 |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0 : 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 없음
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
int ret = sFile.CreateEncryptFile(
"c\\key.sc", //키 파일 경로
"0000001", // 범주 아이디
"기밀문서", // 범주명을 넣어준다.
" c\\a.doc", // 암호화 할 소스 경로
" c\\a(암호).doc", // 암호화 할 목적 경로
1 // 원본 파일이 암호화 된 경우 옵션 값
);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int DSAPIEncFileV2(...) : MAC 방식 암호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 암호화 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | categoryName | 권한 구분을 위한 범주 이름 | 범주 명이 정해지지 않았을 시 'Server'입력 |
[IN] String | systemName | 연동 시스템 이름 | 생성자 정보에 연동시스템 이름이 들어감. |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0 : 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 파라미터로 받은 시스템이름은 암호화된 파일의 문서보안 정보보기 탭에서 생성자 정보로 사용됨
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
int ret = sFile. DSAPIEncFileV2 (
"c\\key.sc", //키 파일 경로
"0000001", // 범주 아이디
"기밀문서", // 범주명을 넣어준다.
"EDMS", // 연동 시스템 이름
" c\\a.doc", // 암호화 할 소스 경로
" c\\a(암호).doc", // 암호화 할 목적 경로
1 // 원본 파일이 암호화 된 경우 옵션 값
);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int DSAPIEncFileV2AddExpireDate(...) : MAC 방식 암호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 암호화 함수
- 이 함수를 통해 생성된 문서는 정해진 ExpireDate 날짜까지만 사용가능
- 정해진 날짜 이후 오픈 시, 파괴 옵션에 따라 볼 수 없거나 파괴 됨
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | categoryName | 권한 구분을 위한 범주 이름 | 범주 명이 정해지지 않았을 시 'Server'입력 |
[IN] String | systemName | 연동 시스템 이름 | 생성자 정보에 연동시스템 이름이 들어감. |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] String | expireDate | 유효기간 | "20250101” 같은 형식 |
[IN] String | autoDestroy | 파괴 옵션 | "0" : 열지 못하게, "4" : 파기 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0 : 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 없음
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
int ret = sFile.DSAPIEncFileV2AddExpireDate(
"c:/keyFile/key.sc",
"0000001",
"1등급",
"KM",
"c:/test/test.doc",
"c:/test/testAddDestroyEnc.doc",
"20071101", // 예) "20070820" 같은로직
"4", // "0" : 열지 못하게, "4" : 파기
1 // 원본 파일이 암호화 된 경우 옵션 값
);
/* 리턴 값에 따른 예외처리 */
}
}
▶ public int CreateDecryptFile(...) : MAC 방식 복호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 복호화 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] String | authInfo | 권한 정보(Base64 Encode) | SCGetFileType.dll 로 생성한 권한 정보 - 사용하지 않는 경우 생략 가능 |
Return Value
- 0 : 성공
- -36: 원본파일이 일반문서(비암호화 문서) -> 에러처리 불필요하며 성공과 동일하게 적용
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 원본 파일이 비암호 화 파일인 경우, 대상 경로로 파일을 복사한 후, -36 코드 값 리턴
암호화 파일이 DAC 이 아닌 경우, ※13 변경 사항 참조
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
int ret = sFile.CreateDecryptFile(
"c:\\key.sc", //키 파일 경로
"0000001", // 범주 아이디
"c:\\a(암호).doc", // 복호화 할 소스 경로
"c:\\a(복호).doc", // 복호화 할 대상 경로
authInfo // 권한 정보 ( 사용하지 않는 경우 생략 가능 )
);
/* 리턴값에 따른 예외처리 */
}
}
▶ public int isEncryptFile(...) : 암호화 여부 판별 함수
- 제어방식 : ALL
- 패키지명 : SCSL
- 클래스명 : SLBsUtil
- 설명 : 해당 문서의 암호화 여부 판별 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | filePath | 체크파일 이름(경로포함) |
Return Value
- 1 : 암호화 파일
- 0 : 일반 파일
- -1 : Exception 발생 시
비고
- 없음
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLBsUtil sUtil = new SLBsUtil();
int encrypted = sUtil.isEncryptFile("./a.doc");
}
}
▶ public int DSEncMethod(...) : 암호화 파일의 암호화 방식을 알아내는 함수
- 제어방식 : ALL
- 패키지명 : SCSL
- 클래스명 : SLDsEncDecHeader
- 설명 : 해당 파일의 암호화 방법 확인 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | filePath | 체크파일 이름(경로포함) |
Return Value
- 0: MAC 방식 암호화 파일
- 1: DAC 방식 암호화 파일
- 2: GRADE 방식 암호화 파일
- -1 : 비정상 암호화 파일
- -36 : 일반 파일
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 없음
예제
DSSimpleEncFileDAC 함수에 있음.
** 선언 시 properties에 Key 파일 경로를 설정 하거나 Key 파일 경로 또는 DS HeaderKey 와 Custom Key를 넣어 주어야 한다.
- SLDsEncDecHeader()
=> properties 에 DSKEYENCRYPT_KEYFILE 설정 필요(Document Security 하드코딩된 암호화 키 노출 취약점 개선)
- SLDsEncDecHeader(String KeyFilePath)
- SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)
▶ public int DSIsSupportFile(...) : 지원되는 확장자 파일인지 확인하는 함수
- 제어방식 : ALL
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : 넘겨 받은 파라미터가 지원되는 확장자 파일인지 확인한다.
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | filePath | 체크파일 이름(경로포함) |
Return Value
- 1 : 지원되는 확장자
- 0 : 지원되지 않는 확장자
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 없음
예제
DSSimpleEncFileDAC 함수에 있음.
▶ public int DSSimpleEncFile(...) : MAC 방식의 Simple 파일 암호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 암호화를 한다.
- 지원하지 않는 확장자에 대해서도 ".dsd"를 붙여 암호화를 하고 0을 리턴한다
- a.log 암호화 => a.log.dsd
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | categoryName | 정의된 범주 이름 | 범주 명이 정해지지 않았을 시 'Server'입력 |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호 화후 재암호화 |
Return Value
- 0: 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 없음
예제
DSSimpleEncFileDAC 함수에 있음.
▶ public int DSSimpleEncFileDAC(...) : DAC 방식의 Simple 파일 암호화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : DAC 방식의 파일 암호화를 한다.
- 지원하지 않는 확장자에 대해서도 ".dsd"를 붙여 암호화를 하고 0을 리턴한다
- a.log 암호화 => a.log.dsd
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0: 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 지원되지 않는 확장자의 경우 읽기, 해제, 반출, 권한변경의 권한을 넣어준다.
- DSIsSupportFile API를 사용하여 지원되는 확장자인지를 확인하여 분기 한다.
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
// 키 파일 입력 할 경우
String keyDACPath = "S:\\TFS_Project2\\Linker\\ServiceLinker\\src\\JavaServiceLinker\\keyfiles\\test44\\KeyDAC_44.sc";
SLDsEncDecHeader DsEncDecHeader = new SLDsEncDecHeader(keyDACPath);
// 키 직접 입력 할 경우
SLDsEncDecHeader SLDSHeader = new SLDsEncDecHeader("DS Server Header Key", "Custom Header Key");
int ret = 0;
// 암호화 방식 체크
ret = DsEncDecHeader.DSEncMethod( "c:/test/b(MAC보안).txt" );
System.out.println( "ret : " + ret );
// 확장자 체크
ret = sFile.DSIsSupportFile( "c:/test/a.log" );
System.out.println( "지원되는 확장자 여부 a.log : " + ret );
ret = sFile.DSIsSupportFile( "c:/test/.txt" );
System.out.println( "지원되는 확장자 여부 a.txt : " + ret );
// 간단 암호화 테스트 MAC
int nSimple = sFile.DSSimpleEncFile(
"c:/keyFile/key.sc",
"0000010",
"Server",
"c:/test/a.log",
"c:/test/a(MAC암호).log",
1
);
System.out.println( "nSimple : " + nSimple );
// 간단 암호화 테스트 DAC
String srcPath = new String( "c:/test/a.log" );
sFile.SLDsInitDAC();
if( sFile.DSIsSupportFile( srcPath ) == 0 )
{
// 지원하지 않는 확장자일 경우 읽기, 해제, 반출, 권한 변경 권한을 준다.
sFile.SLDsAddUserDAC( "hcjeong", "010110001", 0, 0, 0 );
}
else
sFile.SLDsAddUserDAC( "hcjeong", "010000000", 0, 0, 0 );
}
int nSimpleDAC = sFile.DSSimpleEncFileDAC( "c:/keyFile/keyDAC.sc", "c:/test/a.log",
"c:/test/a(simDAC암호).log",
1
);
}
▶ public int DSSimpleEncFileV2(...) : MAC 방식의 Simple 파일 암호화 함수
- 제어방식 : MAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : MAC 방식의 파일 암호화를 한다.
- 지원하지 않는 확장자에 대해서도 ".dsd"를 붙여 암호화를 하고 0을 리턴한다
- a.log 암호화 => a.log.dsd
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | categoryID | 권한 구분을 위한 범주 ID | |
[IN] String | categoryName | 정의된 범주 이름 | 범주 명이 정해지지 않았을 시 'Server'입력 |
[IN] String | systemName | 연동 시스템 이름 | 생성자 정보에 연동시스템 이름이 들어감. |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | 원본 문서 |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | 암호화 문서 |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0: 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 파라미터로 받은 시스템이름은 암호화된 파일의 문서보안 정보보기 탭에서 생성자 정보로 사용됨
예제
DSSimpleEncFileDACV2 함수에 있음.
▶ public int DSSimpleEncFileDACV2(...) : DAC 방식의 Simple 파일 암호화 함수
- 제어방식 : DAC
- 패키지명 : SCSL
- 클래스명 : SLDsFile
- 설명 : DAC 방식의 파일 암호화를 한다.
- 지원하지 않는 확장자에 대해서도 ".dsd"를 붙여 암호화를 하고 0을 리턴한다
- a.log 암호화 => a.log.dsd
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[IN] String | systemName | 연동 시스템 이름 | 생성자 정보에 연동시스템 이름이 들어감. |
[IN] String | srcFilePath | 원본파일 이름(경로포함) | |
[IN] String | dstFilePath | 암호화한 파일 이름(경로포함) | |
[IN] int | option | 원본파일이 암호화 파일일 경우 재 암호화 옵션 | 0: 암호화하지않음 1: 복호화후 재암호화 |
Return Value
- 0: 성공
- 이외의 값: 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- 파라미터로 받은 시스템이름은 암호화된 파일의 문서보안 정보보기 탭에서 생성자 정보로 사용됨
- 지원되지 않는 확장자의 경우 읽기, 해제, 반출, 권한변경의 권한을 넣어준다.
- DSIsSupportFile API를 사용하여 지원되는 확장자인지를 확인하여 분기 한다.
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
// 키 파일 입력 할 경우
String keyDACPath = "S:\\TFS_Project2\\Linker\\ServiceLinker\\src\\JavaServiceLinker\\keyfiles\\test44\\KeyDAC_44.sc";
SLDsEncDecHeader DsEncDecHeader = new SLDsEncDecHeader(keyDACPath);
// 키 직접 입력 할 경우
SLDsEncDecHeader SLDSHeader = new SLDsEncDecHeader("DS Server Header Key", "Custom Header Key");
int ret = 0;
// 암호화 방식 체크
ret = DsEncDecHeader.DSEncMethod( "c:/test/b(MAC보안).txt" );
System.out.println( "ret : " + ret );
// 확장자 체크
ret = sFile.DSIsSupportFile( "c:/test/a.log" );
System.out.println( "지원되는 확장자 여부 a.log : " + ret );
ret = sFile.DSIsSupportFile( "c:/test/.txt" );
System.out.println( "지원되는 확장자 여부 a.txt : " + ret );
// 간단 암호화 테스트 MAC 버전2
int nSimple = sFile.DSSimpleEncFileV2("c:/keyFile/key.sc",
"0000010",
"1등급",
"EDMS",
"c:/test/a.log",
"c:/test/a(MAC암호).log",
1
);
System.out.println( "nSimple : " + nSimple );
// 간단 암호화 테스트 DAC
String srcPath = new String( "c:/test/a.log" );
sFile.SLDsInitDAC();
if( sFile.DSIsSupportFile( srcPath ) == 0 )
{
// 지원하지 않는 확장자일 경우 읽기, 해제, 반출, 권한 변경 권한을 준다.
sFile.SLDsAddUserDAC( "hcjeong", "010110001", 0, 0, 0 );
}
else
{
sFile.SLDsAddUserDAC( "hcjeong", "010000000", 0, 0, 0 );
}
int nSimpleDAC = sFile.DSSimpleEncFileDACV2( "c:/keyFile/keyDAC.sc",
"EDMS",
"c:/test/a.log",
"c:/test/a(simDAC암호).log",
1
);
System.out.println( "암호화 결과 값(0이면 성공) : " + nSimpleDAC );
}
}
▶ public int GetFileInfoOfHeader(...) : 암호화된 파일 헤더의 파일 정보를 알아내는 함수
- 제어방식 : ALL
- 패키지명 : SCSL
- 클래스명 : SLDsEncDecHeader
- 설명 : 암호화된 파일 헤더의 파일 정보를 알아내는 함수
Parameter
타입 | 변수명 | 설명 | 비고 |
---|---|---|---|
[IN] String | keyFilePath | 키파일 이름(경로포함) | |
[OUT]byte[] | sfiInfo | 파일 정보를 담고 있는 byte 배열 | 파일정보을 담을 사이즈 만큼 byte 배열 공간을 할당해줘야 한다. 파일 헤더 정보의 사이즈는 396 이다. |
Return Value
- 0: 성공
- 이외의 값: Service Linker 사양서의 오류코드 참조 https://wiki.softcamp.co.kr/x/ow1YB
비고
- ※ 문서 헤더 암호화 키를 사용하는 경우 사용할 수 없으며, SLDsEncFile Class를 사용하여야 한다.
- 파일 헤더 구조( sfiInfo )은 배열의 앞byte 부터 순차적으로 다음과 같이 구성되어 있다.
-
데이터 크기 설명 비고 16 생성 시간 260 생성 경로 20 작성자 아이디 50 작성자 이름 50 작성자 그룹 - 선언 시 properties에 Key 파일 경로를 설정 하거나 Key 파일 경로 또는 DS HeaderKey 와 Custom Key를 넣어 주어야 한다.
- SLDsEncDecHeader()
=> properties 에 DSKEYENCRYPT_KEYFILE 설정 필요(Document Security 하드코딩된 암호화 키 노출 취약점 개선) - SLDsEncDecHeader(String KeyFilePath)
- SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)
- SLDsEncDecHeader()
예제
import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
// 키 파일 입력 할 경우
String keyDACPath = "S:\\TFS_Project2\\Linker\\ServiceLinker\\src\\JavaServiceLinker\\keyfiles\\test44\\KeyDAC_44.sc";
SLDsEncDecHeader DsEncDecHeader = new SLDsEncDecHeader(keyDACPath);
// 키 직접 입력 할 경우
SLDsEncDecHeader SLDSHeader = new SLDsEncDecHeader("DS Server Header Key", "Custom Header Key");
byte[] sfiInfo = new byte[396];
// 파일 정보( SFI ) 를 가져온다.
int ret = DsEncDecHeader.GetFileInfoOfHeader( "c:/test/a(dac).doc", sfiInfo );
System.out.println( "ret : " + ret);
String strCreateTime = new String(sfiInfo, 0, 16 );
String strCreatePath = new String(sfiInfo, 16, 260 );
String strWriterID = new String(sfiInfo, 16 + 260, 20 );
String strWriterName = new String(sfiInfo, 16 + 260 + 20, 50 );
String strWriterGroup = new String(sfiInfo, 16 + 260 + 20 + 50, 50 );
System.out.println( "strCreateTime : " + strCreateTime );
System.out.println( "strCreatePath : " + strCreatePath );
System.out.println( "strWriterID : " + strWriterID );
System.out.println( "strWriterName : " + strWriterName );
System.out.println( "strWriterGroup : " + strWriterGroup );
}
}