2016-06-30 4 views
1

웹 암호화 API/SubtleCrypto에서 생성 된 키를 내보내려고합니다.CryptoKey를 내보내는 방법은 무엇입니까?

나는 오류 메시지 다음 수신 crypto.subtle.exportKey을 실행 해요 때 : 크롬에서 :

예외 : DOMException : 키가 추출되지 않습니다 (InvalidAccessError)

와 파이어 폭스

에서

기본 개체에서 매개 변수 나 작업을 지원하지 않습니다 (InvalidAccessError)

cryptoTestObject = crypto.subtle.generateKey(
      { 
       name: "AES-CBC", 
       length: 256, //can be 128, 192, or 256 
      }, 
      false, //whether the key is extractable (i.e. can be used in exportKey) 
      ["encrypt", "decrypt"] //can "encrypt", "decrypt", "wrapKey", or "unwrapKey" 
     ) 
     .then(function (key) { 
      //returns a key object 
      saveKeyInLocalStorage(keyName, key); 
      console.log('CryptoPromise' + key); 
     }) 
     .catch(function (err) { 
      console.log(err); 
     }); 

function saveKeyInLocalStorage(keyName, aesKey) { 
    var exportPromise = crypto.subtle.exportKey('raw', aesKey); 
    exportPromise.then(function (aesKey_RAW) { 
     localStorage.setItem(keyName + 'key', aesKey_RAW); 
     console.log("saved."); 
    }); 
} 

어떻게 원시 형식으로 내보낼 수있는 키를 생성 할 수 있습니까?

답변

0

추출 가능 설정을 false으로 설정하여 키를 생성 중입니다. 대신 true으로 설정하십시오.

crypto.subtle.generateKey(
    { 
     name: "AES-CBC", 
     length: 256 
    }, 
    true, // <-- here 
    ["encrypt", "decrypt"] 
) 
관련 문제