IronNode.User.generateDeviceKeys()now also returns the standard IronCore device fields (accountId,segmentId,devicePrivateKey,signingPrivateKey) plus the new device'sdeviceId,name,created,lastUpdated, andpublicSigningKey. The existingaccountID,segmentID,deviceKeys, andsigningKeysfields are deprecated.IronNode.initialize()accepts aDeviceContextobject, such as the result ofgenerateDeviceKeys()or a device JSON produced by another IronCore SDK. It also still accepts the pre-1.3.0generateDeviceKeys()result (accountID,segmentID,deviceKeys,signingKeys), typed as the deprecatedLegacyDeviceContext.SDK.user.listDevices()is typed to include each device'spublicSigningKey, which the API already returns.- Added
SDK.user.deleteDeviceByPublicSigningKey()andIronNode.User.deleteDeviceByPublicSigningKey()(JWT authorized) to delete a device given its public signing key. - Deleting the SDK's own device now ends the session through every delete path:
SDK.user.deleteDevice(id)with the current device's ID,SDK.user.deleteDeviceByPublicSigningKey(), andIronNode.User.deleteDeviceByPublicSigningKey(). Previously onlySDK.user.deleteDevice()with no ID did.SDK.user.deleteDevice(id)makes an extra device list request to find out whetheridis the current device. SDK.user.deleteDevice()rejects a device ID that is not a positive number. Previously0andnulldeleted the current device without ending the session.- Fixed the type of
nameon devices returned bySDK.user.listDevices()tostring | null. Devices created without adeviceNamehave anullname.
- Added user operation
disableSelfto deactivate the calling user. - Added user operation
updateUserStatusto enable or disable a user administratively via a JWT generated from the IronCore Config and Identity Assertion Key. - Dependency updates.
Removed support for Node 16 and 18 (EOL).
Added support for Node 22 and 24.
Removed support for Node 14.
Updated dependencies, including support for arm64-linux and Node 20.
Removed support for node 12.
Updated dependencies and relaxed version requirements for @ironcorelabs/recrypt-node-binding and node-fetch.
Added support for node 18.
None
Added arm64 to supported CPUs now that recrypt + node bindings supports it.
Dropped Node 10 support
Updated dependencies and bumped recrypt-node-binding so we get Node 14 and 16 support.
None
Updated all dependencies to their latest version.
None
Updated all dependencies to their latest version.
- Removed Node 8 support
- Added Windows support.
- Added
grantToAuthoroption toDocumentCreateOptions. This allows creating a document without encrypting it to the currently initialized user. Defaults to true. If false, caller must provide a value within either the user or group access lists, as every document must be encrypted to at least one user or group. - Key Rotation
- User Key Rotation: Added the ability to rotate a users private key while keeping their public key the same. This is accomplished via multi-party computation with the IronCore webservice. The main use case for this is a workflow that requires that the users account be generated prior to the user logging in for the first time.
- Users can be created with a flag marking their account as needing rotation when using the
IronNode.User.create()call. - User private keys can be rotated using the new
SDK.user.rotateMasterKey(password: string)method.
- Users can be created with a flag marking their account as needing rotation when using the
- Group Key Rotation. Added the ability to rotate a groups private key while keeping the group public key the same. This works the same way as user key rotation and supports the use case where the group is generated prior to the admins logging in for the first time.
- Groups can be created with a flag marking their need for rotation a
needsRotationflag to theGroupCreateOptions - Group private key scan be rotated using the new
SDK.group.rotatePrivateKey(groupId: string)method. The calling user must be an administrator of the group in order to rotate its private key.
- Groups can be created with a flag marking their need for rotation a
- Initialization return type: After initializing the IronNode SDK, the resulting SDK object will now also contain a
userContextfield which contains key rotation information for the currently initialized user.needsRotation: Iftrue, denotes that the current users private key should be rotated.groupsNeedingRotation: Contains a list of group IDs that the current user is an administrator of that are marked as needing their private key rotated.
- User Key Rotation: Added the ability to rotate a users private key while keeping their public key the same. This is accomplished via multi-party computation with the IronCore webservice. The main use case for this is a workflow that requires that the users account be generated prior to the user logging in for the first time.
- Added a method to allow the currently initialized user to change their private key escrow password. The
SDK.user.changePassword(currentPassword: string, newPassword: string)method decrypts and re-encrypts the users master private key using the provided current and new passwords.
None
Updated to latest version of recrypt-node-binding.
None
- Updated
recrypt-node-bindingto support musl distributions.
- Update
recrypt-node-bindingdependency and various dev dependencies.
- Upgraded
recrypt-node-bindingdependency as well as all other dependencies. This adds support for Node 12 and removes support for Node 9 and Node 11.
- All document and group methods which return the details about the document/group will now include a
createdandupdatedtimestamp fields. These timestamps are strings formatted in RFC3339 format which can be passed directly into theDateconstructor (e.g.new Date(document.created)).
- Added restrictions for user, group, and document IDs. If any method is called with an ID that doesn't conform to the ID requirements, that method will throw. IDs are now restricted to the following characters:
- Any number (0-9)
- Any uppercase or lowercase letter from a-z
- The following special characters
_.$#|@/:;=+'- - Be at most 100 characters long
- Added new
SDK.group.update()method to update a group. Currently only supports updating the name to a new value or clearing the name. - Added new
SDK.group.delete()method to delete a group. Group deletes are permanent and will cause all documents that are only encrypted to the group to no longer be decryptable. Use caution when calling this method. - Added new
SDK.user.listDevices()method which will list all of the devices the user has currently authorized to decrypt their data. - Added new
SDK.user.deleteDevice()method which will deauthorize a users device keys given their ID and cause those keys to no longer be able to decrypt a users data. - Added argument to
IronNode.User.generateDeviceKeys()method to be able to specify a readable name for a device upon creation. - A new error code (
IronNode.ErrorCodes.REQUEST_RATE_LIMITED) will be returned if usage of the SDK is high enough to cause the IP to be rate limited. When this error code is returned, no further API requests will be returned until usage has dropped for 1 minute.
None
- Added
SDK.document.getDocumentIDFromBytes()andSDK.document.getDocumentIDFromStream()methods to allow document IDs to be extracted from their encrypted content. Starting with this version all newly encrypted documents will have their ID embedded into a header of the encrypted document. These two methods will only return a value when passed documents created from this version on. Older versions will just returnnull.
None
- Fixed exported TS types for
Usertop level object.
None
- Consumed updated changes from
recrypt-node-bindingfor method name change. - Added supported Node versions, platforms, and architectures to package.json.
Initial open source release