summaryrefslogtreecommitdiffstats
path: root/keystore/java/android/security/EcIesParameterSpec.java
diff options
context:
space:
mode:
Diffstat (limited to 'keystore/java/android/security/EcIesParameterSpec.java')
-rw-r--r--keystore/java/android/security/EcIesParameterSpec.java74
1 files changed, 42 insertions, 32 deletions
diff --git a/keystore/java/android/security/EcIesParameterSpec.java b/keystore/java/android/security/EcIesParameterSpec.java
index a3e5aec..1cd8784 100644
--- a/keystore/java/android/security/EcIesParameterSpec.java
+++ b/keystore/java/android/security/EcIesParameterSpec.java
@@ -1,6 +1,8 @@
package android.security;
import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -49,45 +51,44 @@ import javax.crypto.Mac;
*/
public class EcIesParameterSpec implements AlgorithmParameterSpec {
+ /**
+ * @hide
+ */
@Retention(RetentionPolicy.SOURCE)
- @IntDef(value = {PointFormat.UNCOMPRESSED, PointFormat.COMPRESSED})
+ @IntDef({
+ POINT_FORMAT_UNSPECIFIED,
+ POINT_FORMAT_UNCOMPRESSED,
+ POINT_FORMAT_COMPRESSED,
+ })
public @interface PointFormatEnum {}
+ /** Unspecified EC point format. */
+ public static final int POINT_FORMAT_UNSPECIFIED = -1;
+
/**
- * Wire format of the EC point.
+ * Uncompressed EC point format: both coordinates are stored separately.
+ *
+ * <p>The wire format is byte {@code 0x04} followed by binary representation of the {@code x}
+ * coordinate followed by binary representation of the {@code y} coordinate. See
+ * {@code ISO 18033-2} section {@code 5.4.3}.
*/
- public static abstract class PointFormat {
-
- private PointFormat() {}
+ public static final int POINT_FORMAT_UNCOMPRESSED = 0;
- /** Unspecified point format. */
- public static final int UNSPECIFIED = -1;
-
- /**
- * Uncompressed point format: both coordinates are stored separately.
- *
- * <p>The wire format is byte {@code 0x04} followed by binary representation of the
- * {@code x} coordinate followed by binary representation of the {@code y} coordinate. See
- * {@code ISO 18033-2} section {@code 5.4.3}.
- */
- public static final int UNCOMPRESSED = 0;
-
- /**
- * Compressed point format: only one coordinate is stored.
- *
- * <p>The wire format is byte {@code 0x02} or {@code 0x03} (depending on the value of the
- * stored coordinate) followed by the binary representation of the {@code x} coordinate.
- * See {@code ISO 18033-2} section {@code 5.4.3}.
- */
- public static final int COMPRESSED = 1;
- }
+ /**
+ * Compressed EC point format: only one coordinate is stored.
+ *
+ * <p>The wire format is byte {@code 0x02} or {@code 0x03} (depending on the value of the stored
+ * coordinate) followed by the binary representation of the {@code x} coordinate. See
+ * {@code ISO 18033-2} section {@code 5.4.3}.
+ */
+ public static final int POINT_FORMAT_COMPRESSED = 1;
/**
* Default parameter spec: compressed point format, {@code HKDFwithSHA256}, DEM uses 128-bit AES
* GCM.
*/
public static final EcIesParameterSpec DEFAULT = new EcIesParameterSpec(
- PointFormat.COMPRESSED,
+ POINT_FORMAT_COMPRESSED,
"HKDFwithSHA256",
"AES/GCM/NoPadding",
128,
@@ -117,7 +118,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
}
/**
- * Returns KEM EC point wire format or {@link PointFormat#UNSPECIFIED} if not specified.
+ * Returns KEM EC point wire format or {@link #POINT_FORMAT_UNSPECIFIED} if not specified.
*/
public @PointFormatEnum int getKemPointFormat() {
return mKemPointFormat;
@@ -127,6 +128,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
* Returns KEM KDF algorithm (e.g., {@code HKDFwithSHA256} or {@code KDF1withSHA1}) or
* {@code null} if not specified.
*/
+ @Nullable
public String getKemKdfAlgorithm() {
return mKemKdfAlgorithm;
}
@@ -138,6 +140,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
* @see Cipher#getInstance(String)
* @see #getDemCipherKeySize()
*/
+ @Nullable
public String getDemCipherTransformation() {
return mDemCipherTransformation;
}
@@ -158,6 +161,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
* @see Mac#getInstance(String)
* @see #getDemMacKeySize()
*/
+ @Nullable
public String getDemMacAlgorithm() {
return mDemMacAlgorithm;
}
@@ -175,7 +179,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
* Builder of {@link EcIesParameterSpec}.
*/
public static class Builder {
- private @PointFormatEnum int mKemPointFormat = PointFormat.UNSPECIFIED;
+ private @PointFormatEnum int mKemPointFormat = POINT_FORMAT_UNSPECIFIED;
private String mKemKdfAlgorithm;
private String mDemCipherTransformation;
private int mDemCipherKeySize = 128;
@@ -194,7 +198,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
* Sets KEM KDF algorithm. For example, {@code HKDFwithSHA256}, {@code KDF2withSHA256}, or
* {@code KDF1withSHA1}.
*/
- public Builder setKemKdfAlgorithm(String algorithm) {
+ @NonNull
+ public Builder setKemKdfAlgorithm(@Nullable String algorithm) {
mKemKdfAlgorithm = algorithm;
return this;
}
@@ -205,7 +210,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
*
* @see Cipher#getInstance(String)
*/
- public Builder setDemCipherTransformation(String transformation) {
+ @NonNull
+ public Builder setDemCipherTransformation(@Nullable String transformation) {
mDemCipherTransformation = transformation;
return this;
}
@@ -217,6 +223,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
*
* @see #setDemCipherTransformation(String)
*/
+ @NonNull
public Builder setDemCipherKeySize(int sizeBits) {
mDemCipherKeySize = sizeBits;
return this;
@@ -227,7 +234,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
*
* @see Mac#getInstance(String)
*/
- public Builder setDemMacAlgorithm(String algorithm) {
+ @NonNull
+ public Builder setDemMacAlgorithm(@Nullable String algorithm) {
mDemMacAlgorithm = algorithm;
return this;
}
@@ -239,6 +247,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
*
* @see #setDemCipherKeySize(int)
*/
+ @NonNull
public Builder setDemMacKeySize(int sizeBits) {
mDemMacKeySize = sizeBits;
return this;
@@ -247,6 +256,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec {
/**
* Returns a new {@link EcIesParameterSpec} based on the current state of this builder.
*/
+ @NonNull
public EcIesParameterSpec build() {
int demMacKeySize = (mDemMacKeySize != -1) ? mDemMacKeySize : mDemCipherKeySize;
return new EcIesParameterSpec(