KMFCryptoOperation - 범위 지정, 전역
KMFCryptoOperation 클래스는 KMF 암호화 모듈 또는 CLE 암호화 모듈을 사용하여 암호화 작업을 수행하기 위한 메서드를 제공합니다.
이 API를 사용하려면 KMF(Key Management Framework) 암호화 모듈 또는 CLE(Column Level Encryption) 암호화 모듈을 미리 작성하고 구성해야 합니다. 모듈에는 하나 이상의 암호화 사양이 있어야 하며 연결된 키를 만들거나 가져와야 합니다. 자세한 내용은 암호화 모듈을 참조하세요.
이 API를 사용하여 생성된 KMFCryptoOperation 개체는 대칭 암호화와 같은 암호화 작업을 나타냅니다. KMFCryptoOperations() 메서드를 사용하여 이 개체를 만들고, 작성기 메서드를 사용하여 개체의 속성을 설정하고, doOperation() 메서드를 사용하여 작업을 실행합니다.
범위 지정 애플리케이션과 전역 애플리케이션 모두에서 이 API를 사용할 수 있습니다. 이 API를 호출할 때는 항상 sn_kmf_ns 네임스페이스를 지정해야 합니다.
KMFCryptoOperation - KMFCryptoOperation(문자열 cryptoModuleName, 문자열 operationName)
지정된 모듈 및 작업에 대한 KMFCryptoOperation 개체를 만듭니다.
이 API는 작성기 메서드를 활용합니다. 작성기 메서드는 KMFCryptoOperation 개체의 속성을 업데이트합니다(예: 데이터의 원하는 출력 형식 변경). 모든 작성기 메서드가 모든 작업에 유효한 것은 아닙니다. 각 작업에 사용할 수 있는 빌더 메서드는 아래 매개변수 테이블에 설명되어 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 크립토모듈이름 | 문자열 | 사용할 KMF(Key Management Framework) 암호화 모듈 또는 CLE(Column Level Encryption) 암호화 모듈의 이름입니다. 이 메서드를 호출하기 전에 모듈을 만들어야 합니다. 자세한 내용은 암호화 모듈 개요를 참조하세요. |
| 운영 이름 | 문자열 | 수행할 작업의 이름입니다. 유효한 값(대/소문자 구분 안 함):
|
이 예제에서는 모듈 global.sj_cm에 대한 KMFCryptoOperation 개체를 인스턴스화하여 대칭 암호화 작업을 수행합니다. 전역 애플리케이션과 범위가 지정된 애플리케이션 모두에 대한 네임스페이스를 포함해야 합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION");
이 예제에서는 기본 출력 형식 및 출력 형식을 업데이트하는 옵션을 지정하는 방법을 보여 줍니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION")
.withOutputType("STRING").withOutputFormat("FORMATTED");
var cipherText=op.doOperation("hi");
이 예에서는 EC-IES(Integrated Encryption Scheme)를 사용하여 비대칭 암호화 작업을 수행하는 방법을 보여줍니다. 긴 값(예 signature: )은 가독성을 위해 잘리고 타원으로 대체되었습니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_ENCRYPTION")
.withInputFormat("KMFNONE")
.withOutputType("PAYLOAD");
var cipherText = op.doOperation("hi");
/*
cipherText contains an object similar to this JSON: {
"signature": "pkg…",
"ephemeral_key": "BDi…",
"ciphertext": "afFS…"
}
*/
이 예에서는 EC-IES를 사용하여 비대칭 암호 해독 작업을 수행하는 방법을 보여줍니다.
var op = new
sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_DECRYPTION")
.withAdditionalInput({
"signature": "pkg… ",
"ephemeral_key": "BDi…"
})
.withOutputFormat("KMFNONE");
var clearText = op.doOperation("afFS…");
KMFCryptoOperation - doOperation(객체 데이터)
제공된 데이터에 대해 현재 KMFCryptoOperation 개체로 정의된 암호화 작업을 수행하고 결과를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 데이터 | 객체 | withSysId() 빌더 메서드가 이전에 연결된 KMFCryptoOperation 오브젝트에서 호출된 경우를 제외하고 필수입니다. 암호화 작업을 수행할 입력 데이터입니다. |
| 유형 | 설명 |
|---|---|
운영 유형에 따라 다릅니다.
|
연결된 KMFCryptoOperation 개체에 지정된 작업을 수행한 후의 데이터 결과입니다. |
이 예제에서는 doOperation() 을 사용하여 MAC을 만듭니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","MAC_GENERATION");
var data = "aGk=";
var mac = op.doOperation(data);
KMFCryptoOperation - withAdditionalInput(추가 입력 객체)
암호화 작업을 수행하는 데 필요한 추가 입력을 설정합니다.
예를 들어 MAC(메시지 인증 코드) 확인 중에 이 메서드를 사용하여 생성된 MAC 태그를 전달합니다. 마찬가지로 서명 확인 중에 서명을 전달하는 데 사용합니다. EC-IES(Elliptic Curve Integrated Encryption Scheme)와 같은 통합 암호화를 사용하여 비대칭 작업을 수행할 때 이 메서드를 사용하여 추가 데이터인 KMFEncryptionPayload 개체를 전달할 수도 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 추가 입력 | 문자열 또는 객체 | 선택 사항(EC-IES를 사용할 때 비대칭 암호 해독 작업 제외) KMFCryptoOperation 개체에 지정된 암호화 작업을 수행하는 데 필요한 추가 입력 데이터입니다. 지원되는 문자열 형식:
KMFEncryptionPayload 개체 형식: |
| additionalInput.ciphertext | 문자열(Base64) | 비대칭 암호 해독에는 필수이며 다른 모든 작업에는 선택 사항입니다. 유효한 값은 다음과 같습니다.
출력 유형이 로 설정된 경우 Asymmetric Encryption 작업에서 사용할 수 있습니다 payload. |
| additionalInput.derivation_secret | 문자열(Base64) | 선택 사항으로, EC-IES를 사용한 비대칭 암호화 또는 비대칭 암호 해독 작업에만 사용됩니다. 통합 체계의 키 파생 프로세스 중에 사용할 공유 비밀입니다. |
| additionalInput.ephemeral_key | 문자열(Base64) | EC-IES를 사용할 때 비대칭 암호 해독 작업에 필요하며 다른 모든 작업에는 선택 사항입니다. 통합 체계의 기본 합의 프로세스 중에 사용할 임시 공개 키입니다. 출력 유형이 로 설정된 경우 Asymmetric Encryption 작업에서 사용할 수 있습니다 payload. |
| additionalInput.ephemeral_key_format | 문자열 | 선택 사항으로, EC-IES를 사용한 비대칭 암호화 또는 비대칭 암호 해독 작업에만 사용됩니다. 매개 변수가 나타내는 공개 키의 형식을 재정의합니다 ephemeral_key . 유효한 값은 다음과 같습니다.
|
| additionalInput.signature | 문자열(Base64) | EC-IES를 사용한 비대칭 암호 해독 작업에 필요하며 다른 모든 작업에는 선택 사항입니다. 통합 체계의 서명 검증 프로세스를 사용하여 유효성을 검사할 암호문의 서명입니다. 출력 유형이 로 설정된 경우 Asymmetric Encryption 작업에서 사용할 수 있습니다 payload. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withAdditionalInput() 을 사용하여 KMFCryptoOperation 개체에 문자열 기반 서명을 추가합니다.
var signature = "John Doe";
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SIGNATURE_VERIFICATION")
.withAdditionalInput(signature);
var value = GlideStringUtil.base64Encode("Text to encode"); // Default input format is KMFBase64
var result = op.doOperation(String(value));
이 예제에서는 withAdditionalInput() 을 사용하여 KMFCryptoOperation 개체에 서명 및 임시 키를 추가합니다. doOperation() 호출 및 payload description의 값과 같은 긴 값은 가독성을 위해 잘리고 타원으로 대체되었습니다.
var payload = new sn_kmf_ns.KMFEncryptionPayload();
payload.signature = "pkg...";
payload.ephemeral_key = " BDi...";
payload.ephemeral_key_format = "x962";
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_DECRYPTION")
.withAdditionalInput(payload)
.doOperation("afFS...";
KMFCryptoOperation - withAlgorithm(문자열 알고리즘)
래핑할 키 자료와 연결된 알고리즘을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 알고리즘 | 문자열 | 사용할 알고리즘입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withAlgorithm() 을 사용하여 EC에 사용되는 암호화 알고리즘을 변경합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_WRAPPING").withAlgorithm("EC");
var value = GlideStringUtil.base64Encode("Sample key"); // Default input format is KMFBase64
var result = op.doOperation(String(value));
KMFCryptoOperation - withInputFormat(String inputFormat)
암호화 작업을 수행할 입력 데이터의 데이터 형식을 설정합니다. 데이터를 디코딩할 때 지정된 형식을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 입력 형식 | 문자열 | 입력 데이터의 형식입니다. 유효한 값은 다음과 같습니다.
기본값: KMFCryptoOperation 개체가 인스턴스화될 때 지정된 작업에 의해 결정되는 값입니다. 자세한 내용은 KMFCryptoOperation - KMFCryptoOperation(문자열 cryptoModuleName, 문자열 operationName) 문서를 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withInputFormat() 을 사용하여 인코딩이 없도록 입력 형식을 변경합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION").withInputFormat("KMFNone");
var result = op.doOperation("Text with no encoding"); // Pass in unencrypted String
KMFCryptoOperation - withOutputFormat(문자열 outputFormat)
암호화 작업에서 반환되는 출력 데이터의 데이터 형식을 설정합니다. 데이터를 인코딩할 때 지정된 형식을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 출력 형식 | 문자열 | 출력 데이터의 형식입니다. 유효한 값은 다음과 같습니다.
이 메서드가 호출되지 않은 경우의 기본값: KMFCryptoOperation 개체가 인스턴스화될 때 지정된 작업에 의해 결정되는 값입니다. 자세한 내용은 KMFCryptoOperation - KMFCryptoOperation(문자열 cryptoModuleName, 문자열 operationName) 문서를 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withOutputFormat() 을 사용하여 암호 해독의 출력 형식을 KMFNone(기본값은 KMFBase64)으로 설정합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_DECRYPTION").withOutputFormat("KMFNone");
var clear_data = op.doOperation(<FORMATTED_data>); // Pass in default of FORMATTED data
KMFCryptoOperation - withOutputType(String outputType)
암호화 작업이 수행된 후 반환되는 출력 데이터의 데이터 형식을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 출력 유형 | 문자열 | 출력 데이터의 유형입니다. 모든 출력 형식을 모든 작업에 적용할 수 있는 것은 아닙니다. 지원되지 않는 형식의 경우 예외가 throw됩니다. 유효한 값(대/소문자 구분 안 함):
주: Payload의 출력을 지정할 때 doOperation() 메서드의 출력은 KMFEncryptionPayload 객체입니다. 이 객체의 구조에 대한 자세한 내용은 withAdditionalInput()을 참조하십시오. 기본값: 작업에 의해 결정되는 값으로, KMFCryptoOperation 개체가 인스턴스화될 때 지정됩니다. 자세한 내용은 KMFCryptoOperation - KMFCryptoOperation(문자열 cryptoModuleName, 문자열 operationName) 문서를 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withOutputType() 을 사용하여 MAC_VERIFICATION의 출력 유형을 Boolean으로 설정합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","MAC_VERIFICATION")
.withOutputType("Boolean").withAdditionalInput(<MAC>);
var value = GlideStringUtil.base64Encode("Text to sign"); // Default input type is KMFBase64
var result = op.doOperation(String(value));
KMFCryptoOperation - withSysId(String sysId)
KMFCryptoOperation 개체에서 래핑할 키의 sys_id 설정합니다. 키의 대칭 및 비대칭 래핑에 적용할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 래핑할 키의 Sys_id입니다. 모듈 키 [sys_kmf_module_key] 테이블에 있습니다. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 withSysId() 를 사용하여 래핑할 키를 정의합니다.
var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_WRAPPING").withSysId("0d06ce525b231010f86d1b341d81c777");
var wrappedKey = operation.doOperation(); // No need to pass data when using withSysId()