com.nifty.cloud.ncs.encrypt

## クラス EncryptionUtils

- java.lang.Object
- - com.nifty.cloud.ncs.encrypt.EncryptionUtils

-     public class EncryptionUtils
      extends java.lang.Object

  暗号化に使用するユーティリティクラスです。

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `EncryptionUtils()`

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `static EncryptionInstruction` | `buildInstructionFromInstructionFile(NcsObject instructionFile, EncryptionKeyMaterials materials, java.security.Provider cryptoProvider)` InstructionFileからEncryptionInstructionオブジェクトを生成します。
    `static EncryptionInstruction` | `buildInstructionFromMetadata(NcsObject object, EncryptionKeyMaterials materials, java.security.Provider cryptoProvider)` メタデータからInstructionオブジェクトを生成します。
    `static long` | `calculateCryptoContentLength(javax.crypto.Cipher symmetricCipher, NcsObject object)` 暗号化後のデータサイズを算出します。
    `static byte[]` | `computeInstructionFileSHA256(EncryptionInstruction instruction)` InstructionファイルのSHA256ハッシュ値を計算します オブジェクト名
    `static java.lang.String` | `convertInstructionToJSONString(EncryptionInstruction instruction)` EncryptionInstructionをJSON形式の文字列に変換します。
    `static NcsObject` | `createInstructionRequestObject(java.lang.String bucketName, java.lang.String objectName, EncryptionInstruction instruction)` Instructionファイルの情報を含むNcsObjcetを生成します。
    `static javax.crypto.Cipher` | `createSymmetricCipher(javax.crypto.SecretKey symmetricKey, int encryptMode, java.security.Provider cryptoProvider, byte[] initVector)` 対称鍵と初期化ベクトル、モードを指定して、対称鍵暗号を作成します。
    `static NcsObject` | `decryptObjectUsingInstruction(NcsObject object, EncryptionInstruction instruction)` Instructionファイルを使用してオブジェクトデータを復号化します。
    `static EncryptionInstruction` | `generateInstruction(EncryptionKeyMaterials materials, java.security.Provider cryptoProvider)` EncryptionInstructionオブジェクトを生成します。
    `static javax.crypto.SecretKey` | `generateOneTimeUseSymmetricKey()` 暗号化に使用するワンタイム・キーを生成します。
    `static long[]` | `getAdjustedCryptoRange(long[] range)` 暗号化のために調整されたrangeを返却します。
    `static java.io.InputStream` | `getEncryptedInputStream(java.io.InputStream input, javax.crypto.Cipher symmetricCipher)` 指定した暗号で暗号化されたオブジェクトデータのストリームを取得します。
    `static byte[]` | `getEncryptedSymmetricKey(javax.crypto.SecretKey toBeEncrypted, EncryptionKeyMaterials materials, java.security.Provider cryptoProvider)` 秘密鍵により暗号化された対称鍵のバイト列を取得します。
    `static NcsObject` | `getRangeAdjustedObject(NcsObject object, long[] range)` 暗号化のためにオブジェクトデータのrangeを調整したNcsObjectを返却します。
    `static boolean` | `isEncryptionInfoInInstructionFile(NcsObject instructionFile)` 暗号化情報がInstructionファイルに含まれるかどうかの判定を行います。
    `static boolean` | `isEncryptionInfoInMetadata(NcsObject object)` 暗号化情報がメタデータに含まれるかどうかの判定を行います。
    `static void` | `updateMetadataWithEncryptionInstruction(NcsObject object, EncryptionInstruction instruction)` Instructionファイルの内容をメタデータに反映します。

    - ### クラスから継承されたメソッド java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### EncryptionUtils

          public EncryptionUtils()

  - ### メソッドの詳細

    - #### generateInstruction

          public static EncryptionInstruction generateInstruction(EncryptionKeyMaterials materials,
                                                                  java.security.Provider cryptoProvider)

      EncryptionInstructionオブジェクトを生成します。
      パラメータ:
        `materials` - 暗号鍵情報
        `cryptoProvider` - 暗号化プロバイダー
      戻り値:
        暗号化情報

    - #### buildInstructionFromInstructionFile

          public static EncryptionInstruction buildInstructionFromInstructionFile(NcsObject instructionFile,
                                                                                  EncryptionKeyMaterials materials,
                                                                                  java.security.Provider cryptoProvider)

      InstructionFileからEncryptionInstructionオブジェクトを生成します。
      パラメータ:
        `instructionFile` - 暗号化情報
        `materials` - 暗号鍵情報
        `cryptoProvider` - 暗号化プロバイダー
      戻り値:
        暗号化情報

    - #### buildInstructionFromMetadata

          public static EncryptionInstruction buildInstructionFromMetadata(NcsObject object,
                                                                           EncryptionKeyMaterials materials,
                                                                           java.security.Provider cryptoProvider)

      メタデータからInstructionオブジェクトを生成します。
      パラメータ:
        `object` - メタデータを含むNcsObject
        `materials` - 暗号鍵情報
        `cryptoProvider` - 暗号化プロバイダー
      戻り値:
        暗号化情報

    - #### decryptObjectUsingInstruction

          public static NcsObject decryptObjectUsingInstruction(NcsObject object,
                                                                EncryptionInstruction instruction)

      Instructionファイルを使用してオブジェクトデータを復号化します。
      パラメータ:
        `object` - 複合化するNcsObject
        `instruction` - 暗号化情報
      戻り値:
        複合化したNcsObject

    - #### isEncryptionInfoInInstructionFile

          public static boolean isEncryptionInfoInInstructionFile(NcsObject instructionFile)

      暗号化情報がInstructionファイルに含まれるかどうかの判定を行います。
      パラメータ:
        `instructionFile` - Instructionファイル
      戻り値:
        暗号化情報がInstructionファイルに含まれるかどうかのフラグ

    - #### isEncryptionInfoInMetadata

          public static boolean isEncryptionInfoInMetadata(NcsObject object)

      暗号化情報がメタデータに含まれるかどうかの判定を行います。
      パラメータ:
        `object` - 対象のNcsObjcet
      戻り値:
        暗号化情報がメタデータに含まれるかどうかのフラグ

    - #### getAdjustedCryptoRange

          public static long[] getAdjustedCryptoRange(long[] range)

      暗号化のために調整されたrangeを返却します。
      パラメータ:
        `range` - オブジェクトの取得範囲
      戻り値:
        調整後のrange

    - #### getRangeAdjustedObject

          public static NcsObject getRangeAdjustedObject(NcsObject object,
                                                         long[] range)

      暗号化のためにオブジェクトデータのrangeを調整したNcsObjectを返却します。
      パラメータ:
        `object` - 範囲調整の対象となるNcsObject
        `range` - 取得範囲
      戻り値:
        rangeを調整したNcsObject

    - #### generateOneTimeUseSymmetricKey

          public static javax.crypto.SecretKey generateOneTimeUseSymmetricKey()

      暗号化に使用するワンタイム・キーを生成します。
      戻り値:
        ワンタイム・キー

    - #### createSymmetricCipher

          public static javax.crypto.Cipher createSymmetricCipher(javax.crypto.SecretKey symmetricKey,
                                                                  int encryptMode,
                                                                  java.security.Provider cryptoProvider,
                                                                  byte[] initVector)

      対称鍵と初期化ベクトル、モードを指定して、対称鍵暗号を作成します。 特定の暗号化プロバイダは、暗号化の実装を提供します。 暗号化プロバイダがnullの場合、デフォルトJCE暗号化プロバイダが使用されます。
      パラメータ:
        `symmetricKey` - 対称鍵
        `encryptMode` - 暗号化モード
        `cryptoProvider` - 暗号化プロバイダー
        `initVector` - 初期化ベクトル
      戻り値:
        暗号

    - #### getEncryptedSymmetricKey

          public static byte[] getEncryptedSymmetricKey(javax.crypto.SecretKey toBeEncrypted,
                                                        EncryptionKeyMaterials materials,
                                                        java.security.Provider cryptoProvider)

      秘密鍵により暗号化された対称鍵のバイト列を取得します。
      パラメータ:
        `toBeEncrypted` - 暗号化の対象となる対称鍵
        `materials` - 暗号鍵情報
        `cryptoProvider` - 暗号化プロバイダー
      戻り値:
        暗号化された対称鍵のバイト列

    - #### getEncryptedInputStream

          public static java.io.InputStream getEncryptedInputStream(java.io.InputStream input,
                                                                    javax.crypto.Cipher symmetricCipher)

      指定した暗号で暗号化されたオブジェクトデータのストリームを取得します。
      パラメータ:
        `input` - 暗号化の対象となる入力ストリーム
        `symmetricCipher` - 対称暗号
      戻り値:
        暗号化ストリーム

    - #### updateMetadataWithEncryptionInstruction

          public static void updateMetadataWithEncryptionInstruction(NcsObject object,
                                                                     EncryptionInstruction instruction)

      Instructionファイルの内容をメタデータに反映します。
      パラメータ:
        `object` - 対象となるNcsObject
        `instruction` - 暗号化情報

    - #### calculateCryptoContentLength

          public static long calculateCryptoContentLength(javax.crypto.Cipher symmetricCipher,
                                                          NcsObject object)

      暗号化後のデータサイズを算出します。
      パラメータ:
        `symmetricCipher` - 対称暗号
        `object` - 対象となるNcsObject
      戻り値:
        暗号化後のContent-Length

    - #### createInstructionRequestObject

          public static NcsObject createInstructionRequestObject(java.lang.String bucketName,
                                                                 java.lang.String objectName,
                                                                 EncryptionInstruction instruction)

      Instructionファイルの情報を含むNcsObjcetを生成します。
      パラメータ:
        `bucketName` - バケット名
        `objectName` - オブジェクト名
        `instruction` - 暗号化情報
      戻り値:
        暗号化情報を含むNcsObject

    - #### computeInstructionFileSHA256

          public static byte[] computeInstructionFileSHA256(EncryptionInstruction instruction)

      InstructionファイルのSHA256ハッシュ値を計算します オブジェクト名
      パラメータ:
        `instruction` - 暗号化情報
      戻り値:
        InstructionファイルのSHA256ハッシュ値

    - #### convertInstructionToJSONString

          public static java.lang.String convertInstructionToJSONString(EncryptionInstruction instruction)

      EncryptionInstructionをJSON形式の文字列に変換します。
      パラメータ:
        `instruction` - 暗号化情報
      戻り値:
        暗号化情報をJSON形式に変換した文字列