Class PKCS12KeyStoreSpi
java.lang.Object
java.security.KeyStoreSpi
org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi
- All Implemented Interfaces:
PKCSObjectIdentifiers,X509ObjectIdentifiers,BCKeyStore
- Direct Known Subclasses:
PKCS12KeyStoreSpi.BCPKCS12KeyStore
public class PKCS12KeyStoreSpi extends KeyStoreSpi implements PKCSObjectIdentifiers, X509ObjectIdentifiers, BCKeyStore
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPKCS12KeyStoreSpi.BCPKCS12KeyStore -
Field Summary
Fields Modifier and Type Field Description protected SecureRandomrandomFields inherited from interface org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
bagtypes, canNotDecryptAny, certBag, certTypes, crlBag, crlTypes, data, des_EDE3_CBC, dhKeyAgreement, digestAlgorithm, digestedData, encryptedData, encryptionAlgorithm, envelopedData, id_aa, id_aa_commitmentType, id_aa_contentHint, id_aa_contentIdentifier, id_aa_contentReference, id_aa_encrypKeyPref, id_aa_ets_archiveTimestamp, id_aa_ets_certCRLTimestamp, id_aa_ets_certificateRefs, id_aa_ets_certValues, id_aa_ets_commitmentType, id_aa_ets_contentTimestamp, id_aa_ets_escTimeStamp, id_aa_ets_otherSigCert, id_aa_ets_revocationRefs, id_aa_ets_revocationValues, id_aa_ets_signerAttr, id_aa_ets_signerLocation, id_aa_ets_sigPolicyId, id_aa_msgSigDigest, id_aa_otherSigCert, id_aa_receiptRequest, id_aa_signatureTimeStampToken, id_aa_signerLocation, id_aa_signingCertificate, id_aa_signingCertificateV2, id_aa_sigPolicyId, id_alg_CMS3DESwrap, id_alg_CMSRC2wrap, id_alg_PWRI_KEK, id_ct, id_ct_authData, id_ct_authEnvelopedData, id_ct_compressedData, id_ct_timestampedData, id_ct_TSTInfo, id_cti, id_cti_ets_proofOfApproval, id_cti_ets_proofOfCreation, id_cti_ets_proofOfDelivery, id_cti_ets_proofOfOrigin, id_cti_ets_proofOfReceipt, id_cti_ets_proofOfSender, id_hmacWithSHA1, id_hmacWithSHA256, id_hmacWithSHA384, id_hmacWithSHA512, id_mgf1, id_PBES2, id_PBKDF2, id_pSpecified, id_RSAES_OAEP, id_RSASSA_PSS, id_spq, id_spq_ets_unotice, id_spq_ets_uri, keyBag, md5, md5WithRSAEncryption, pbeWithMD2AndDES_CBC, pbeWithMD2AndRC2_CBC, pbeWithMD5AndDES_CBC, pbeWithMD5AndRC2_CBC, pbeWithSHA1AndDES_CBC, pbeWithSHA1AndRC2_CBC, pbeWithSHAAnd128BitRC2_CBC, pbeWithSHAAnd128BitRC4, pbeWithSHAAnd2_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC, pbewithSHAAnd40BitRC2_CBC, pbeWithSHAAnd40BitRC2_CBC, pbeWithSHAAnd40BitRC4, pkcs_1, pkcs_12, pkcs_12PbeIds, pkcs_3, pkcs_5, pkcs_7, pkcs_9, pkcs_9_at_challengePassword, pkcs_9_at_contentType, pkcs_9_at_counterSignature, pkcs_9_at_emailAddress, pkcs_9_at_extendedCertificateAttributes, pkcs_9_at_extensionRequest, pkcs_9_at_friendlyName, pkcs_9_at_localKeyId, pkcs_9_at_messageDigest, pkcs_9_at_signingDescription, pkcs_9_at_signingTime, pkcs_9_at_smimeCapabilities, pkcs_9_at_unstructuredAddress, pkcs_9_at_unstructuredName, pkcs8ShroudedKeyBag, preferSignedData, RC2_CBC, rc4, rsaEncryption, safeContentsBag, sdsiCertificate, secretBag, sha1WithRSAEncryption, sha256WithRSAEncryption, sha384WithRSAEncryption, sha512WithRSAEncryption, signedAndEnvelopedData, signedData, sMIMECapabilitiesVersions, srsaOAEPEncryptionSET, x509Certificate, x509certType, x509CrlFields inherited from interface org.bouncycastle.asn1.x509.X509ObjectIdentifiers
commonName, countryName, crlAccessMethod, id, id_ad, id_ad_caIssuers, id_ad_ocsp, id_at_name, id_at_telephoneNumber, id_ce, id_ea_rsa, id_pe, id_pkix, id_SHA1, localityName, ocspAccessMethod, organization, organizationalUnitName, ripemd160, ripemd160WithRSAEncryption, stateOrProvinceName -
Constructor Summary
Constructors Constructor Description PKCS12KeyStoreSpi(Provider provider, ASN1ObjectIdentifier keyAlgorithm, ASN1ObjectIdentifier certAlgorithm) -
Method Summary
Modifier and Type Method Description protected byte[]cryptData(boolean forEncryption, AlgorithmIdentifier algId, char[] password, boolean wrongPKCS12Zero, byte[] data)EnumerationengineAliases()Returns anEnumerationover all alias names stored in thisKeyStoreSpi.booleanengineContainsAlias(String alias)Indicates whether the given alias is present in thisKeyStoreSpi.voidengineDeleteEntry(String alias)this is not quite complete - we should follow up on the chain, a bit tricky if a certificate appears in more than one chain...CertificateengineGetCertificate(String alias)simply return the cert for the private keyStringengineGetCertificateAlias(Certificate cert)Returns the alias associated with the first entry whose certificate matches the specified certificate.Certificate[]engineGetCertificateChain(String alias)Returns the certificate chain for the entry with the given alias.DateengineGetCreationDate(String alias)Returns the creation date of the entry with the given alias.KeyengineGetKey(String alias, char[] password)Returns the key with the given alias, using the password to recover the key from the store.booleanengineIsCertificateEntry(String alias)Indicates whether the specified alias is associated with aKeyStore.TrustedCertificateEntry.booleanengineIsKeyEntry(String alias)Indicates whether the specified alias is associated with either aKeyStore.PrivateKeyEntryor aKeyStore.SecretKeyEntry.voidengineLoad(InputStream stream, char[] password)Loads thisKeyStoreSpifrom the givenInputStream.voidengineSetCertificateEntry(String alias, Certificate cert)Associates the given alias with a certificate.voidengineSetKeyEntry(String alias, byte[] key, Certificate[] chain)Associates the given alias with a key and a certificate chain.voidengineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain)Associates the given alias with the key, password and certificate chain.intengineSize()Returns the number of entries stored in thisKeyStoreSpi.voidengineStore(OutputStream stream, char[] password)Writes thisKeyStoreSpito the specifiedOutputStream.voidengineStore(KeyStore.LoadStoreParameter param)Stores thisKeyStoreSpiusing the specifiedLoadStoreParameter.voidsetRandom(SecureRandom rand)set the random source for the key storeprotected PrivateKeyunwrapKey(AlgorithmIdentifier algId, byte[] data, char[] password, boolean wrongPKCS12Zero)protected byte[]wrapKey(String algorithm, Key key, PKCS12PBEParams pbeParams, char[] password)Methods inherited from class java.security.KeyStoreSpi
engineEntryInstanceOf, engineGetEntry, engineLoad, engineSetEntry
-
Field Details
-
random
-
-
Constructor Details
-
PKCS12KeyStoreSpi
public PKCS12KeyStoreSpi(Provider provider, ASN1ObjectIdentifier keyAlgorithm, ASN1ObjectIdentifier certAlgorithm)
-
-
Method Details
-
setRandom
Description copied from interface:BCKeyStoreset the random source for the key store- Specified by:
setRandomin interfaceBCKeyStore
-
engineAliases
Description copied from class:KeyStoreSpiReturns anEnumerationover all alias names stored in thisKeyStoreSpi.- Specified by:
engineAliasesin classKeyStoreSpi- Returns:
- an
Enumerationover all alias names stored in thisKeyStoreSpi.
-
engineContainsAlias
Description copied from class:KeyStoreSpiIndicates whether the given alias is present in thisKeyStoreSpi.- Specified by:
engineContainsAliasin classKeyStoreSpi- Parameters:
alias- the alias of an entry.- Returns:
trueif the alias exists,falseotherwise.
-
engineDeleteEntry
this is not quite complete - we should follow up on the chain, a bit tricky if a certificate appears in more than one chain...- Specified by:
engineDeleteEntryin classKeyStoreSpi- Parameters:
alias- the alias for the entry.- Throws:
KeyStoreException- if the entry can not be deleted.
-
engineGetCertificate
simply return the cert for the private key- Specified by:
engineGetCertificatein classKeyStoreSpi- Parameters:
alias- the alias for the entry.- Returns:
- the trusted certificate for the entry with the given alias, or
nullif the specified alias is not bound to an entry.
-
engineGetCertificateAlias
Description copied from class:KeyStoreSpiReturns the alias associated with the first entry whose certificate matches the specified certificate.- Specified by:
engineGetCertificateAliasin classKeyStoreSpi- Parameters:
cert- the certificate to find the associated entry's alias for.- Returns:
- the alias or
nullif no entry with the specified certificate can be found.
-
engineGetCertificateChain
Description copied from class:KeyStoreSpiReturns the certificate chain for the entry with the given alias.- Specified by:
engineGetCertificateChainin classKeyStoreSpi- Parameters:
alias- the alias for the entry- Returns:
- the certificate chain for the entry with the given alias, or
nullif the specified alias is not bound to an entry.
-
engineGetCreationDate
Description copied from class:KeyStoreSpiReturns the creation date of the entry with the given alias.- Specified by:
engineGetCreationDatein classKeyStoreSpi- Parameters:
alias- the alias for the entry.- Returns:
- the creation date, or
nullif the specified alias is not bound to an entry.
-
engineGetKey
public Key engineGetKey(String alias, char[] password) throws NoSuchAlgorithmException, UnrecoverableKeyExceptionDescription copied from class:KeyStoreSpiReturns the key with the given alias, using the password to recover the key from the store.- Specified by:
engineGetKeyin classKeyStoreSpi- Parameters:
alias- the alias for the entry.password- the password used to recover the key.- Returns:
- the key with the specified alias, or
nullif the specified alias is not bound to an entry. - Throws:
NoSuchAlgorithmException- if the algorithm for recovering the key is not available.UnrecoverableKeyException- if the key can not be recovered.
-
engineIsCertificateEntry
Description copied from class:KeyStoreSpiIndicates whether the specified alias is associated with aKeyStore.TrustedCertificateEntry.- Specified by:
engineIsCertificateEntryin classKeyStoreSpi- Parameters:
alias- the alias of an entry.- Returns:
trueif the given alias is associated with a certificate entry.
-
engineIsKeyEntry
Description copied from class:KeyStoreSpiIndicates whether the specified alias is associated with either aKeyStore.PrivateKeyEntryor aKeyStore.SecretKeyEntry.- Specified by:
engineIsKeyEntryin classKeyStoreSpi- Parameters:
alias- the alias of an entry.- Returns:
trueif the given alias is associated with a key entry.
-
engineSetCertificateEntry
Description copied from class:KeyStoreSpiAssociates the given alias with a certificate.If the specified alias already exists, it will be reassigned.
- Specified by:
engineSetCertificateEntryin classKeyStoreSpi- Parameters:
alias- the alias for the certificate.cert- the certificate.- Throws:
KeyStoreException- if an existing alias is not associated to an entry containing a trusted certificate, or this method fails for any other reason.
-
engineSetKeyEntry
public void engineSetKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreExceptionDescription copied from class:KeyStoreSpiAssociates the given alias with a key and a certificate chain.If the specified alias already exists, it will be reassigned.
- Specified by:
engineSetKeyEntryin classKeyStoreSpi- Parameters:
alias- the alias for the key.key- the key in an encoded format.chain- the certificate chain.- Throws:
KeyStoreException- if this operation fails.
-
engineSetKeyEntry
public void engineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreExceptionDescription copied from class:KeyStoreSpiAssociates the given alias with the key, password and certificate chain.If the specified alias already exists, it will be reassigned.
- Specified by:
engineSetKeyEntryin classKeyStoreSpi- Parameters:
alias- the alias for the key.key- the key.password- the password.chain- the certificate chain.- Throws:
KeyStoreException- if the specified key can not be protected, or if this operation fails for another reason.
-
engineSize
public int engineSize()Description copied from class:KeyStoreSpiReturns the number of entries stored in thisKeyStoreSpi.- Specified by:
engineSizein classKeyStoreSpi- Returns:
- the number of entries stored in this
KeyStoreSpi.
-
unwrapKey
protected PrivateKey unwrapKey(AlgorithmIdentifier algId, byte[] data, char[] password, boolean wrongPKCS12Zero) throws IOException- Throws:
IOException
-
wrapKey
protected byte[] wrapKey(String algorithm, Key key, PKCS12PBEParams pbeParams, char[] password) throws IOException- Throws:
IOException
-
cryptData
protected byte[] cryptData(boolean forEncryption, AlgorithmIdentifier algId, char[] password, boolean wrongPKCS12Zero, byte[] data) throws IOException- Throws:
IOException
-
engineLoad
Description copied from class:KeyStoreSpiLoads thisKeyStoreSpifrom the givenInputStream. Utilizes the given password to verify the stored data.- Specified by:
engineLoadin classKeyStoreSpi- Parameters:
stream- theInputStreamto load thisKeyStoreSpi's data from.password- the password to verify the stored data, maybenull.- Throws:
IOException- if a problem occurred while reading from the stream.
-
engineStore
public void engineStore(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateExceptionDescription copied from class:KeyStoreSpiStores thisKeyStoreSpiusing the specifiedLoadStoreParameter.- Overrides:
engineStorein classKeyStoreSpi- Parameters:
param- theLoadStoreParameterthat specifies how to store thisKeyStoreSpi, maybenull.- Throws:
IOException- if a problem occurred while writing to the stream.NoSuchAlgorithmException- if the required algorithm is not available.CertificateException- if the an exception occurred while storing the certificates of this codeKeyStoreSpi.
-
engineStore
Description copied from class:KeyStoreSpiWrites thisKeyStoreSpito the specifiedOutputStream. The data written to theOutputStreamis protected by the specified password.- Specified by:
engineStorein classKeyStoreSpi- Parameters:
stream- theOutputStreamto write the store's data to.password- the password to protect the data.- Throws:
IOException- if a problem occurred while writing to the stream.
-