-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
41fe3f8
commit 70840fd
Showing
9 changed files
with
221 additions
and
223 deletions.
There are no files selected for viewing
9 changes: 5 additions & 4 deletions
9
src/main/java/io/ghcr/heliannuuthus/devtools/crypto/algorithms/MessageDigest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,15 @@ | ||
package io.ghcr.heliannuuthus.devtools.crypto.algorithms; | ||
|
||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public enum MessageDigest { | ||
NONE("None"), | ||
SHA_256("SHA256"), | ||
SHA_384("SHA384"), | ||
SHA_512("SHA512"); | ||
|
||
NONE("None"), SHA_256("SHA256"), SHA_384("SHA384"), SHA_512("SHA512"); | ||
|
||
private String name; | ||
private String name; | ||
} |
62 changes: 30 additions & 32 deletions
62
src/main/java/io/ghcr/heliannuuthus/devtools/crypto/parameters/AsymmetricParameters.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,47 @@ | ||
package io.ghcr.heliannuuthus.devtools.crypto.parameters; | ||
|
||
import io.ghcr.heliannuuthus.devtools.exception.CryptoException; | ||
import lombok.Getter; | ||
import org.bouncycastle.jce.provider.BouncyCastleProvider; | ||
|
||
import java.security.KeyFactory; | ||
import java.security.PrivateKey; | ||
import java.security.PublicKey; | ||
import java.security.spec.PKCS8EncodedKeySpec; | ||
import java.security.spec.X509EncodedKeySpec; | ||
import lombok.Getter; | ||
import org.bouncycastle.jce.provider.BouncyCastleProvider; | ||
|
||
@Getter | ||
public abstract class AsymmetricParameters implements OamParameters { | ||
|
||
protected AsymmetricParameters() { | ||
} | ||
|
||
public AsymmetricParameters(byte[] key, boolean isPrivate) { | ||
this(); | ||
try { | ||
KeyFactory keyFactory = | ||
KeyFactory.getInstance(this.getName(), BouncyCastleProvider.PROVIDER_NAME); | ||
if (isPrivate) { | ||
this.privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(key)); | ||
} else { | ||
this.publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(key)); | ||
} | ||
} catch (Exception e) { | ||
throw new CryptoException(-1, getName(), e); | ||
} | ||
protected AsymmetricParameters() {} | ||
|
||
public AsymmetricParameters(byte[] key, boolean isPrivate) { | ||
this(); | ||
try { | ||
KeyFactory keyFactory = | ||
KeyFactory.getInstance(this.getName(), BouncyCastleProvider.PROVIDER_NAME); | ||
if (isPrivate) { | ||
this.privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(key)); | ||
} else { | ||
this.publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(key)); | ||
} | ||
} catch (Exception e) { | ||
throw new CryptoException(-1, getName(), e); | ||
} | ||
|
||
public AsymmetricParameters(byte[] privateKey, byte[] publicKey) { | ||
try { | ||
KeyFactory keyFactory = | ||
KeyFactory.getInstance(this.getName(), BouncyCastleProvider.PROVIDER_NAME); | ||
this.privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(privateKey)); | ||
this.publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(publicKey)); | ||
} catch (Exception e) { | ||
throw new CryptoException(-1, getName(), e); | ||
} | ||
} | ||
|
||
public AsymmetricParameters(byte[] privateKey, byte[] publicKey) { | ||
try { | ||
KeyFactory keyFactory = | ||
KeyFactory.getInstance(this.getName(), BouncyCastleProvider.PROVIDER_NAME); | ||
this.privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(privateKey)); | ||
this.publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(publicKey)); | ||
} catch (Exception e) { | ||
throw new CryptoException(-1, getName(), e); | ||
} | ||
} | ||
|
||
private PrivateKey privateKey; | ||
private PublicKey publicKey; | ||
private PrivateKey privateKey; | ||
private PublicKey publicKey; | ||
|
||
public abstract String getName(); | ||
public abstract String getName(); | ||
} |
49 changes: 24 additions & 25 deletions
49
src/main/java/io/ghcr/heliannuuthus/devtools/crypto/parameters/BlockParameters.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,43 @@ | ||
package io.ghcr.heliannuuthus.devtools.crypto.parameters; | ||
|
||
import io.ghcr.heliannuuthus.devtools.crypto.algorithms.Padding; | ||
import java.security.spec.AlgorithmParameterSpec; | ||
import javax.crypto.SecretKey; | ||
import javax.crypto.spec.SecretKeySpec; | ||
import lombok.Getter; | ||
import lombok.Setter; | ||
import org.apache.commons.lang3.StringUtils; | ||
|
||
import javax.crypto.SecretKey; | ||
import javax.crypto.spec.SecretKeySpec; | ||
import java.security.spec.AlgorithmParameterSpec; | ||
|
||
@Setter | ||
@Getter | ||
public abstract class BlockParameters implements OamParameters { | ||
|
||
public static final String ECB_MODE = "ECB"; | ||
public static final String CBC_MODE = "CBC"; | ||
public static final String GCM_MODE = "GCM"; | ||
public static final String ECB_MODE = "ECB"; | ||
public static final String CBC_MODE = "CBC"; | ||
public static final String GCM_MODE = "GCM"; | ||
|
||
protected byte[] key; | ||
protected byte[] key; | ||
|
||
@Override | ||
public String getAlgorithm() { | ||
return StringUtils.joinWith("/", getName(), getMode(), getPadding().getName()); | ||
} | ||
@Override | ||
public String getAlgorithm() { | ||
return StringUtils.joinWith("/", getName(), getMode(), getPadding().getName()); | ||
} | ||
|
||
public String getName() { | ||
return null; | ||
} | ||
public String getName() { | ||
return null; | ||
} | ||
|
||
public abstract String getMode(); | ||
public abstract String getMode(); | ||
|
||
public Padding getPadding() { | ||
return Padding.PKCS7; | ||
} | ||
public Padding getPadding() { | ||
return Padding.PKCS7; | ||
} | ||
|
||
public SecretKey getKey() { | ||
return new SecretKeySpec(this.key, getName()); | ||
} | ||
public SecretKey getKey() { | ||
return new SecretKeySpec(this.key, getName()); | ||
} | ||
|
||
public AlgorithmParameterSpec getSpec() { | ||
return null; | ||
} | ||
public AlgorithmParameterSpec getSpec() { | ||
return null; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 21 additions & 22 deletions
43
src/main/java/io/ghcr/heliannuuthus/devtools/crypto/parameters/eddsa/Ed25519Parameters.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,35 +1,34 @@ | ||
package io.ghcr.heliannuuthus.devtools.crypto.parameters.eddsa; | ||
|
||
import io.ghcr.heliannuuthus.devtools.crypto.parameters.AsymmetricParameters; | ||
import org.bouncycastle.jcajce.spec.EdDSAParameterSpec; | ||
|
||
import java.security.spec.AlgorithmParameterSpec; | ||
import org.bouncycastle.jcajce.spec.EdDSAParameterSpec; | ||
|
||
public class Ed25519Parameters extends AsymmetricParameters { | ||
|
||
protected Ed25519Parameters() { | ||
super(); | ||
} | ||
protected Ed25519Parameters() { | ||
super(); | ||
} | ||
|
||
public Ed25519Parameters(byte[] key, boolean isPrivate) { | ||
super(key, isPrivate); | ||
} | ||
public Ed25519Parameters(byte[] key, boolean isPrivate) { | ||
super(key, isPrivate); | ||
} | ||
|
||
public Ed25519Parameters(byte[] privateKey, byte[] publicKey) { | ||
super(privateKey, publicKey); | ||
} | ||
public Ed25519Parameters(byte[] privateKey, byte[] publicKey) { | ||
super(privateKey, publicKey); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return EdDSAParameterSpec.Ed25519; | ||
} | ||
@Override | ||
public String getName() { | ||
return EdDSAParameterSpec.Ed25519; | ||
} | ||
|
||
public AlgorithmParameterSpec getSpec() { | ||
return new EdDSAParameterSpec(getName()); | ||
} | ||
public AlgorithmParameterSpec getSpec() { | ||
return new EdDSAParameterSpec(getName()); | ||
} | ||
|
||
@Override | ||
public String getAlgorithm() { | ||
return ED_DSA_ALGORITHM; | ||
} | ||
@Override | ||
public String getAlgorithm() { | ||
return ED_DSA_ALGORITHM; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.