# 메서드

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()
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wepin.io/widget-integration/ios-swift-sdk/pin-pad-library/methods.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
