IssacSE

Objective-C

@interface IssacSE : NSObject

Swift

class IssacSE : NSObject

대칭키 암복호화 관련 기능

  • 랜덤값(의사난수배열)을 생성한다.

    Declaration

    Objective-C

    + (nullable NSMutableData *)makeRandom:(int)randomLen;

    Swift

    class func makeRandom(_ randomLen: Int32) -> NSMutableData?

    Parameters

    randomLen

    생성할 랜덤값의 크기

  • 비밀키를 생성한다.

    Declaration

    Objective-C

    + (nullable NSMutableData *)genSymmKey:(SymmAlg)symmAlg;

    Swift

    class func genSymmKey(_ symmAlg: SymmAlg) -> NSMutableData?

    Parameters

    symmAlg

    생성된 비밀키가 사용될 대칭키 알고리즘

  • 입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#12 v1.0 Appendix. B)

    Declaration

    Objective-C

    + (nullable NSMutableData *)deriveKeyPkcs12:(int)keyLen
                                            pin:(nonnull NSString *)pin
                                derivedKeyUsage:(DerivedKeyUsage)derivedKeyUsage
                                           salt:(nonnull NSData *)salt
                                      iteration:(int)iteration
                                        hashAlg:(HashAlg)hashAlg;

    Swift

    class func deriveKeyPkcs12(_ keyLen: Int32, pin: String, derivedKeyUsage: DerivedKeyUsage, salt: Data, iteration: Int32, hashAlg: HashAlg) -> NSMutableData?

    Parameters

    keyLen

    생성할 키의 길이 (bytes)

    pin

    키 생성에 사용할 PIN

    derivedKeyUsage

    키의 용도

    salt

    salt (표준 참고)

    iteration

    iterations (표준 참고)

    hashAlg

    키 유도 과정에 사용되는 해시 알고리즘

  • 입력된 값들을 기반으로 키를 생성(유도)한다. (PKCS#5 - PBKDF2)

    Declaration

    Objective-C

    + (nullable NSMutableData *)deriveKeyPbkdf2:(int)keyLen
                                            pin:(nonnull NSString *)pin
                                           salt:(nonnull NSData *)salt
                                      iteration:(int)iteration
                                        hashAlg:(HashAlg)hashAlg;

    Swift

    class func deriveKeyPbkdf2(_ keyLen: Int32, pin: String, salt: Data, iteration: Int32, hashAlg: HashAlg) -> NSMutableData?

    Parameters

    keyLen

    생성할 키의 길이 (bytes)

    pin

    키 생성에 사용할 PIN

    salt

    salt (표준 참고)

    iteration

    iterations (표준 참고)

    hashAlg

    키 유도 과정에 사용되는 해시 알고리즘

  • 비밀키 암복호화에 필요한 값들을 설정한다.

    Declaration

    Objective-C

    - (BOOL)setKey:(nonnull NSData *)key
                iv:(nullable NSData *)iv
            opMode:(OpMode)opMode
           symmAlg:(SymmAlg)symmAlg;

    Swift

    func setKey(_ key: Data, iv: Data?, opMode: OpMode, symmAlg: SymmAlg) -> Bool

    Parameters

    key

    비밀키

    iv

    CBC, CFB 등에 필요한 초기값. 입력하지 않으면 0x00,… 으로 처리된다.

    opMode

    블록 암호 알고리즘의 운영 모드

    symmAlg

    블록 암호 알고리즘

  • 입력된 원문을 암호화한다.

    Declaration

    Objective-C

    - (nullable NSData *)encrypt:(nonnull NSData *)plaintext
                         padType:(PadType)padType;

    Swift

    func encrypt(_ plaintext: Data, padType: PadType) -> Data?

    Parameters

    plaintext

    암호화 될 원문 메시지

    padType

    패딩 타입

  • 입력된 암호문을 복호화한다.

    Declaration

    Objective-C

    - (nullable NSMutableData *)decrypt:(nonnull NSData *)ciphertext
                                padType:(PadType)padType;

    Swift

    func decrypt(_ ciphertext: Data, padType: PadType) -> NSMutableData?

    Parameters

    ciphertext

    암호화 된 메시지

    padType

    패딩 타입

  • 입력한 원문을 CCM/GCM 방식으로 암호화한다.

    Declaration

    Objective-C

    - (nullable NSData *)encrypt:(nonnull NSData *)plaintext
                        authData:(nonnull NSData *)authData
                              iv:(nonnull NSData *)iv
                          tagLen:(int)tagLen;

    Swift

    func encrypt(_ plaintext: Data, authData: Data, iv: Data, tagLen: Int32) -> Data?

    Parameters

    plaintext

    암호화 대상 원문

    authData

    CCM/GCM의 추가 데이터

    iv

    GCM의 iv, CCM의 nonce [CCM : 7 ≤ nonceLen ≤ 13, GCM : 12 ≤ ivLen]

    tagLen

    메시지 인증 태그의 길이 [CCM : 4 ≤ tagLen ≤ 16, GCM : tagLen ≤ 16]

  • 입력한 암호문을 CCM/GCM 방식으로 복호화한다.

    Declaration

    Objective-C

    - (nullable NSMutableData *)decrypt:(nonnull NSData *)ciphertext
                               authData:(nonnull NSData *)authData
                                     iv:(nonnull NSData *)iv
                                 tagLen:(int)tagLen;

    Swift

    func decrypt(_ ciphertext: Data, authData: Data, iv: Data, tagLen: Int32) -> NSMutableData?

    Parameters

    ciphertext

    암호문

    authData

    CCM/GCM의 추가 데이터

    iv

    GCM의 iv, CCM의 nonce [CCM : 7 ≤ ivLen ≤ 13, GCM : 12 ≤ ivLen]

    tagLen

    메시지 인증 태그의 길이 [CCM : 4 ≤ tagLen ≤ 16, GCM : tagLen ≤ 16]