2017-11-23 15 views
0

LDAP를 사용하는 SEMS 서버에서 PGP 공개 키를 삭제하거나 수정하려고합니다. 이러한 목적으로 나는 LDAP SDK에서 UnboundIDDidisoft PGP java 라이브러리를 사용하고 있습니다. connection.modify(request)connection.delete(request) 코드를 모두 실행하면 동일한 결과가 표시됩니다. 성공 서버에서 삭제되지는 않지만 여전히 서버의 키를 볼 수 있습니다. 내 코드는 이런 방식으로 진행됩니다. 삭제하기위한 목적LDAP를 사용하여 Symantec Encryption Management Server에서 PGP 키를 삭제하거나 수정할 수 없습니다.

if (keyFound) 
    { 
    byte[] bytes = keyStr.getBytes(); 
    this.tmpKS.purge(); 
    KeyPairInformation[] keysTmp = this.tmpKS.importKeyRing(new ByteArrayInputStream(bytes)); 
    KeyPairInformation tmpKeys = keysTmp[0]; 
    String certIdS = Long.toHexString(tmpKeys.getKeyID()).toUpperCase(); 
    for (int i = 0; i < 16 - certIdS.length(); i++) { 
     certIdS = "0" + certIdS; 
    } 
    object = "pgpCertID=" + certIdS + "," + keysDn; 
    ModifyRequest request = new ModifyRequest(object, new Modification[] { new Modification(ModificationType.REPLACE, "pgpCertID", certId), new Modification(ModificationType.REPLACE, "pgpKeyID", key.getKeyIDHex()), new Modification(ModificationType.REPLACE, "pgpKeyType", key.getAlgorithm()), new Modification(ModificationType.REPLACE, "pgpKeyCreateTime", keyCreationTime), new Modification(ModificationType.REPLACE, "pgpSignerID", certId), new Modification(ModificationType.REPLACE, "pgpRevoked", key.isRevoked() ? "1" : "0"), new Modification(ModificationType.REPLACE, "pgpCertID", certId), new Modification(ModificationType.REPLACE, "pgpDisabled", "0"), new Modification(ModificationType.REPLACE, "pgpKeyID", key.getKeyIDHex()), new Modification(ModificationType.REPLACE, "pgpKeyType", key.getAlgorithm()), new Modification(ModificationType.REPLACE, "pgpUserID", key.getUserID() + '\000'), new Modification(ModificationType.REPLACE, "pgpSignerID", certId), new Modification(ModificationType.REPLACE, "pgpKeySize", padLeft(key.getKeySize(), 5)), new Modification(ModificationType.REPLACE, "pgpDisabled", "0"), new Modification(ModificationType.REPLACE, "objectClass", "pgpKeyInfo"), new Modification(ModificationType.REPLACE, "pgpKey", tmpOut.toByteArray()) }); 
    for (int i = 0; i < keysTmp.length; i++) { 
     request.addModification(new Modification(ModificationType.REPLACE, "pgpSubKeyID", Long.toHexString(keysTmp[i].getKeyID()).toUpperCase())); 
    } 
    LDAPResult result = connection.modify(request); 
    return result.getResultCode().intValue() == 0; 
} 

수정를 들어

if (keyFound) 
{ 
    byte[] bytes = keyStr.getBytes(); 
    this.tmpKS.purge(); 
    KeyPairInformation[] keysTmp = this.tmpKS.importKeyRing(new ByteArrayInputStream(bytes)); 
    KeyPairInformation tmpKeys = keysTmp[0]; 
    String certIdS = Long.toHexString(tmpKeys.getKeyID()).toUpperCase(); 
    for (int i = 0; i < 16 - certIdS.length(); i++) { 
     certIdS = "0" + certIdS; 
    } 
    object = "pgpCertID=" + certIdS + "," + keysDn; 
    DeleteRequest request1 = new DeleteRequest(object); 
    LDAPResult result1 = connection.delete(request1); 
    LDAPResult result = connection.modify(request); 
    return result.getResultCode().intValue() == 0; 
} 

LDAP 결과 : LDAPResult (의 resultCode = 0 (성공), messageID 설명 = 3, opType = '수정 ')

답변

0

이전 키를 제거하고 새 키를 푸는 일반적인 방법은 이전 키를 취소하고 업로드 한 다음 새 키를 업로드하는 것입니다.

PGPDeleteFromKeyServer(PGPKeyServerRef  inKeyServerRef, 
PGPKeySetRef inKeysToDelete, 
PGPKeySetRef * outKeysThatFailed  
) 

: 시만텍 거기에서 PGP의 SDK에 따라 기존의 개인 키를 분실하거나 다음 취소 인증서를 가지고있는 경우

는 방법의 핵심 서버 연결이되어 있어야합니다 kPGPKeyServerAccessType_Administrator의 액세스 유형으로 설정되었습니다.

관리자 LDAP 사용자로 인증 된 LDAP 연결을 설정하면 삭제 작업을 수행 할 수 있어야합니다.