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


Java Krb5.ASN1_PARSE_ERROR属性代码示例

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


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

示例1: getKeys

/**
 * Retrieves an array of secret keys for the client. This is used when
 * the client supplies password but need keys to act as an acceptor. For
 * an initiator, it must be called after AS-REQ is performed (state is OK).
 * For an acceptor, it can be called when this KrbAsReqBuilder object is
 * constructed (state is INIT).
 * @param isInitiator if the caller is an initiator
 * @return generated keys from password. PA-DATA from server might be used.
 * All "default_tkt_enctypes" keys will be generated, Never null.
 * @throws IllegalStateException if not constructed from a password
 * @throws KrbException
 */
public EncryptionKey[] getKeys(boolean isInitiator) throws KrbException {
    checkState(isInitiator?State.REQ_OK:State.INIT, "Cannot get keys");
    if (password != null) {
        int[] eTypes = EType.getDefaults("default_tkt_enctypes");
        EncryptionKey[] result = new EncryptionKey[eTypes.length];

        /*
         * Returns an array of keys. Before KrbAsReqBuilder, all etypes
         * use the same salt which is either the default one or a new salt
         * coming from PA-DATA. After KrbAsReqBuilder, each etype uses its
         * own new salt from PA-DATA. For an etype with no PA-DATA new salt
         * at all, what salt should it use?
         *
         * Commonly, the stored keys are only to be used by an acceptor to
         * decrypt service ticket in AP-REQ. Most impls only allow keys
         * from a keytab on acceptor, but unfortunately (?) Java supports
         * acceptor using password. In this case, if the service ticket is
         * encrypted using an etype which we don't have PA-DATA new salt,
         * using the default salt might be wrong (say, case-insensitive
         * user name). Instead, we would use the new salt of another etype.
         */

        String salt = null;     // the saved new salt
        try {
            for (int i=0; i<eTypes.length; i++) {
                // First round, only calculate those have a PA entry
                PAData.SaltAndParams snp =
                        PAData.getSaltAndParams(eTypes[i], paList);
                if (snp != null) {
                    // Never uses a salt for rc4-hmac, it does not use
                    // a salt at all
                    if (eTypes[i] != EncryptedData.ETYPE_ARCFOUR_HMAC &&
                            snp.salt != null) {
                        salt = snp.salt;
                    }
                    result[i] = EncryptionKey.acquireSecretKey(cname,
                            password,
                            eTypes[i],
                            snp);
                }
            }
            // No new salt from PA, maybe empty, maybe only rc4-hmac
            if (salt == null) salt = cname.getSalt();
            for (int i=0; i<eTypes.length; i++) {
                // Second round, calculate those with no PA entry
                if (result[i] == null) {
                    result[i] = EncryptionKey.acquireSecretKey(password,
                            salt,
                            eTypes[i],
                            null);
                }
            }
        } catch (IOException ioe) {
            KrbException ke = new KrbException(Krb5.ASN1_PARSE_ERROR);
            ke.initCause(ioe);
            throw ke;
        }
        return result;
    } else {
        throw new IllegalStateException("Required password not provided");
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:74,代码来源:KrbAsReqBuilder.java


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