> For the complete documentation index, see [llms.txt](https://docs.wepin.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wepin.io/widget-integration/ios-swift-sdk/pin-pad-library/methods.md).

# 메서드

Wepin PIN Pad Library 초기화 이후 사용할 수 있습니다.

## &#x20;generateRegistrationPINBlock

```swift
await wepinPin!.generateRegistrationPINBlock()
```

사용자의  지갑생성 및 회원가입을 위해 필요한 PIN을 입력 받을 수 있는 핀 패드 화면을 띄우고 입력받은 PIN을 처리하여 PIN Block을 생성합니다.

### **Parameters**

* `viewController` \<UIViewController> *optional*\
  위젯(WebView)을 모달 형태로 표시할 ViewController입니다. 해당 ViewController는 위젯이 올바른 화면 위에 표시될 수 있도록 표시 컨텍스트를 제공합니다.

{% hint style="warning" %}
Note&#x20;

**WepinPin v.1.1.0** 부터선택적으로 `UIViewController`를 파라미터로 전달할 수 있습니다.\
전달된 경우, 해당 컨트롤러를 사용해 WebView가 표시됩니다.\
전달하지 않으면, SDK는 메인 스레드에서 최상위 `UIViewController`를 자동으로 찾아 사용합니다.

단, 모달 표시 중이거나 커스텀 컨테이너 사용 시 등 일부 상황에서는 최상위 ViewController를 자동으로 감지하지 못할 수 있습니다. 가능하다면 명시적으로 `UIViewController`를 전달하는 것을 권장합니다.
{% endhint %}

### **Return value**

* `<RegistrationPinBlock>`
  * `uvd` \<EncUVD>

    * `b64Data` \<String> \
      b64SKey의  원본키로 암호화된 데이터
    * `b64SKey` \<String> \
      b64Data 를 생성할때  사용하는 키
    * `seqNum` \<Int> **optional** \
      **P**IN Block 사용시 순서대로 사용되었는지 확인하기 위한 값

  * `hint` \<EncPinHint>

    * `data` \<string> \
      &#x20;PIN 힌트를 암호화한 값
    * `length` \<string>\
      PIN 힌트의 길이
    * `version` \<number>&#x20;

    &#x20;      PIN 힌트의 버전

### Example

```swift
do{
  let registrationPinBlock = try await wepinPin!.generateRegistrationPINBlock()
  if let registerPinBlock = registrationPinBlock {
  // You need to make a Wepin RESTful API request using the received data.  
  }
}catch(let error){
  print(error)
}

```

## generateAuthPINBlock

```swift
await wepinPin!.generateAuthPINBlock(3)
```

사용자 인증에필요한 PIN을 입력 받을 수 있는 핀 패드 화면을 띄우고 입력받은 PIN을 처리하여 PIN Block을 생성합니다.&#x20;

사용자가 2FA(OTP)를 활성화한 경우에는, OTP 코드를 입력받을 수 있는 화면도 띄우고 처리합니다.

### **Parameters**

* `count` \<Int> **optional**&#x20;

  생성하려는 PIN Block의 갯수. 기본값은 `1` 입니다.
* `viewController`\<UIViewController> *optional*\
  위젯(WebView)을 모달 형태로 표시할 ViewController입니다. 해당 ViewController는 위젯이 올바른 화면 위에 표시될 수 있도록 표시 컨텍스트를 제공합니다.

{% hint style="warning" %}
Note&#x20;

**WepinPin v.1.1.0** 부터선택적으로 `UIViewController`를 파라미터로 전달할 수 있습니다.\
전달된 경우, 해당 컨트롤러를 사용해 WebView가 표시됩니다.\
전달하지 않으면, SDK는 메인 스레드에서 최상위 `UIViewController`를 자동으로 찾아 사용합니다.

단, 모달 표시 중이거나 커스텀 컨테이너 사용 시 등 일부 상황에서는 최상위 ViewController를 자동으로 감지하지 못할 수 있습니다. 가능하다면 명시적으로 `UIViewController`를 전달하는 것을 권장합니다.
{% endhint %}

### **Return value**

* `<AuthPinBlock>`
  * `uvdList` List\<EncUVD> \
    암호화된 PIN Block의 리스트
    * \<EncUVD>
      * `b64Data` \<String> \
        b64SKey의  원본키로 암호화된 데이터
      * `b64SKey` \<String> \
        b64Data 를 생성할때  사용하는 키
      * `seqNum` \<Int> **optional** \
        **P**IN Block 사용시 순서대로 사용되었는지 확인하기 위한 값.\
        Multi Tx 요청시, 반드시 받은 PIN Block의 순서대로 사용해야 합니다.(1,2,3...)
  * `otp` \<String> **optional** \
    사용자가 2FA(OTP) 를 활성화한 경우, 입력받은 OTP 코드

### Example

```swift
do{
  let authPinBlock = try await wepinPin!.generateAuthPINBlock(3)
  if let authPinBlock = authPinBlock {
    // You need to make a Wepin RESTful API request using the received data.  
  }
}catch(let error){
  print(error)
}
```

## generateChangePINBlock

```swift
await wepinPin!.generateChangePINBlock()
```

사용자 PIN 변경을 위해 PIN을 입력 받을 수 있는 핀 패드 화면을 띄우고 입력받은 PIN을 처리하여 PIN Block을 생성합니다.&#x20;

사용자가 2FA(OTP)를 활성화한 경우에는, OTP 코드를 입력받을 수 있는 화면도 띄우고 처리합니다.

### **Parameters**

* `viewController` \<UIViewController> *optional*\
  위젯(WebView)을 모달 형태로 표시할 ViewController입니다. 해당 ViewController는 위젯이 올바른 화면 위에 표시될 수 있도록 표시 컨텍스트를 제공합니다.

{% hint style="warning" %}
Note&#x20;

**WepinPin v.1.1.0** 부터선택적으로 `UIViewController`를 파라미터로 전달할 수 있습니다.\
전달된 경우, 해당 컨트롤러를 사용해 WebView가 표시됩니다.\
전달하지 않으면, SDK는 메인 스레드에서 최상위 `UIViewController`를 자동으로 찾아 사용합니다.

단, 모달 표시 중이거나 커스텀 컨테이너 사용 시 등 일부 상황에서는 최상위 ViewController를 자동으로 감지하지 못할 수 있습니다. 가능하다면 명시적으로 `UIViewController`를 전달하는 것을 권장합니다.
{% endhint %}

### **Return Value**

* `<ChangePinBlock>`
  * `uvd` \<EncUVD>
    * `b64Data` \<String> \
      b64SKey의  원본키로 암호화된 데이터
    * `b64SKey` \<String> \
      b64Data 를 생성할때  사용하는 키
    * `seqNum` \<Int> **optional** \
      **P**IN Block 사용시 순서대로 사용되었는지 확인하기 위한 값
  * `newUVD` \<EncUVD>
    * `b64Data` \<String> \
      b64SKey의  원본키로 암호화된 데이터
    * `b64SKey` \<String> \
      b64Data 를 생성할때  사용하는 키
    * `seqNum` \<Int> **optional** \
      **P**IN Block 사용시 순서대로 사용되었는지 확인하기 위한 값.
  * `hint` \<EncPinHint>
    * `data` \<String> \
      &#x20;PIN 힌트를 암호화한 값
    * `length` \<String>\
      PIN 힌트의 길이
    * `version` \<Int> \
      PIN 힌트의 버전
  * `otp` \<String> **optional** \
    사용자가 2FA(OTP) 를 활성화한 경우, 입력받은 OTP 코드

### Example

```swift
do{
  let changepPinBlock = try await wepinPin!.generateChangePINBlock()
  if let changepPinBlock = changePinBlock {
    // You need to make a Wepin RESTful API request using the received data.  
  }
}catch(let error){
  print(error)
}
```

## generateAuthOTP

```javascript
await wepinPin!.generateAuthOTPCode()
```

사용자로부터 OTP 코드를  입력받을 수 있는 화면을 띄우고 처리합니다.

### **Parameters**

* `viewController` \<UIViewController> *optional*\
  위젯(WebView)을 모달 형태로 표시할 ViewController입니다. 해당 ViewController는 위젯이 올바른 화면 위에 표시될 수 있도록 표시 컨텍스트를 제공합니다.

{% hint style="warning" %}
Note&#x20;

**WepinPin v.1.1.0** 부터선택적으로 `UIViewController`를 파라미터로 전달할 수 있습니다.\
전달된 경우, 해당 컨트롤러를 사용해 WebView가 표시됩니다.\
전달하지 않으면, SDK는 메인 스레드에서 최상위 `UIViewController`를 자동으로 찾아 사용합니다.

단, 모달 표시 중이거나 커스텀 컨테이너 사용 시 등 일부 상황에서는 최상위 ViewController를 자동으로 감지하지 못할 수 있습니다. 가능하다면 명시적으로 `UIViewController`를 전달하는 것을 권장합니다.
{% endhint %}

### **Return Value**

* `<AuthOTP>`
  * `code` \<String>\
    입력받은 OTP 코드

### Example

```swift
do{
  let authOTPCode = try await wepinPin!.generateAuthOTPCode()
  if let authOTPCode = authOTPCode {
    // You need to make a Wepin RESTful API request using the received data.  
  }
}catch(let error){
  print(error)
}
```

## finalize

```javascript
wepinPin!.finalize()
```

Wepin PIN Pad Library 사용을 종료합니다.

### **Parameters**

* `<Void>`

### **Return Value**

* `<Void>`

### Example

```swift
wepinPin!.finalize()
```
