|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.security.SignedObject
public final class SignedObject
SignedObject 는, 인증 실행시 객체의 작성을 목적으로 한 클래스입니다. 이 실행시 객체의 무결성이 손상되었을 경우는, 반드시 검출됩니다.
보다 구체적으로는, SignedObject 는, 다른 Serializable 객체, 서명 첨부 객체, 및 그 서명을 보관 유지합니다.
서명 첨부 객체는, 원의 객체의 직렬화 된 형식에서의 정밀한 카피입니다. 한번 카피가 작성되면(자), 원의 객체를 한층 더 조작해도 카피에 영향이 미칠 것은 없습니다.
기본으로 되는 서명 알고리즘은, 생성자 과 verify
메소드에게 건네지는 Signature 객체에 의해 지정됩니다. 다음에, 서명의 일반적인 사용법을 나타냅니다.
Signature signingEngine = Signature.getInstance(algorithm,
provider);
SignedObject so = new SignedObject(myobject, signingKey,
signingEngine);
다음에, 검증의 일반적인 사용법을 나타냅니다 (SignedObject so
를 받고 있다).
Signature verificationEngine =
Signature.getInstance(algorithm, provider);
if (so.verify(publickey, verificationEngine))
try {
Object myobj = so.getObject();
} catch (java.lang.ClassNotFoundException e) {};
유의점을 몇개인가 듭니다. 최초로, 서명 엔진이나 검증 엔진은 생성자 과 verify
메소드내에서 재초기화되므로, 그러한 엔진을 초기화할 필요는 없습니다. 다음에, 검증을 성공시키려면 , 지정된 공개키가, SignedObject 를 생성하는데 사용하는 비공개키에 일치하고 있지 않으면 안됩니다.
한층 더 중요한 것은, 유연성입니다. 생성자 과 verify
메소드는 커스터마이즈 된 서명 엔진에 의해, 암호 프로바이더의 일부로서 정식으로 인스톨되어 있지 않은 서명 알고리즘을 구현할 수 있습니다. 다만, 서명의 검증에는 verify
메소드의 Signature
엔진 자신의 구현이 불려 가므로, 검증용 코드를 기술하는 프로그래머는, 어느 Signature
엔진이 사용중인지를 확인하는 것이 중요합니다. 바꾸어 말하면, 악의가 있는 Signature
는 시큐리티 체크를 면하기 위해서(때문에) 검증으로 항상 true 를 돌려주려고 하는 경우가 있습니다.
많은 서명 알고리즘 중(안)에서, DSA 및 SHA-1 를 사용한 NIST 표준의 DSA 를 사용할 수 있습니다. 알고리즘은, 서명과 같은 규약을 사용해 지정됩니다. 예를 들어, SHA-1 메세지 다이제스트 알고리즘을 사용하는 DSA 알고리즘은, SHA/DSA 또는 SHA-1/DSA (이것들은 등가)와 같이 지정할 수 있습니다. RSA 의 경우는, 메세지 다이제스트 알고리즘에 복수의 선택사항이 있습니다. 따라서, 서명 알고리즘의 지정은, MD2/RSA, MD5/RSA, 또는 SHA-1/RSA 와 같이 합니다. 디폴트는 없기 때문에, 반드시 알고리즘의 이름을 지정하지 않으면 안됩니다.
암호 패키지 프로바이더의 이름은, 생성자 과 verify
메소드에 대한 Signature 파라미터로 지정됩니다. 이 프로바이더를 지정하지 않으면 디폴트의 프로바이더가 사용됩니다. 각 인스톨은, 특정 프로바이더를 디폴트로서 사용하도록(듯이) 설정할 수 있습니다.
SignedObject 를 사용하는 어플리케이션에서는, 이하을 할 수가 있습니다.
Signature
,
직렬화 된 형식 생성자 의 개요 | |
---|---|
SignedObject (Serializable object,
PrivateKey signingKey,
Signature signingEngine)
임의의 Serializable 객체로부터 SignedObject 를 구축합니다. |
메소드의 개요 | |
---|---|
String |
getAlgorithm ()
서명 알고리즘의 이름을 가져옵니다. |
Object |
getObject ()
캡슐화된 객체를 가져옵니다. |
byte[] |
getSignature ()
서명 첨부 객체의 서명을, 바이트 배열의 형식에서 가져옵니다. |
boolean |
verify (PublicKey verificationKey,
Signature verificationEngine)
이 SignedObject 내의 서명이, 내부에 포함된 객체의 유효한 서명인가 어떤가를, 지정된 검증 엔진을 사용해, 지정된 검증열쇠로 검증합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
생성자 의 상세 |
---|
public SignedObject(Serializable object, PrivateKey signingKey, Signature signingEngine) throws IOException , InvalidKeyException , SignatureException
object
- 서명 대상의 객체signingKey
- 서명을 위한 비공개키signingEngine
- 서명 엔진
IOException
- 직렬화로 에러가 발생했을 경우
InvalidKeyException
- 열쇠가 무효인 경우
SignatureException
- 서명이 실패했을 경우메소드의 상세 |
---|
public Object getObject() throws IOException , ClassNotFoundException
IOException
- 직렬화 복원으로 에러가 발생했을 경우
ClassNotFoundException
- 직렬화 복원으로 에러가 발생했을 경우public byte[] getSignature()
public String getAlgorithm()
public boolean verify(PublicKey verificationKey, Signature verificationEngine) throws InvalidKeyException , SignatureException
verificationKey
- 검증용의 공개키verificationEngine
- 서명 검증 엔진
SignatureException
- 서명 검증이 실패했을 경우
InvalidKeyException
- 검증열쇠가 무효인 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.