summaryrefslogtreecommitdiffstats
path: root/security/manager/ssl/nsKeygenHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'security/manager/ssl/nsKeygenHandler.h')
-rw-r--r--security/manager/ssl/nsKeygenHandler.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/security/manager/ssl/nsKeygenHandler.h b/security/manager/ssl/nsKeygenHandler.h
new file mode 100644
index 000000000..56cac4850
--- /dev/null
+++ b/security/manager/ssl/nsKeygenHandler.h
@@ -0,0 +1,82 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsKeygenHandler_h
+#define nsKeygenHandler_h
+
+#include "ScopedNSSTypes.h"
+#include "keythi.h"
+#include "nsCOMPtr.h"
+#include "nsError.h"
+#include "nsIFormProcessor.h"
+#include "nsIInterfaceRequestor.h"
+#include "nsNSSShutDown.h"
+#include "nsTArray.h"
+#include "secmodt.h"
+
+nsresult GetSlotWithMechanism(uint32_t mechanism,
+ nsIInterfaceRequestor* ctx,
+ PK11SlotInfo** retSlot,
+ nsNSSShutDownPreventionLock& /*proofOfLock*/);
+
+#define DEFAULT_RSA_KEYGEN_PE 65537L
+#define DEFAULT_RSA_KEYGEN_ALG SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION
+
+mozilla::UniqueSECItem DecodeECParams(const char* curve);
+
+class nsKeygenFormProcessor : public nsIFormProcessor
+ , public nsNSSShutDownObject
+{
+public:
+ nsKeygenFormProcessor();
+ nsresult Init();
+
+ virtual nsresult ProcessValue(nsIDOMHTMLElement* aElement,
+ const nsAString& aName,
+ nsAString& aValue) override;
+
+ virtual nsresult ProcessValueIPC(const nsAString& aOldValue,
+ const nsAString& aChallenge,
+ const nsAString& aKeyType,
+ const nsAString& aKeyParams,
+ nsAString& aNewValue) override;
+
+ virtual nsresult ProvideContent(const nsAString& aFormType,
+ nsTArray<nsString>& aContent,
+ nsAString& aAttribute) override;
+ NS_DECL_THREADSAFE_ISUPPORTS
+
+ static nsresult Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult);
+
+ static void ExtractParams(nsIDOMHTMLElement* aElement,
+ nsAString& challengeValue,
+ nsAString& keyTypeValue,
+ nsAString& keyParamsValue);
+
+ // Nothing to release.
+ virtual void virtualDestroyNSSReference() override {}
+
+protected:
+ virtual ~nsKeygenFormProcessor();
+
+ nsresult GetPublicKey(const nsAString& aValue, const nsAString& aChallenge,
+ const nsAFlatString& akeyType, nsAString& aOutPublicKey,
+ const nsAString& aPqg);
+ nsresult GetSlot(uint32_t aMechanism, PK11SlotInfo** aSlot);
+private:
+ nsCOMPtr<nsIInterfaceRequestor> m_ctx;
+
+ typedef struct SECKeySizeChoiceInfoStr {
+ nsString name;
+ int size;
+ } SECKeySizeChoiceInfo;
+
+ enum { number_of_key_size_choices = 2 };
+
+ SECKeySizeChoiceInfo mSECKeySizeChoiceList[number_of_key_size_choices];
+};
+
+#endif // nsKeygenHandler_h