Package org.bouncycastle.pkcs.util
Class PKCS12Util
- java.lang.Object
-
- org.bouncycastle.pkcs.util.PKCS12Util
-
public class PKCS12Util extends java.lang.ObjectUtility class for re-encoding PKCS#12 files to definite length.Replaces
PKCS12Util; this class additionally understands RFC 9579 PBMAC1 protected PFX files.
-
-
Constructor Summary
Constructors Constructor Description PKCS12Util()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static byte[]convertToDefiniteLength(byte[] berPKCS12File)Just re-encode the outer layer of the PKCS#12 file to definite length encoding.static byte[]convertToDefiniteLength(byte[] berPKCS12File, char[] passwd)Re-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.static byte[]convertToDefiniteLength(byte[] berPKCS12File, char[] passwd, java.lang.String provider)Re-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.static byte[]convertToDefiniteLength(byte[] berPKCS12File, char[] passwd, java.security.Provider provider)Re-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.static org.bouncycastle.asn1.ASN1EncodablegetContent(org.bouncycastle.asn1.pkcs.ContentInfo contentInfo)Return the content of a ContentInfo, raisingASN1ParsingExceptionif absent.static byte[]getContentOctets(org.bouncycastle.asn1.pkcs.ContentInfo contentInfo)Return the octets carried by a ContentInfo, raisingASN1ParsingExceptionif the content is absent or not anOCTET STRING.static org.bouncycastle.asn1.ASN1OctetStringgetEncryptedContent(org.bouncycastle.asn1.pkcs.EncryptedData encryptedData)Return the ciphertext octets of anEncryptedData, raisingASN1ParsingExceptionif absent.static intvalidateIterationCount(java.math.BigInteger ic)Validate an iteration count from a PFX, enforcing the cap configured via theProperties.PKCS12_MAX_IT_COUNTsecurity property (default 5,000,000).
-
-
-
Method Detail
-
convertToDefiniteLength
public static byte[] convertToDefiniteLength(byte[] berPKCS12File) throws java.io.IOExceptionJust re-encode the outer layer of the PKCS#12 file to definite length encoding.- Parameters:
berPKCS12File- - original PKCS#12 file- Returns:
- a byte array representing the DER encoding of the PFX structure
- Throws:
java.io.IOException
-
convertToDefiniteLength
public static byte[] convertToDefiniteLength(byte[] berPKCS12File, char[] passwd) throws java.io.IOExceptionRe-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.- Parameters:
berPKCS12File- - original PKCS12 file.- Returns:
- a byte array representing the DER encoding of the PFX structure.
- Throws:
java.io.IOException- on parsing, encoding errors.
-
convertToDefiniteLength
public static byte[] convertToDefiniteLength(byte[] berPKCS12File, char[] passwd, java.lang.String provider) throws java.io.IOExceptionRe-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.- Parameters:
berPKCS12File- - original PKCS12 file.provider- - provider name to use for MAC calculation.- Returns:
- a byte array representing the DER encoding of the PFX structure.
- Throws:
java.io.IOException- on parsing, encoding errors.
-
convertToDefiniteLength
public static byte[] convertToDefiniteLength(byte[] berPKCS12File, char[] passwd, java.security.Provider provider) throws java.io.IOExceptionRe-encode the PKCS#12 structure to definite length encoding at the inner layer as well, recomputing the MAC accordingly.- Parameters:
berPKCS12File- - original PKCS12 file.provider- - provider to use for MAC calculation.- Returns:
- a byte array representing the DER encoding of the PFX structure.
- Throws:
java.io.IOException- on parsing, encoding errors.
-
getContent
public static org.bouncycastle.asn1.ASN1Encodable getContent(org.bouncycastle.asn1.pkcs.ContentInfo contentInfo) throws java.io.IOExceptionReturn the content of a ContentInfo, raisingASN1ParsingExceptionif absent.- Parameters:
contentInfo- the ContentInfo to inspect.- Returns:
- the carried content.
- Throws:
java.io.IOException- on ASN.1 parsing errors.
-
getContentOctets
public static byte[] getContentOctets(org.bouncycastle.asn1.pkcs.ContentInfo contentInfo) throws java.io.IOExceptionReturn the octets carried by a ContentInfo, raisingASN1ParsingExceptionif the content is absent or not anOCTET STRING.- Parameters:
contentInfo- the ContentInfo to inspect.- Returns:
- the content octets.
- Throws:
java.io.IOException- on ASN.1 parsing errors.
-
getEncryptedContent
public static org.bouncycastle.asn1.ASN1OctetString getEncryptedContent(org.bouncycastle.asn1.pkcs.EncryptedData encryptedData) throws java.io.IOExceptionReturn the ciphertext octets of anEncryptedData, raisingASN1ParsingExceptionif absent.- Parameters:
encryptedData- the EncryptedData to inspect.- Returns:
- the encrypted-content octet string.
- Throws:
java.io.IOException- on ASN.1 parsing errors.
-
validateIterationCount
public static int validateIterationCount(java.math.BigInteger ic)
Validate an iteration count from a PFX, enforcing the cap configured via theProperties.PKCS12_MAX_IT_COUNTsecurity property (default 5,000,000). Negative values and values that do not fit in a signed 32-bit integer are also rejected.- Parameters:
ic- the iteration count from the wire.- Returns:
- the validated iteration count as an
int. - Throws:
java.lang.IllegalStateException- if the iteration count is negative, larger than the configured maximum, or does not fit in a signed 32-bit integer.
-
-