|
JCaosLib V1.4.4.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.dreamsecurity.jcaos.cms.EnvelopedData
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö(EnvelopedData)¸¦ ó¸®Çϱâ À§ÇÑ Å¬·¡½ºÀÌ´Ù.
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö´Â ¸Þ½ÃÁöÀÇ ±â¹Ð¼ºÀ» À§Çؼ ¸Þ½ÃÁö¸¦ ´ëĪŰ·Î ¾ÏÈ£ÈÇÏ°í ´ëĪŰ´Â ¼ö½ÅÀÚÀÇ °ø°³Å°(ÀÎÁõ¼)¸¦ ÀÌ¿ëÇØ¼
¾ÏÈ£ÈÇÏ¿© ¼ö½ÅÀÚ ¸¸ÀÌ ¸Þ½ÃÁö¸¦ È®ÀÎÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â º¸¾È ¸Þ½ÃÁö Çü½ÄÀÌ´Ù.
ÇØ´ç Ŭ·¡½º¿¡¼´Â RFC3852¿¡¼ Á¤ÀÇÇÏ´Â EnvelopedData¿Í PKCS#7¿¡¼ Á¤ÀÇÇÏ´Â EnvelopedData¸¦ ¸ðµÎ Áö¿øÇÑ´Ù.
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â "RFC3852" ¶Ç´Â
"PKCS#7"¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁöÀÇ ASN.1 Æ÷¸ËÀº ´ÙÀ½°ú °°´Ù.
RFC3852¿¡¼ Á¤ÀÇÇÏ´Â EnvelopedData Çü½Ä : EnvelopedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL } PKCS#7¿¡¼ Á¤ÀÇÇÏ´Â EnvelopedData Çü½Ä : EnvelopedData ::= SEQUENCE { version Version, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo } ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö °´Ã¼ »ý¼º ¿¹Á¦ : byte[] envData = <ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö Àбâ> EnvelopedData envelopedData = EnvelopedData.getInstance(envData);
Method Summary | |
byte[] |
decrypt(X509Certificate myCert,
PKCS8PrivateKeyInfo myPriKeyInfo)
¼ö½ÅÀÚÀÇ ÀÎÁõ¼¿Í °³ÀÎ۸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ º¹È£ÈÇÑ´Ù. |
byte[] |
decrypt(X509Certificate myCert,
PKCS8PrivateKeyInfo myPriKeyInfo,
java.io.InputStream encContent)
¼ö½ÅÀÚÀÇ ÀÎÁõ¼¿Í °³ÀÎ۸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ º¹È£ÈÇÑ´Ù. |
void |
decrypt(X509Certificate myCert,
PKCS8PrivateKeyInfo myPriKeyInfo,
java.io.InputStream encContent,
java.io.OutputStream content)
¼ö½ÅÀÚÀÇ ÀÎÁõ¼¿Í °³ÀÎ۸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ º¹È£ÈÇÑ´Ù. |
void |
decrypt(X509Certificate myCert,
PKCS8PrivateKeyInfo myPriKeyInfo,
java.io.OutputStream content)
¼ö½ÅÀÚÀÇ ÀÎÁõ¼¿Í °³ÀÎ۸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ º¹È£ÈÇÑ´Ù. |
java.lang.String |
getContentEncryptionAlgorithm()
¸Þ½ÃÁö ¾ÏÈ£È ½Ã »ç¿ëÇÑ ´ëĪŰ ¾Ë°í¸®ÁòÀ» È®ÀÎÇÑ´Ù. |
java.lang.String |
getContentType()
¾ÏÈ£ÈµÈ ¸Þ½ÃÁö Á¾·ù¸¦ È®ÀÎÇÑ´Ù. |
byte[] |
getEncoded()
DER ÀÎÄÚµù µÇ¾îÀÖ´Â ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö µ¥ÀÌÅ͸¦ ȹµæÇÑ´Ù. |
void |
getEncoded(java.io.OutputStream os)
DER ÀÎÄÚµù µÇ¾îÀÖ´Â ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö µ¥ÀÌÅ͸¦ ȹµæÇÑ´Ù. |
byte[] |
getEncryptedContent()
´ëĪŰ ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö¸¦ È®ÀÎÇÑ´Ù. |
void |
getEncryptedContent(java.io.OutputStream os)
¾ÏÈ£ÈµÈ ¸Þ½ÃÁö¸¦ È®ÀÎÇÑ´Ù. |
static EnvelopedData |
getInstance(byte[] data)
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö¸¦ ÀÔ·ÂÇÏ¿© EnvelopedData °´Ã¼·Î º¯È¯ÇÑ´Ù. |
static EnvelopedData |
getInstance(java.lang.Object o)
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö¸¦ ÀÔ·ÂÇÏ¿© EnvelopedData °´Ã¼·Î º¯È¯ÇÑ´Ù. |
java.security.Key |
getKey()
¸Þ½ÃÁö ¾Ïȣȿ¡ »ç¿ëµÇ¾ú´ø ´ëĪ۸¦ ȹµæÇÑ´Ù. |
java.security.spec.AlgorithmParameterSpec |
getParameter()
¸Þ½ÃÁö ¾Ïȣȿ¡ »ç¿ëµÇ¾ú´ø ´ëĪŰ ¾Ë°í¸®ÁòÀÇ ÆÄ¶ó¸ÞÅÍ (IV µî)¸¦ ȹµæÇÑ´Ù. |
java.util.ArrayList |
getRecipientInfos()
¼ö½ÅÀÚ Á¤º¸¸¦ ȹµæÇÑ´Ù. |
int |
getVersion()
ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁöÀÇ ¹öÀüÀ» È®ÀÎÇÑ´Ù. |
static EnvelopedData |
seperate(java.io.InputStream envData,
java.io.OutputStream cipherText)
¾ÏÈ£¹®À» Æ÷ÇÔÇÏ´Â ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö (EnvelopedData)¸¦ ¾ÏÈ£¹®°ú ¾ÏÈ£ ¸Þ½ÃÁö¸¦ ºÐ¸®ÇÑ´Ù. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
public static EnvelopedData getInstance(byte[] data) throws java.io.IOException
data
- DER ÀÎÄÚµù ÇüÅÂÀÇ ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö
java.io.IOException
- µðÄÚµù ½ÇÆÐ½Ã ¹ß»ýpublic static EnvelopedData getInstance(java.lang.Object o) throws java.io.IOException
o
- ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö (DER ÀÎÄÚµùµÈ °ª, ASN.1 ÇüÅ ¶Ç´Â InputStream ÇüÅÂ)
java.io.IOException
- µðÄÚµù ½ÇÆÐ½Ã ¹ß»ýpublic byte[] getEncoded() throws java.io.IOException
java.io.IOException
- ÀÎÄÚµù ½ÇÆÐ ½Ã ¹ß»ýpublic void getEncoded(java.io.OutputStream os) throws java.io.IOException
os
- OutputStream Çü½ÄÀÇ DER ÀÎÄÚµù µÇ¾îÀÖ´Â ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö
java.io.IOException
- Ãâ·Â ½ºÆ®¸²¿¡ ¾²±â ½ÇÆÐ ¶Ç´Â ÀÎÄÚµù ½ÇÆÐ ½Ã ¹ß»ýpublic int getVersion()
public java.util.ArrayList getRecipientInfos() throws ParsingException, java.io.IOException
ParsingException
- ¼ö½ÅÀÚ Á¤º¸ ÇüÅ Áß Áö¿øÇÏÁö ¾Ê´Â ÇüŰ¡ ÀÖ´Â °æ¿ì¿¡ ¹ß»ý
java.io.IOException
- ¼ö½ÅÀÚ Á¤º¸ µðÄÚµù ½ÇÆÐ ½Ã ¹ß»ýpublic java.lang.String getContentType()
public java.lang.String getContentEncryptionAlgorithm()
public byte[] getEncryptedContent()
public void getEncryptedContent(java.io.OutputStream os) throws java.io.IOException
os
- Çü½ÄÀÇ ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö
java.io.IOException
public void decrypt(X509Certificate myCert, PKCS8PrivateKeyInfo myPriKeyInfo, java.io.OutputStream content) throws java.io.IOException, ParsingException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, NoSuchModeException, NotForUserException, java.security.NoSuchProviderException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.InvalidAlgorithmParameterException
myCert
- ¼ö½ÅÀÚ ÀÎÁõ¼myPriKeyInfo
- ¼ö½ÅÀÚ °³ÀÎŰcontent
- º¹È£ÈµÈ ¸Þ½ÃÁö
java.io.IOException
- ÀÎÁõ¼ µðÄÚµù ½ÇÆÐ½Ã ¹ß»ý
ParsingException
- Áö¿øÇÏÁö ¾Ê´Â ¼ö½ÅÀÚ Á¤º¸ ÇüŰ¡ ÀÖ´Â °æ¿ì¿¡ ¹ß»ý
java.security.InvalidKeyException
- ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÀûÇÕÇÑ Å°(À߸øµÈ ÀÎÄÚµù, À߸øµÈ ±æÀÌ, ÃʱâÈ µÇÁö ¾ÊÀ½ µî)°¡ ¾Æ´Ñ °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchAlgorithmException
- Áö¿øÇÏÁö ¾Ê´Â ¾Ë°í¸®ÁòÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.NoSuchPaddingException
- Áö¿øÇÏÁö ¾Ê´Â ÆÐµù Á¾·ùÀÏ °æ¿ì¿¡ ¹ß»ý
NoSuchModeException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµåÀÏ °æ¿ì¿¡ ¹ß»ý
NotForUserException
- ÇØ´ç ¼ö½ÅÀڷΠó¸®ÇÒ ¼ö ¾øÀ» °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchProviderException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµâ Á¦°øÀÚÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.IllegalBlockSizeException
- ÀÔ·Â µ¥ÀÌÅÍÀÇ ±æÀ̰¡ ºí·° ¾Ë°í¸®Áò¿¡ ÀûÇÕÇÏÁö ¾Ê´Â °æ¿ì¿¡ ¹ß»ý
javax.crypto.BadPaddingException
- ÀԷ°ªÀÌ ÁöÁ¤µÈ ÆÐµù ŸÀÔÀ¸·Î ÆÐµù µÇ¾îÀÖÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ý
java.security.InvalidAlgorithmParameterException
- ¾Ë°í¸®Áò ÆÄ¶ó¸ÞÅͰ¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ýpublic void decrypt(X509Certificate myCert, PKCS8PrivateKeyInfo myPriKeyInfo, java.io.InputStream encContent, java.io.OutputStream content) throws java.io.IOException, ParsingException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, NoSuchModeException, NotForUserException, java.security.NoSuchProviderException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.InvalidAlgorithmParameterException
myCert
- ¼ö½ÅÀÚ ÀÎÁõ¼myPriKeyInfo
- ¼ö½ÅÀÚ °³ÀÎŰencContent
- ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö (º¹È£ÈÇÒ ¸Þ½ÃÁö)content
- º¹È£ÈµÈ ¸Þ½ÃÁö
java.io.IOException
- ÀÎÁõ¼ µðÄÚµù ½ÇÆÐ½Ã ¹ß»ý
ParsingException
- Áö¿øÇÏÁö ¾Ê´Â ¼ö½ÅÀÚ Á¤º¸ ÇüŰ¡ ÀÖ´Â °æ¿ì¿¡ ¹ß»ý
java.security.InvalidKeyException
- ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÀûÇÕÇÑ Å°(À߸øµÈ ÀÎÄÚµù, À߸øµÈ ±æÀÌ, ÃʱâÈ µÇÁö ¾ÊÀ½ µî)°¡ ¾Æ´Ñ °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchAlgorithmException
- Áö¿øÇÏÁö ¾Ê´Â ¾Ë°í¸®ÁòÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.NoSuchPaddingException
- Áö¿øÇÏÁö ¾Ê´Â ÆÐµù Á¾·ùÀÏ °æ¿ì¿¡ ¹ß»ý
NoSuchModeException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµåÀÏ °æ¿ì¿¡ ¹ß»ý
NotForUserException
- ÇØ´ç ¼ö½ÅÀڷΠó¸®ÇÒ ¼ö ¾øÀ» °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchProviderException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµâ Á¦°øÀÚÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.IllegalBlockSizeException
- ÀÔ·Â µ¥ÀÌÅÍÀÇ ±æÀ̰¡ ºí·° ¾Ë°í¸®Áò¿¡ ÀûÇÕÇÏÁö ¾Ê´Â °æ¿ì¿¡ ¹ß»ý
javax.crypto.BadPaddingException
- ÀԷ°ªÀÌ ÁöÁ¤µÈ ÆÐµù ŸÀÔÀ¸·Î ÆÐµù µÇ¾îÀÖÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ý
java.security.InvalidAlgorithmParameterException
- ¾Ë°í¸®Áò ÆÄ¶ó¸ÞÅͰ¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ýpublic byte[] decrypt(X509Certificate myCert, PKCS8PrivateKeyInfo myPriKeyInfo) throws java.io.IOException, ParsingException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, NoSuchModeException, NotForUserException, java.security.NoSuchProviderException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.InvalidAlgorithmParameterException
myCert
- ¼ö½ÅÀÚ ÀÎÁõ¼myPriKeyInfo
- ¼ö½ÅÀÚ °³ÀÎŰ
java.io.IOException
- ÀÎÁõ¼ µðÄÚµù ½ÇÆÐ½Ã ¹ß»ý
ParsingException
- Áö¿øÇÏÁö ¾Ê´Â ¼ö½ÅÀÚ Á¤º¸ ÇüŰ¡ ÀÖ´Â °æ¿ì¿¡ ¹ß»ý
java.security.InvalidKeyException
- ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÀûÇÕÇÑ Å°(À߸øµÈ ÀÎÄÚµù, À߸øµÈ ±æÀÌ, ÃʱâÈ µÇÁö ¾ÊÀ½ µî)°¡ ¾Æ´Ñ °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchAlgorithmException
- Áö¿øÇÏÁö ¾Ê´Â ¾Ë°í¸®ÁòÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.NoSuchPaddingException
- Áö¿øÇÏÁö ¾Ê´Â ÆÐµù Á¾·ùÀÏ °æ¿ì¿¡ ¹ß»ý
NoSuchModeException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµåÀÏ °æ¿ì¿¡ ¹ß»ý
NotForUserException
- ÇØ´ç ¼ö½ÅÀڷΠó¸®ÇÒ ¼ö ¾øÀ» °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchProviderException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµâ Á¦°øÀÚÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.IllegalBlockSizeException
- ÀÔ·Â µ¥ÀÌÅÍÀÇ ±æÀ̰¡ ºí·° ¾Ë°í¸®Áò¿¡ ÀûÇÕÇÏÁö ¾Ê´Â °æ¿ì¿¡ ¹ß»ý
javax.crypto.BadPaddingException
- ÀԷ°ªÀÌ ÁöÁ¤µÈ ÆÐµù ŸÀÔÀ¸·Î ÆÐµù µÇ¾îÀÖÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ý
java.security.InvalidAlgorithmParameterException
- ¾Ë°í¸®Áò ÆÄ¶ó¸ÞÅͰ¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ýpublic byte[] decrypt(X509Certificate myCert, PKCS8PrivateKeyInfo myPriKeyInfo, java.io.InputStream encContent) throws java.io.IOException, ParsingException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, NoSuchModeException, NotForUserException, java.security.NoSuchProviderException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.InvalidAlgorithmParameterException
myCert
- ¼ö½ÅÀÚ ÀÎÁõ¼myPriKeyInfo
- ¼ö½ÅÀÚ °³ÀÎŰencContent
- ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö (º¹È£ÈÇÒ ¸Þ½ÃÁö)
java.io.IOException
- ÀÎÁõ¼ µðÄÚµù ½ÇÆÐ½Ã ¹ß»ý
ParsingException
- Áö¿øÇÏÁö ¾Ê´Â ¼ö½ÅÀÚ Á¤º¸ ÇüŰ¡ ÀÖ´Â °æ¿ì¿¡ ¹ß»ý
java.security.InvalidKeyException
- ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÀûÇÕÇÑ Å°(À߸øµÈ ÀÎÄÚµù, À߸øµÈ ±æÀÌ, ÃʱâÈ µÇÁö ¾ÊÀ½ µî)°¡ ¾Æ´Ñ °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchAlgorithmException
- Áö¿øÇÏÁö ¾Ê´Â ¾Ë°í¸®ÁòÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.NoSuchPaddingException
- Áö¿øÇÏÁö ¾Ê´Â ÆÐµù Á¾·ùÀÏ °æ¿ì¿¡ ¹ß»ý
NoSuchModeException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµåÀÏ °æ¿ì¿¡ ¹ß»ý
NotForUserException
- ÇØ´ç ¼ö½ÅÀڷΠó¸®ÇÒ ¼ö ¾øÀ» °æ¿ì¿¡ ¹ß»ý
java.security.NoSuchProviderException
- Áö¿øÇÏÁö ¾Ê´Â ¾ÏÈ£ ¸ðµâ Á¦°øÀÚÀÏ °æ¿ì¿¡ ¹ß»ý
javax.crypto.IllegalBlockSizeException
- ÀÔ·Â µ¥ÀÌÅÍÀÇ ±æÀ̰¡ ºí·° ¾Ë°í¸®Áò¿¡ ÀûÇÕÇÏÁö ¾Ê´Â °æ¿ì¿¡ ¹ß»ý
javax.crypto.BadPaddingException
- ÀԷ°ªÀÌ ÁöÁ¤µÈ ÆÐµù ŸÀÔÀ¸·Î ÆÐµù µÇ¾îÀÖÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ý
java.security.InvalidAlgorithmParameterException
- ¾Ë°í¸®Áò ÆÄ¶ó¸ÞÅͰ¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì¿¡ ¹ß»ýpublic java.security.Key getKey()
getParameter()
public java.security.spec.AlgorithmParameterSpec getParameter()
getKey()
public static EnvelopedData seperate(java.io.InputStream envData, java.io.OutputStream cipherText) throws java.io.IOException, ParsingException
envData
- ¾ÏÈ£¹®À» Æ÷ÇÔÇÏ´Â ºñ´ëĪŰ ¾ÏÈ£ ¸Þ½ÃÁö (EnvelopedData)cipherText
- ºÐ¸®µÈ ¾ÏÈ£¹®
java.io.IOException
- ÀÔ/Ãâ·Â ¿¹¿Ü ¹ß»ý
ParsingException
- ºñ´ëĪŰ ¾ÏÈ£¹® ó¸® ½ÇÆÐ ½Ã
|
JCaosLib V1.4.4.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |