2) 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");
}
}