Package jadex.commons.security
Class SSecurity
- java.lang.Object
- 
- jadex.commons.security.SSecurity
 
- 
 public class SSecurity extends java.lang.ObjectClass with static helper methods for security functions.
- 
- 
Field SummaryFields Modifier and Type Field Description protected static java.lang.StringDEFAULT_SIGNATURE_HASHDefault hash used for signatures.protected static booleanENTROPY_FALLBACK_WARNING_DONEFlag if the fallback warning has been issued before.protected static IEntropySourceENTROPY_SOURCEEntropy source for seeding CSPRNGS.static booleanPARANOID_PRNGFlag if the paranoid/hedged-mode PRNG should be used (much slower, but guarded against single-point failures).protected static java.security.SecureRandomSECURE_RANDOMCommon secure random number source.protected static booleanTEST_ENTROPY_FALLBACKEnable this to test the seeding fallback, do not change, used by tests only.
 - 
Constructor SummaryConstructors Constructor Description SSecurity()
 - 
Method SummaryAll Methods Static Methods Concrete Methods Modifier and Type Method Description protected static byte[]asn1ToBytes(org.bouncycastle.asn1.ASN1Object obj)Shorthand for converting ANS1Objects to bytes.static booleancheckEntity(org.bouncycastle.cert.X509CertificateHolder cert, java.lang.String entityname)Check whether a certificate belongs to an entity, either as common name or as alt name.static Tuple2<java.lang.String,java.lang.String>createCertificate(java.lang.String issuercert, java.lang.String issuerkey, java.lang.String subjectdn, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid)Generates a certificate that allows signing / authentication.protected static Tuple2<java.lang.String,java.lang.String>createCertificateBySpecification(java.lang.String issuercert, java.lang.String issuerkey, org.bouncycastle.asn1.x500.X500Name subject, java.lang.String sigalg, java.lang.String schemeconf, java.lang.String digalg, int strength, int daysvalid, org.bouncycastle.asn1.x509.Extension... extensions)Creates a certificate using the given specification.static Tuple2<java.lang.String,java.lang.String>createIntermediateCaCertificate(java.lang.String issuercert, java.lang.String issuerkey, java.lang.String subjectdn, int pathlen, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid)Generates a certificate for an intermediate CA.protected static org.bouncycastle.crypto.AsymmetricCipherKeyPaircreateKeyPair(java.lang.String alg, java.lang.String algconf, int strength)Generate a key pair.static Tuple2<java.lang.String,java.lang.String>createRootCaCertificate(java.lang.String subjectdn, int pathlen, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid)Generates a certificate for a root CA.static Tuple2<java.lang.String,java.lang.String>createSelfSignedCertificate(java.lang.String subjectdn, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid)Generates a self-signed certificate that allows signing / authentication.static PemKeyPaircreateTestCACert()Creates a random CA certificate for testing.static PemKeyPaircreateTestCert(PemKeyPair ca)Creates a random certificate for testing.protected static java.security.SecureRandomgenerateParanoidSecureRandom()Generates a secure PRNG.protected static java.security.SecureRandomgenerateSecureRandom()Generates a fast secure PRNG.static java.lang.StringgetCertSigAlg(java.lang.String cert)Gets the signatures algorithm supported by the key provided by a certificate.static java.lang.StringgetCertSigAlg(org.bouncycastle.cert.X509CertificateHolder cert)Gets the signatures algorithm supported by the key provided by a certificate.protected static org.bouncycastle.cert.path.CertPathValidation[]getChainValidationRules()Gets the certificate chain validation rules.static java.lang.StringgetCommonName(org.bouncycastle.asn1.x500.X500Name name)Returns the subject ID of a certificate.protected static org.bouncycastle.operator.ContentVerifiergetDefaultVerifier(org.bouncycastle.cert.X509CertificateHolder cert)Gets a verifier based on a certificate to identify the algorithm.static IEntropySourcegetEntropySource()Gets a secure entropy source from OS or otherwise.static java.security.SecureRandomgetSecureRandom()Gets access to the common secure PRNG.static java.lang.StringgetSigAlg(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo spki)Gets the signatures algorithm supported by the key.protected static org.bouncycastle.operator.ContentSignergetSigner(java.lang.String algospec, org.bouncycastle.asn1.pkcs.PrivateKeyInfo pki)Gets a signer based on a private key to identify the algorithm.protected static org.bouncycastle.operator.ContentVerifierProvidergetVerifierProvider(java.lang.Object keyinfo)Gets a verifier provider based on a certificate to identify the algorithm.static booleanisCaCertificate(java.lang.String cert)Tests if a certificate is a CA certificate.static java.util.List<org.bouncycastle.cert.X509CertificateHolder>readCertificateChainFromPEM(java.lang.String pem)Reads a certificate chain.static org.bouncycastle.cert.X509CertificateHolderreadCertificateFromPEM(java.lang.String pem)Read a certificate from a PEM-encoded string.static org.bouncycastle.asn1.pkcs.PrivateKeyInforeadPrivateKeyFromPEM(java.lang.String pem)Reads a private key from a PEM string.static byte[]signWithPEM(byte[] msghash, java.io.InputStream pemcert, java.io.InputStream pemkey)Sign using a PEM-encoded X.509 certificate/key.static booleanverifyWithPEM(byte[] msghash, byte[] token, java.lang.String signingcert, java.util.LinkedHashSet<org.bouncycastle.cert.X509CertificateHolder> trustchain)Verify using a PEM-encoded X.509 certificate/key.static java.lang.StringwriteCertificateAsPEM(org.bouncycastle.cert.X509CertificateHolder cert)Writes a certificate as PEM-encoded string.static byte[]xor(byte[] op1result, byte[] op2)XORs two byte arrays.
 
- 
- 
- 
Field Detail- 
DEFAULT_SIGNATURE_HASHprotected static final java.lang.String DEFAULT_SIGNATURE_HASH Default hash used for signatures.- See Also:
- Constant Field Values
 
 - 
PARANOID_PRNGpublic static boolean PARANOID_PRNG Flag if the paranoid/hedged-mode PRNG should be used (much slower, but guarded against single-point failures).
 - 
SECURE_RANDOMprotected static volatile java.security.SecureRandom SECURE_RANDOM Common secure random number source.
 - 
ENTROPY_SOURCEprotected static volatile IEntropySource ENTROPY_SOURCE Entropy source for seeding CSPRNGS.
 - 
ENTROPY_FALLBACK_WARNING_DONEprotected static boolean ENTROPY_FALLBACK_WARNING_DONE Flag if the fallback warning has been issued before.
 - 
TEST_ENTROPY_FALLBACKprotected static boolean TEST_ENTROPY_FALLBACK Enable this to test the seeding fallback, do not change, used by tests only.
 
- 
 - 
Method Detail- 
getSecureRandompublic static final java.security.SecureRandom getSecureRandom() Gets access to the common secure PRNG.- Returns:
- Common secure PRNG.
 
 - 
getEntropySourcepublic static IEntropySource getEntropySource() Gets a secure entropy source from OS or otherwise.- Returns:
- Secure entropy source.
 
 - 
signWithPEMpublic static final byte[] signWithPEM(byte[] msghash, java.io.InputStream pemcert, java.io.InputStream pemkey)Sign using a PEM-encoded X.509 certificate/key.- Parameters:
- msghash- The message hash.
- pemcert- The PEM certificate.
- pemkey- The PEM key.
- Returns:
- Signature.
 
 - 
verifyWithPEMpublic static final boolean verifyWithPEM(byte[] msghash, byte[] token, java.lang.String signingcert, java.util.LinkedHashSet<org.bouncycastle.cert.X509CertificateHolder> trustchain)Verify using a PEM-encoded X.509 certificate/key.- Parameters:
- msghash- The message hash.
- token- The authentication token.
- signingcert- The signing certificate.
- trustedpemcert- The PEM certificate trust anchor.
- Returns:
- True, if the certificate chain and signature is valid.
 
 - 
createSelfSignedCertificatepublic static final Tuple2<java.lang.String,java.lang.String> createSelfSignedCertificate(java.lang.String subjectdn, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid) Generates a self-signed certificate that allows signing / authentication.- Parameters:
- subjectdn- The CA subject identifier.
- scheme- Signature scheme to use, e.g. RSA, DSA, ECDSA.
- hashalg- Hash algorithm to use.
- strength- Strength of the key.
- daysvalid- Number of days valid.
- Returns:
- The certificate.
 
 - 
createCertificatepublic static final Tuple2<java.lang.String,java.lang.String> createCertificate(java.lang.String issuercert, java.lang.String issuerkey, java.lang.String subjectdn, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid) Generates a certificate that allows signing / authentication.- Parameters:
- issuercert- Certificate of the parent CA.
- issuerkey- Key of the parent CA.
- subjectdn- The CA subject identifier.
- scheme- Signature scheme to use, e.g. RSA, DSA, ECDSA.
- hashalg- Hash algorithm to use.
- strength- Strength of the key.
- daysvalid- Number of days valid.
- Returns:
- The certificate.
 
 - 
createIntermediateCaCertificatepublic static final Tuple2<java.lang.String,java.lang.String> createIntermediateCaCertificate(java.lang.String issuercert, java.lang.String issuerkey, java.lang.String subjectdn, int pathlen, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid) Generates a certificate for an intermediate CA.- Parameters:
- issuercert- Certificate of the parent CA.
- issuerkey- Key of the parent CA.
- subjectdn- The CA subject identifier.
- pathlen- Allowed path length for the intermediate CA (0 = no intermediate CA certificate children).
- scheme- Signature scheme to use, e.g. RSA, DSA, ECDSA.
- hashalg- Hash algorithm to use.
- strength- Strength of the key.
- daysvalid- Number of days valid.
- Returns:
- The certificate.
 
 - 
createRootCaCertificatepublic static final Tuple2<java.lang.String,java.lang.String> createRootCaCertificate(java.lang.String subjectdn, int pathlen, java.lang.String scheme, java.lang.String schemeconf, java.lang.String hashalg, int strength, int daysvalid) Generates a certificate for a root CA.- Parameters:
- subjectdn- The CA subject identifier.
- scheme- Signature scheme to use, e.g. RSA, DSA, ECDSA.
- hashalg- Hash algorithm to use.
- strength- Strength of the key.
- daysvalid- Number of days valid.
- Returns:
- The certificate.
 
 - 
createTestCACertpublic static final PemKeyPair createTestCACert() Creates a random CA certificate for testing.
 - 
createTestCertpublic static final PemKeyPair createTestCert(PemKeyPair ca) Creates a random certificate for testing.
 - 
xorpublic static final byte[] xor(byte[] op1result, byte[] op2)XORs two byte arrays.- Parameters:
- op1result- First array and output array.
- op2- Second array.
- Returns:
- Modified first array.
 
 - 
readCertificateFromPEMpublic static final org.bouncycastle.cert.X509CertificateHolder readCertificateFromPEM(java.lang.String pem) Read a certificate from a PEM-encoded string.- Parameters:
- pem- The PEM-encoded string.
- Returns:
- The certificate.
 
 - 
readCertificateChainFromPEMpublic static final java.util.List<org.bouncycastle.cert.X509CertificateHolder> readCertificateChainFromPEM(java.lang.String pem) Reads a certificate chain.- Parameters:
- pem- PEM of the chain.
- Returns:
- The chain, starting with the leaf.
 
 - 
getCommonNamepublic static java.lang.String getCommonName(org.bouncycastle.asn1.x500.X500Name name) Returns the subject ID of a certificate.- Parameters:
- cert- The certificate.
- Returns:
- The subject ID.
 
 - 
checkEntitypublic static final boolean checkEntity(org.bouncycastle.cert.X509CertificateHolder cert, java.lang.String entityname)Check whether a certificate belongs to an entity, either as common name or as alt name.- Parameters:
- cert- The certificate.
- entityname- The entity name.
- Returns:
- True, if the certificate belongs, false otherwise.
 
 - 
writeCertificateAsPEMpublic static final java.lang.String writeCertificateAsPEM(org.bouncycastle.cert.X509CertificateHolder cert) Writes a certificate as PEM-encoded string.- Parameters:
- cert- The certificate.
- Returns:
- Encoded string.
 
 - 
readPrivateKeyFromPEMpublic static final org.bouncycastle.asn1.pkcs.PrivateKeyInfo readPrivateKeyFromPEM(java.lang.String pem) Reads a private key from a PEM string.- Parameters:
- pem- The PEM-encoded string.
- Returns:
- The private key.
 
 - 
isCaCertificatepublic static final boolean isCaCertificate(java.lang.String cert) Tests if a certificate is a CA certificate.- Parameters:
- cert- The certificate.
- Returns:
- True, if CA certificate.
 
 - 
getCertSigAlgpublic static final java.lang.String getCertSigAlg(java.lang.String cert) Gets the signatures algorithm supported by the key provided by a certificate.- Parameters:
- cert- The certificate.
- Returns:
- The signature algorithm.
 
 - 
getCertSigAlgpublic static final java.lang.String getCertSigAlg(org.bouncycastle.cert.X509CertificateHolder cert) Gets the signatures algorithm supported by the key provided by a certificate.- Parameters:
- cert- The certificate.
- Returns:
- The signature algorithm.
 
 - 
getSigAlgpublic static final java.lang.String getSigAlg(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo spki) Gets the signatures algorithm supported by the key.- Parameters:
- spki- The subject key info.
- Returns:
- The signature algorithm.
 
 - 
getChainValidationRulesprotected static final org.bouncycastle.cert.path.CertPathValidation[] getChainValidationRules() Gets the certificate chain validation rules.- Returns:
- The rules.
 
 - 
generateSecureRandomprotected static final java.security.SecureRandom generateSecureRandom() Generates a fast secure PRNG. The setup attempts to prepare a PRNG that is fast and secure.- Returns:
- Secure PRNG.
 
 - 
generateParanoidSecureRandomprotected static final java.security.SecureRandom generateParanoidSecureRandom() Generates a secure PRNG. The setup attempts to prepare a PRNG that avoids relying on a single approach.- Returns:
- Secure PRNG.
 
 - 
createCertificateBySpecificationprotected static final Tuple2<java.lang.String,java.lang.String> createCertificateBySpecification(java.lang.String issuercert, java.lang.String issuerkey, org.bouncycastle.asn1.x500.X500Name subject, java.lang.String sigalg, java.lang.String schemeconf, java.lang.String digalg, int strength, int daysvalid, org.bouncycastle.asn1.x509.Extension... extensions) Creates a certificate using the given specification.- Parameters:
- issuercert- Certificate of the issuer (CA).
- issuerkey- Key of the issuer (CA).
- subject- Subject of the certificate.
- sigalg- Signature scheme / certificate key algorithm to use, e.g. RSA, DSA, ECDSA.
- schemeconf- Additional scheme configuration, may be null.
- digalg- Hash algorithm to use for certificate signature.
- strength- Strength of the key.
- daysvalid- Number of days valid.
- extensions- Certificate extensions.
- Returns:
- Generated Certificate and private key as PEM-encoded strings.
 
 - 
createKeyPairprotected static final org.bouncycastle.crypto.AsymmetricCipherKeyPair createKeyPair(java.lang.String alg, java.lang.String algconf, int strength)Generate a key pair.- Parameters:
- alg- Algorithm to use, e.g. RSA, DSA, ECDSA.
- strength- Strength of the key pair.
- Returns:
- The generated key pair.
 
 - 
getSignerprotected static final org.bouncycastle.operator.ContentSigner getSigner(java.lang.String algospec, org.bouncycastle.asn1.pkcs.PrivateKeyInfo pki)Gets a signer based on a private key to identify the algorithm.- Parameters:
- pki- The private key.
- Returns:
- A content signer.
 
 - 
getDefaultVerifierprotected static final org.bouncycastle.operator.ContentVerifier getDefaultVerifier(org.bouncycastle.cert.X509CertificateHolder cert) Gets a verifier based on a certificate to identify the algorithm.- Parameters:
- cert- The certificate.
- Returns:
- A content verifier.
 
 - 
getVerifierProviderprotected static final org.bouncycastle.operator.ContentVerifierProvider getVerifierProvider(java.lang.Object keyinfo) Gets a verifier provider based on a certificate to identify the algorithm.- Parameters:
- keyinfo- The certificate or key info.
- Returns:
- The content verifier provider.
 
 - 
asn1ToBytesprotected static final byte[] asn1ToBytes(org.bouncycastle.asn1.ASN1Object obj) Shorthand for converting ANS1Objects to bytes.- Parameters:
- obj- The object.
- Returns:
- Encoded bytes.
 
 
- 
 
-