public abstract class CipherSpi extends Object
Cipher
クラスのサービス・プロバイダ・インタフェース (SPI)を定義します。特定の暗号アルゴリズムの実装を提供する各暗号化サービス・プロバイダは、このクラスのすべての抽象メソッドを実装する必要があります。
このCipherSpi
クラスのインスタンスをカプセル化するCipher
のインスタンスを生成するには、アプリケーションはCipher
エンジン・クラスのgetInstance
ファクトリ・メソッドの1つを呼び出して、要求された変換を指定します。アプリケーションは、必要に応じて、プロバイダの名前を指定することもできます。
変換は、指定された入力に対して実行し、何らかの出力を生成する操作(または操作のセット)を説明する文字列です。変換には、暗号化アルゴリズム(DES など)の名前が必ず含まれます。それにフィードバック・モードおよびパディング方式が続く場合もあります。
変換は、次の書式で記述されます。
後者の場合、モードおよびパディング方式には、プロバイダ固有のデフォルト値が使用されます。たとえば、次は有効な変換です。
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
プロバイダは、algorithm/mode/paddingの各組み合わせに対して個別のクラスを提供するか、あるいはalgorithm、algorithm/mode、またはalgorithm//padding (二重スラッシュに注意)に対応するサブ変換を表すより汎用のクラスを提供することができます。汎用のクラスを提供する場合、要求されたモードやパディングは、プロバイダのCipherSpi
のサブクラスのengineSetMode
およびengineSetPadding
メソッドを呼び出す、Cipher
のgetInstance
メソッドにより自動的に設定されます。
プロバイダのマスター・クラス内のCipher
プロパティの形式は、次のどれかになります。
// provider's subclass of "CipherSpi" implements "algName" with
// pluggable mode and padding
Cipher.
algName
// provider's subclass of "CipherSpi" implements "algName" in the
// specified "mode", with pluggable padding
Cipher.
algName/mode
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "padding", with pluggable mode
Cipher.
algName//padding
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "mode" and "padding"
Cipher.
algName/mode/padding
たとえば、プロバイダは、DES/ECB/PKCS5Padding、DES/CBC/PKCS5Padding、DES/CFB/PKCS5Padding、さらにはDES/OFB/PKCS5Paddingをそれぞれ実装するCipherSpi
のサブクラスを提供できます。このプロバイダは、マスター・クラス内に次のCipher
プロパティを保持します。
Cipher.
DES/ECB/PKCS5Padding
Cipher.
DES/CBC/PKCS5Padding
Cipher.
DES/CFB/PKCS5Padding
Cipher.
DES/OFB/PKCS5Padding
別のプロバイダは、上の各モードのためのクラス(つまり、ECB、CBC、CFB、OFBのためにそれぞれ1つのクラス)、PKCS5Paddingのための1つのクラス、およびCipherSpi
からサブクラス化された汎用DESクラスを実装できます。このプロバイダは、マスター・クラス内に次のCipher
プロパティを保持します。
Cipher.
DES
「algorithm」形式の変換の場合、Cipher
エンジン・クラスのgetInstance
ファクトリ・メソッドは、次のルールに従ってプロバイダのCipherSpi
の実装をインスタンス化します。
CipherSpi
のサブクラスを登録済みかどうかをチェックする。
登録済みの場合、このクラスをインスタンス化して、このモードおよびパディング方式のデフォルト値(プロバイダにより提供)を使用可能にします。
未登録の場合、例外NoSuchAlgorithmException
をスローします。
「algorithm/mode/padding」形式の変換の場合、Cipher
エンジン・クラスのgetInstance
ファクトリ・メソッドは、次のルールに従ってプロバイダのCipherSpi
の実装をインスタンス化します。
CipherSpi
のサブクラスを登録済みかどうかをチェックする。
登録済みの場合、このクラスをインスタンス化します。
未登録の場合、次のステップに進みます。
CipherSpi
のサブクラスを登録済みかどうかをチェックする。
登録済みの場合、インスタンス化してから、新規インスタンスに対しengineSetPadding(padding)
を呼び出します。
未登録の場合、次のステップに進みます。
CipherSpi
のサブクラスを登録済みかどうかをチェックする。
登録済みの場合、インスタンス化してから、新規インスタンスに対しengineSetMode(mode)
を呼び出します。
未登録の場合、次のステップに進みます。
CipherSpi
のサブクラスを登録済みかどうかをチェックする。
回答が「はい」の場合、これをインスタンス化してから、新規インスタンスに対しengineSetMode(mode)
およびengineSetPadding(padding)
を呼び出します。
未登録の場合、例外NoSuchAlgorithmException
をスローします。
KeyGenerator
, SecretKey
コンストラクタと説明 |
---|
CipherSpi() |
修飾子と型 | メソッドと説明 |
---|---|
protected abstract byte[] |
engineDoFinal(byte[] input, int inputOffset, int inputLen)
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
protected abstract int |
engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
protected int |
engineDoFinal(ByteBuffer input, ByteBuffer output)
単一の部分から成る操作でデータを暗号化または復号化するか、複数の部分から成る操作を終了します。
|
protected abstract int |
engineGetBlockSize()
ブロック・サイズを返します(バイト単位)。
|
protected abstract byte[] |
engineGetIV()
新しいバッファの初期化ベクトル(IV)を返します。
|
protected int |
engineGetKeySize(Key key)
指定された鍵オブジェクトの鍵サイズをビット単位で返します。
|
protected abstract int |
engineGetOutputSize(int inputLen)
入力の長さ
inputLen (バイト単位)を指定して、次のupdate またはdoFinal 操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。 |
protected abstract AlgorithmParameters |
engineGetParameters()
この暗号で使用されるパラメータを返します。
|
protected abstract void |
engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
|
protected abstract void |
engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
鍵、アルゴリズム・パラメータのセット、および乱数発生の元を使用してこの暗号を初期化します。
|
protected abstract void |
engineInit(int opmode, Key key, SecureRandom random)
鍵と乱数発生の元を使用してこの暗号を初期化します。
|
protected abstract void |
engineSetMode(String mode)
この暗号のモードを設定します。
|
protected abstract void |
engineSetPadding(String padding)
この暗号のパディング・メカニズムを設定します。
|
protected Key |
engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
前にラップされた鍵をラップ解除します。
|
protected abstract byte[] |
engineUpdate(byte[] input, int inputOffset, int inputLen)
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
protected abstract int |
engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
protected int |
engineUpdate(ByteBuffer input, ByteBuffer output)
複数の部分から成る暗号化または復号化操作(この暗号の初期化方法により異なります)を継続し、別のデータ部分を処理します。
|
protected void |
engineUpdateAAD(byte[] src, int offset, int len)
提供されたバッファのサブセットを使用して、Additional Authentication Data (AAD)のマルチパート更新を続行します。
|
protected void |
engineUpdateAAD(ByteBuffer src)
AAD (Additional Authentication Data)のマルチパート更新を継続します。
|
protected byte[] |
engineWrap(Key key)
鍵をラップします。
|
protected abstract void engineSetMode(String mode) throws NoSuchAlgorithmException
mode
- 暗号化モードNoSuchAlgorithmException
- 要求された暗号化モードが存在しない場合protected abstract void engineSetPadding(String padding) throws NoSuchPaddingException
padding
- パディング・メカニズムNoSuchPaddingException
- 要求されたパディング・メカニズムが存在しない場合protected abstract int engineGetBlockSize()
protected abstract int engineGetOutputSize(int inputLen)
inputLen
(バイト単位)を指定して、次のupdate
またはdoFinal
操作の結果を保持するために必要な出力バッファの長さをバイト数で返します。
この呼出しでは、以前のupdate
呼出しの処理されていない(バッファにある)データを考慮し、パディングおよびAEADタグ付けを行います。
次のupdate
またはdoFinal
呼出しの実際の出力長は、このメソッドが返す長さより小さいことがあります。
inputLen
- 入力長(バイト単位)protected abstract byte[] engineGetIV()
これは、IVがユーザー指定のパス・フレーズから派生するパスワードベースの暗号化または復号化のコンテキストにおいて役立ちます。
protected abstract AlgorithmParameters engineGetParameters()
返されるパラメータは、この暗号を初期化するのに使用したものと同じ場合があります。または、返されるパラメータには、この暗号にアルゴリズム・パラメータが必要で、かつアルゴリズム・パラメータで初期化されなかった場合に、基本となる暗号実装で使用されるデフォルトとランダムのパラメータ値の組み合わせが含まれることもあります。
protected abstract void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException
この暗号は、opmode
の値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。
この暗号が、指定されたkey
から派生できないアルゴリズム・パラメータを必要とする場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidKeyException
を発生させます。生成されたパラメータは、engineGetParameters
またはengineGetIV
(パラメータがIVの場合)を使用して取り出すことができます。
この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、random
から取得します。
Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。
opmode
- この暗号の操作モード(ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
、またはUNWRAP_MODE
のどれか)key
- 暗号化鍵random
- 乱数発生の元InvalidKeyException
- 指定された鍵がこの暗号の初期化に不適切な場合、または指定された鍵から判定することができないアルゴリズム・パラメータを必要とする場合。UnsupportedOperationException
- opmode
がWRAP_MODE
の場合、またはUNWRAP_MODE
が暗号によって実装されていない場合。protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
この暗号は、opmode
の値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。
この暗号がアルゴリズム・パラメータを必要とし、params
がnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterException
を発生させます。生成されたパラメータは、engineGetParameters
またはengineGetIV
(パラメータがIVの場合)を使用して取り出すことができます。
この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、random
から取得します。
Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。
opmode
- この暗号の操作モード(ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
、またはUNWRAP_MODE
のどれか)key
- 暗号化鍵params
- アルゴリズム・パラメータrandom
- 乱数発生の元InvalidKeyException
- 指定された鍵がこの暗号の初期化に不適切な場合InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、またはこの暗号がアルゴリズム・パラメータを必要とし、params
がnullの場合。UnsupportedOperationException
- opmode
がWRAP_MODE
の場合、またはUNWRAP_MODE
が暗号によって実装されていない場合。protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
この暗号は、opmode
の値に従って、暗号化、復号化、鍵ラッピング、または鍵ラッピング解除の4つの操作の1つに合わせて初期化されます。
この暗号がアルゴリズム・パラメータを必要とし、params
がnullの場合、基本となる暗号実装は、暗号化または鍵ラッピング用に初期化されていれば、プロバイダ固有のデフォルトまたはランダム値を使用して必要なパラメータ自体を生成し、復号化または鍵ラッピング解除用に初期化されていれば、InvalidAlgorithmParameterException
を発生させます。生成されたパラメータは、engineGetParameters
またはengineGetIV
(パラメータがIVの場合)を使用して取り出すことができます。
この暗号が入力パラメータから派生できないアルゴリズム・パラメータを必要とし、適切なプロバイダ固有のデフォルト値がない場合は、必ず初期化に失敗します。
この暗号(基本となるフィード・バックまたはパディング方式を含む)が乱数バイトを必要とする場合(パラメータ生成のためなど)は、random
から取得します。
Cipherオブジェクトを初期化すると、それまでに獲得した状態がすべて失われることに留意してください。つまり、Cipherを初期化することは、そのCipherの新規インスタンスを作成して初期化することと等価です。
opmode
- この暗号の操作モード(ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
、またはUNWRAP_MODE
のどれか)key
- 暗号化鍵params
- アルゴリズム・パラメータrandom
- 乱数発生の元InvalidKeyException
- 指定された鍵がこの暗号の初期化に不適切な場合InvalidAlgorithmParameterException
- 指定されたアルゴリズム・パラメータがこの暗号に不適切な場合、またはこの暗号がアルゴリズム・パラメータを必要とし、params
がnullの場合。UnsupportedOperationException
- opmode
がWRAP_MODE
の場合、またはUNWRAP_MODE
が暗号によって実装されていない場合。protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
inputOffset
から始まる、input
バッファ内の最初のinputLen
バイトが処理され、結果が新しいバッファに格納されます。
input
- 入力バッファinputOffset
- 入力を開始するinput
内のオフセットinputLen
- 入力長protected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
inputOffset
から始まる、input
バッファ内の最初のinputLen
バイトが処理され、結果はoutput
バッファのoutputOffset
から始まる位置に格納されます。
output
バッファが小さすぎて結果を保持できない場合は、ShortBufferException
がスローされます。
input
- 入力バッファinputOffset
- 入力を開始するinput
内のオフセットinputLen
- 入力長output
- 結果を格納するバッファoutputOffset
- 結果が格納されるoutput
内のオフセットoutput
に格納されたバイト数ShortBufferException
- 指定された出力バッファが小さすぎて結果を保持できない場合protected int engineUpdate(ByteBuffer input, ByteBuffer output) throws ShortBufferException
input.position()
から始まるすべてのinput.remaining()
バイトが処理されます。結果はoutputバッファに格納されます。終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。出力バッファの位置はnだけ増加します。nは、このメソッドが返す値です。出力バッファのリミットは変更されません。
output.remaining()
バイトが結果を保持するのに不十分な場合は、ShortBufferException
がスローされます。
ByteBufferをバイト配列よりも効率的に処理できる場合、このメソッドをサブクラスでオーバーライドすることを検討してください。
input
- 入力ByteBufferoutput
- 出力ByteBufferoutput
に格納されたバイト数ShortBufferException
- 出力バッファ内に残っている容量が不足している場合NullPointerException
- いずれかのパラメータがnull
の場合protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
inputOffset
から始まるinput
バッファ内の最初のinputLen
バイト、および前のupdate
操作でバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。結果は新しいバッファに格納されます。
終了時に、このメソッドはこの暗号オブジェクトを前にengineInit
を呼び出して初期化されたときの状態にリセットします。つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(engineInit
の呼出しで指定された操作モードにより異なります)。
注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。
input
- 入力バッファinputOffset
- 入力を開始するinput
内のオフセットinputLen
- 入力長IllegalBlockSizeException
- この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。BadPaddingException
- この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException
- この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。protected abstract int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
inputOffset
から始まるinput
バッファ内の最初のinputLen
バイト、および前のupdate
操作でバッファに入れられた可能性のあるすべての入力バイトが処理され、パディング(要求された場合)が適用されます。GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。結果は、outputOffset
から始まるoutput
バッファに格納されます。
output
バッファが小さすぎて結果を保持できない場合は、ShortBufferException
がスローされます。
終了時に、このメソッドはこの暗号オブジェクトを前にengineInit
を呼び出して初期化されたときの状態にリセットします。つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(engineInit
の呼出しで指定された操作モードにより異なります)。
注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。
input
- 入力バッファinputOffset
- 入力を開始するinput
内のオフセットinputLen
- 入力長output
- 結果を格納するバッファoutputOffset
- 結果が格納されるoutput
内のオフセットoutput
に格納されたバイト数IllegalBlockSizeException
- この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。ShortBufferException
- 指定された出力バッファが小さすぎて結果を保持できない場合BadPaddingException
- この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException
- この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。protected int engineDoFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
input.position()
から始まるすべてのinput.remaining()
バイトが処理されます。GCM/CCMなどのAEADモードが使用されている場合は、認証タグが暗号化の際に追加されるか、復号化の際に検証されます。結果はoutputバッファに格納されます。終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。出力バッファの位置はnだけ増加します。nは、このメソッドが返す値です。出力バッファのリミットは変更されません。
output.remaining()
バイトが結果を保持するのに不十分な場合は、ShortBufferException
がスローされます。
終了時に、このメソッドはこの暗号オブジェクトを前にengineInit
を呼び出して初期化されたときの状態にリセットします。つまり、オブジェクトはリセットされて、さらにデータを暗号化または復号化するために使用できます(engineInit
の呼出しで指定された操作モードにより異なります)。
注: 例外がスローされた場合、この暗号オブジェクトはリセットしないと再度使用できない場合があります。
ByteBufferをバイト配列よりも効率的に処理できる場合、このメソッドをサブクラスでオーバーライドすることを検討してください。
input
- 入力ByteBufferoutput
- 出力ByteBufferoutput
に格納されたバイト数IllegalBlockSizeException
- この暗号がブロック暗号であり、パディングが要求されておらず(暗号化モードの場合のみ)、この暗号で処理されたデータの入力長の合計がブロック・サイズの倍数でない場合。または、この暗号化アルゴリズムが、指定された入力データを処理できない場合。ShortBufferException
- 出力バッファ内に残っている容量が不足している場合BadPaddingException
- この暗号が復号化モードであり、パディング(またはパディング解除)が要求されたが、復号化されたデータが適切なパディング・バイトでバインドされない場合。AEADBadTagException
- この暗号がAEADモード(GCM/CCMなど)で復号化し、受け取った認証タグが計算された値と一致しない場合。NullPointerException
- いずれかのパラメータがnull
の場合protected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。下位互換性のために、抽象メソッドにはできません。鍵をラップするために、プロバイダによってオーバーライドされる場合があります。そのようなオーバーライドを行うと、指定された鍵をラップできない場合に、IllegalBlockSizeExceptionまたはInvalidKeyException (指定された環境下)がスローされます。このメソッドがオーバーライドされない場合は、常にUnsupportedOperationExceptionがスローされます。
key
- ラップされる鍵。IllegalBlockSizeException
- この暗号がブロック暗号であり、パディングが要求されておらず、ラップされる鍵のエンコーディングの長さがブロック・サイズの倍数でない場合。InvalidKeyException
- この暗号を使用して鍵をラップすることが不可能か安全でない場合(ハードウェア保護された鍵がソフトウェアだけの暗号に渡される場合など)。UnsupportedOperationException
- このメソッドがサポートされていない場合。protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。下位互換性のために、抽象メソッドにはできません。前にラップされた鍵をラップ解除するために、プロバイダによってオーバーライドされる場合があります。そのようなオーバーライドを行うと、指定された、ラップされている鍵をラップ解除できない場合に、InvalidKeyExceptionがスローされます。このメソッドがオーバーライドされない場合は、常にUnsupportedOperationExceptionがスローされます。
wrappedKey
- ラップを解除される鍵。wrappedKeyAlgorithm
- ラップされた鍵に関連したアルゴリズム。wrappedKeyType
- ラップされた鍵のタイプ。これはSECRET_KEY
、PRIVATE_KEY
、またはPUBLIC_KEY
のいずれかです。NoSuchAlgorithmException
- インストールされているどのプロバイダもwrappedKeyAlgorithm
のwrappedKeyType
タイプの鍵を作成できない場合。InvalidKeyException
- wrappedKey
がwrappedKeyAlgorithm
のwrappedKeyType
タイプのラップされた鍵を表さない場合。UnsupportedOperationException
- このメソッドがサポートされていない場合。protected int engineGetKeySize(Key key) throws InvalidKeyException
この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。プロバイダによってオーバーライドされない場合は、UnsupportedOperationException
をスローします。
key
- 鍵オブジェクト。InvalidKeyException
- key
が無効である場合protected void engineUpdateAAD(byte[] src, int offset, int len)
暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。この暗号がGCMまたはCCMモードで操作されている場合は、(update
およびdoFinal
メソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。
src
- AADを格納するバッファoffset
- AAD入力を開始するsrc
内のオフセットlen
- AADバイトの数IllegalStateException
- この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdate
メソッドが呼び出されている場合UnsupportedOperationException
- このメソッドが実装によってオーバーライドされていない場合protected void engineUpdateAAD(ByteBuffer src)
暗号がAEAD (GCM/CCM)などのモードで操作されると、このメソッドの呼出しでAADが提供されます。この暗号がGCMまたはCCMモードで操作されている場合は、(update
およびdoFinal
メソッドを介した)暗号テキスト上の操作を開始する前に、すべてのAADが提供される必要があります。
src.position()
から始まるすべてのsrc.remaining()
バイトが処理されます。終了時に、入力バッファの位置はリミットに等しくなりますが、リミットは変更されません。
src
- AADを格納するバッファIllegalStateException
- この暗号が誤った状態であり(まだ初期化されていないなど)、AADを受け入れない場合、またはGCMまたはCCMモードで操作していて、アクティブな暗号化/復号化操作に対してすでにupdate
メソッドが呼び出されている場合UnsupportedOperationException
- このメソッドが実装によってオーバーライドされていない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.