メインコンテンツまでスキップ

3) SDF SDK API 仕様書

scsl.jar クラス API 関数の説明

▶ void SettingPathForProperty() : 設定情報ファイルのパスを知らせる関数

  • 制御方式 :
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : 設定情報ファイルのパスを知らせる関数

Parameter

タイプ変数名説明備考
[IN] StringpropertyPath設定情報ファイル(softcamp.properties)のパスを設定します。ファイル名を含む
例) c:/softcamp.properties

Return Value

  • なし

備考

設定情報ファイルを使用しない場合、デフォルト設定で動作しますが、4.xキーファイルを使用する場合、セキュリティ強化機能により必ず設定情報ファイルを使用する必要があります。

名前設定値説明デフォルト値
LogWrite0 の場合、ログは記録されません。ログファイルの生成有無1
LogPathログファイル生成パスログファイル生成パス./log/
FileExt区切り文字は「;」であり、小文字を使用します。サポートされている拡張子のリストdoc;xls;ppt;csv;hwp;gul;txt;pdf;bmp;jpg;jpeg;gif;tif;tiff;rtf;jtd;pptx;docx;xlsx;tmp
ServiceIDIDキー ファイル 認証 関連 サービス ID
useServiceLinkerIcon0 の場合は未使用サービスリンクアイコンのサポート ( SCDSA004 ドキュメントは該当しません )0
nEncCache1 キャッシュモード暗号化時、対象ファイルが存在する場合はファイルを暗号化しません(MAC暗号化APIのみサポート)。0
nMaxLoopCache1より大きい値Cache Modeで待機状態の場合、最大待機ループ回数300
FileBufferSize1より大きい値ファイルI/O時の読み込むバッファのサイズ65536
LogFilter区切り文字は「;」を使用しますログファイルに残したいログの種類ERROR; INFO; WARNING;
AlgorithmAES or ARIA文書暗号化時に使用される暗号化アルゴリズム(ARIAに設定した場合、キーアルゴリズムはRSAを使用)AES
DocumentVersion4 の場合、SCDSA004 文書ドキュメントヘッダーのバージョン (Algorithm設定値がAESでない場合、DocumentVersionは4に設定されます)3
AnsiCharsetCharacter Setシステムの基本ロケールと異なる文字セットを使用する場合の設定システムの基本ロケール
KeyFileOffset0 の場合は未使用キー ファイル メモリ ローディング時に、パフォーマンス向上のためにキー ファイルの一部のみをローディングして処理する機能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() または SLDsAddGroupDAC() で追加された情報を初期化

▶ int SLDsAddUserDAC() : ユーザー追加関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : セキュリティ文書のヘッダーのセキュリティポリシーにユーザーを追加する関数

Parameter

タイプ変数名説明備考
[IN] StringuserIDユーザーID
[IN] Stringauth権限文字列権限文字列参照https://wiki.softcamp.co.kr/x/ng1YB
[IN] int/StringexpireDate有効期限の設定int - 0: 無期限, 1: 当日のみ, 2: 指定日まで, n: n日まで
文字列 - YYYYMMDD形式 例) "20231231"
[IN] intreadLimit読み回数0: 読み取り回数制限なし, n: 読み取り n 回可能
[IN] intprintLimit印刷回数0: 出力回数制限なし, n: 出力 n回可能

Return Value

  • 0 : 成功
  • それ以外の値 : 失敗

備考

  • なし

▶ int SLDsAddGroupDAC() : グループ追加関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : セキュリティ文書のヘッダーにセキュリティポリシーにグループを追加する関数

Parameter

タイプ変数名説明備考
[IN] StringgroupIDグループ ID
[IN] Stringauth権限文字列権限文字列参照https://wiki.softcamp.co.kr/x/ng1YB
[IN] int/StringexpireDate有効期限の設定int - 0: 無期限, 1: 当日のみ, 2: 指定日まで, n: n日まで
文字列 - YYYYMMDD形式 例) "20231231"
[IN] intreadLimit読み回数0: 読み取り回数制限なし, n: 読み取り n 回可能
[IN] intprintLimit印刷回数0: 出力回数制限なし, n: 出力 n回可能

Return Value

  • 0 : 成功
  • それ以外の値 : 失敗

備考

  • なし

▶ int SLDsAddUserDACCL() : ユーザーDAC情報を追加

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : セキュリティ文書のヘッダーにセキュリティポリシーにグループを追加する関数

Parameter

タイプ変数名説明備考
[IN] StringSERVERIDサーバーID
[IN] StringuserIDユーザーID
[IN] Stringauth権限文字列権限文字列参照https://wiki.softcamp.co.kr/x/ng1YB
[IN] int/StringexpireDate有効期限の設定int - 0: 無期限, 1: 当日のみ, 2: 指定日まで, n: n日まで
文字列 - YYYYMMDD形式 例) "20231231"
[IN] intreadLimit読み回数0: 読み取り回数制限なし, n: 読み取り n 回可能
[IN] intprintLimit印刷回数0: 出力回数制限なし, n: 出力 n回可能

Return Value

  • 0 : 成功
  • それ以外の値 : 失敗

備考

  • なし

▶ public void SLDsInitGrade() : 初期化関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : サービスリンカーを使用するための初期化作業関数

Parameter

  • なし

Return Value

  • なし

備考

  • SLDsAddUserGrade() で追加された情報を初期化

▶ int SLDsAddUserGrade() : グレード文書アクセス対象ユーザー追加関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : セキュリティ文書のヘッダーのセキュリティポリシーにユーザーを追加する関数

Parameter

タイプ変数名説明備考
[IN] StringuserIDユーザーID、グループID、グレードID** グレードID設定時
- 有効期限のみ設定可能
- authを0000000に設定する必要があります。
[IN] Stringauth権限文字列権限文字列参照https://wiki.softcamp.co.kr/x/ng1YB
[IN] int/StringexpireDate有効期限の設定int - 0: 無期限, 1: 当日のみ, 2: 指定日まで, n: n日まで
文字列 - YYYYMMDD形式 例) "20231231"
[IN] intreadLimit読み回数0: 読み取り回数制限なし, n: 読み取り n 回可能
[IN] intprintLimit印刷回数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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringsrcFilePath元のファイル名(パスを含む)
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringsystemName連携システム名生成者情報に連携システム名が含まれます。
[IN] StringsrcFilePath元のファイル名(パスを含む)
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringgroupID権限を区分適用するグループIDユーザーIDも可能
[IN] StringsrcFilePath元のファイル名(パスを含む)暗号化文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)復号化文書
[IN] StringauthInfo権限情報(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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringcategoryName権限区分のためのカテゴリ名カテゴリ名が決まっていない場合は「Server」を入力してください。
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • なし

例示

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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringcategoryName権限区分のためのカテゴリ名カテゴリ名が決まっていない場合は「Server」を入力してください。
[IN] StringsystemName連携システム名生成者情報に連携システム名が含まれます。
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • パラメーターとして受け取ったシステム名は、暗号化されたファイルの文書セキュリティ情報表示タブで作成者情報として使用されます。

例示

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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringcategoryName権限区分のためのカテゴリ名カテゴリ名が決まっていない場合は「Server」を入力してください。
[IN] StringsystemName連携システム名生成者情報に連携システム名が含まれます。
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] StringexpireDate有効期限"20250101”のような形式
[IN] StringautoDestroy破壊オプション"0" : 開けられないように, "4" : 破棄
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • なし

例示

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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] StringauthInfo権限情報(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] StringfilePathチェックファイル名(パスを含む)

Return Value

  • 1 : 暗号化ファイル
  • 0 : 一般ファイル
  • -1 : 例外が発生した場合

備考

  • なし

例示

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] StringfilePathチェックファイル名(パスを含む)

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] StringfilePathチェックファイル名(パスを含む)

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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringcategoryName定義されたカテゴリ名カテゴリ名が決まっていない場合は「Server」を入力してください。
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • なし

例示

DSSimpleEncFileDAC 함수에 있음.

▶ public int DSSimpleEncFileDAC(...) : DAC方式のシンプルファイル暗号化関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : DAC方式のファイル暗号化を行います。
    • サポートされていない拡張子についても ".dsd" を付けて暗号化し、0を返します。
    • a.log 暗号化 => a.log.dsd

Parameter

タイプ変数名説明備考
[IN] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • サポートされていない拡張子の場合、読み取り、解凍、エクスポート、権限変更の権限を付与します。
  • 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] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringcategoryID権限区分のためのカテゴリID
[IN] StringcategoryName定義されたカテゴリ名カテゴリ名が決まっていない場合は「Server」を入力してください。
[IN] StringsystemName連携システム名生成者情報に連携システム名が含まれます。
[IN] StringsrcFilePath元のファイル名(パスを含む)原本の文書
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)暗号化文書
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • パラメーターとして受け取ったシステム名は、暗号化されたファイルの文書セキュリティ情報表示タブで作成者情報として使用されます。

例示

DSSimpleEncFileDACV2 함수에 있음.

▶ public int DSSimpleEncFileDACV2(...) : DAC方式のSimpleファイル暗号化関数

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : DAC方式のファイル暗号化を行います。
    • サポートされていない拡張子についても ".dsd" を付けて暗号化し、0を返します。
    • a.log 暗号化 => a.log.dsd

Parameter

タイプ変数名説明備考
[IN] StringkeyFilePathキーファイル名(パスを含む)
[IN] StringsystemName連携システム名生成者情報に連携システム名が含まれます。
[IN] StringsrcFilePath元のファイル名(パスを含む)
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

Return Value

備考

  • パラメーターとして受け取ったシステム名は、暗号化されたファイルの文書セキュリティ情報表示タブで作成者情報として使用されます。
  • サポートされていない拡張子の場合、読み取り、解凍、エクスポート、権限変更の権限を付与します。
  • 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] StringkeyFilePathキーファイル名(パスを含む)
[OUT]byte[]sfiInfoファイル情報を含むバイト配列ファイル情報を格納するサイズ分のバイト配列のスペースを割り当てる必要があります。
ファイルヘッダー情報のサイズは396です。

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。
  • ファイルヘッダー構造(sfiInfo)は、配列の先頭バイトから順次次のように構成されている。
  • データサイズ説明備考
    16生成時間
    260生成パス
    20作成者ID
    50著者名
    50作成者グループ
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です(Document Security ハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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

▶ public int GetFileInfoOfHeaderV2(...) : 暗号化されたファイルヘッダーのファイル情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのファイル情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] StringkeyFilePathキーファイル名(パスを含む)
[OUT]byte[]sfiInfoファイル情報を含むバイト配列ファイル情報を格納するサイズ分のバイト配列のスペースを割り当てる必要があります。
ファイルヘッダー情報のサイズは2791です。

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。

  • ファイルヘッダー構造(sfiInfo)は、配列の先頭バイトから順次次のように構成されている。

  • データサイズ説明備考
    16生成時間
    260生成パス
    20作成者ID
    50著者名
    50作成者グループ
    20生成場所CREATEPLACE
    1024グループ階層自分のグループIDから最上位の部門までのグループIDリスト
    1暗号化タイプ
    20サーバーID実際のサーバーIDのサイズは28バイトであり、20バイトを超えるサーバーIDの場合、後ろの部分が切り取られる問題が発生します。
    50サーバー名
    128文書の種類
    128文書のグレード
    1024その他の情報SFI_EXTRA_INFO
    サービスリンクではカスタムフィールド
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。

    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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[] arData = new byte[2791];

// 파일 정보( SFI ) 를 가져온다.
int ret = DsEncDecHeader.GetFileInfoOfHeader( "c:/test/a(dac).doc", arData );
System.out.println( "ret : " + ret );

String strCreateTime = new String( arData, 0, 16 );
String strCreatePath = new String( arData, 16, 260 );
String strWriterID = new String( arData, 16 + 260, 20 );
String strWriterName = new String( arData, 16 + 260 + 20, 50 );
String strWriterGroupName = new String( arData, 16 + 260 + 20 + 50, 50 );
String strCreatePlace = new String( arData, 16 + 260 + 20 + 50 + 50, 20 );

String strGroupHierarchy = new String( arData, 16 + 260 + 20 + 50 + 50 + 20, 1024 );
String strEncType = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024, 1 );
String strServerID = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024 + 1, 20 );
String strServerName = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024 + 1 + 20, 50 );
String strDocuKind = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024 + 1 + 20 + 50, 128 );
String strGradeInfo = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024 + 1 + 20 + 50 + 128, 128 );
String strExtraInfo = new String( arData, 16 + 260 + 20 + 50 + 50 + 20 + 1024 + 1 + 20 + 50 + 128 + 128, 1024 );

System.out.println( "strCreateTime : " + strCreateTime );
System.out.println( "strCreatePath : " + strCreatePath );
System.out.println( "strWriterID : " + strWriterID );
System.out.println( "strWriterName : " + strWriterName );
System.out.println( "strWriterGroupName : " + strWriterGroupName );
System.out.println( "strCreatePlace : " + strCreatePlace );

System.out.println( "strGroupHierarchy : " + strGroupHierarchy );
System.out.println( "strEncType : " + strEncType );
System.out.println( "strServerID : " + strServerID );
System.out.println( "strServerName : " + strServerName );
System.out.println( "strDocuKind : " + strDocuKind );
System.out.println( "strGradeInfo : " + strGradeInfo );
System.out.println( "strExtraInfo : " + strExtraInfo );
}
}

▶ public int GetMacOfHeader(...) : 暗号化されたファイルヘッダーのMAC情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのMAC情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] StringkeyFilePathキーファイル名(パスを含む)
[OUT]byte[]macInfoMAC情報を含むバイト配列MAC情報を格納するサイズ分のバイト配列のスペースを割り当てる必要があります。
ファイルヘッダー情報のサイズは50です。

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。

  • ファイルヘッダー構造(macInfo)は、配列の先頭バイトから順次次のように構成されています。

  • データサイズ説明備考
    50カテゴリ名
  • DSEncMethod() を使用して MAC 形式の暗号化されたファイルかどうかを確認した後に使用します。

  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。

    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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[] macInfo = new byte[50];

// 먼저 DSEncMethod()를 통해 MAC 으로 암호화 되어 있는지 체크한다.
int macEncrypted = DsEncDecHeader.DSEncMethod("c:/test/a(mac).doc" );
System.out.println( "macEncrypted :" + macEncrypted );

// 파일이 MAC 암호화가 아닐 경우 다른 예외처리를 해 준다.
if( macEncrypted != 0 )
{
System.out.println( "기타 다른 예외처리 처리..." );
return;
}

int ret = DsEncDecHeader.GetMacOfHeader( filePath, macInfo );
System.out.println( " ret: " + ret );

String categoryName = new String( macInfo, 0, 50 );
System.out.println( "CategoryName : " + categoryName );
}
}

▶ public int GetMacOfHeaderV2(...) : 暗号化されたファイルヘッダーのMAC情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのMAC情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] StringkeyFilePathキーファイル名(パスを含む)
[OUT]byte[]macInfoMAC情報を含むバイト配列MAC情報を格納するサイズ分のバイト配列のスペースを割り当てる必要があります。
ファイルヘッダー情報のサイズは70です。

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。

  • ファイルヘッダー構造(macInfo)は、配列の先頭バイトから順次次のように構成されています。

  • データサイズ説明備考
    20カテゴリID
    50カテゴリ名
  • DSEncMethod() を使用して MAC 形式の暗号化されたファイルかどうかを確認した後に使用します。

  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。

    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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[] macInfo = new byte[70];

// 먼저 DSEncMethod()를 통해 MAC 으로 암호화 되어 있는지 체크한다.
int macEncrypted = DsEncDecHeader.DSEncMethod("c:/test/a(mac).doc" );
System.out.println( "macEncrypted :" + macEncrypted );

// 파일이 MAC 암호화가 아닐 경우 다른 예외처리를 해 준다.
if( macEncrypted != 0 )
{
System.out.println( "기타 다른 예외처리 처리..." );
return;
}

int ret = DsEncDecHeader.GetMacOfHeader( filePath, macInfo );
System.out.println( " ret: " + ret );

String categoryID = new String( macInfo, 0, 20 );
String categoryName = new String( macInfo, 20, 50 );

System.out.println( "CategoryID : " + categoryID );
System.out.println( "CategoryName : " + categoryName );
}
}

▶ public int GetDacCountOfHeader(...) : 暗号化されたファイルヘッダーのDACの数を教える関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのDACの数を知らせる関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathキーファイル名(パスを含む)

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。
  • GetDacOfHeader関数で使用される関数です
  • DSEncMethod() を使用して MAC 形式の暗号化されたファイルかどうかを確認した後に使用します。
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

GetDacOfHeader 참조

▶ public int GetDacOfHeaderV2(...) : 暗号化されたファイルヘッダーのDAC情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのDAC情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathキーファイル名(パスを含む)
[OUT]byte[]dacInfoDAC情報を含むバイト配列DAC情報を格納するサイズ分のバイト配列スペースを割り当てる必要があります。
1つのDACの情報サイズは4200です。
例) DAC情報が3つある場合、4200 * 3サイズ分のスペースを割り当てる必要があります。

|

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。

  • DSEncMethod() を使用して DAC 形式の暗号化されたファイルかどうかを確認した後、使用します。

  • DACの数だけ次のように構成されている。

  • DACの個数はGetDacCountOfHeader()を通じて知ることができます。

  • データサイズ説明備考
    1タイプ
    20アイディー
    50名前
    1読み取り権限1バイト文字
    4読み取り可能回数
    1編集権限1バイト文字
    1解除権限1バイト文字
    1持ち出し権限1バイト文字
    1印刷権限1バイト文字
    4印刷回数
    1プリントマーキング1バイト文字
    16有効期限
    1自動廃棄1バイト文字
    1権限の変更1バイト文字
    1024ランク文書アクセス可能分類IDリスト
    1024グレード文書アクセス可能グループIDリスト
    1024グレード文書アクセス可能ユーザーIDリスト
    1024等級文書アクセス除外ユーザーIDリスト
    1サブグループへのアクセス不可1バイト文字
    '1'の場合、そのグループのみアクセス可能
    サブグループはアクセス不可です
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。

    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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

int dacEncrypted = DsEncDecHeader.DSEncMethod("c:/test/a(DAC Enc).txt" );
System.out.println( " dacEncrypted :" + dacEncrypted );

// 파일이 DAC 암호화가 아닐 경우 다른 예외처리를 해 준다.
if(dacEncrypted != 1 )
{
System.out.println( "기타 다른 예외처리 처리..." );
return;
}

int dacCount = DsEncDecHeader.GetDacCountOfHeader("c:/test/a(DAC Enc).txt" );
System.out.println( " dacCount : " + dacCount );

// 크기는 dacCount * 4200으로 해주어야 한다.
byte[] dacInfo = new byte[4200 * nCountOfDac];

dacEncrypted = DsEncDecHeader.GetDacOfHeader("c:/test/a(DAC Enc).txt", dacInfo );
System.out.println( " dacEncrypted : " + dacEncrypted );

for( int k = 0; k < dacCount; k++ )
{
String printInfo = new String( dacInfo, k * 4200, 4200 );
System.out.println( printInfo );
}
}
}

▶ public int GetRuiCountOfHeader(...) : 暗号化されたファイルヘッダーのRUIの数を返す関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのRUIの数を知らせる関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathキーファイル名(パスを含む)

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。
  • GetRuiOfHeader関数で使用される関数です。
  • DSEncMethod() を使用して MAC 形式の暗号化されたファイルかどうかを確認した後に使用します。
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

GetRuiOfHeader 참조

▶ public int GetRuiOfHeader(...) : 暗号化されたファイルヘッダーのRUI情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化されたファイルヘッダーのRUI情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathキーファイル名(パスを含む)
[OUT]byte[]ruiInfoRUI情報を含むバイト配列RUI情報を格納するサイズ分のバイト配列スペースを割り当てる必要があります。
1つのRUI情報サイズは145です。
例) RUI情報が3つの場合、145 * 3サイズ分のスペースを割り当てる必要があります。

|

Return Value

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。
  • DSEncMethod() を使用して DAC 形式の暗号化されたファイルかどうかを確認した後、使用します。
  • RUIの数だけ次のように構成されています。
  • RUIの数は GetRuiCountOfHeader() を通じて知ることができます。
  • データサイズ説明備考
    20アイディー
    50名前
    50グループ名
    1閲覧の有無1バイト文字
    4読んだ回数
    4印刷回数
    16最近の閲覧時間
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
    • SLDsEncDecHeader()
      => properties に DSKEYENCRYPT_KEYFILE の設定が必要です (Document Security のハードコーディングされた暗号化キーの露出脆弱性の改善)
    • SLDsEncDecHeader(String KeyFilePath)
    • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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

int ruiCount = DsEncDecHeader.GetRuiCountOfHeader("c:/test/a(DAC Enc).txt" );
System.out.println( " ruiCount : " + ruiCount );

if(ruiCount <= 0 )
{
System.out.println( "예외 처리" );
}

// 크기는 카운트 * 145로 해준다.
byte[] ruiInfo = new byte[145 * ruiCount];

int ret = DsEncDecHeader.GetRuiOfHeader("c:/test/a(DAC Enc).txt", ruiInfo);
System.out.println( " ret : " + ret );

// RUI의 갯수 만큼 루프를 돈다.
for( int n4 = 0; n4 < ruiCount; n4++ )
{
String printInfo = new String(ruiInfo, n4 * 145, 145 );
System.out.println( printInfo );
}
}
}

▶ public void SLDsEnvSet(...) : 拡張子チェックの有無を設定する関数。

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : 拡張子チェックの有無を設定します。

Parameter

タイプ変数名説明備考
[IN] intcheckExtチェックする値0の場合はチェックしない、それ以外の値はチェックする

Return Value

  • なし

備考

  • 暗号化APIを使用する前に、この関数を呼び出して拡張子チェックの有無を決定します。
  • 呼び出さない場合、暗号化APIは基本的に拡張子をチェックします。

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
sFile.SLDsEnvSet( 0 ); // 0이면 확장자를 체크하지 않음.
int ret = sFile.DSAPIEncFileV2( "c:/keyFile/key.sc",
"0000010",
"기밀문서",
"KM3",
"c:/test/테스트.log",
"c:/test/테스트(암호).log",
1
);
System.out.println( " ret : " + ret );
// 암호화 API의 파라미터가 유효할 경우, 확장자를 체크하면 -71 이, 체크하지 않으면 0 리턴 됨.
}
}

▶ public int DSGetDocuGradeDocument(...) : グレード文書IDを返す関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : グレードドキュメントIDを知らせる関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathファイルパス(ファイル名を含む)
[OUT]byte[]gradeIDランクIDを受け取る配列20バイトをあらかじめ割り当てておく。

Return Value

  • 0 : グレード文書ではありません
  • 1 : グレード文書
  • -36 : 暗号化ファイルではありません
  • -1 : エラー

備考

  • ※ ドキュメントヘッダーの暗号化キーを使用する場合は使用できず、SLDsEncFileクラスを使用する必要があります。
  • 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
  • SLDsEncDecHeader()
    => properties に DSKEYENCRYPT_KEYFILE の設定が必要です(Document Security ハードコーディングされた暗号化キー露出脆弱性の改善)
  • SLDsEncDecHeader(String KeyFilePath)
  • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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[] gradeID = new byte[22];

int ret = DsEncDecHeader. DSGetDocuGradeDocument ( "c:/test/a(등급 암호).doc", gradeID );
String strGradeID = new String(gradeID, 2, 20 );

System.out.println( "ret : " + ret );
System.out.println( "strGradeID : " + strGradeID );
}
}

▶ public int DSSLDocuGradeEnc(...) : グレード文書暗号化API

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : グレード文書暗号化API

Parameter

タイプ変数名説明備考
[IN] StringdocuKeyFilePathキーファイル名(パスを含む)ランク暗号化キーのファイルパスとファイル名を入力する必要があります。
[IN] StringsystemName該当システム名
[IN] StringdocuKind文書の種類使用しない場合は「none」を入力します。
[IN] StringdocuGradeIDランク文書 ID必須
[IN] StringloginIDログインしたID
[IN] StringgroupPathそのIDのグループパスグループハイラキーについて言及しており、サービスリンカー以外のモジュールのAPIを通じて取得できます。
[IN] StringextraInfoカスタムフィールド使用しない場合は「none」と入力してください。
[IN] StringsrcFilePath元のファイル名(パスを含む)
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)
[IN] intsimple単純暗号化の使用有無0 : 単純暗号化機能を使用しない
1 : 単純暗号化機能の使用
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

|

Return Value

  • 0: 成功
  • それ以外の値: エラー値参照

備考

  • SettingPathForProperty()と共に使用されるプロパティファイルと共に使用

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();

sFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );
int ret = sFile.DSSLDocuGradeEnc( "c:/keyFile/GradeInfo.sc",
"GW System",
"none",
"0000002",
"hcjeong",
"SCDS_0000000009;SCDS_0000000001;SECURITYDOMAIN;",
"aaa",
"c:/test/a.doc",
"c:/test/a(복사 되는 등급 암호).doc",
0,
1
);
System.out.println( "Return value : " + ret );
}
}

▶ public int DSSLDocuGradeEncAddCreator(...) : グレード文書暗号化API

  • 制御方式 : DAC
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : グレード文書暗号化API

Parameter

タイプ変数名説明備考
[IN] StringdocuKeyFilePathキーファイル名(パスを含む)ランク暗号化キーのファイルパスとファイル名を入力する必要があります。
[IN] StringsystemName該当システム名
[IN] StringdocuKind文書の種類使用しない場合は「none」を入力します。
[IN] StringdocuGradeIDランク文書 ID必須
[IN] StringloginIDログインしたID
[IN] StringgroupPathそのIDのグループパスグループハイラキーについて言及しており、サービスリンカー以外のモジュールのAPIを通じて取得できます。
[IN] StringextraInfoカスタムフィールド使用しない場合は「none」と入力してください。
[IN] StringsrcFilePath元のファイル名(パスを含む)
[IN] StringdstFilePath暗号化されたファイル名(パスを含む)
[IN] StringcreatorID生成者 ID
[IN] StringcreatorGroupPath生成者グループパスグループハイラキーについて言及しており、サービスリンク以外の他のモジュールのAPIを通じて取得できます。
[IN] StringkeyFileDACNameキーファイル名(パスを含む)DACキーファイル名(生成者キーを持つ)
[IN] intsimple単純暗号化の使用有無0 : 単純暗号化機能を使用しない
1 : 単純暗号化機能の使用
[IN] intoption元のファイルが暗号化ファイルの場合、再暗号化オプション0: 暗号化しない 1: 復号化後再暗号化

|

Return Value

  • 0: 成功
  • それ以外の値: エラー値参照

備考

  • SettingPathForProperty()と共に使用されるプロパティファイルと共に使用

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

/* 초기화 함수 */
slFile.SLDsInitGrade();

slFile.SLDsAddUserGrade("SECURITYDOMAIN", "111001101", 0, 0, 0); //사용자 권한 및 유효기간 설정

int ret = slFile. DSSLDocuGradeEncAddCreator ( "c:/keyFile/GradeInfo.sc",
"GW System",
"none",
"0000002",
"hcjeong",
"SCDS_0000000009;SCDS_0000000001;SECURITYDOMAIN;",
"aaa",
"c:/test/a.doc",
"c:/test/a(복사 되는 등급 암호).doc",
"oriskunk",
"SCDS_0000000009;SCDS_0000000001;SECURITYDOMAIN;",
"c:/keyFile/keyDAC.sc",
0,
1
);
System.out.println( "Return value : " + ret );
}
}

▶ public String getInfo(...) : 暗号化ファイルヘッダー情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダー情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] Stringtypeヘッダータイプ識別子サンプルコードの参照

Return Value

  • 空の文字列 : データがない場合
  • ヘッダー情報文字列 : データがある場合

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

String createTime = sEncFile.getInfo("CREATE_TIME");
String createPath = sEncFile.getInfo("CREATE_PATH");
String writerID = sEncFile.getInfo("WRITER_ID");
String writerName = sEncFile.getInfo("WRITER_NAME");
String writerGroupName = sEncFile.getInfo("WRITER_GROUP_NAME");
String createPlace = sEncFile.getInfo("CREATE_PLACE");
String writerGroupHierarchy = sEncFile.getInfo("WRITER_GROUP_HIERARCHY");
String encType = sEncFile.getInfo("ENC_TYPE");
String serverID = sEncFile.getInfo("SERVER_ID");
String serverName = sEncFile.getInfo("SERVER_NAME");
String documentType = sEncFile.getInfo("DOCUMENT_TYPE");
String documentGrade = sEncFile.getInfo("DOCUMENT_GRADE");
String extraInfo = sEncFile.getInfo("EXTRA_INFO");

sEncFile.clear();
}
}

▶ public String getInfoMAC(...) : 暗号化ファイルヘッダーのMAC情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのMAC情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] intindexMAC インデックス0 ~ getInfoMACCount() - 1
[IN] Stringtypeヘッダータイプ識別子サンプルコードの参照

Return Value

  • 空の文字列 : データがない場合
  • ヘッダー情報文字列 : データがある場合

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

String category = sEncFile.getInfo("MAC_CATEGORY");
String categoryName = sEncFile.getInfo("MAC_CATEGORY_NAME");

sEncFile.clear();
}
}

▶ public String getInfoDAC(...) : 暗号化ファイルヘッダーのDAC情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのDAC情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] intindexDACインデックス0 ~ getInfoDACCount() - 1
[IN] Stringtypeヘッダータイプ識別子サンプルコードの参照

Return Value

  • 空の文字列 : データがない場合
  • ヘッダー情報文字列 : データがある場合

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

String type = sEncFile.getInfoDAC(0, "DAC_TYPE");
String typeID = sEncFile.getInfoDAC(0, "DAC_TYPE_ID");
String typeName = sEncFile.getInfoDAC(0, "DAC_TYPE_NAME");
String read = sEncFile.getInfoDAC(0, "DAC_READ");
String readNumLimit = sEncFile.getInfoDAC(0, "DAC_READ_NUM_LIMIT");
String edit = sEncFile.getInfoDAC(0, "DAC_EDIT");
String decrypt = sEncFile.getInfoDAC(0, "DAC_DECRYPT");
String som = sEncFile.getInfoDAC(0, "DAC_SOM");
String print = sEncFile.getInfoDAC(0, "DAC_PRINT");
String printNumLimit = sEncFile.getInfoDAC(0, "DAC_PRINT_NUM_LIMIT");
String printMarking = sEncFile.getInfoDAC(0, "DAC_PRINT_MARKING");
String expireDate = sEncFile.getInfoDAC(0, "DAC_EXPIRE_DATE");
String autoDestroy = sEncFile.getInfoDAC(0, "DAC_AUTO_DESTROY");
String change = sEncFile.getInfoDAC(0, "DAC_CHANGE_AUTH");
String classID = sEncFile.getInfoDAC(0, "DAC_GRADE_ACCESS_CLASS_ID");
String groupID = sEncFile.getInfoDAC(0, "DAC_GRADE_ACCESS_GROUP_ID");
String userIDInclude = sEncFile.getInfoDAC(0, "DAC_GRADE_ACCESS_USER_ID_INCLUDE");
String userIDExclude = sEncFile.getInfoDAC(0, "DAC_GRADE_ACCESS_USER_ID_EXCLUDE");
String subGroupExclude = sEncFile.getInfoDAC(0, "DAC_SUBGROUP_EXCLUDE");

//String type = sEncFile.getInfoDAC(1, "DAC_TYPE");

sEncFile.clear();
}
}

▶ public String getInfoGRADE(...) : 暗号化ファイルヘッダーのDAC情報(グレード)を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルのGrade (Dac type=2)情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] Stringtypeヘッダータイプ識別子サンプルコードの参照

Return Value

  • 空の文字列 : データがない場合
  • ヘッダー情報文字列 : データがある場合

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

String type = sEncFile.getInfoGrade("DAC_TYPE");
String typeID = sEncFile.getInfoGrade("DAC_TYPE_ID");
String typeName = sEncFile.getInfoGrade("DAC_TYPE_NAME");
String read = sEncFile.getInfoGrade("DAC_READ");
String readNumLimit = sEncFile.getInfoGrade("DAC_READ_NUM_LIMIT");
String edit = sEncFile.getInfoGrade("DAC_EDIT");
String decrypt = sEncFile.getInfoGrade("DAC_DECRYPT");
String som = sEncFile.getInfoGrade("DAC_SOM");
String print = sEncFile.getInfoGrade("DAC_PRINT");
String printNumLimit = sEncFile.getInfoGrade("DAC_PRINT_NUM_LIMIT");
String printMarking = sEncFile.getInfoGrade("DAC_PRINT_MARKING");
String expireDate = sEncFile.getInfoGrade("DAC_EXPIRE_DATE");
String autoDestroy = sEncFile.getInfoGrade("DAC_AUTO_DESTROY");
String change = sEncFile.getInfoGrade("DAC_CHANGE_AUTH");
String classID = sEncFile.getInfoGrade("DAC_GRADE_ACCESS_CLASS_ID");
String groupID = sEncFile.getInfoGrade("DAC_GRADE_ACCESS_GROUP_ID");
String userIDInclude = sEncFile.getInfoGrade("DAC_GRADE_ACCESS_USER_ID_INCLUDE");
String userIDExclude = sEncFile.getInfoGrade("DAC_GRADE_ACCESS_USER_ID_EXCLUDE");
String subGroupExclude = sEncFile.getInfoGrade("DAC_SUBGROUP_EXCLUDE");

//String type = sEncFile.getInfoGrade("DAC_TYPE");

sEncFile.clear();
}
}

▶ public String getInfoRUI(...) : 暗号化ファイルヘッダーのRUI情報を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのRUI情報を取得する関数

Parameter

タイプ変数名説明備考
[IN] intindexRUIインデックス0 ~ getInfoRUICount() - 1
[IN] Stringtypeヘッダータイプ識別子サンプルコードの参照

Return Value

  • 空の文字列 : データがない場合
  • ヘッダー情報文字列 : データがある場合

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

String category = sEncFile.getInfo("MAC_CATEGORY");
String userID = sEncFile.getInfo("RUI_USER_ID");
String userName = sEncFile.getInfo("RUI_USER_NAME");
String groupName = sEncFile.getInfo("RUI_GROUP_NAME");
String expireFlag = sEncFile.getInfo("RUI_EXPIRE_FLAG");
String readNum = sEncFile.getInfo("RUI_READ_NUM");
String printNum = sEncFile.getInfo("RUI_PRINT_NUM");
String recentReadTime = sEncFile.getInfo("RUI_RECENT_READ_TIME");

sEncFile.clear();
}
}

▶ public int getInfoMACCount(...) : 暗号化ファイルヘッダーのMACの数を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのMACの数を取得する関数

Parameter

  • なし

Return Value

  • MACの数

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

int macCount = sEncFile.getInfoMAC();

sEncFile.clear();
}
}

▶ public int getInfoDACCount(...) : 暗号化ファイルヘッダーのDACの数を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのMACの数を取得する関数

Parameter

  • なし

Return Value

  • DACの数

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

int dacCount = sEncFile.getInfoDAC();

sEncFile.clear();
}
}

▶ public int getInfoRUICount(...) : 暗号化ファイルヘッダーのRUIの数を取得する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncFile
  • 説明 : 暗号化ファイルヘッダーのRUIの数を取得する関数

Parameter

  • なし

Return Value

  • RUIの数

備考

  • ※ オブジェクト使用後は、必ず clear() 関数を呼び出す必要があります。(呼び出さない場合、リソースの問題が発生します)

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsEncFile sEncFile = new SLDsEncFile("암호화파일", "키파일"); // 암호화 헤더 키를 사용하지 않는 경우 키 파일은 생략 가능

int ruiCount = sEncFile.getInfoRUI();

sEncFile.clear();
}
}

▶ public String dsGetFullHeaderEx(...) : 暗号化文書のヘッダー情報をJsonデータとして返します。

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 暗号化文書のヘッダー情報をJsonデータとして返します。

Parameter

タイプ変数名説明備考
[IN] StringsrcFileNameソースファイル(暗号化ファイル)パス

Return Value

  • Json 値として返す
    • 失敗した場合
      {
      "errcode": -1
      }
      • 0以外の値が失敗
      • -1 : エラー, -36 : 一般文書
    • 成功時
      • セキュリティ文書のヘッダー情報をJson形式で返す
      • セキュリティ文書ヘッダー構造 : PreHeader, SFI, DAC または MAC, RUI
      • DAC、RUIはJsonArrayです。
      • RUIデータがない場合があります。
      • DAC値とMAC値は同時に存在できません。
      • [DAC]
        {
        "errcode": 0,
        "Custom_Type": 0,
        "Document_ID": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",
        "Server_ID_Hash": "[-67, 41, -119, -28, -95, 1, ....]",
        "DAC": [
        {
        "DAC_PRINT_MARKING": "1",
        "DAC_PRINT_NUM_LIMIT": "",
        "DAC_GRADE_ACCESS_CLASS_ID": "",
        "DAC_TYPE_NAME": "송지훈",
        "DAC_TYPE": "0",
        "DAC_READ_NUM_LIMIT": "",
        "DAC_DECRYPT": "0",
        "DAC_SUBGROUP_EXCLUDE": "",
        "DAC_PRINT": "1",
        "DAC_GRADE_ACCESS_USER_ID_EXCLUDE": "",
        "DAC_AUTO_DESTROY": "0",
        "DAC_READ": "1",
        "DAC_EXPIRE_DATE": "0",
        "DAC_TYPE_ID": "jihoon.song",
        "DAC_EDIT": "1",
        "DAC_SOM": "0",
        "DAC_GRADE_ACCESS_GROUP_ID": "",
        "DAC_GRADE_ACCESS_USER_ID_INCLUDE": "",
        "DAC_CHANGE_AUTH": "0"
        },
        {
        "DAC_PRINT_MARKING": "1",
        "DAC_PRINT_NUM_LIMIT": "",
        "DAC_GRADE_ACCESS_CLASS_ID": "",
        "DAC_TYPE_NAME": "소프트캠프",
        "DAC_TYPE": "1",
        "DAC_READ_NUM_LIMIT": "",
        "DAC_DECRYPT": "0",
        "DAC_SUBGROUP_EXCLUDE": "",
        "DAC_PRINT": "1",
        "DAC_GRADE_ACCESS_USER_ID_EXCLUDE": "",
        "DAC_AUTO_DESTROY": "0",
        "DAC_READ": "1",
        "DAC_EXPIRE_DATE": "0",
        "DAC_TYPE_ID": "SCDP00000",
        "DAC_EDIT": "1",
        "DAC_SOM": "0",
        "DAC_GRADE_ACCESS_GROUP_ID": "",
        "DAC_GRADE_ACCESS_USER_ID_INCLUDE": "",
        "DAC_CHANGE_AUTH": "1"
        }
        ],
        "RUI": [
        {
        "RUI_PRINT_NUM": "",
        "RUI_RECENT_READ_TIME": "2022-07-27 04:39",
        "RUI_USER_NAME": "한상혁",
        "RUI_READ_NUM": "",
        "RUI_USER_ID": "shhan",
        "RUI_GROUP_NAME": "SaaS개발3부",
        "RUI_EXPIRE_FLAG": "0"
        },
        {
        "RUI_PRINT_NUM": "",
        "RUI_RECENT_READ_TIME": "2022-05-10 08:46",
        "RUI_USER_NAME": "송지훈",
        "RUI_READ_NUM": "",
        "RUI_USER_ID": "jihoon.song",
        "RUI_GROUP_NAME": "구축2부",
        "RUI_EXPIRE_FLAG": "0"
        }
        ],
        "Encrypted_Header_Size": 2208,
        "Header_Hash": "[-23, 112, -60, 45, -63, -2, 126, -61....]",
        "Document_Type": 2,
        "Algorithm": "AES",
        "DESC": "SCDSA004\u0000\u0000",
        "Create_Place": 0,
        "SFI": {
        "DOC_BRANCH_UID": "server5040",
        "CREATE_PATH": "Test Server(44)/_test.xlsx",
        "VERIFICATION_DATA": "",
        "SERVER_ID": "SCAM-ED72-262C-433A-0004",
        "WRITER_GROUP_HIERARCHY": "",
        "EXTRA_INFO": "",
        "WRITER_NAME": "Test Server(44)",
        "WRITER_GROUP_NAME": "Test Server(44)",
        "ENC_TYPE": "",
        "DOCUMENT_GRADE": "",
        "WRITER_ID": "Test Server(44)",
        "DOC_PARENT_BRANCH_UID": "server5038",
        "DOC_UID": "",
        "CREATE_TIME": "2023-04-14 11:31",
        "SERVER_NAME": "SCI Server 44",
        "DOCUMENT_TYPE": ""
        },
        "Normal_Doc_Size": 27057
        }
      • [MAC]
        {
        "Custom_Type": 0,
        "errcode": 0,
        "Document_ID": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",
        "Server_ID_Hash": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",
        "RUI": [
        {
        "RUI_PRINT_NUM": "",
        "RUI_RECENT_READ_TIME": "2012-08-14 13:45",
        "RUI_USER_NAME": "신성범",
        "RUI_READ_NUM": "",
        "RUI_USER_ID": "sbshin",
        "RUI_GROUP_NAME": "제품개발부",
        "RUI_EXPIRE_FLAG": "0"
        }
        ],
        "Encrypted_Header_Size": 1296,
        "Header_Hash": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",
        "Document_Type": 0,
        "Algorithm": "AES",
        "DESC": "SCDSA002\u0000\u0000",
        "MAC": {
        "MAC_CATEGORY_NAME": "범주1",
        "MAC_CATEGORY": "0000001"
        },
        "Create_Place": 0,
        "SFI": {
        "DOC_BRANCH_UID": "server5040",
        "CREATE_PATH": "Test Server(44)/_test.xlsx",
        "VERIFICATION_DATA": "",
        "SERVER_ID": "SCAM-ED72-262C-433A-0004",
        "WRITER_GROUP_HIERARCHY": "",
        "EXTRA_INFO": "",
        "WRITER_NAME": "Test Server(44)",
        "WRITER_GROUP_NAME": "Test Server(44)",
        "ENC_TYPE": "",
        "DOCUMENT_GRADE": "",
        "WRITER_ID": "Test Server(44)",
        "DOC_PARENT_BRANCH_UID": "server5038",
        "DOC_UID": "",
        "CREATE_TIME": "2023-04-14 11:31",
        "SERVER_NAME": "SCI Server 44",
        "DOCUMENT_TYPE": ""
        },
        "Normal_Doc_Size": 0
        }

備考

  • ** 宣言時にpropertiesにKeyファイルのパスを設定するか、KeyファイルのパスまたはDS HeaderKeyとCustom Keyを入力する必要があります。
  • SLDsEncDecHeader()
    => properties に DSKEYENCRYPT_KEYFILE の設定が必要です(Document Security ハードコーディングされた暗号化キー露出脆弱性の改善)
  • SLDsEncDecHeader(String KeyFilePath)
  • SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

例示

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

String header = ds.dsGetFullHeaderEx("c:\\temp\\test1.docx");
}
}

▶ public int CheckKeyFile(...) : Keyファイルを検証します。

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : Keyファイルを検証します。

Parameter

タイプ変数名説明備考
[IN] StringkeyFileNameキーファイルのパス使用しない
[IN] intkeyVersionキーファイルのバージョン(option) 0 : 未定義, 3 : バージョン3, 4 : バージョン4使用しない
[IN] StringserverIDサーバーID、入力した場合は比較し、""で入力した場合は無視します。

Return Value

  • 0 : 成功
  • 0以外の値 : エラー値参照
  • 2000 : NULL_PARAMETER
  • 3001 : キーファイルにキー データがありません
  • 3014 : キーファイルのタイプが不明です
  • 3050 : 暗号化方式の違い
  • 3051 : ServerID が異なります
  • 3052 : キー バージョンの違い

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile sFile = new SLDsFile();
sFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

ret = sFile.CheckKeyFile(keyDACPath, 4, "SCAM-ED72-262C-433A-0000");
}
}

▶ public void SLDsEncDecEnvSet(...) : 暗号化復号化時の設定値セット関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : 暗号化および復号化に使用される設定値を設定します。
    • propertiesファイルにある値より優先
    • DACに関連するAPIのみをサポートしています。(SLDsEncFileDAC, SLDsEncFileDACV2, SLDsEncFileDACV2AddCreator, SLDsEncFileDACV3, CreateDecryptFileDAC)
    • この関数を使用する前に SLDsInitDAC(); 関数で初期化する必要があります。
    • SCSL.SLDsFile() の宣言を static にしてはいけません。

Parameter

タイプ変数名説明備考
[IN] Stringkey設定するキー - SLDsFileに定められたキー値
例)
SLDsFile.SLDS_ENC_DEC_POLICY_KEYSERVICEID
SLDsFile.SLDS_ENC_DEC_POLICY_ALGORITHM
SLDsFile.SLDS_ENCDEC_SET_SFI
[IN] intvalueキーに合ったデータ値
- SLDsFile.SLDS_ENC_DEC_POLICY_KEYSERVICEID
=> キーサービスID
- SLDsFile.SLDS_ENC_DEC_POLICY_ALGORITHM
=> ヘッダー設定をJsonに更新する
=> 下記の例を参照してください

Return Value

  • 0 : 成功
  • 0以外の値 : エラー値参照

備考

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
// ARIA 암호화인 경우
SCSL.SLDsFile sFile = new SCSL.SLDsFile();

sFile.SLDsInitDAC();
sFile.SLDsEncDecEnvSet(SLDsFile.SLDS_ENCDEC_KEYSERVICEID, "02"); //키 서비스 아이디가 02 인 경우
sFile.SLDsEncDecEnvSet(SLDsFile.SLDS_ENCDEC_ALGORITHM, SLDsFile.SLDS_ENCDEC_ALGORITHM_ARIA); //ARIA 암호화

sFile.SLDsAddUserDAC("hkmc01", "011100110", 0, 0, 0);
sFile.SLDsAddUserDAC("test01", "011100110", 0, 0, 0);
int ret = sFile.SLDsEncFileDACV2(keyDACPath, "Server", srcFilePath, encFile, 0);


// AES 암호화인 경우
SCSL.SLDsFile sFile = new SCSL.SLDsFile();

sFile.SLDsInitDAC();
sFile.SLDsEncDecEnvSet(SLDsFile.SLDS_ENCDEC_KEYSERVICEID, "31"); //키 서비스 아이디가 31 인 경우
sFile.SLDsEncDecEnvSet(SLDsFile.SLDS_ENCDEC_ALGORITHM, SLDsFile.SLDS_ENCDEC_ALGORITHM_AES); //AES 암호화

sFile.SLDsAddUserDAC("test01", "011100110", 0, 0, 0);
int ret = sFile.SLDsEncFileDACV2(keyDACPath, "Server", srcFilePath, encFile, 0);
}
}

▶ public int DSSetHeaderInfo(...) : セキュリティ文書のヘッダーを更新します。

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : セキュリティ文書のヘッダーを更新します。
    • SLBsInfoType.DSBSIT_SFI、SLBsInfoType.DSBSIT_RUI のみサポートされています。
      • public static final int DSBSIT_SFI=1010;
      • public static final int DSBSIT_RUI=1050;

Parameter

タイプ変数名説明備考
[IN] StringkeyFileNameキーファイルのパス(ない場合はnull)
[IN] StringsrcPathセキュリティ文書
[IN] StringdestPath更新対象の文書(nullの場合はsrcPath文書を更新します)
[IN] StringjsonData更新する jsonData
[IN] StringdataAdd0: データがある場合のみ更新, 1: データがない場合追加
  • jsonData の例
    {
    "1010": {
    "5040": "server5040",
    "5028": "server5028",
    "5038": "server5038"
    }
    }
    // ** 주의 root 는 한 개만 있어야 함

Return Value

  • 0 : 成功
  • 0以外の値 : エラー値参照
  • -95 : 追加/更新するデータがありません
  • -96 : サポートされていないデータタイプ
  • 2000 : NULL_PARAMETER - 3001 : キーファイルにキーデータがありません - 3014 : キーファイルのタイプが不明です
  • 3050 : 暗号化方式の違い~~- 3051 : ServerIDの違い~~ - 3052 : キーのバージョンが異なります

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SCSL.SLDsFile sFile = new SCSL.SLDsFile();

JSONObject mainObj = new JSONObject();
JSONObject parmObj = new JSONObject();

parmObj.put(SLBsDataType.DSBSDT_SFI_DOC_UID, "server5028");
parmObj.put(SLBsDataType.DSBSDT_SFI_DOC_PARENT_BRANCH_UID, "server5038");
parmObj.put(SLBsDataType.DSBSDT_SFI_DOC_BRANCH_UID, "server5040");

mainObj.put(SLBsInfoType.DSBSIT_SFI,parmObj);

String strJsonData = mainObj.toString();
sFile.DSSetHeaderInfo(keyDACPath,encFile,null,strJsonData,0);
}
}

▶ public String dsGetHeaderInfo(...) : 暗号化ファイルのヘッダーから特定のデータを取得します。

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsEncDecHeader
  • 説明 : 該当ファイルの特定データを照会します。

Parameter

タイプ変数名説明備考
[IN] StringdataType照会するデータID
例) DOC_UID
[IN] StringfilePathファイルパス(ファイル名を含む)

Return Value

  • 0: MAC方式暗号化ファイル
  • 1: DAC方式暗号化ファイル
  • 2: グレード方式暗号化ファイル
  • -1 : 異常な暗号化ファイル
  • -36 : 一般ファイル
  • それ以外の値: エラーコードを参照してくださいhttps://wiki.softcamp.co.kr/x/ow1YB

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
// ** 선언 시 Key 파일 경로 또는 DS HeaderKey 와 Custom Key를 넣어 주어야 한다.
// SLDsEncDecHeader(String KeyFilePath)
// SLDsEncDecHeader(String DSHeaderKey, String CustomHeaderKey)

SLDsEncDecHeader SLDSHeader = new SLDsEncDecHeader(keyDACPath);
String strDocUID = SLDSHeader.dsGetHeaderInfo("DOC_UID", encFile);
}
}

▶ public int CreateEncryptFileAIP(...) : 一般文書をAIP文書に変換

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : 一般文書をAIP文書に変換

Parameter

タイプ変数名説明備考
[IN] StringlabelId適用するラベルID
[IN] StringlabelName適用するラベル名
(labelIdがない場合はlabelNameを使用して適用)
[IN] StringsrcFilePath原本一般文書のパス
[IN] StringdstFilePath変換されたAIP文書のパス
[IN] StringextraInfoJSON形式の追加情報入力(下記のextraInfoデータ説明表およびサンプルデータを参照)
[IN] intsetProtectプロテクト設定の有無0: 未使用, 1: 使用
extraInfo データ説明表
KeyRequiredTypeDescription
sourcerequiredjson
namerequiredstring呼び出しシステム名
fromrequiredstring呼び出しシステムURL
userjson
idstringユーザーID
namestringユーザー名
departstringユーザー全体部門 (上位グループ/中位グループ/下位グループ)
dutystringユーザー職名

Return Value

タイプ変数名説明備考
[IN] intcode0 : 成功
0以外の値 : エラー
[IN] Stringmessage"OK" : 成功
その他の値 エラーメッセージ

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

int retVal = slFile.CreateEncryptFileAIP(
"070b7e3a-bb66-47e0-8196-7d030d54190d",
"",
"D:\\opt\\shieldrm\\data\\테스트.pptx",
"D:\\opt\\shieldrm\\data\\AIP.pptx",
"",
0
);

System.out.println("retVal : " + retVal);
}
}

▶ public int CreateDecryptFileAIP(...) : AIP文書を一般文書に変換

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : AIP文書を一般文書に変換

Parameter

タイプ変数名説明備考
[IN] StringsrcFilePath元のAIP文書のパス
[IN] StringdstFilePath解除された一般文書のパス
[IN] StringextraInfoJSON形式の追加情報入力(下記のextraInfoデータ説明表およびサンプルデータを参照)
extraInfo データ説明表
KeyRequiredTypeDescription
sourcerequiredjson
namerequiredstring呼び出しシステム名
fromrequiredstring呼び出しシステムURL
userjson
idstringユーザーID
namestringユーザー名
departstringユーザー全体部門 (上位グループ/中位グループ/下位グループ)
dutystringユーザー職名

Return Value

タイプ変数名説明備考
[IN] intcode0 : 成功
0以外の値 : エラー
[IN] Stringmessage"OK" : 成功
その他の値 エラーメッセージ

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

int retVal = slFile.CreateDecryptFileAIP(
"D:\\opt\\shieldrm\\data\\AIP.pptx",
"D:\\opt\\shieldrm\\data\\AIP_dec.pptx",
""
);

System.out.println("retVal : " + retVal);
}
}

▶ public String GetLabelInfoAIP(...) : AIP文書のラベル情報の取得

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : AIP ドキュメントのラベル情報の取得

Parameter

タイプ変数名説明備考
[IN] StringsrcFilePath元のAIP文書のパス

Return Value

  • Json 値として返す
    • 成功時
      // label 조회 성공
      {
      "code": 0,
      "labelId": "070b7e3a-bb66-47e0-8196-7d030d54190d",
      "labelName": "Protected by SHIELDRM(DEV)"
      }

      // 일반 문서인 경우
      {
      "code": 1,
      "message": "This document is not Protected."
      }
    • 失敗した場合
      {
      "code": 40001,
      "message": "Invalid token"
      }

      {
      "code": 60001,
      "message": "com.microsoft.informationprotection.internal.gen.Error: NoAuthTokenError: Client application failed to provide authentication token for HTTP request., CorrelationId=a2d2f6b1-4265-482b-bc7d-18c88f8284bd, CorrelationId.Description=PolicyProfile"
      }

      {
      "code": 50001,
      "message": "400 : \"{\"code\":40011,\"message\":\"Unable to AzureInfo\",\"detail\":\"OpenidTenant is Empty\"}\""
      }

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

String ret = sFile.GetLabelInfoAIP(srcFilePath);
System.out.println("ret : " + ret);
}
}

▶ public String getCustomProperties(...) : 隠された情報の取得

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : オフィス文書の隠し情報の照会
    • サポートされている拡張子
      • Word : doc, docx, docm, dot, dotx, dotm, rtf, odt
      • Excel : xls, xlsx, xlsm, xlt, xltx, xltm, xlsb, xlam, ods
      • PowerPoint : ppt, pptx, pptm, pot, potx, potm, pps, ppsx, ppsm, odp

Parameter

タイプ変数名説明備考
[IN] StringfilePath対象ファイルパス

Return Value

  • Json 値として返す
    • 成功時
      {
      "code": 0,
      "info": "{\"filePath\":\"D:\\\\opt\\\\shieldrm\\\\data\\\\none.xlsx\",\"properties\":[{\"value\":\"1\",\"key\":\"key1\"},{\"value\":\"22\",\"key\":\"key2\"}]}"
      }
    • 失敗した場合
      // 지원하지 않는 확장자
      {
      "code": -1,
      "message": "Unsupported file type: D:\\opt\\shieldrm\\data\\테스트.txt"
      }

      // AIP 문서일 경우
      {
      "code": -1,
      "message": "Permission is required to open this file."
      }
      {
      "code": -1,
      "message": "Unknown file format."
      }

      // DS 문서일 경우
      {
      "code": -1,
      "message": "zip END header not found"
      }
      {
      "code": -1,
      "message": "Unsupported file format: Unknown"
      }

      // 내부 서비스 에러
      {
      "code": 40101,
      "message": "{\"code\":40107,\"message\":\"No matching license found\",\"detail\":\"License skms_connector_info information is empty.\"}"
      }

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty( "D:\\propertisData\\softcamp.properties" );

String ret = slFile.getCustomProperties("D:\\opt\\shieldrm\\data\\none.xlsx");

JSONObject obj = new JSONObject(ret);
int code = obj.optInt("code");
String info = obj.optString("info");

System.out.println("code : " + code);
System.out.println("info : " + info);
}
}

▶ public String addDocCustomProperties(...) : 隠し情報の追加

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : オフィス文書の隠し情報の追加
    • サポートされている拡張子
      • Word : doc, docx, docm, dot, dotx, dotm, rtf, odt
      • Excel : xls, xlsx, xlsm, xlt, xltx, xltm, xlsb, xlam, ods
      • PowerPoint : ppt, pptx, pptm, pot, potx, potm, pps, ppsx, ppsm, odp

Parameter

タイプ変数名説明備考
[IN] Stringobj保存するファイルおよび隠し情報のリストJSONObject 形式の String
 StringfilePath対象ファイルパス
 JsonArrayinfo保存する隠し情報のリスト
  propertiesKeypropertiesKey隠蔽情報キー既に追加されている場合は値を更新します
  propertyValuepropertyValue隠された情報 value
{
"filePath": "D:\\opt\\shieldrm\\data\\none.xlsx",
"info": [
{
"propertiesKey": "key1",
"propertyValue": "1"
}
]
}

Return Value

  • Json 値として返す
    • 成功時
      {
      "code": 0
      }
    • 失敗した場合
      // 지원하지 않는 확장자
      {
      "code": -1,
      "message": "Unsupported file type: D:\\opt\\shieldrm\\data\\테스트.txt"
      }

      // AIP 문서일 경우
      {
      "code": -1,
      "message": "Permission is required to open this file."
      }
      {
      "code": -1,
      "message": "Unknown file format."
      }

      // DS 문서일 경우
      {
      "code": -1,
      "message": "zip END header not found"
      }
      {
      "code": -1,
      "message": "Unsupported file format: Unknown"
      }

      // 내부 서비스 에러
      {
      "code": 40101,
      "message": "{\"code\":40107,\"message\":\"No matching license found\",\"detail\":\"License skms_connector_info information is empty.\"}"
      }

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty(propertiesPath);

JSONObject obj = new JSONObject();
JSONArray info = new JSONArray();

String filePath = "D:\\opt\\shieldrm\\data\\none.xlsx";

JSONObject item = new JSONObject();
item.put("propertiesKey", "key1");
item.put("propertyValue", "1");
info.put(item);

obj.put("filePath", filePath);
obj.put("info", info);

String ret = slFile.addDocCustomProperties(obj.toString());
System.out.println("ret : " + ret);
}
}

▶ public String removeCustomSetProperties(...) : 隠された情報の削除

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLDsFile
  • 説明 : オフィス文書の隠し情報の削除
    • サポートされている拡張子
      • Word : doc, docx, docm, dot, dotx, dotm, rtf, odt
      • Excel : xls, xlsx, xlsm, xlt, xltx, xltm, xlsb, xlam, ods
      • PowerPoint : ppt, pptx, pptm, pot, potx, potm, pps, ppsx, ppsm, odp

Parameter

タイプ変数名説明備考
[IN] Stringobj削除するファイルおよび隠し情報のリストJSONObject 形式の String
 StringfilePath対象ファイルパス
 JsonArrayinfo削除する隠し情報のリスト
  propertiesKeypropertiesKey隠蔽情報キー
  propertyValuepropertyValue隠された情報 value
{
"filePath": "D:\\opt\\shieldrm\\data\\none.xlsx",
"info": [
{
"propertiesKey": "key1",
"propertyValue": "1"
}
]
}

Return Value

  • Json 値として返す
    • 成功時
      {
      "code": 0
      }
    • 失敗した場合
      // 지원하지 않는 확장자
      {
      "code": -1,
      "message": "Unsupported file type: D:\\opt\\shieldrm\\data\\테스트.txt"
      }

      // AIP 문서일 경우
      {
      "code": -1,
      "message": "Permission is required to open this file."
      }
      {
      "code": -1,
      "message": "Unknown file format."
      }

      // DS 문서일 경우
      {
      "code": -1,
      "message": "zip END header not found"
      }
      {
      "code": -1,
      "message": "Unsupported file format: Unknown"
      }

      // 내부 서비스 에러
      {
      "code": 40101,
      "message": "{\"code\":40107,\"message\":\"No matching license found\",\"detail\":\"License skms_connector_info information is empty.\"}"
      }

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SLDsFile slFile = new SLDsFile();
slFile.SettingPathForProperty(propertiesPath);

JSONObject obj = new JSONObject();
JSONArray info = new JSONArray();

String filePath = "D:\\opt\\shieldrm\\data\\none.xlsx";

JSONObject item = new JSONObject();
item.put("propertiesKey", "key1");
item.put("propertyValue", "1");
info.put(item);

obj.put("filePath", filePath);
obj.put("info", info);

String ret = slFile.removeCustomSetProperties(obj.toString());
System.out.println("ret : " + ret);
}
}

▶ public boolean isSOMFile(...) : SOMファイルかどうかを判断する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLBsUtil
  • 説明 : パラメータとして渡されたファイルがSOMファイルであるかどうかを確認します。

Parameter

タイプ変数名説明備考
[IN] StringfilePathファイルパス(ファイル名を含む)

Return Value

  • false : SOMファイルではありません
  • true : SOMファイル

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SCSL.SLBsUtil util = new SCSL.SLBsUtil();
boolean isSomFile = util.isSOMFile("C:/somfile.exe");
}
}

▶ public int getSOMFileType(...) : SOMファイルタイプを確認する関数

  • 制御方式 : ALL
  • パッケージ名 : SCSL
  • クラス名 : SLBsUtil
  • 説明 : SOMファイルタイプを確認する関数

Parameter

タイプ変数名説明備考
[IN] StringfilePathファイルパス(ファイル名を含む)

Return Value

  • -1 : SOMファイルではありません
  • 0 : Normal SOM File
  • 1 : OLE SOM File
  • 2 : Simple SOM File

備考

  • なし

例示

import SCSL.*;
public final class MainTest
{
public static void main(String[] args)
{
SCSL.SLBsUtil util = new SCSL.SLBsUtil();
int fileType = util.getSOMFileType("C:/somfile.exe");
}
}

▶ public void DSSOMSetProperty(...) : dssom.properties ファイルパス設定関数

  • 制御方式 : SOM
  • パッケージ名 : DSSOMSL
  • クラス名 : SLSomFIleLinker
  • 説明 : dssom.properties ファイルのパス設定関数

Parameter

タイプ変数名説明備考
[IN] StringszPropertydssom.properties のパス

Return Value

  • なし

備考

  • なし

例示

import SCSL.*;
public final class MainTest {
public static void main(String[] args) {
SLSomFileLinker sSomFileLinker = new SLSomFileLinker();
sSomFileLinker.DSSOMSetProperty("D:\\AMS\\data\\ams\\dssom.properties");
}
}

▶ public void DSSOMSetRights(...) : ユーザー認証パスワードおよび権限設定関数

  • 制御方式 : SOM
  • パッケージ名 : DSSOMSL
  • クラス名 : SLSomFIleLinker
  • 説明 : ユーザー認証パスワードおよび権限設定関数

Parameter

タイプ変数名説明備考
[IN] StringszAuthPwdパスワード文字列SOMファイルをオープンする際には、パスワードを入力する必要があります。
パスワードは英字と数字のみ可能です。
[IN] intnSave別名で保存する権限SOMファイルはexe形式であり、オープン時にはそれぞれのファイル拡張子に応じてオープンされるため、保存ではなく名前を付けて保存です。
1 : 権限あり
0 : 権限がありません
[IN] intnPrint印刷権限印刷権限を設定します。
1 : 権限あり
0 : 権限がありません
[IN] intnAccNum読み回数0 : 無限大
1 : 1回
N : N回
[IN] intnPrintNum印刷回数0 : 無限大
1 : 1回
N : N回
[IN] intnDestroy破棄権限1 : 廃棄されました
0 : 廃棄されていない
[IN] intnExpireDate有効期限0 : 無限大
1 : 明日まで
N : N日までの有効期限
[IN] intnOleSupportOLESOM Viewer サポート0: OLESOM Viewer はサポートされていません
1: OLESOM Viewer サポート
[IN] intnImgViewer画像ビューアのサポート0: 画像ビューアはサポートされていません
1: 画像ビューアのサポート
[IN] intnTxtViewerText Viewerのサポート0: テキストビューアはサポートされていません
1: テキストビューアのサポート
[IN] intnUIMode2
[IN] booleanbUnicodetrue
[IN] StringszMacAddress同じPCでのみMACアドレスがオープン可能です。MACアドレス (null 値の場合はチェックしない)
形式 : 00-00-00-00-00-00

Return Value

  • なし

備考

  • なし

例示

import SCSL.*;
public final class MainTest {
public static void main(String[] args) {
SLSomFileLinker sSomFileLinker = new SLSomFileLinker();
sSomFileLinker.DSSOMSetProperty("D:\\AMS\\data\\ams\\dssom.properties");

sSomFileLinker.DSSOMSetRights(
"1234", // 패스워드
1, // 다른 이름 저장 권한
1, // 프린트 권한
2, // 읽기 횟수
0, // 프린트 횟수
0, // 파기 권한
1, // 유효기간
1, // OLESOM Viewer 지원
0, // Image Viewer 지원
0, // Text Viewer 지원
2,
true,
"10-FF-E0-7F-06-C6" // MAC address
);
}
}

▶ public int DSSOMCreateFile(...) : SOMファイルを生成するAPI

  • 制御方式 : SOM
  • パッケージ名 : DSSOMSL
  • クラス名 : SLSomFIleLinker
  • 説明 : SOMファイルを生成するAPI

Parameter

タイプ変数名説明備考
[IN] StringszSrcFileName元のファイルの絶対パスファイル名を含む
해당文書が som ファイルの場合、ファイルをコピーした後、成功を返します。
[IN] StringszOutFileName生成される外部転送セキュリティファイルの絶対パスファイル名を含む
- ファイル拡張子はexeと表記する必要があります。
[IN] StringszKeyFileNameキー ファイルの絶対パス使用しない

Return Value

  • 0: 成功
  • それ以外の値: 失敗

備考

  • 技術本部と協議の上セキュリティ文書SOMファイルの生成はサポートされていません

例示

import SCSL.*;
public final class MainTest {
public static void main(String[] args) {
SLSomFileLinker sSomFileLinker = new SLSomFileLinker();
sSomFileLinker.DSSOMSetProperty("D:\\AMS\\data\\ams\\dssom.properties");

sSomFileLinker.DSSOMSetRights(
"1234", // 패스워드
1, // 다른 이름 저장 권한
1, // 프린트 권한
2, // 읽기 횟수
0, // 프린트 횟수
0, // 파기 권한
1, // 유효기간
1, // OLESOM Viewer 지원
0, // Image Viewer 지원
0, // Text Viewer 지원
2,
true,
"10-FF-E0-7F-06-C6" // MAC address
);

int retVal = sSomFileLinker.DSSOMCreateFile(
"D:\\opt\\shieldrm\\data\\test\\test.pptx",
"D:\\opt\\shieldrm\\data\\test\\test.exe",
""
);

System.out.println(retVal);
}
}