summaryrefslogtreecommitdiffstats
path: root/security/manager/ssl/nsICryptoHMAC.idl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /security/manager/ssl/nsICryptoHMAC.idl
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'security/manager/ssl/nsICryptoHMAC.idl')
-rw-r--r--security/manager/ssl/nsICryptoHMAC.idl106
1 files changed, 106 insertions, 0 deletions
diff --git a/security/manager/ssl/nsICryptoHMAC.idl b/security/manager/ssl/nsICryptoHMAC.idl
new file mode 100644
index 0000000000..671d97c311
--- /dev/null
+++ b/security/manager/ssl/nsICryptoHMAC.idl
@@ -0,0 +1,106 @@
+/* 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/. */
+
+#include "nsISupports.idl"
+interface nsIInputStream;
+interface nsIKeyObject;
+
+/**
+ * nsICryptoHMAC
+ * This interface provides HMAC signature algorithms.
+ */
+
+[scriptable, uuid(8FEB4C7C-1641-4a7b-BC6D-1964E2099497)]
+interface nsICryptoHMAC : nsISupports
+{
+ /**
+ * Hashing Algorithms. These values are to be used by the |init| method to
+ * indicate which hashing function to use. These values map onto the values
+ * defined in mozilla/security/nss/lib/softoken/pkcs11t.h and are switched
+ * to a CKM_*_HMAC constant.
+ */
+ // 1 used to mean MD2.
+ const short MD5 = 2;
+ const short SHA1 = 3;
+ const short SHA256 = 4;
+ const short SHA384 = 5;
+ const short SHA512 = 6;
+
+ /**
+ * Initialize the hashing object. This method may be
+ * called multiple times with different algorithm types.
+ *
+ * @param aAlgorithm the algorithm type to be used.
+ * This value must be one of the above valid
+ * algorithm types.
+ *
+ * @param aKeyObject
+ * Object holding a key. To create the key object use for instance:
+ * var keyObject = Components.classes["@mozilla.org/security/keyobjectfactory;1"]
+ * .getService(Components.interfaces.nsIKeyObjectFactory)
+ * .keyFromString(Components.interfaces.nsIKeyObject.HMAC, rawKeyData);
+ *
+ * WARNING: This approach is not FIPS compliant.
+ *
+ * @throws NS_ERROR_INVALID_ARG if an unsupported algorithm
+ * type is passed.
+ *
+ * NOTE: This method must be called before any other method on this
+ * interface is called.
+ */
+ [must_use]
+ void init(in unsigned long aAlgorithm, in nsIKeyObject aKeyObject);
+
+ /**
+ * @param aData a buffer to calculate the hash over
+ *
+ * @param aLen the length of the buffer |aData|
+ *
+ * @throws NS_ERROR_NOT_INITIALIZED If |init| has not been called.
+ */
+ [must_use]
+ void update([const, array, size_is(aLen)] in octet aData, in unsigned long aLen);
+
+ /**
+ * Calculates and updates a new hash based on a given data stream.
+ *
+ * @param aStream an input stream to read from.
+ *
+ * @param aLen How much to read from the given |aStream|. Passing UINT32_MAX
+ * indicates that all data available will be used to update the hash.
+ *
+ * @throws NS_ERROR_NOT_INITIALIZED If |init| has not been called.
+ *
+ * @throws NS_ERROR_NOT_AVAILABLE If the requested amount of data to be
+ * calculated into the hash is not available.
+ *
+ */
+ [must_use]
+ void updateFromStream(in nsIInputStream aStream, in unsigned long aLen);
+
+ /**
+ * Completes this HMAC object and produces the actual HMAC digest data.
+ *
+ * @param aASCII If true then the returned value is a base64 encoded string.
+ * If false, then the returned value is binary data.
+ *
+ * @return a hash of the data that was read by this object. This can
+ * be either binary data or base 64 encoded.
+ *
+ * @throws NS_ERROR_NOT_INITIALIZED If |init| has not been called.
+ *
+ * NOTE: This method may be called any time after |init|
+ * is called. This call resets the object to its
+ * pre-init state.
+ */
+ [must_use]
+ ACString finish(in boolean aASCII);
+
+ /**
+ * Reinitialize HMAC context to be reused with the same settings (the key
+ * and hash algorithm) but on a different set of data.
+ */
+ [must_use]
+ void reset();
+};