You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/01/12 14:06:36 UTC
[28/50] [abbrv] directory-kerberos git commit: Renaming packages in
haox-kerb projects, using "apache"
Renaming packages in haox-kerb projects, using "apache"
Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/967d7e1c
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/967d7e1c
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/967d7e1c
Branch: refs/heads/master
Commit: 967d7e1cd04b9c0db5438cc226ce3f1936cb2399
Parents: 5a980a4
Author: Drankye <dr...@gmail.com>
Authored: Thu Dec 25 16:54:51 2014 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Thu Dec 25 16:54:51 2014 +0800
----------------------------------------------------------------------
.../kerberos/benchmark/KrbCodecPerfTest.java | 4 +-
.../java/org/haox/kdc/server/HaoxKdcServer.java | 4 +-
.../identitybackend/LdapIdentityBackend.java | 4 +-
.../src/main/java/org/haox/kdc/tool/Kinit.java | 2 +-
.../apache/kerberos/kerb/client/KrbClient.java | 302 +++++++++
.../apache/kerberos/kerb/client/KrbConfig.java | 97 +++
.../kerberos/kerb/client/KrbConfigKey.java | 45 ++
.../apache/kerberos/kerb/client/KrbContext.java | 78 +++
.../apache/kerberos/kerb/client/KrbHandler.java | 80 +++
.../apache/kerberos/kerb/client/KrbOption.java | 72 ++
.../apache/kerberos/kerb/client/KrbOptions.java | 77 +++
.../kerb/client/event/KrbClientEvent.java | 24 +
.../kerb/client/event/KrbClientEventType.java | 10 +
.../client/preauth/AbstractPreauthPlugin.java | 103 +++
.../kerb/client/preauth/FastContext.java | 17 +
.../kerb/client/preauth/KrbPreauth.java | 88 +++
.../kerb/client/preauth/PreauthContext.java | 89 +++
.../kerb/client/preauth/PreauthHandle.java | 53 ++
.../kerb/client/preauth/PreauthHandler.java | 230 +++++++
.../kerb/client/preauth/UserResponseItem.java | 12 +
.../kerb/client/preauth/UserResponser.java | 58 ++
.../client/preauth/builtin/EncTsPreauth.java | 75 +++
.../kerb/client/preauth/builtin/TgtPreauth.java | 47 ++
.../client/preauth/pkinit/PkinitContext.java | 11 +
.../client/preauth/pkinit/PkinitPreauth.java | 214 ++++++
.../preauth/pkinit/PkinitRequestContext.java | 25 +
.../preauth/pkinit/PkinitRequestOpts.java | 21 +
.../kerb/client/preauth/token/TokenContext.java | 9 +
.../kerb/client/preauth/token/TokenPreauth.java | 105 +++
.../preauth/token/TokenRequestContext.java | 13 +
.../kerberos/kerb/client/request/AsRequest.java | 108 +++
.../kerb/client/request/AsRequestWithCert.java | 38 ++
.../client/request/AsRequestWithPasswd.java | 31 +
.../kerb/client/request/AsRequestWithToken.java | 33 +
.../kerb/client/request/KdcRequest.java | 339 ++++++++++
.../kerb/client/request/TgsRequest.java | 117 ++++
.../java/org/haox/kerb/client/KrbClient.java | 302 ---------
.../java/org/haox/kerb/client/KrbConfig.java | 97 ---
.../java/org/haox/kerb/client/KrbConfigKey.java | 45 --
.../java/org/haox/kerb/client/KrbContext.java | 79 ---
.../java/org/haox/kerb/client/KrbHandler.java | 80 ---
.../java/org/haox/kerb/client/KrbOption.java | 72 --
.../java/org/haox/kerb/client/KrbOptions.java | 77 ---
.../haox/kerb/client/event/KrbClientEvent.java | 24 -
.../kerb/client/event/KrbClientEventType.java | 10 -
.../client/preauth/AbstractPreauthPlugin.java | 103 ---
.../haox/kerb/client/preauth/FastContext.java | 17 -
.../haox/kerb/client/preauth/KrbPreauth.java | 88 ---
.../kerb/client/preauth/PreauthContext.java | 89 ---
.../haox/kerb/client/preauth/PreauthHandle.java | 53 --
.../kerb/client/preauth/PreauthHandler.java | 230 -------
.../kerb/client/preauth/UserResponseItem.java | 12 -
.../haox/kerb/client/preauth/UserResponser.java | 58 --
.../client/preauth/builtin/EncTsPreauth.java | 75 ---
.../kerb/client/preauth/builtin/TgtPreauth.java | 47 --
.../client/preauth/pkinit/PkinitContext.java | 11 -
.../client/preauth/pkinit/PkinitPreauth.java | 214 ------
.../preauth/pkinit/PkinitRequestContext.java | 25 -
.../preauth/pkinit/PkinitRequestOpts.java | 21 -
.../kerb/client/preauth/token/TokenContext.java | 9 -
.../kerb/client/preauth/token/TokenPreauth.java | 105 ---
.../preauth/token/TokenRequestContext.java | 13 -
.../org/haox/kerb/client/request/AsRequest.java | 108 ---
.../kerb/client/request/AsRequestWithCert.java | 38 --
.../client/request/AsRequestWithPasswd.java | 31 -
.../kerb/client/request/AsRequestWithToken.java | 33 -
.../haox/kerb/client/request/KdcRequest.java | 339 ----------
.../haox/kerb/client/request/TgsRequest.java | 117 ----
.../src/main/java/org/haox/kerb/KrbThrow.java | 16 -
.../src/main/java/org/haox/kerb/Message.java | 24 -
.../main/java/org/haox/kerb/MessageCode.java | 5 -
.../org/haox/kerb/common/EncryptionUtil.java | 79 ---
.../org/haox/kerb/common/KrbConfHelper.java | 23 -
.../java/org/haox/kerb/common/KrbErrorUtil.java | 48 --
.../haox/kerb/common/KrbStreamingDecoder.java | 23 -
.../main/java/org/haox/kerb/common/KrbUtil.java | 30 -
.../main/java/org/haox/kerb/preauth/PaFlag.java | 30 -
.../java/org/haox/kerb/preauth/PaFlags.java | 18 -
.../haox/kerb/preauth/PluginRequestContext.java | 8 -
.../haox/kerb/preauth/PreauthPluginMeta.java | 13 -
.../kerb/preauth/builtin/EncTsPreauthMeta.java | 26 -
.../kerb/preauth/builtin/TgtPreauthMeta.java | 29 -
.../haox/kerb/preauth/pkinit/IdentityOpts.java | 25 -
.../haox/kerb/preauth/pkinit/IdentityType.java | 10 -
.../haox/kerb/preauth/pkinit/PkinitIdenity.java | 109 ----
.../kerb/preauth/pkinit/PkinitPreauthMeta.java | 27 -
.../haox/kerb/preauth/pkinit/PluginOpts.java | 48 --
.../kerb/preauth/token/TokenPreauthMeta.java | 27 -
.../src/main/resources/kdc-krb5.conf | 25 -
.../kerb-common/src/main/resources/kdc.ldiff | 30 -
.../org/apache/kerberos/kerb/KrbConstant.java | 7 +
.../org/apache/kerberos/kerb/KrbErrorCode.java | 109 ++++
.../apache/kerberos/kerb/KrbErrorException.java | 16 +
.../org/apache/kerberos/kerb/KrbException.java | 24 +
.../apache/kerberos/kerb/codec/KrbCodec.java | 74 +++
.../kerberos/kerb/spec/KerberosString.java | 15 +
.../kerberos/kerb/spec/KerberosStrings.java | 24 +
.../apache/kerberos/kerb/spec/KerberosTime.java | 99 +++
.../kerberos/kerb/spec/KrbAppSequenceType.java | 38 ++
.../org/apache/kerberos/kerb/spec/KrbEnum.java | 5 +
.../apache/kerberos/kerb/spec/KrbIntegers.java | 35 +
.../kerberos/kerb/spec/KrbSequenceOfType.java | 24 +
.../kerberos/kerb/spec/KrbSequenceType.java | 36 +
.../apache/kerberos/kerb/spec/ap/ApOption.java | 39 ++
.../apache/kerberos/kerb/spec/ap/ApOptions.java | 14 +
.../org/apache/kerberos/kerb/spec/ap/ApRep.java | 46 ++
.../org/apache/kerberos/kerb/spec/ap/ApReq.java | 70 ++
.../kerberos/kerb/spec/ap/Authenticator.java | 125 ++++
.../kerberos/kerb/spec/ap/EncAPRepPart.java | 66 ++
.../kerberos/kerb/spec/common/AdToken.java | 30 +
.../kerb/spec/common/AuthorizationData.java | 13 +
.../spec/common/AuthorizationDataEntry.java | 43 ++
.../kerb/spec/common/AuthorizationType.java | 124 ++++
.../kerberos/kerb/spec/common/CheckSum.java | 76 +++
.../kerberos/kerb/spec/common/CheckSumType.java | 96 +++
.../kerb/spec/common/EncryptedData.java | 77 +++
.../kerb/spec/common/EncryptionKey.java | 88 +++
.../kerb/spec/common/EncryptionType.java | 113 ++++
.../kerberos/kerb/spec/common/EtypeInfo.java | 10 +
.../kerberos/kerb/spec/common/EtypeInfo2.java | 10 +
.../kerb/spec/common/EtypeInfo2Entry.java | 54 ++
.../kerb/spec/common/EtypeInfoEntry.java | 42 ++
.../kerberos/kerb/spec/common/HostAddrType.java | 81 +++
.../kerberos/kerb/spec/common/HostAddress.java | 90 +++
.../kerb/spec/common/HostAddresses.java | 24 +
.../kerberos/kerb/spec/common/KeyUsage.java | 109 ++++
.../kerberos/kerb/spec/common/KrbError.java | 147 +++++
.../kerberos/kerb/spec/common/KrbFlags.java | 99 +++
.../kerberos/kerb/spec/common/KrbMessage.java | 35 +
.../kerb/spec/common/KrbMessageType.java | 40 ++
.../kerberos/kerb/spec/common/KrbToken.java | 80 +++
.../kerb/spec/common/KrbTokenEncoder.java | 9 +
.../kerberos/kerb/spec/common/LastReq.java | 13 +
.../kerberos/kerb/spec/common/LastReqEntry.java | 43 ++
.../kerberos/kerb/spec/common/LastReqType.java | 43 ++
.../kerberos/kerb/spec/common/MethodData.java | 11 +
.../kerberos/kerb/spec/common/NameType.java | 35 +
.../kerb/spec/common/PrincipalName.java | 180 +++++
.../apache/kerberos/kerb/spec/common/Realm.java | 15 +
.../kerberos/kerb/spec/common/SamType.java | 47 ++
.../kerberos/kerb/spec/common/TokenFormat.java | 31 +
.../kerb/spec/common/TransitedEncoding.java | 43 ++
.../kerb/spec/common/TransitedEncodingType.java | 32 +
.../kerberos/kerb/spec/fast/ArmorType.java | 31 +
.../kerberos/kerb/spec/fast/FastOption.java | 32 +
.../kerberos/kerb/spec/fast/FastOptions.java | 14 +
.../kerberos/kerb/spec/fast/KrbFastArmor.java | 45 ++
.../kerb/spec/fast/KrbFastArmoredRep.java | 33 +
.../kerb/spec/fast/KrbFastArmoredReq.java | 76 +++
.../kerb/spec/fast/KrbFastFinished.java | 63 ++
.../kerberos/kerb/spec/fast/KrbFastReq.java | 59 ++
.../kerb/spec/fast/KrbFastResponse.java | 71 ++
.../kerberos/kerb/spec/fast/PaAuthnEntry.java | 61 ++
.../kerberos/kerb/spec/fast/PaAuthnSet.java | 10 +
.../kerberos/kerb/spec/fast/PaFxFastReply.java | 29 +
.../kerb/spec/fast/PaFxFastRequest.java | 29 +
.../apache/kerberos/kerb/spec/kdc/AsRep.java | 13 +
.../apache/kerberos/kerb/spec/kdc/AsReq.java | 12 +
.../kerberos/kerb/spec/kdc/EncAsRepPart.java | 12 +
.../kerberos/kerb/spec/kdc/EncKdcRepPart.java | 158 +++++
.../kerberos/kerb/spec/kdc/EncTgsRepPart.java | 12 +
.../kerberos/kerb/spec/kdc/KdcOption.java | 60 ++
.../kerberos/kerb/spec/kdc/KdcOptions.java | 14 +
.../apache/kerberos/kerb/spec/kdc/KdcRep.java | 97 +++
.../apache/kerberos/kerb/spec/kdc/KdcReq.java | 57 ++
.../kerberos/kerb/spec/kdc/KdcReqBody.java | 190 ++++++
.../apache/kerberos/kerb/spec/kdc/TgsRep.java | 12 +
.../apache/kerberos/kerb/spec/kdc/TgsReq.java | 13 +
.../kerb/spec/pa/PaAuthenticationSet.java | 10 +
.../kerb/spec/pa/PaAuthenticationSetElem.java | 55 ++
.../apache/kerberos/kerb/spec/pa/PaData.java | 22 +
.../kerberos/kerb/spec/pa/PaDataEntry.java | 50 ++
.../kerberos/kerb/spec/pa/PaDataType.java | 73 +++
.../kerberos/kerb/spec/pa/PaEncTsEnc.java | 47 ++
.../kerberos/kerb/spec/pa/otp/OtpTokenInfo.java | 50 ++
.../kerb/spec/pa/otp/PaOtpChallenge.java | 36 +
.../spec/pa/pkinit/AdInitialVerifiedCas.java | 9 +
.../spec/pa/pkinit/AlgorithmIdentifiers.java | 11 +
.../kerberos/kerb/spec/pa/pkinit/AuthPack.java | 63 ++
.../kerberos/kerb/spec/pa/pkinit/DHNonce.java | 9 +
.../kerberos/kerb/spec/pa/pkinit/DHRepInfo.java | 41 ++
.../pa/pkinit/ExternalPrincipalIdentifier.java | 52 ++
.../kerb/spec/pa/pkinit/KdcDHKeyInfo.java | 46 ++
.../kerb/spec/pa/pkinit/Krb5PrincipalName.java | 42 ++
.../kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java | 41 ++
.../kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java | 52 ++
.../kerb/spec/pa/pkinit/PkAuthenticator.java | 72 ++
.../kerb/spec/pa/pkinit/ReplyKeyPack.java | 42 ++
.../kerb/spec/pa/pkinit/TdDhParameters.java | 7 +
.../kerb/spec/pa/pkinit/TrustedCertifiers.java | 10 +
.../kerb/spec/pa/token/PaTokenChallenge.java | 21 +
.../kerb/spec/pa/token/PaTokenRequest.java | 42 ++
.../kerberos/kerb/spec/pa/token/TokenFlag.java | 32 +
.../kerberos/kerb/spec/pa/token/TokenFlags.java | 20 +
.../kerberos/kerb/spec/pa/token/TokenInfo.java | 43 ++
.../kerberos/kerb/spec/pa/token/TokenInfos.java | 10 +
.../kerb/spec/ticket/AbstractServiceTicket.java | 30 +
.../kerb/spec/ticket/EncTicketPart.java | 145 ++++
.../kerb/spec/ticket/ServiceTicket.java | 9 +
.../kerberos/kerb/spec/ticket/TgtTicket.java | 17 +
.../kerberos/kerb/spec/ticket/Ticket.java | 80 +++
.../kerberos/kerb/spec/ticket/TicketFlag.java | 43 ++
.../kerberos/kerb/spec/ticket/TicketFlags.java | 20 +
.../kerberos/kerb/spec/ticket/Tickets.java | 10 +
.../kerb/spec/x509/AlgorithmIdentifier.java | 39 ++
.../kerb/spec/x509/SubjectPublicKeyInfo.java | 41 ++
.../main/java/org/haox/kerb/KrbConstant.java | 7 -
.../main/java/org/haox/kerb/KrbErrorCode.java | 109 ----
.../java/org/haox/kerb/KrbErrorException.java | 16 -
.../main/java/org/haox/kerb/KrbException.java | 24 -
.../main/java/org/haox/kerb/codec/KrbCodec.java | 74 ---
.../java/org/haox/kerb/spec/KerberosString.java | 15 -
.../org/haox/kerb/spec/KerberosStrings.java | 24 -
.../java/org/haox/kerb/spec/KerberosTime.java | 99 ---
.../org/haox/kerb/spec/KrbAppSequenceType.java | 38 --
.../main/java/org/haox/kerb/spec/KrbEnum.java | 5 -
.../java/org/haox/kerb/spec/KrbIntegers.java | 35 -
.../org/haox/kerb/spec/KrbSequenceOfType.java | 24 -
.../org/haox/kerb/spec/KrbSequenceType.java | 36 -
.../java/org/haox/kerb/spec/ap/ApOption.java | 39 --
.../java/org/haox/kerb/spec/ap/ApOptions.java | 14 -
.../main/java/org/haox/kerb/spec/ap/ApRep.java | 46 --
.../main/java/org/haox/kerb/spec/ap/ApReq.java | 70 --
.../org/haox/kerb/spec/ap/Authenticator.java | 125 ----
.../org/haox/kerb/spec/ap/EncAPRepPart.java | 66 --
.../java/org/haox/kerb/spec/common/AdToken.java | 30 -
.../kerb/spec/common/AuthorizationData.java | 13 -
.../spec/common/AuthorizationDataEntry.java | 43 --
.../kerb/spec/common/AuthorizationType.java | 124 ----
.../org/haox/kerb/spec/common/CheckSum.java | 76 ---
.../org/haox/kerb/spec/common/CheckSumType.java | 96 ---
.../haox/kerb/spec/common/EncryptedData.java | 77 ---
.../haox/kerb/spec/common/EncryptionKey.java | 88 ---
.../haox/kerb/spec/common/EncryptionType.java | 113 ----
.../org/haox/kerb/spec/common/EtypeInfo.java | 10 -
.../org/haox/kerb/spec/common/EtypeInfo2.java | 10 -
.../haox/kerb/spec/common/EtypeInfo2Entry.java | 54 --
.../haox/kerb/spec/common/EtypeInfoEntry.java | 42 --
.../org/haox/kerb/spec/common/HostAddrType.java | 81 ---
.../org/haox/kerb/spec/common/HostAddress.java | 90 ---
.../haox/kerb/spec/common/HostAddresses.java | 24 -
.../org/haox/kerb/spec/common/KeyUsage.java | 109 ----
.../org/haox/kerb/spec/common/KrbError.java | 147 -----
.../org/haox/kerb/spec/common/KrbFlags.java | 99 ---
.../org/haox/kerb/spec/common/KrbMessage.java | 35 -
.../haox/kerb/spec/common/KrbMessageType.java | 40 --
.../org/haox/kerb/spec/common/KrbToken.java | 80 ---
.../haox/kerb/spec/common/KrbTokenEncoder.java | 9 -
.../java/org/haox/kerb/spec/common/LastReq.java | 13 -
.../org/haox/kerb/spec/common/LastReqEntry.java | 43 --
.../org/haox/kerb/spec/common/LastReqType.java | 43 --
.../org/haox/kerb/spec/common/MethodData.java | 11 -
.../org/haox/kerb/spec/common/NameType.java | 35 -
.../haox/kerb/spec/common/PrincipalName.java | 180 -----
.../java/org/haox/kerb/spec/common/Realm.java | 15 -
.../java/org/haox/kerb/spec/common/SamType.java | 47 --
.../org/haox/kerb/spec/common/TokenFormat.java | 31 -
.../kerb/spec/common/TransitedEncoding.java | 43 --
.../kerb/spec/common/TransitedEncodingType.java | 32 -
.../java/org/haox/kerb/spec/fast/ArmorType.java | 31 -
.../org/haox/kerb/spec/fast/FastOption.java | 32 -
.../org/haox/kerb/spec/fast/FastOptions.java | 14 -
.../org/haox/kerb/spec/fast/KrbFastArmor.java | 45 --
.../haox/kerb/spec/fast/KrbFastArmoredRep.java | 33 -
.../haox/kerb/spec/fast/KrbFastArmoredReq.java | 76 ---
.../haox/kerb/spec/fast/KrbFastFinished.java | 63 --
.../org/haox/kerb/spec/fast/KrbFastReq.java | 59 --
.../haox/kerb/spec/fast/KrbFastResponse.java | 71 --
.../org/haox/kerb/spec/fast/PaAuthnEntry.java | 61 --
.../org/haox/kerb/spec/fast/PaAuthnSet.java | 11 -
.../org/haox/kerb/spec/fast/PaFxFastReply.java | 29 -
.../haox/kerb/spec/fast/PaFxFastRequest.java | 29 -
.../main/java/org/haox/kerb/spec/kdc/AsRep.java | 13 -
.../main/java/org/haox/kerb/spec/kdc/AsReq.java | 12 -
.../org/haox/kerb/spec/kdc/EncAsRepPart.java | 12 -
.../org/haox/kerb/spec/kdc/EncKdcRepPart.java | 158 -----
.../org/haox/kerb/spec/kdc/EncTgsRepPart.java | 12 -
.../java/org/haox/kerb/spec/kdc/KdcOption.java | 60 --
.../java/org/haox/kerb/spec/kdc/KdcOptions.java | 14 -
.../java/org/haox/kerb/spec/kdc/KdcRep.java | 97 ---
.../java/org/haox/kerb/spec/kdc/KdcReq.java | 57 --
.../java/org/haox/kerb/spec/kdc/KdcReqBody.java | 190 ------
.../java/org/haox/kerb/spec/kdc/TgsRep.java | 12 -
.../java/org/haox/kerb/spec/kdc/TgsReq.java | 13 -
.../haox/kerb/spec/pa/PaAuthenticationSet.java | 10 -
.../kerb/spec/pa/PaAuthenticationSetElem.java | 55 --
.../main/java/org/haox/kerb/spec/pa/PaData.java | 22 -
.../java/org/haox/kerb/spec/pa/PaDataEntry.java | 50 --
.../java/org/haox/kerb/spec/pa/PaDataType.java | 73 ---
.../java/org/haox/kerb/spec/pa/PaEncTsEnc.java | 47 --
.../org/haox/kerb/spec/pa/otp/OtpTokenInfo.java | 50 --
.../haox/kerb/spec/pa/otp/PaOtpChallenge.java | 36 -
.../spec/pa/pkinit/AdInitialVerifiedCas.java | 9 -
.../spec/pa/pkinit/AlgorithmIdentifiers.java | 11 -
.../org/haox/kerb/spec/pa/pkinit/AuthPack.java | 63 --
.../org/haox/kerb/spec/pa/pkinit/DHNonce.java | 9 -
.../org/haox/kerb/spec/pa/pkinit/DHRepInfo.java | 41 --
.../pa/pkinit/ExternalPrincipalIdentifier.java | 52 --
.../haox/kerb/spec/pa/pkinit/KdcDHKeyInfo.java | 46 --
.../kerb/spec/pa/pkinit/Krb5PrincipalName.java | 42 --
.../org/haox/kerb/spec/pa/pkinit/PaPkAsRep.java | 41 --
.../org/haox/kerb/spec/pa/pkinit/PaPkAsReq.java | 52 --
.../kerb/spec/pa/pkinit/PkAuthenticator.java | 72 --
.../haox/kerb/spec/pa/pkinit/ReplyKeyPack.java | 42 --
.../kerb/spec/pa/pkinit/TdDhParameters.java | 7 -
.../kerb/spec/pa/pkinit/TrustedCertifiers.java | 10 -
.../kerb/spec/pa/token/PaTokenChallenge.java | 21 -
.../haox/kerb/spec/pa/token/PaTokenRequest.java | 42 --
.../org/haox/kerb/spec/pa/token/TokenFlag.java | 32 -
.../org/haox/kerb/spec/pa/token/TokenFlags.java | 20 -
.../org/haox/kerb/spec/pa/token/TokenInfo.java | 43 --
.../org/haox/kerb/spec/pa/token/TokenInfos.java | 11 -
.../kerb/spec/ticket/AbstractServiceTicket.java | 30 -
.../haox/kerb/spec/ticket/EncTicketPart.java | 145 ----
.../haox/kerb/spec/ticket/ServiceTicket.java | 9 -
.../org/haox/kerb/spec/ticket/TgtTicket.java | 17 -
.../java/org/haox/kerb/spec/ticket/Ticket.java | 80 ---
.../org/haox/kerb/spec/ticket/TicketFlag.java | 43 --
.../org/haox/kerb/spec/ticket/TicketFlags.java | 20 -
.../java/org/haox/kerb/spec/ticket/Tickets.java | 10 -
.../kerb/spec/x509/AlgorithmIdentifier.java | 39 --
.../kerb/spec/x509/SubjectPublicKeyInfo.java | 41 --
.../kerb/crypto/AbstractCryptoTypeHandler.java | 49 ++
.../apache/kerberos/kerb/crypto/BytesUtil.java | 144 ++++
.../apache/kerberos/kerb/crypto/Camellia.java | 229 +++++++
.../kerberos/kerb/crypto/CamelliaKey.java | 412 ++++++++++++
.../kerberos/kerb/crypto/CheckSumHandler.java | 134 ++++
.../kerb/crypto/CheckSumTypeHandler.java | 38 ++
.../org/apache/kerberos/kerb/crypto/Cmac.java | 156 +++++
.../apache/kerberos/kerb/crypto/Confounder.java | 14 +
.../org/apache/kerberos/kerb/crypto/Crc32.java | 99 +++
.../kerberos/kerb/crypto/CryptoTypeHandler.java | 15 +
.../org/apache/kerberos/kerb/crypto/Des.java | 22 +
.../kerberos/kerb/crypto/EncTypeHandler.java | 39 ++
.../kerberos/kerb/crypto/EncryptionHandler.java | 154 +++++
.../org/apache/kerberos/kerb/crypto/Hmac.java | 53 ++
.../org/apache/kerberos/kerb/crypto/Md4.java | 269 ++++++++
.../org/apache/kerberos/kerb/crypto/Nfold.java | 57 ++
.../org/apache/kerberos/kerb/crypto/Nonce.java | 13 +
.../org/apache/kerberos/kerb/crypto/Pbkdf.java | 21 +
.../org/apache/kerberos/kerb/crypto/Random.java | 14 +
.../org/apache/kerberos/kerb/crypto/Rc4.java | 31 +
.../org/apache/kerberos/kerb/crypto/Util.java | 24 +
.../cksum/AbstractCheckSumTypeHandler.java | 93 +++
.../cksum/AbstractKeyedCheckSumTypeHandler.java | 56 ++
.../crypto/cksum/CmacCamellia128CheckSum.java | 34 +
.../crypto/cksum/CmacCamellia256CheckSum.java | 34 +
.../kerb/crypto/cksum/CmacKcCheckSum.java | 17 +
.../crypto/cksum/ConfounderedDesCheckSum.java | 101 +++
.../kerb/crypto/cksum/Crc32CheckSum.java | 16 +
.../kerb/crypto/cksum/DesCbcCheckSum.java | 14 +
.../kerb/crypto/cksum/HashProvider.java | 16 +
.../kerb/crypto/cksum/HmacKcCheckSum.java | 18 +
.../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java | 54 ++
.../crypto/cksum/HmacSha1Aes128CheckSum.java | 34 +
.../crypto/cksum/HmacSha1Aes256CheckSum.java | 34 +
.../kerb/crypto/cksum/HmacSha1Des3CheckSum.java | 34 +
.../kerberos/kerb/crypto/cksum/KcCheckSum.java | 29 +
.../kerb/crypto/cksum/Md5HmacRc4CheckSum.java | 51 ++
.../kerb/crypto/cksum/RsaMd4CheckSum.java | 16 +
.../kerb/crypto/cksum/RsaMd4DesCheckSum.java | 15 +
.../kerb/crypto/cksum/RsaMd5CheckSum.java | 16 +
.../kerb/crypto/cksum/RsaMd5DesCheckSum.java | 15 +
.../kerb/crypto/cksum/Sha1CheckSum.java | 16 +
.../cksum/provider/AbstractHashProvider.java | 33 +
.../AbstractUnkeyedCheckSumTypeHandler.java | 35 +
.../crypto/cksum/provider/Crc32Provider.java | 21 +
.../kerb/crypto/cksum/provider/Md4Provider.java | 15 +
.../kerb/crypto/cksum/provider/Md5Provider.java | 8 +
.../provider/MessageDigestHashProvider.java | 37 ++
.../crypto/cksum/provider/Sha1Provider.java | 8 +
.../kerb/crypto/enc/AbstractEncTypeHandler.java | 141 ++++
.../kerb/crypto/enc/Aes128CtsHmacSha1Enc.java | 29 +
.../kerb/crypto/enc/Aes256CtsHmacSha1Enc.java | 29 +
.../kerb/crypto/enc/Camellia128CtsCmacEnc.java | 22 +
.../kerb/crypto/enc/Camellia256CtsCmacEnc.java | 22 +
.../kerb/crypto/enc/Des3CbcSha1Enc.java | 23 +
.../kerberos/kerb/crypto/enc/DesCbcCrcEnc.java | 36 +
.../kerberos/kerb/crypto/enc/DesCbcEnc.java | 69 ++
.../kerberos/kerb/crypto/enc/DesCbcMd4Enc.java | 20 +
.../kerberos/kerb/crypto/enc/DesCbcMd5Enc.java | 20 +
.../kerb/crypto/enc/EncryptProvider.java | 24 +
.../kerberos/kerb/crypto/enc/KeKiCmacEnc.java | 34 +
.../kerberos/kerb/crypto/enc/KeKiEnc.java | 110 ++++
.../kerb/crypto/enc/KeKiHmacSha1Enc.java | 31 +
.../kerberos/kerb/crypto/enc/Rc4HmacEnc.java | 130 ++++
.../kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java | 14 +
.../enc/provider/AbstractEncryptProvider.java | 80 +++
.../crypto/enc/provider/Aes128Provider.java | 8 +
.../crypto/enc/provider/Aes256Provider.java | 8 +
.../kerb/crypto/enc/provider/AesProvider.java | 43 ++
.../enc/provider/Camellia128Provider.java | 8 +
.../enc/provider/Camellia256Provider.java | 8 +
.../crypto/enc/provider/CamelliaProvider.java | 39 ++
.../kerb/crypto/enc/provider/Des3Provider.java | 46 ++
.../kerb/crypto/enc/provider/DesProvider.java | 79 +++
.../kerb/crypto/enc/provider/Rc4Provider.java | 30 +
.../kerb/crypto/key/AbstractKeyMaker.java | 67 ++
.../kerberos/kerb/crypto/key/AesKeyMaker.java | 46 ++
.../kerb/crypto/key/CamelliaKeyMaker.java | 102 +++
.../kerberos/kerb/crypto/key/Des3KeyMaker.java | 101 +++
.../kerberos/kerb/crypto/key/DesKeyMaker.java | 157 +++++
.../kerberos/kerb/crypto/key/DkKeyMaker.java | 54 ++
.../kerberos/kerb/crypto/key/KeyMaker.java | 10 +
.../kerberos/kerb/crypto/key/Rc4KeyMaker.java | 33 +
.../kerb/crypto/AbstractCryptoTypeHandler.java | 49 --
.../java/org/haox/kerb/crypto/BytesUtil.java | 144 ----
.../java/org/haox/kerb/crypto/Camellia.java | 229 -------
.../java/org/haox/kerb/crypto/CamelliaKey.java | 412 ------------
.../org/haox/kerb/crypto/CheckSumHandler.java | 134 ----
.../haox/kerb/crypto/CheckSumTypeHandler.java | 38 --
.../main/java/org/haox/kerb/crypto/Cmac.java | 156 -----
.../java/org/haox/kerb/crypto/Confounder.java | 14 -
.../main/java/org/haox/kerb/crypto/Crc32.java | 99 ---
.../org/haox/kerb/crypto/CryptoTypeHandler.java | 15 -
.../src/main/java/org/haox/kerb/crypto/Des.java | 22 -
.../org/haox/kerb/crypto/EncTypeHandler.java | 39 --
.../org/haox/kerb/crypto/EncryptionHandler.java | 154 -----
.../main/java/org/haox/kerb/crypto/Hmac.java | 53 --
.../src/main/java/org/haox/kerb/crypto/Md4.java | 269 --------
.../main/java/org/haox/kerb/crypto/Nfold.java | 57 --
.../main/java/org/haox/kerb/crypto/Nonce.java | 13 -
.../main/java/org/haox/kerb/crypto/Pbkdf.java | 21 -
.../main/java/org/haox/kerb/crypto/Random.java | 14 -
.../src/main/java/org/haox/kerb/crypto/Rc4.java | 31 -
.../main/java/org/haox/kerb/crypto/Util.java | 24 -
.../cksum/AbstractCheckSumTypeHandler.java | 93 ---
.../cksum/AbstractKeyedCheckSumTypeHandler.java | 56 --
.../crypto/cksum/CmacCamellia128CheckSum.java | 34 -
.../crypto/cksum/CmacCamellia256CheckSum.java | 34 -
.../haox/kerb/crypto/cksum/CmacKcCheckSum.java | 17 -
.../crypto/cksum/ConfounderedDesCheckSum.java | 101 ---
.../haox/kerb/crypto/cksum/Crc32CheckSum.java | 17 -
.../haox/kerb/crypto/cksum/DesCbcCheckSum.java | 14 -
.../haox/kerb/crypto/cksum/HashProvider.java | 16 -
.../haox/kerb/crypto/cksum/HmacKcCheckSum.java | 18 -
.../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java | 54 --
.../crypto/cksum/HmacSha1Aes128CheckSum.java | 34 -
.../crypto/cksum/HmacSha1Aes256CheckSum.java | 34 -
.../kerb/crypto/cksum/HmacSha1Des3CheckSum.java | 34 -
.../org/haox/kerb/crypto/cksum/KcCheckSum.java | 29 -
.../kerb/crypto/cksum/Md5HmacRc4CheckSum.java | 51 --
.../haox/kerb/crypto/cksum/RsaMd4CheckSum.java | 16 -
.../kerb/crypto/cksum/RsaMd4DesCheckSum.java | 15 -
.../haox/kerb/crypto/cksum/RsaMd5CheckSum.java | 17 -
.../kerb/crypto/cksum/RsaMd5DesCheckSum.java | 15 -
.../haox/kerb/crypto/cksum/Sha1CheckSum.java | 16 -
.../cksum/provider/AbstractHashProvider.java | 33 -
.../AbstractUnkeyedCheckSumTypeHandler.java | 35 -
.../crypto/cksum/provider/Crc32Provider.java | 21 -
.../kerb/crypto/cksum/provider/Md4Provider.java | 15 -
.../kerb/crypto/cksum/provider/Md5Provider.java | 10 -
.../provider/MessageDigestHashProvider.java | 37 --
.../crypto/cksum/provider/Sha1Provider.java | 10 -
.../kerb/crypto/enc/AbstractEncTypeHandler.java | 141 ----
.../kerb/crypto/enc/Aes128CtsHmacSha1Enc.java | 29 -
.../kerb/crypto/enc/Aes256CtsHmacSha1Enc.java | 29 -
.../kerb/crypto/enc/Camellia128CtsCmacEnc.java | 22 -
.../kerb/crypto/enc/Camellia256CtsCmacEnc.java | 22 -
.../haox/kerb/crypto/enc/Des3CbcSha1Enc.java | 23 -
.../org/haox/kerb/crypto/enc/DesCbcCrcEnc.java | 36 -
.../org/haox/kerb/crypto/enc/DesCbcEnc.java | 69 --
.../org/haox/kerb/crypto/enc/DesCbcMd4Enc.java | 20 -
.../org/haox/kerb/crypto/enc/DesCbcMd5Enc.java | 20 -
.../haox/kerb/crypto/enc/EncryptProvider.java | 24 -
.../org/haox/kerb/crypto/enc/KeKiCmacEnc.java | 34 -
.../java/org/haox/kerb/crypto/enc/KeKiEnc.java | 110 ----
.../haox/kerb/crypto/enc/KeKiHmacSha1Enc.java | 31 -
.../org/haox/kerb/crypto/enc/Rc4HmacEnc.java | 130 ----
.../org/haox/kerb/crypto/enc/Rc4HmacExpEnc.java | 14 -
.../enc/provider/AbstractEncryptProvider.java | 80 ---
.../crypto/enc/provider/Aes128Provider.java | 8 -
.../crypto/enc/provider/Aes256Provider.java | 8 -
.../kerb/crypto/enc/provider/AesProvider.java | 43 --
.../enc/provider/Camellia128Provider.java | 8 -
.../enc/provider/Camellia256Provider.java | 8 -
.../crypto/enc/provider/CamelliaProvider.java | 39 --
.../kerb/crypto/enc/provider/Des3Provider.java | 46 --
.../kerb/crypto/enc/provider/DesProvider.java | 79 ---
.../kerb/crypto/enc/provider/Rc4Provider.java | 30 -
.../haox/kerb/crypto/key/AbstractKeyMaker.java | 67 --
.../org/haox/kerb/crypto/key/AesKeyMaker.java | 46 --
.../haox/kerb/crypto/key/CamelliaKeyMaker.java | 102 ---
.../org/haox/kerb/crypto/key/Des3KeyMaker.java | 101 ---
.../org/haox/kerb/crypto/key/DesKeyMaker.java | 157 -----
.../org/haox/kerb/crypto/key/DkKeyMaker.java | 54 --
.../java/org/haox/kerb/crypto/key/KeyMaker.java | 10 -
.../org/haox/kerb/crypto/key/Rc4KeyMaker.java | 33 -
.../kerberos/kerb/crypto/CamelliaEncTest.java | 93 +++
.../kerberos/kerb/crypto/CheckSumTest.java | 89 +++
.../kerberos/kerb/crypto/CheckSumsTest.java | 163 +++++
.../apache/kerberos/kerb/crypto/CmacTest.java | 65 ++
.../apache/kerberos/kerb/crypto/Crc32Test.java | 99 +++
.../kerberos/kerb/crypto/DecryptionTest.java | 502 ++++++++++++++
.../kerberos/kerb/crypto/KeyDeriveTest.java | 208 ++++++
.../org/apache/kerberos/kerb/crypto/Util.java | 39 ++
.../java/org/haox/kerb/CamelliaEncTest.java | 93 ---
.../test/java/org/haox/kerb/CheckSumTest.java | 90 ---
.../test/java/org/haox/kerb/CheckSumsTest.java | 165 -----
.../src/test/java/org/haox/kerb/CmacTest.java | 66 --
.../src/test/java/org/haox/kerb/Crc32Test.java | 100 ---
.../test/java/org/haox/kerb/DecryptionTest.java | 503 --------------
.../test/java/org/haox/kerb/KeyDeriveTest.java | 208 ------
.../src/test/java/org/haox/kerb/Util.java | 39 --
.../kerberos/kerb/identity/Attribute.java | 17 +
.../kerb/identity/ComplexAttribute.java | 23 +
.../apache/kerberos/kerb/identity/Identity.java | 48 ++
.../kerberos/kerb/identity/IdentityService.java | 12 +
.../kerberos/kerb/identity/KrbAttributes.java | 6 +
.../kerberos/kerb/identity/KrbIdentity.java | 107 +++
.../kerberos/kerb/identity/SimpleAttribute.java | 18 +
.../backend/AbstractIdentityBackend.java | 7 +
.../backend/InMemoryIdentityBackend.java | 57 ++
.../identity/backend/SimpleIdentityBackend.java | 27 +
.../java/org/haox/kerb/identity/Attribute.java | 17 -
.../haox/kerb/identity/ComplexAttribute.java | 23 -
.../java/org/haox/kerb/identity/Identity.java | 48 --
.../org/haox/kerb/identity/IdentityService.java | 12 -
.../org/haox/kerb/identity/KrbAttributes.java | 6 -
.../org/haox/kerb/identity/KrbIdentity.java | 107 ---
.../org/haox/kerb/identity/SimpleAttribute.java | 18 -
.../backend/AbstractIdentityBackend.java | 7 -
.../backend/InMemoryIdentityBackend.java | 57 --
.../identity/backend/SimpleIdentityBackend.java | 27 -
.../src/test/resources/kdc-krb5.conf | 25 -
.../kerb-identity/src/test/resources/kdc.ldiff | 30 -
.../kerberos/kerb/server/TestKdcServer.java | 103 +++
.../org/haox/kerb/server/TestKdcServer.java | 103 ---
.../apache/kerberos/kerb/server/KdcTest.java | 30 +
.../kerberos/kerb/server/KdcTestBase.java | 49 ++
.../kerberos/kerb/server/WithCertKdcTest.java | 71 ++
.../kerberos/kerb/server/WithTokenKdcTest.java | 38 ++
.../test/java/org/haox/kerb/server/KdcTest.java | 30 -
.../java/org/haox/kerb/server/KdcTestBase.java | 48 --
.../org/haox/kerb/server/WithCertKdcTest.java | 71 --
.../org/haox/kerb/server/WithTokenKdcTest.java | 38 --
.../src/test/resources/kdc-krb5.conf | 25 -
.../kerb-kdc-test/src/test/resources/kdc.ldiff | 30 -
.../apache/kerberos/kerb/server/KdcConfig.java | 105 +++
.../kerberos/kerb/server/KdcConfigKey.java | 47 ++
.../apache/kerberos/kerb/server/KdcContext.java | 72 ++
.../apache/kerberos/kerb/server/KdcHandler.java | 129 ++++
.../apache/kerberos/kerb/server/KdcServer.java | 164 +++++
.../kerberos/kerb/server/SimpleKdcServer.java | 24 +
.../server/preauth/AbstractPreauthPlugin.java | 72 ++
.../kerb/server/preauth/FastContext.java | 17 +
.../kerb/server/preauth/KdcPreauth.java | 62 ++
.../kerb/server/preauth/PreauthContext.java | 25 +
.../kerb/server/preauth/PreauthHandle.java | 37 ++
.../kerb/server/preauth/PreauthHandler.java | 105 +++
.../server/preauth/builtin/EncTsPreauth.java | 41 ++
.../kerb/server/preauth/builtin/TgtPreauth.java | 26 +
.../server/preauth/pkinit/PkinitKdcContext.java | 11 +
.../server/preauth/pkinit/PkinitPreauth.java | 74 +++
.../preauth/pkinit/PkinitRequestContext.java | 11 +
.../preauth/token/TokenRequestContext.java | 13 +
.../kerb/server/replay/CacheService.java | 7 +
.../kerb/server/replay/ReplayCheckService.java | 6 +
.../server/replay/ReplayCheckServiceImpl.java | 21 +
.../kerb/server/replay/RequestRecord.java | 39 ++
.../kerb/server/replay/SimpleCacheService.java | 27 +
.../kerberos/kerb/server/request/AsRequest.java | 72 ++
.../kerb/server/request/KdcRequest.java | 502 ++++++++++++++
.../kerb/server/request/TgsRequest.java | 177 +++++
.../java/org/haox/kerb/server/KdcConfig.java | 105 ---
.../java/org/haox/kerb/server/KdcConfigKey.java | 47 --
.../java/org/haox/kerb/server/KdcContext.java | 72 --
.../java/org/haox/kerb/server/KdcHandler.java | 129 ----
.../java/org/haox/kerb/server/KdcServer.java | 164 -----
.../org/haox/kerb/server/SimpleKdcServer.java | 24 -
.../server/preauth/AbstractPreauthPlugin.java | 72 --
.../haox/kerb/server/preauth/FastContext.java | 17 -
.../haox/kerb/server/preauth/KdcPreauth.java | 62 --
.../kerb/server/preauth/PreauthContext.java | 25 -
.../haox/kerb/server/preauth/PreauthHandle.java | 37 --
.../kerb/server/preauth/PreauthHandler.java | 105 ---
.../server/preauth/builtin/EncTsPreauth.java | 41 --
.../kerb/server/preauth/builtin/TgtPreauth.java | 26 -
.../server/preauth/pkinit/PkinitKdcContext.java | 11 -
.../server/preauth/pkinit/PkinitPreauth.java | 74 ---
.../preauth/pkinit/PkinitRequestContext.java | 11 -
.../preauth/token/TokenRequestContext.java | 13 -
.../haox/kerb/server/replay/CacheService.java | 7 -
.../kerb/server/replay/ReplayCheckService.java | 6 -
.../server/replay/ReplayCheckServiceImpl.java | 21 -
.../haox/kerb/server/replay/RequestRecord.java | 39 --
.../kerb/server/replay/SimpleCacheService.java | 27 -
.../org/haox/kerb/server/request/AsRequest.java | 72 --
.../haox/kerb/server/request/KdcRequest.java | 502 --------------
.../haox/kerb/server/request/TgsRequest.java | 177 -----
.../apache/kerberos/kerb/server/KdcTest.java | 51 ++
.../test/java/org/haox/kerb/server/KdcTest.java | 51 --
.../src/test/resources/kdc-krb5.conf | 25 -
.../kerb-server/src/test/resources/kdc.ldiff | 30 -
.../apache/kerberos/kerb/KrbInputStream.java | 55 ++
.../apache/kerberos/kerb/KrbOutputStream.java | 47 ++
.../kerb/ccache/CredCacheInputStream.java | 148 +++++
.../kerb/ccache/CredCacheOutputStream.java | 104 +++
.../apache/kerberos/kerb/ccache/Credential.java | 206 ++++++
.../kerberos/kerb/ccache/CredentialCache.java | 259 ++++++++
.../kerb/ccache/KrbCredentialCache.java | 38 ++
.../org/apache/kerberos/kerb/ccache/Tag.java | 15 +
.../org/apache/kerberos/kerb/ccache/ccache.txt | 98 +++
.../org/apache/kerberos/kerb/keytab/Keytab.java | 178 +++++
.../kerberos/kerb/keytab/KeytabEntry.java | 102 +++
.../kerberos/kerb/keytab/KeytabInputStream.java | 70 ++
.../kerb/keytab/KeytabOutputStream.java | 44 ++
.../apache/kerberos/kerb/keytab/KrbKeytab.java | 36 +
.../org/apache/kerberos/kerb/keytab/keytab.txt | 106 +++
.../main/java/org/haox/kerb/KrbInputStream.java | 55 --
.../java/org/haox/kerb/KrbOutputStream.java | 47 --
.../haox/kerb/ccache/CredCacheInputStream.java | 148 -----
.../haox/kerb/ccache/CredCacheOutputStream.java | 104 ---
.../java/org/haox/kerb/ccache/Credential.java | 206 ------
.../org/haox/kerb/ccache/CredentialCache.java | 259 --------
.../haox/kerb/ccache/KrbCredentialCache.java | 38 --
.../src/main/java/org/haox/kerb/ccache/Tag.java | 15 -
.../main/java/org/haox/kerb/ccache/ccache.txt | 98 ---
.../main/java/org/haox/kerb/keytab/Keytab.java | 178 -----
.../java/org/haox/kerb/keytab/KeytabEntry.java | 102 ---
.../org/haox/kerb/keytab/KeytabInputStream.java | 70 --
.../haox/kerb/keytab/KeytabOutputStream.java | 44 --
.../java/org/haox/kerb/keytab/KrbKeytab.java | 36 -
.../main/java/org/haox/kerb/keytab/keytab.txt | 106 ---
.../kerb-util/src/main/resources/kdc-krb5.conf | 25 -
.../kerb-util/src/main/resources/kdc.ldiff | 30 -
.../apache/kerberos/kerb/util/CcacheTest.java | 38 ++
.../kerberos/kerb/util/EncryptionTest.java | 129 ++++
.../org/apache/kerberos/kerb/util/KeysTest.java | 62 ++
.../apache/kerberos/kerb/util/KeytabTest.java | 57 ++
.../src/test/java/org/haox/kerb/CcacheTest.java | 38 --
.../test/java/org/haox/kerb/EncryptionTest.java | 128 ----
.../src/test/java/org/haox/kerb/KeysTest.java | 62 --
.../src/test/java/org/haox/kerb/KeytabTest.java | 57 --
haox-kerb/specs/README.asn1 | 560 ----------------
haox-kerb/specs/TODO.asn1 | 75 ---
haox-kerb/specs/krb5.asn1 | 392 -----------
haox-kerb/specs/otp.asn1 | 109 ----
haox-kerb/specs/pkinit-agility.asn1 | 99 ---
haox-kerb/specs/pkinit.asn1 | 253 -------
haox-kerb/specs/pkix.asn1 | 654 -------------------
641 files changed, 18252 insertions(+), 21300 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/benchmark/src/test/java/org/apache/kerberos/benchmark/KrbCodecPerfTest.java
----------------------------------------------------------------------
diff --git a/benchmark/src/test/java/org/apache/kerberos/benchmark/KrbCodecPerfTest.java b/benchmark/src/test/java/org/apache/kerberos/benchmark/KrbCodecPerfTest.java
index 10c4623..254c226 100644
--- a/benchmark/src/test/java/org/apache/kerberos/benchmark/KrbCodecPerfTest.java
+++ b/benchmark/src/test/java/org/apache/kerberos/benchmark/KrbCodecPerfTest.java
@@ -4,8 +4,8 @@ import org.apache.directory.api.asn1.DecoderException;
import org.apache.directory.api.asn1.EncoderException;
import org.apache.directory.api.asn1.ber.Asn1Decoder;
import org.apache.directory.shared.kerberos.codec.apReq.ApReqContainer;
-import org.haox.kerb.KrbException;
-import org.haox.kerb.spec.ap.ApReq;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.ap.ApReq;
import java.io.IOException;
import java.io.InputStream;
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kdc/kdc-server/src/main/java/org/haox/kdc/server/HaoxKdcServer.java
----------------------------------------------------------------------
diff --git a/haox-kdc/kdc-server/src/main/java/org/haox/kdc/server/HaoxKdcServer.java b/haox-kdc/kdc-server/src/main/java/org/haox/kdc/server/HaoxKdcServer.java
index 9f4abcd..68b7d83 100644
--- a/haox-kdc/kdc-server/src/main/java/org/haox/kdc/server/HaoxKdcServer.java
+++ b/haox-kdc/kdc-server/src/main/java/org/haox/kdc/server/HaoxKdcServer.java
@@ -1,8 +1,8 @@
package org.haox.kdc.server;
import org.haox.kdc.identitybackend.LdapIdentityBackend;
-import org.haox.kerb.identity.IdentityService;
-import org.haox.kerb.server.KdcServer;
+import org.apache.kerberos.kerb.identity.IdentityService;
+import org.apache.kerberos.kerb.server.KdcServer;
public class HaoxKdcServer extends KdcServer {
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kdc/ldap-identity-backend/src/main/java/org/haox/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
diff --git a/haox-kdc/ldap-identity-backend/src/main/java/org/haox/kdc/identitybackend/LdapIdentityBackend.java b/haox-kdc/ldap-identity-backend/src/main/java/org/haox/kdc/identitybackend/LdapIdentityBackend.java
index c2640e2..e99e001 100644
--- a/haox-kdc/ldap-identity-backend/src/main/java/org/haox/kdc/identitybackend/LdapIdentityBackend.java
+++ b/haox-kdc/ldap-identity-backend/src/main/java/org/haox/kdc/identitybackend/LdapIdentityBackend.java
@@ -1,7 +1,7 @@
package org.haox.kdc.identitybackend;
-import org.haox.kerb.identity.KrbIdentity;
-import org.haox.kerb.identity.backend.AbstractIdentityBackend;
+import org.apache.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerberos.kerb.identity.backend.AbstractIdentityBackend;
import java.util.List;
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kdc/tools/src/main/java/org/haox/kdc/tool/Kinit.java
----------------------------------------------------------------------
diff --git a/haox-kdc/tools/src/main/java/org/haox/kdc/tool/Kinit.java b/haox-kdc/tools/src/main/java/org/haox/kdc/tool/Kinit.java
index bc4858c..3aae9c8 100644
--- a/haox-kdc/tools/src/main/java/org/haox/kdc/tool/Kinit.java
+++ b/haox-kdc/tools/src/main/java/org/haox/kdc/tool/Kinit.java
@@ -1,6 +1,6 @@
package org.haox.kdc.tool;
-import org.haox.kerb.client.KrbClient;
+import org.apache.kerberos.kerb.client.KrbClient;
/**
* kinit like tool
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbClient.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbClient.java
new file mode 100644
index 0000000..f8403e2
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbClient.java
@@ -0,0 +1,302 @@
+package org.apache.kerberos.kerb.client;
+
+import org.apache.haox.event.Event;
+import org.apache.haox.event.EventHub;
+import org.apache.haox.event.EventWaiter;
+import org.apache.kerberos.kerb.KrbErrorCode;
+import org.apache.kerberos.kerb.client.event.KrbClientEvent;
+import org.apache.kerberos.kerb.client.event.KrbClientEventType;
+import org.apache.kerberos.kerb.client.request.*;
+import org.apache.kerberos.kerb.common.KrbErrorUtil;
+import org.apache.kerberos.kerb.common.KrbStreamingDecoder;
+import org.apache.kerberos.kerb.KrbErrorException;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.common.KrbError;
+import org.apache.kerberos.kerb.spec.common.PrincipalName;
+import org.apache.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerberos.kerb.spec.ticket.TgtTicket;
+import org.haox.token.KerbToken;
+import org.apache.haox.transport.Connector;
+import org.apache.haox.transport.Transport;
+import org.apache.haox.transport.event.TransportEvent;
+import org.apache.haox.transport.event.TransportEventType;
+import org.apache.haox.transport.tcp.TcpConnector;
+
+import java.io.IOException;
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * A krb client API for applications to interact with KDC
+ */
+public class KrbClient {
+
+ private EventHub eventHub;
+ private EventWaiter eventWaiter;
+ private Transport transport;
+
+ private KrbHandler krbHandler;
+ private KrbContext context;
+ private KrbConfig config;
+
+ /**
+ *
+ * @param kdcHost
+ * @param kdcPort
+ */
+ public KrbClient(String kdcHost, short kdcPort) {
+ this(new KrbConfig());
+
+ setKdcHost(kdcHost);
+ setKdcPort(kdcPort);
+ }
+
+ public KrbClient(KrbConfig config) {
+ this.config = config;
+ this.context = new KrbContext();
+ context.init(config);
+ }
+
+ /**
+ * Set KDC realm for ticket request
+ * @param realm
+ */
+ public void setKdcRealm(String realm) {
+ context.setKdcRealm(realm);
+ }
+
+ /**
+ *
+ * @param kdcHost
+ */
+ public void setKdcHost(String kdcHost) {
+ context.setKdcHost(kdcHost);
+ }
+
+ /**
+ *
+ * @param kdcPort
+ */
+ public void setKdcPort(short kdcPort) {
+ context.setKdcPort(kdcPort);
+ }
+
+ /**
+ * Set time out for connection
+ * @param timeout in seconds
+ */
+ public void setTimeout(long timeout) {
+ context.setTimeout(timeout);
+ }
+
+ public void init() {
+ this.krbHandler = new KrbHandler();
+ krbHandler.init(context);
+
+ this.eventHub = new EventHub();
+ eventHub.register(krbHandler);
+
+ Connector connector = new TcpConnector(new KrbStreamingDecoder());
+ eventHub.register(connector);
+
+ eventWaiter = eventHub.waitEvent(
+ TransportEventType.NEW_TRANSPORT,
+ KrbClientEventType.TGT_RESULT,
+ KrbClientEventType.TKT_RESULT
+ );
+
+ eventHub.start();
+
+ connector.connect(context.getKdcHost(), context.getKdcPort());
+ Event event = eventWaiter.waitEvent(TransportEventType.NEW_TRANSPORT);
+ transport = ((TransportEvent) event).getTransport();
+ }
+
+ /**
+ * Attempt to request a TGT and you'll be prompted to input a credential.
+ * Whatever credential requested to provide depends on KDC admin configuration.
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public TgtTicket requestTgtTicket(String principal, KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ AsRequest asRequest = new AsRequest(context);
+ asRequest.setKrbOptions(options);
+ return requestTgtTicket(principal, asRequest);
+ }
+
+ /**
+ * Request a TGT with user plain credential
+ * @param principal
+ * @param password
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public TgtTicket requestTgtTicket(String principal, String password,
+ KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ AsRequest asRequest = new AsRequestWithPasswd(context);
+ options.add(KrbOption.USER_PASSWD, password);
+ asRequest.setKrbOptions(options);
+ return requestTgtTicket(principal, asRequest);
+ }
+
+ /**
+ * Request a TGT with user x509 certificate credential
+ * @param principal
+ * @param certificate
+ * @param privateKey
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public TgtTicket requestTgtTicket(String principal, Certificate certificate,
+ PrivateKey privateKey, KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ AsRequestWithCert asRequest = new AsRequestWithCert(context);
+ options.add(KrbOption.PKINIT_X509_CERTIFICATE, certificate);
+ options.add(KrbOption.PKINIT_X509_PRIVATE_KEY, privateKey);
+ asRequest.setKrbOptions(options);
+ return requestTgtTicket(principal, asRequest);
+ }
+
+ /**
+ * Request a TGT with using Anonymous PKINIT
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public TgtTicket requestTgtTicket(KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ AsRequestWithCert asRequest = new AsRequestWithCert(context);
+ options.add(KrbOption.PKINIT_X509_ANONYMOUS);
+ asRequest.setKrbOptions(options);
+
+ String principal = AsRequestWithCert.ANONYMOUS_PRINCIPAL;
+ return requestTgtTicket(principal, asRequest);
+ }
+
+ /**
+ * Request a TGT with user token credential
+ * @param principal
+ * @param token
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public TgtTicket requestTgtTicket(String principal, KerbToken token,
+ KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ AsRequestWithToken asRequest = new AsRequestWithToken(context);
+ options.add(KrbOption.TOKEN_USER_ID_TOKEN, token);
+ asRequest.setKrbOptions(options);
+ return requestTgtTicket(principal, asRequest);
+ }
+
+ /**
+ * Request a service ticket targeting for a server with user plain credentials
+ * @param clientPrincipal
+ * @param password
+ * @param serverPrincipal
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public ServiceTicket requestServiceTicket(String clientPrincipal, String password,
+ String serverPrincipal, KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ TgtTicket tgt = requestTgtTicket(clientPrincipal, password, options);
+ return requestServiceTicket(tgt, serverPrincipal, options);
+ }
+
+ /**
+ * Request a service ticket targeting for a server with an user Access Token
+ * @param clientPrincipal
+ * @param token
+ * @param serverPrincipal
+ * @param options
+ * @return
+ * @throws KrbException
+ */
+ public ServiceTicket requestServiceTicket(String clientPrincipal, KerbToken token,
+ String serverPrincipal, KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ TgtTicket tgt = requestTgtTicket(clientPrincipal, token, options);
+ return requestServiceTicket(tgt, serverPrincipal, options);
+ }
+
+ private TgtTicket requestTgtTicket(String clientPrincipal, AsRequest tgtTktReq) throws KrbException {
+ tgtTktReq.setClientPrincipal(new PrincipalName(clientPrincipal));
+ tgtTktReq.setTransport(transport);
+
+ try {
+ return doRequestTgtTicket(tgtTktReq);
+ } catch(KrbErrorException e) {
+ KrbError krbError = e.getKrbError();
+ if (krbError.getErrorCode() == KrbErrorCode.KDC_ERR_PREAUTH_REQUIRED) {
+ try {
+ tgtTktReq.setEncryptionTypes(KrbErrorUtil.getEtypes(krbError));
+ } catch (IOException ioe) {
+ throw new KrbException("Failed to decode and get etypes from krbError", ioe);
+ }
+ tgtTktReq.getPreauthContext().setPreauthRequired(true);
+ return requestTgtTicket(clientPrincipal, tgtTktReq);
+ }
+ throw e;
+ }
+ }
+
+ private TgtTicket doRequestTgtTicket(AsRequest tgtTktReq) throws KrbException {
+ eventHub.dispatch(KrbClientEvent.createTgtIntentEvent(tgtTktReq));
+ Event resultEvent = null;
+ try {
+ resultEvent = eventWaiter.waitEvent(KrbClientEventType.TGT_RESULT,
+ context.getTimeout(), TimeUnit.SECONDS);
+ } catch (TimeoutException e) {
+ throw new KrbException("Network timeout", e);
+ }
+ AsRequest asResponse = (AsRequest) resultEvent.getEventData();
+
+ return asResponse.getTicket();
+ }
+
+ /**
+ * Request a service ticket with a TGT targeting for a server
+ * @param tgt
+ * @param serverPrincipal
+ * @return
+ * @throws KrbException
+ */
+ public ServiceTicket requestServiceTicket(TgtTicket tgt, String serverPrincipal,
+ KrbOptions options) throws KrbException {
+ if (options == null) options = new KrbOptions();
+
+ TgsRequest ticketReq = new TgsRequest(context, tgt);
+ ticketReq.setServerPrincipal(new PrincipalName(serverPrincipal));
+ ticketReq.setTransport(transport);
+
+ eventHub.dispatch(KrbClientEvent.createTktIntentEvent(ticketReq));
+ Event resultEvent = null;
+ try {
+ resultEvent = eventWaiter.waitEvent(KrbClientEventType.TKT_RESULT,
+ context.getTimeout(), TimeUnit.SECONDS);
+ } catch (TimeoutException e) {
+ throw new KrbException("Network timeout", e);
+ }
+ TgsRequest tgsResponse = (TgsRequest) resultEvent.getEventData();
+
+ return tgsResponse.getServiceTicket();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfig.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfig.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfig.java
new file mode 100644
index 0000000..e661f48
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfig.java
@@ -0,0 +1,97 @@
+package org.apache.kerberos.kerb.client;
+
+import org.apache.haox.config.Conf;
+import org.apache.kerberos.kerb.common.KrbConfHelper;
+import org.apache.kerberos.kerb.spec.common.EncryptionType;
+
+import java.util.List;
+
+public class KrbConfig {
+ protected Conf conf;
+
+ public KrbConfig() {
+ this.conf = new Conf();
+ }
+
+ public Conf getConf() {
+ return this.conf;
+ }
+
+ public boolean enableDebug() {
+ return conf.getBoolean(KrbConfigKey.KRB_DEBUG);
+ }
+
+ public String getKdcHost() {
+ return conf.getString(KrbConfigKey.KDC_HOST);
+ }
+
+ public short getKdcPort() {
+ Integer kdcPort = conf.getInt(KrbConfigKey.KDC_PORT);
+ return kdcPort.shortValue();
+ }
+
+ public String getKdcRealm() {
+ return conf.getString(KrbConfigKey.KDC_REALM);
+ }
+
+ public String getKdcDomain() {
+ return conf.getString(KrbConfigKey.KDC_DOMAIN);
+ }
+
+ public boolean isPreauthRequired() {
+ return conf.getBoolean(KrbConfigKey.PREAUTH_REQUIRED);
+ }
+
+ public String getTgsPrincipal() {
+ return conf.getString(KrbConfigKey.TGS_PRINCIPAL);
+ }
+
+ public long getAllowableClockSkew() {
+ return conf.getLong(KrbConfigKey.ALLOWABLE_CLOCKSKEW);
+ }
+
+ public boolean isEmptyAddressesAllowed() {
+ return conf.getBoolean(KrbConfigKey.EMPTY_ADDRESSES_ALLOWED);
+ }
+
+ public boolean isForwardableAllowed() {
+ return conf.getBoolean(KrbConfigKey.FORWARDABLE_ALLOWED);
+ }
+
+ public boolean isPostdatedAllowed() {
+ return conf.getBoolean(KrbConfigKey.POSTDATED_ALLOWED);
+ }
+
+ public boolean isProxiableAllowed() {
+ return conf.getBoolean(KrbConfigKey.PROXIABLE_ALLOWED);
+ }
+
+ public boolean isRenewableAllowed() {
+ return conf.getBoolean(KrbConfigKey.RENEWABLE_ALLOWED);
+ }
+
+ public long getMaximumRenewableLifetime() {
+ return conf.getLong(KrbConfigKey.MAXIMUM_RENEWABLE_LIFETIME);
+ }
+
+ public long getMaximumTicketLifetime() {
+ return conf.getLong(KrbConfigKey.MAXIMUM_TICKET_LIFETIME);
+ }
+
+ public long getMinimumTicketLifetime() {
+ return conf.getLong(KrbConfigKey.MINIMUM_TICKET_LIFETIME);
+ }
+
+ public List<EncryptionType> getEncryptionTypes() {
+ return KrbConfHelper.getEncryptionTypes(
+ conf.getList(KrbConfigKey.ENCRYPTION_TYPES));
+ }
+
+ public boolean isPaEncTimestampRequired() {
+ return conf.getBoolean(KrbConfigKey.PA_ENC_TIMESTAMP_REQUIRED);
+ }
+
+ public boolean isBodyChecksumVerified() {
+ return conf.getBoolean(KrbConfigKey.VERIFY_BODY_CHECKSUM);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfigKey.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfigKey.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfigKey.java
new file mode 100644
index 0000000..2514d17
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbConfigKey.java
@@ -0,0 +1,45 @@
+package org.apache.kerberos.kerb.client;
+
+import org.apache.haox.config.ConfigKey;
+
+public enum KrbConfigKey implements ConfigKey {
+ KRB_DEBUG(true),
+ KDC_HOST("localhost"),
+ KDC_PORT(8015),
+ KDC_DOMAIN("example.com"),
+ KDC_REALM("EXAMPLE.COM"),
+ TGS_PRINCIPAL("krbtgt@EXAMPLE.COM"),
+ PREAUTH_REQUIRED(true),
+ ALLOWABLE_CLOCKSKEW(5 * 60),
+ EMPTY_ADDRESSES_ALLOWED(true),
+ PA_ENC_TIMESTAMP_REQUIRED(true),
+ MAXIMUM_TICKET_LIFETIME(24 * 3600),
+ MINIMUM_TICKET_LIFETIME(1 * 3600),
+ MAXIMUM_RENEWABLE_LIFETIME(48 * 3600),
+ FORWARDABLE_ALLOWED(true),
+ POSTDATED_ALLOWED(true),
+ PROXIABLE_ALLOWED(true),
+ RENEWABLE_ALLOWED(true),
+ VERIFY_BODY_CHECKSUM(true),
+ ENCRYPTION_TYPES(new String[] { "aes128-cts-hmac-sha1-96", "des-cbc-md5" });
+
+ private Object defaultValue;
+
+ private KrbConfigKey() {
+ this.defaultValue = null;
+ }
+
+ private KrbConfigKey(Object defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public String getPropertyKey() {
+ return name().toLowerCase();
+ }
+
+ @Override
+ public Object getDefaultValue() {
+ return this.defaultValue;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbContext.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbContext.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbContext.java
new file mode 100644
index 0000000..136a4be
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbContext.java
@@ -0,0 +1,78 @@
+package org.apache.kerberos.kerb.client;
+
+import org.apache.kerberos.kerb.client.preauth.PreauthHandler;
+import org.apache.kerberos.kerb.crypto.Nonce;
+
+public class KrbContext {
+
+ private String kdcRealm;
+ private KrbConfig config;
+ private String kdcHost;
+ private short kdcPort;
+ private long timeout = 10L;
+ private PreauthHandler preauthHandler;
+
+ public void init(KrbConfig config) {
+ this.config = config;
+ preauthHandler = new PreauthHandler();
+ preauthHandler.init(this);
+ }
+
+ public String getKdcHost() {
+ if (kdcHost != null) {
+ return kdcHost;
+ }
+ return config.getKdcHost();
+ }
+
+ public void setKdcHost(String kdcHost) {
+ this.kdcHost = kdcHost;
+ }
+
+ public short getKdcPort() {
+ if (kdcPort > 0) {
+ return kdcPort;
+ }
+ return config.getKdcPort();
+ }
+
+ public void setKdcPort(short kdcPort) {
+ this.kdcPort = kdcPort;
+ }
+
+ public void setTimeout(long timeout) {
+ this.timeout = timeout;
+ }
+
+ public long getTimeout() {
+ return this.timeout;
+ }
+
+ public KrbConfig getConfig() {
+ return config;
+ }
+
+ public void setKdcRealm(String realm) {
+ this.kdcRealm = realm;
+ }
+
+ public String getKdcRealm() {
+ if (kdcRealm != null) {
+ return kdcRealm;
+ }
+
+ return config.getKdcRealm();
+ }
+
+ public int generateNonce() {
+ return Nonce.value();
+ }
+
+ public long getTicketValidTime() {
+ return 8 * 60 * 60 * 1000;
+ }
+
+ public PreauthHandler getPreauthHandler() {
+ return preauthHandler;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbHandler.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbHandler.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbHandler.java
new file mode 100644
index 0000000..c1ceb23
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbHandler.java
@@ -0,0 +1,80 @@
+package org.apache.kerberos.kerb.client;
+
+import org.apache.haox.event.AbstractEventHandler;
+import org.apache.haox.event.Event;
+import org.apache.haox.event.EventType;
+import org.apache.kerberos.kerb.client.event.KrbClientEvent;
+import org.apache.kerberos.kerb.client.event.KrbClientEventType;
+import org.apache.kerberos.kerb.client.preauth.PreauthHandler;
+import org.apache.kerberos.kerb.client.request.AsRequest;
+import org.apache.kerberos.kerb.client.request.KdcRequest;
+import org.apache.kerberos.kerb.client.request.TgsRequest;
+import org.apache.kerberos.kerb.common.KrbUtil;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.common.KrbMessage;
+import org.apache.kerberos.kerb.spec.common.KrbMessageType;
+import org.apache.kerberos.kerb.spec.kdc.KdcRep;
+import org.apache.kerberos.kerb.spec.kdc.KdcReq;
+import org.apache.haox.transport.Transport;
+import org.apache.haox.transport.event.MessageEvent;
+import org.apache.haox.transport.event.TransportEventType;
+
+import java.nio.ByteBuffer;
+
+public class KrbHandler extends AbstractEventHandler {
+
+ private KrbContext context;
+ private PreauthHandler preauthHandler;
+
+ public void init(KrbContext context) {
+ this.context = context;
+ preauthHandler = new PreauthHandler();
+ preauthHandler.init(context);
+ }
+
+ @Override
+ public EventType[] getInterestedEvents() {
+ return new EventType[] {
+ TransportEventType.INBOUND_MESSAGE,
+ KrbClientEventType.TGT_INTENT,
+ KrbClientEventType.TKT_INTENT
+ };
+ }
+
+ @Override
+ protected void doHandle(Event event) throws Exception {
+ EventType eventType = event.getEventType();
+
+ if (eventType == KrbClientEventType.TGT_INTENT ||
+ eventType == KrbClientEventType.TKT_INTENT) {
+ KdcRequest kdcRequest = (KdcRequest) event.getEventData();
+ handleKdcRequest(kdcRequest);
+ } else if (event.getEventType() == TransportEventType.INBOUND_MESSAGE) {
+ handleMessage((MessageEvent) event);
+ }
+ }
+
+ protected void handleKdcRequest(KdcRequest kdcRequest) throws KrbException {
+ kdcRequest.process();
+ KdcReq kdcReq = kdcRequest.getKdcReq();
+ Transport transport = kdcRequest.getTransport();
+ transport.setAttachment(kdcRequest);
+ KrbUtil.sendMessage(kdcReq, transport);
+ }
+
+ protected void handleMessage(MessageEvent event) throws Exception {
+ ByteBuffer message = event.getMessage();
+ KrbMessage kdcRep = KrbUtil.decodeMessage(message);
+
+ KrbMessageType messageType = kdcRep.getMsgType();
+ if (messageType == KrbMessageType.AS_REP) {
+ KdcRequest kdcRequest = (KdcRequest) event.getTransport().getAttachment();
+ kdcRequest.processResponse((KdcRep) kdcRep);
+ dispatch(KrbClientEvent.createTgtResultEvent((AsRequest) kdcRequest));
+ } else if (messageType == KrbMessageType.TGS_REP) {
+ KdcRequest kdcRequest = (KdcRequest) event.getTransport().getAttachment();
+ kdcRequest.processResponse((KdcRep) kdcRep);
+ dispatch(KrbClientEvent.createTktResultEvent((TgsRequest) kdcRequest));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOption.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOption.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOption.java
new file mode 100644
index 0000000..c046e22
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOption.java
@@ -0,0 +1,72 @@
+package org.apache.kerberos.kerb.client;
+
+public enum KrbOption {
+ LIFE_TIME("-l lifetime"),
+ START_TIME("-s start time"),
+ RENEWABLE_TIME("-r renewable lifetime"),
+ FORWARDABLE("-f forwardable"),
+ NOT_FORWARDABLE("-F not forwardable"),
+ PROXIABLE("-p proxiable"),
+ NOT_PROXIABLE("-P not proxiable"),
+ ANONYMOUS("-n anonymous"),
+ INCLUDE_ADDRESSES("-a include addresses"),
+ NOT_INCLUDE_ADDRESSES("-A do not include addresses"),
+ VALIDATE("-v validate"),
+ RENEW("-R renew"),
+ CANONICALIZE("-C canonicalize"),
+ AS_ENTERPRISE_PN("-E client is enterprise principal name"),
+ USE_KEYTAB("-k use keytab"),
+ USE_DFT_KEYTAB("-i use default client keytab (with -k)"),
+ USER_KEYTAB_FILE("-t filename of keytab to use"),
+ KRB5_CACHE("-c Kerberos 5 cache name"),
+ SERVICE("-S service"),
+ ARMOR_CACHE("-T armor credential cache"),
+ XATTR("-X <attribute>[=<value>]"),
+
+ USER_PASSWD("user_passwd", "User plain password"),
+
+ PKINIT_X509_IDENTITY("x509_identities", "X509 user private key and cert"),
+ PKINIT_X509_PRIVATE_KEY("x509_privatekey", "X509 user private key"),
+ PKINIT_X509_CERTIFICATE("x509_cert", "X509 user certificate"),
+ PKINIT_X509_ANCHORS("x509_anchors", "X509 anchors"),
+ PKINIT_X509_ANONYMOUS("x509_anonymous", "X509 anonymous"),
+ PKINIT_USING_RSA("using_rsa_or_dh", "Using RSA or DH"),
+
+ TOKEN_USING_IDTOKEN("using_id_token", "Using identity token"),
+ TOKEN_USER_ID_TOKEN("user_id_token", "User identity token"),
+ TOKEN_USER_AC_TOKEN("user_ac_token", "User access token"),
+
+ ;
+
+ private String name;
+ private String description;
+ private Object value;
+
+ KrbOption(String description) {
+ this.description = description;
+ }
+
+ KrbOption(String name, String description) {
+ this.name = name;
+ this.description = description;
+ }
+
+ public String getName() {
+ if (name != null) {
+ return name;
+ }
+ return name();
+ }
+
+ public String getDescription() {
+ return this.description;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOptions.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOptions.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOptions.java
new file mode 100644
index 0000000..2bd5268
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/KrbOptions.java
@@ -0,0 +1,77 @@
+package org.apache.kerberos.kerb.client;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class KrbOptions {
+
+ private Map<KrbOption, KrbOption> options = new HashMap<KrbOption, KrbOption>(4);
+
+ public void add(KrbOption option) {
+ if (option != null) {
+ options.put(option, option);
+ }
+ }
+
+ public void add(KrbOption option, Object optionValue) {
+ option.setValue(optionValue);
+ add(option);
+ }
+
+ public boolean contains(KrbOption option) {
+ return options.containsKey(option);
+ }
+
+ public KrbOption getOption(KrbOption option) {
+ if (! options.containsKey(option)) {
+ return null;
+ }
+
+ return options.get(option);
+ }
+
+ public Object getOptionValue(KrbOption option) {
+ if (! contains(option)) {
+ return null;
+ }
+ return options.get(option).getValue();
+ }
+
+ public String getStringOption(KrbOption option) {
+ Object value = getOptionValue(option);
+ if (value != null && value instanceof String) {
+ return (String) value;
+ }
+ return null;
+ }
+
+ public boolean getBooleanOption(KrbOption option) {
+ Object value = getOptionValue(option);
+ if (value != null) {
+ if (value instanceof String) {
+ String strVal = (String) value;
+ if (strVal.equalsIgnoreCase("true") ||
+ strVal.equalsIgnoreCase("yes") ||
+ strVal.equals("1")) {
+ return true;
+ }
+ } else if (value instanceof Boolean) {
+ return (Boolean) value;
+ }
+ }
+ return false;
+ }
+
+ public int getIntegerOption(KrbOption option) {
+ Object value = getOptionValue(option);
+ if (value != null) {
+ if (value instanceof String) {
+ String strVal = (String) value;
+ return Integer.valueOf(strVal);
+ } else if (value instanceof Integer) {
+ return (Integer) value;
+ }
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEvent.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEvent.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEvent.java
new file mode 100644
index 0000000..d070bc9
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEvent.java
@@ -0,0 +1,24 @@
+package org.apache.kerberos.kerb.client.event;
+
+import org.apache.haox.event.Event;
+import org.apache.kerberos.kerb.client.request.AsRequest;
+import org.apache.kerberos.kerb.client.request.TgsRequest;
+
+public class KrbClientEvent {
+
+ public static Event createTgtIntentEvent(AsRequest asRequest) {
+ return new Event(KrbClientEventType.TGT_INTENT, asRequest);
+ }
+
+ public static Event createTktIntentEvent(TgsRequest tgsRequest) {
+ return new Event(KrbClientEventType.TKT_INTENT, tgsRequest);
+ }
+
+ public static Event createTgtResultEvent(AsRequest asRequest) {
+ return new Event(KrbClientEventType.TGT_RESULT, asRequest);
+ }
+
+ public static Event createTktResultEvent(TgsRequest tgsRequest) {
+ return new Event(KrbClientEventType.TKT_RESULT, tgsRequest);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEventType.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEventType.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEventType.java
new file mode 100644
index 0000000..163ed4a
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/event/KrbClientEventType.java
@@ -0,0 +1,10 @@
+package org.apache.kerberos.kerb.client.event;
+
+import org.apache.haox.event.EventType;
+
+public enum KrbClientEventType implements EventType {
+ TGT_INTENT,
+ TGT_RESULT,
+ TKT_INTENT,
+ TKT_RESULT
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
new file mode 100644
index 0000000..dc03532
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
@@ -0,0 +1,103 @@
+package org.apache.kerberos.kerb.client.preauth;
+
+import org.apache.kerberos.kerb.client.KrbContext;
+import org.apache.kerberos.kerb.client.KrbOptions;
+import org.apache.kerberos.kerb.client.request.KdcRequest;
+import org.apache.kerberos.kerb.preauth.PaFlag;
+import org.apache.kerberos.kerb.preauth.PaFlags;
+import org.apache.kerberos.kerb.preauth.PluginRequestContext;
+import org.apache.kerberos.kerb.preauth.PreauthPluginMeta;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.common.EncryptionType;
+import org.apache.kerberos.kerb.spec.pa.PaData;
+import org.apache.kerberos.kerb.spec.pa.PaDataEntry;
+import org.apache.kerberos.kerb.spec.pa.PaDataType;
+
+import java.util.Collections;
+import java.util.List;
+
+public class AbstractPreauthPlugin implements KrbPreauth {
+
+ private PreauthPluginMeta pluginMeta;
+ protected KrbContext context;
+
+ public AbstractPreauthPlugin(PreauthPluginMeta meta) {
+ this.pluginMeta = meta;
+ }
+
+ @Override
+ public String getName() {
+ return pluginMeta.getName();
+ }
+
+ public int getVersion() {
+ return pluginMeta.getVersion();
+ }
+
+ public PaDataType[] getPaTypes() {
+ return pluginMeta.getPaTypes();
+ }
+
+ public void init(KrbContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public PluginRequestContext initRequestContext(KdcRequest kdcRequest) {
+ return null;
+ }
+
+ @Override
+ public void prepareQuestions(KdcRequest kdcRequest,
+ PluginRequestContext requestContext) throws KrbException {
+
+ kdcRequest.needAsKey();
+ }
+
+ @Override
+ public List<EncryptionType> getEncTypes(KdcRequest kdcRequest,
+ PluginRequestContext requestContext) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void setPreauthOptions(KdcRequest kdcRequest,
+ PluginRequestContext requestContext, KrbOptions options) {
+
+ }
+
+ public void tryFirst(KdcRequest kdcRequest,
+ PluginRequestContext requestContext,
+ PaData outPadata) throws KrbException {
+
+ }
+
+ @Override
+ public boolean process(KdcRequest kdcRequest,
+ PluginRequestContext requestContext, PaDataEntry inPadata,
+ PaData outPadata) throws KrbException {
+
+ return false;
+ }
+
+ @Override
+ public boolean tryAgain(KdcRequest kdcRequest,
+ PluginRequestContext requestContext, PaDataType preauthType,
+ PaData errPadata, PaData outPadata) {
+ return false;
+ }
+
+ @Override
+ public PaFlags getFlags(PaDataType paType) {
+ PaFlags paFlags = new PaFlags(0);
+ paFlags.setFlag(PaFlag.PA_REAL);
+
+ return paFlags;
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/FastContext.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/FastContext.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/FastContext.java
new file mode 100644
index 0000000..5f046a1
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/FastContext.java
@@ -0,0 +1,17 @@
+package org.apache.kerberos.kerb.client.preauth;
+
+import org.apache.kerberos.kerb.spec.common.EncryptionKey;
+import org.apache.kerberos.kerb.spec.fast.FastOptions;
+import org.apache.kerberos.kerb.spec.fast.KrbFastArmor;
+import org.apache.kerberos.kerb.spec.kdc.KdcReq;
+
+public class FastContext {
+
+ public KdcReq fastOuterRequest;
+ public EncryptionKey armorKey;
+ public KrbFastArmor fastArmor;
+ public FastOptions fastOptions;
+ public int nonce;
+ public int fastFlags;
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/KrbPreauth.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/KrbPreauth.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/KrbPreauth.java
new file mode 100644
index 0000000..11dc2f5
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/KrbPreauth.java
@@ -0,0 +1,88 @@
+package org.apache.kerberos.kerb.client.preauth;
+
+import org.apache.kerberos.kerb.client.KrbContext;
+import org.apache.kerberos.kerb.client.KrbOptions;
+import org.apache.kerberos.kerb.client.request.KdcRequest;
+import org.apache.kerberos.kerb.preauth.PaFlags;
+import org.apache.kerberos.kerb.preauth.PluginRequestContext;
+import org.apache.kerberos.kerb.preauth.PreauthPluginMeta;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.common.EncryptionType;
+import org.apache.kerberos.kerb.spec.pa.PaData;
+import org.apache.kerberos.kerb.spec.pa.PaDataEntry;
+import org.apache.kerberos.kerb.spec.pa.PaDataType;
+
+import java.util.List;
+
+/**
+ * Client side preauth plugin module
+ */
+public interface KrbPreauth extends PreauthPluginMeta {
+
+ /**
+ * Initializing preauth plugin context
+ */
+ public void init(KrbContext krbContext);
+
+ /**
+ * Initializing request context
+ */
+ public PluginRequestContext initRequestContext(KdcRequest kdcRequest);
+
+ /**
+ * Prepare questions to prompt to you asking for credential
+ */
+ public void prepareQuestions(KdcRequest kdcRequest,
+ PluginRequestContext requestContext) throws KrbException;
+
+ /**
+ * Get supported encryption types
+ */
+ public List<EncryptionType> getEncTypes(KdcRequest kdcRequest,
+ PluginRequestContext requestContext);
+
+ /**
+ * Set krb options passed from user
+ */
+ public void setPreauthOptions(KdcRequest kdcRequest,
+ PluginRequestContext requestContext,
+ KrbOptions preauthOptions);
+
+ /**
+ * Attempt to try any initial padata derived from user options
+ */
+ public void tryFirst(KdcRequest kdcRequest,
+ PluginRequestContext requestContext,
+ PaData outPadata) throws KrbException;
+
+ /**
+ * Process server returned paData and return back any result paData
+ * Return true indicating padata is added
+ */
+ public boolean process(KdcRequest kdcRequest,
+ PluginRequestContext requestContext,
+ PaDataEntry inPadata,
+ PaData outPadata) throws KrbException;
+
+ /**
+ * When another request to server in the 4 pass, any paData to provide?
+ * Return true indicating padata is added
+ */
+ public boolean tryAgain(KdcRequest kdcRequest,
+ PluginRequestContext requestContext,
+ PaDataType preauthType,
+ PaData errPadata,
+ PaData outPadata);
+
+ /**
+ * Return PA_REAL if pa_type is a real preauthentication type or PA_INFO if it is
+ * an informational type.
+ */
+ public PaFlags getFlags(PaDataType paType);
+
+ /**
+ * When exiting...
+ */
+ public void destroy();
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthContext.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthContext.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthContext.java
new file mode 100644
index 0000000..175129c
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthContext.java
@@ -0,0 +1,89 @@
+package org.apache.kerberos.kerb.client.preauth;
+
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.pa.PaData;
+import org.apache.kerberos.kerb.spec.pa.PaDataType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PreauthContext {
+ private boolean preauthRequired = true;
+ private PaData inputPaData;
+ private PaData outputPaData;
+ private PaData errorPaData;
+ private UserResponser userResponser = new UserResponser();
+ private PaDataType selectedPaType;
+ private PaDataType allowedPaType;
+ private List<PaDataType> triedPaTypes = new ArrayList<PaDataType>(1);
+ private List<PreauthHandle> handles = new ArrayList<PreauthHandle>(5);
+
+ public PreauthContext() {
+ this.selectedPaType = PaDataType.NONE;
+ this.allowedPaType = PaDataType.NONE;
+ this.outputPaData = new PaData();
+ }
+
+ public boolean isPreauthRequired() {
+ return preauthRequired;
+ }
+
+ public void setPreauthRequired(boolean preauthRequired) {
+ this.preauthRequired = preauthRequired;
+ }
+
+ public UserResponser getUserResponser() {
+ return userResponser;
+ }
+
+ public boolean isPaTypeAllowed(PaDataType paType) {
+ return (allowedPaType == PaDataType.NONE ||
+ allowedPaType == paType);
+ }
+
+ public PaData getOutputPaData() throws KrbException {
+ return outputPaData;
+ }
+
+ public boolean hasInputPaData() {
+ return (inputPaData != null && ! inputPaData.isEmpty());
+ }
+
+ public PaData getInputPaData() {
+ return inputPaData;
+ }
+
+ public void setInputPaData(PaData inputPaData) {
+ this.inputPaData = inputPaData;
+ }
+
+ public PaData getErrorPaData() {
+ return errorPaData;
+ }
+
+ public void setErrorPaData(PaData errorPaData) {
+ this.errorPaData = errorPaData;
+ }
+
+ public void setAllowedPaType(PaDataType paType) {
+ this.allowedPaType = paType;
+ }
+
+ public List<PreauthHandle> getHandles() {
+ return handles;
+ }
+
+ public PaDataType getAllowedPaType() {
+ return allowedPaType;
+ }
+
+ public boolean checkAndPutTried(PaDataType paType) {
+ for (PaDataType pt : triedPaTypes) {
+ if (pt == paType) {
+ return true;
+ }
+ }
+ triedPaTypes.add(paType);
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/967d7e1c/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthHandle.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthHandle.java b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthHandle.java
new file mode 100644
index 0000000..82e62f3
--- /dev/null
+++ b/haox-kerb/kerb-client/src/main/java/org/apache/kerberos/kerb/client/preauth/PreauthHandle.java
@@ -0,0 +1,53 @@
+package org.apache.kerberos.kerb.client.preauth;
+
+import org.apache.kerberos.kerb.client.KrbOptions;
+import org.apache.kerberos.kerb.client.request.KdcRequest;
+import org.apache.kerberos.kerb.preauth.PaFlags;
+import org.apache.kerberos.kerb.preauth.PluginRequestContext;
+import org.apache.kerberos.kerb.KrbException;
+import org.apache.kerberos.kerb.spec.pa.PaData;
+import org.apache.kerberos.kerb.spec.pa.PaDataEntry;
+import org.apache.kerberos.kerb.spec.pa.PaDataType;
+
+public class PreauthHandle {
+
+ public KrbPreauth preauth;
+ public PluginRequestContext requestContext;
+
+ public PreauthHandle(KrbPreauth preauth) {
+ this.preauth = preauth;
+ }
+
+ public void initRequestContext(KdcRequest kdcRequest) {
+ requestContext = preauth.initRequestContext(kdcRequest);
+ }
+
+ public void prepareQuestions(KdcRequest kdcRequest) throws KrbException {
+ preauth.prepareQuestions(kdcRequest, requestContext);
+ }
+
+ public void setPreauthOptions(KdcRequest kdcRequest,
+ KrbOptions preauthOptions) throws KrbException {
+ preauth.setPreauthOptions(kdcRequest, requestContext, preauthOptions);
+ }
+
+ public void tryFirst(KdcRequest kdcRequest, PaData outPadata) throws KrbException {
+ preauth.tryFirst(kdcRequest, requestContext, outPadata);
+ }
+
+ public boolean process(KdcRequest kdcRequest,
+ PaDataEntry inPadata, PaData outPadata) throws KrbException {
+ return preauth.process(kdcRequest, requestContext, inPadata, outPadata);
+ }
+
+ public boolean tryAgain(KdcRequest kdcRequest,
+ PaDataType paType, PaData errPadata, PaData paData) {
+ return preauth.tryAgain(kdcRequest, requestContext, paType, errPadata, paData);
+ }
+
+ public boolean isReal(PaDataType paType) {
+ PaFlags paFlags = preauth.getFlags(paType);
+ return paFlags.isReal();
+ }
+
+}