当前位置: 首页>>代码示例>>Java>>正文


Java AlgorithmId.derEncode方法代码示例

本文整理汇总了Java中sun.security.x509.AlgorithmId.derEncode方法的典型用法代码示例。如果您正苦于以下问题:Java AlgorithmId.derEncode方法的具体用法?Java AlgorithmId.derEncode怎么用?Java AlgorithmId.derEncode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sun.security.x509.AlgorithmId的用法示例。


在下文中一共展示了AlgorithmId.derEncode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: encodeTopLevel

import sun.security.x509.AlgorithmId; //导入方法依赖的package包/类
/**
 * Encode the contents of the outer-most ASN.1 SEQUENCE:
 *
 * <PRE>
 *  Certificate  ::=  SEQUENCE  {
 *      tbsCertificate       TBSCertificate,
 *      signatureAlgorithm   AlgorithmIdentifier,
 *      signatureValue       BIT STRING  }
 * </PRE>
 *
 * @param issuerCert The certificate of the issuing authority, or
 * {@code null} if the resulting certificate is self-signed.
 * @param issuerKey The private key of the issuing authority
 * @param signAlg The signature algorithm object
 *
 * @return The DER-encoded X.509 certificate
 *
 * @throws CertificateException If an error occurs during the
 * signing process.
 * @throws IOException if an encoding error occurs.
 */
private byte[] encodeTopLevel(X509Certificate issuerCert,
        PrivateKey issuerKey, AlgorithmId signAlg)
        throws CertificateException, IOException {
    DerOutputStream outerSeq = new DerOutputStream();
    DerOutputStream topLevelItems = new DerOutputStream();

    tbsCertBytes = encodeTbsCert(issuerCert, signAlg);
    topLevelItems.write(tbsCertBytes);
    try {
        signatureBytes = signCert(issuerKey, signAlg);
    } catch (GeneralSecurityException ge) {
        throw new CertificateException(ge);
    }
    signAlg.derEncode(topLevelItems);
    topLevelItems.putBitString(signatureBytes);
    outerSeq.write(DerValue.tag_Sequence, topLevelItems);

    return outerSeq.toByteArray();
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:41,代码来源:CertificateBuilder.java

示例2: encodeTbsCert

import sun.security.x509.AlgorithmId; //导入方法依赖的package包/类
/**
 * Encode the bytes for the TBSCertificate structure:
 * <PRE>
 *  TBSCertificate  ::=  SEQUENCE  {
 *      version         [0]  EXPLICIT Version DEFAULT v1,
 *      serialNumber         CertificateSerialNumber,
 *      signature            AlgorithmIdentifier,
 *      issuer               Name,
 *      validity             Validity,
 *      subject              Name,
 *      subjectPublicKeyInfo SubjectPublicKeyInfo,
 *      issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
 *                        -- If present, version MUST be v2 or v3
 *      subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
 *                        -- If present, version MUST be v2 or v3
 *      extensions      [3]  EXPLICIT Extensions OPTIONAL
 *                        -- If present, version MUST be v3
 *      }
 *
 * @param issuerCert The certificate of the issuing authority, or
 * {@code null} if the resulting certificate is self-signed.
 * @param signAlg The signature algorithm object
 *
 * @return The DER-encoded bytes for the TBSCertificate structure
 *
 * @throws IOException if an encoding error occurs.
 */
private byte[] encodeTbsCert(X509Certificate issuerCert,
        AlgorithmId signAlg) throws IOException {
    DerOutputStream tbsCertSeq = new DerOutputStream();
    DerOutputStream tbsCertItems = new DerOutputStream();

    // Hardcode to V3
    byte[] v3int = {0x02, 0x01, 0x02};
    tbsCertItems.write(DerValue.createTag(DerValue.TAG_CONTEXT, true,
            (byte)0), v3int);

    // Serial Number
    SerialNumber sn = new SerialNumber(serialNumber);
    sn.encode(tbsCertItems);

    // Algorithm ID
    signAlg.derEncode(tbsCertItems);

    // Issuer Name
    if (issuerCert != null) {
        tbsCertItems.write(
                issuerCert.getSubjectX500Principal().getEncoded());
    } else {
        // Self-signed
        tbsCertItems.write(subjectName.getEncoded());
    }

    // Validity period (set as UTCTime)
    DerOutputStream valSeq = new DerOutputStream();
    valSeq.putUTCTime(notBefore);
    valSeq.putUTCTime(notAfter);
    tbsCertItems.write(DerValue.tag_Sequence, valSeq);

    // Subject Name
    tbsCertItems.write(subjectName.getEncoded());

    // SubjectPublicKeyInfo
    tbsCertItems.write(publicKey.getEncoded());

    // TODO: Extensions!
    encodeExtensions(tbsCertItems);

    // Wrap it all up in a SEQUENCE and return the bytes
    tbsCertSeq.write(DerValue.tag_Sequence, tbsCertItems);
    return tbsCertSeq.toByteArray();
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:73,代码来源:CertificateBuilder.java


注:本文中的sun.security.x509.AlgorithmId.derEncode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。