<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script src="../resources/common.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>

<script>
description("Test ECDH deriveBits operation with malformed parameters");

jsTestIsAsync = true;

var extractable = true;
var jwkPrivateKey = {
    kty: "EC",
    crv: "P-256",
    x: "1FSVWieTvikFkG1NOyhkUCaMbdQhxwH6aCu4Ez-sRtA",
    y: "9jmNTLqM4cjBhdAnHcNI9YQV3O8LFmo-EdZWk8ntAaI",
    d: "ppxBSov3N8_AUcisAuvmLV4yE8e_L_BLE8bZb9Z1Xjg",
};
var jwkPublicKey = {
    kty: "EC",
    crv: "P-256",
    x: "1FSVWieTvikFkG1NOyhkUCaMbdQhxwH6aCu4Ez-sRtA",
    y: "9jmNTLqM4cjBhdAnHcNI9YQV3O8LFmo-EdZWk8ntAaI",
};
var jwkPublicKeyP384 = {
    kty: "EC",
    crv: "P-384",
    x: "TEsQRAL-nau4K75XNynuR6fdoTGGm5X1XgOrR5iSziBVqhRYOAteuF8-U0wxN89s",
    y: "r-Wn9YIXJ_r7uNN5s9eVeXElm6ZcTGvYKg6GtKJXUXuJUZRMF7EIB_H6xpOmthV6",
};
var rsaSpkiKey = Base64URL.parse("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwCjRCtFwvSNYMZ07u5SxARxglJl75T7bUZXFsDVxHkMhpNC2RaN4jWE5bwYUDMeD2fVmxhpaUQn/6AbFLh6gHxtwrCfc7rIo/SfDdGd3GkRlXK5xXwGuM6MvP9nuZHaarIyArRFh2U2UZxFlVsKI0pSHo6n58W1fPZ1syOoVEZ/WYE6gLhMMwfpeAm97mro7mekRdMULOV/mR5Ul3CHm9Zt93Dc8GpnPA8bhLiB0VNyGTEMa06nJul4gj1sjxLDoUvZY2EWq7oUUnfLBUYMfiqK0kQcW94wvBrIq2DQUApLyTTbaAOY46TLwX6c8LtubJriYKTC5a9Bb0/7ovTWB0wIDAQAB");

crypto.subtle.importKey("jwk", jwkPrivateKey, { name: "ECDH", namedCurve: "P-256" }, extractable, ["deriveBits"]).then(function(result) {
    privateKey = result;
    return crypto.subtle.importKey("jwk", jwkPublicKey, { name: "ECDH", namedCurve: "P-256" }, extractable, [ ]);
}).then(function(result) {
    publicKey = result;
    return crypto.subtle.importKey("spki", rsaSpkiKey, {name: "RSA-OAEP", hash: "sha-1"}, extractable, ["encrypt", "wrapKey"]);
}).then(function(result) {
    fakeKey = result;
    return crypto.subtle.importKey("jwk", jwkPublicKeyP384, { name: "ECDH", namedCurve: "P-384" }, extractable, [ ]);
}).then(function(result) {
    publicKeyP384 = result;
    // Malformed AlgorithmIdentifiers
    shouldReject('crypto.subtle.deriveBits("ecdh", privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh"}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: true}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: null}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: undefined}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: Symbol()}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: { }}, privateKey, null)');
    shouldReject('crypto.subtle.deriveBits({name: "ecdh", public: 1}, privateKey, null)');
    // Wrong length
    shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:publicKey }, privateKey, 1)');
    // base key is public
    shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:publicKey }, publicKey, null)');
    // public key is private
    shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:privateKey }, privateKey, null)');
    // faked public key
    shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:fakeKey }, privateKey, null)');
    // mismatched named curve
    shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:publicKeyP384 }, privateKey, null)');
    // Wrong length
    return shouldReject('crypto.subtle.deriveBits({ name:"ECDH", public:publicKey }, privateKey, 384)');
}).then(finishJSTest, finishJSTest);

</script>

<script src="../../resources/js-test-post.js"></script>
</body>
</html>
