[Gmail API] Javaで送信元エイリアスのS/MIME構成を取得する

Gmail API v1（Java）を使用して、
送信元エイリアスのS/MIME構成を取得する方法
についてご紹介します。

**S/MIMEとは**
電子証明書を用いたメールのなりすましや改ざん、盗聴などを防ぐための仕組みです。
セキュリティを高めるために、メールの暗号化と電子署名を行います。

このAPIは、無料版のアカウントでは使用できず、利用するには
有料版の「Google Workplace」でのアカウントが必要になるそうです。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Gmail API] JavaでGmail APIを使う](https://qiita.com/doran/items/a078e966bfd93c4b19c2)
を参照ください。
:::

本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」（自身）と指定してください。
「me」は認証されたユーザーを示します。

|No||目次|
|---|---|---|
|1||[S/MIME構成一覧を取得](#1-smime構成一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[S/MIME構成を取得](#2-smime構成を取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|


## 1. S/MIME構成一覧を取得
送信元エイリアスのS/MIME構成の一覧を取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
GmailScopes.GMAIL_SETTINGS_SHARING
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行
```java
public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Settings settings = users.settings();
    
    Gmail.Users.Settings.SendAs sendAs = settings.sendAs();
    Gmail.Users.Settings.SendAs.SmimeInfo smimeInfo = sendAs.smimeInfo();
    Gmail.Users.Settings.SendAs.SmimeInfo.List list = smimeInfo.list("メールアドレス", "送信者メールアドレス");
    
    ListSmimeInfoResponse res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/sendAs/{送信者メールアドレス}/smimeInfo
が実行されます。

#### 1.2.2. クエリパラメータ
クエリパラメータはありません。

### 1.3. レスポンスの内容

#### ListSmimeInfoResponse
|メソッド|戻り値|説明|
|---|---|---|
|getSmimeInfo|List\<[SmimeInfo](#smimeinfo)\>|S/MIMEメール設定リスト|

#### SmimeInfo
|メソッド|戻り値|説明|
|---|---|---|
|getId|String|SmimeInfoのID|
|getIssuerCn|String|S/MIME証明書の発行元の共通名|
|getIsDefault|Boolean|この設定がユーザーの送信元アドレスのデフォルトであるか|
|getExpiration|Long|証明書の有効期限が切れた時期（エポックミリ秒）|
|getEncryptedKeyPassword|String|暗号化された鍵のパスワード|
|getPem|String|PEM 形式のX509で連結された証明書文字列|
|getPkcs12|String|1つの秘密鍵/公開鍵ペアと証明書チェーンを含むPKCS12形式|

## 2. S/MIME構成を取得
指定した送信元エイリアスのS/MIME構成を取得します。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
GmailScopes.GMAIL_SETTINGS_SHARING
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行

```java
public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Settings settings = users.settings();
    
    Gmail.Users.Settings.SendAs sendAs = settings.sendAs();
    Gmail.Users.Settings.SendAs.SmimeInfo smimeInfo = sendAs.smimeInfo();
    Gmail.Users.Settings.SendAs.SmimeInfo.Get get = smimeInfo.get("メールアドレス", "送信者メールアドレス","SmimeInfoのID");
    
    SmimeInfo res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/sendAs/{送信者メールアドレス}/smimeInfo/{SmimeInfoのID}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

### 2.3. レスポンスの内容

#### SmimeInfo

[1.3. レスポンスの内容(SmimeInfo)](#smimeinfo)の内容と同じです。

<br>
<br>
おしまい。。