JavaTM Platform
Standard Ed. 6

java.security
클래스 SignedObject

java.lang.Object 
  상위를 확장 java.security.SignedObject
모든 구현된 인터페이스:
Serializable


public final class SignedObject
extends Object
implements Serializable

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
 

생성자 의 상세

SignedObject

public SignedObject(Serializable  object,
                    PrivateKey  signingKey,
                    Signature  signingEngine)
             throws IOException ,
                    InvalidKeyException ,
                    SignatureException 
임의의 Serializable 객체로부터 SignedObject 를 구축합니다. 지정된 객체는, 지정된 서명 엔진을 사용해, 지정된 서명열쇠로 서명됩니다.

파라미터:
object - 서명 대상의 객체
signingKey - 서명을 위한 비공개키
signingEngine - 서명 엔진
예외:
IOException - 직렬화로 에러가 발생했을 경우
InvalidKeyException - 열쇠가 무효인 경우
SignatureException - 서명이 실패했을 경우
메소드의 상세

getObject

public Object  getObject()
                 throws IOException ,
                        ClassNotFoundException 
캡슐화된 객체를 가져옵니다. 이 객체는, 복귀하기 전에 직렬화가 복원됩니다.

반환값:
캡슐화된 객체
예외:
IOException - 직렬화 복원으로 에러가 발생했을 경우
ClassNotFoundException - 직렬화 복원으로 에러가 발생했을 경우

getSignature

public byte[] getSignature()
서명 첨부 객체의 서명을, 바이트 배열의 형식에서 가져옵니다.

반환값:
시그니챠 이 메소드가 불려 갈 때마다 새로운 배열을 돌려준다

getAlgorithm

public String  getAlgorithm()
서명 알고리즘의 이름을 가져옵니다.

반환값:
서명 알고리즘명

verify

public boolean verify(PublicKey  verificationKey,
                      Signature  verificationEngine)
               throws InvalidKeyException ,
                      SignatureException 
이 SignedObject 내의 서명이, 내부에 포함된 객체의 유효한 서명인가 어떤가를, 지정된 검증 엔진을 사용해, 지정된 검증열쇠로 검증합니다.

파라미터:
verificationKey - 검증용의 공개키
verificationEngine - 서명 검증 엔진
반환값:
서명이 유효한 경우는 true, 그렇지 않은 경우는 false
예외:
SignatureException - 서명 검증이 실패했을 경우
InvalidKeyException - 검증열쇠가 무효인 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.