@super-protocol/swarm-contracts-sdk 0.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +66 -0
- package/README.md +52 -0
- package/dist/cjs/analytics/Analytics.d.ts +17 -0
- package/dist/cjs/analytics/Analytics.js +84 -0
- package/dist/cjs/analytics/AnalyticsError.d.ts +7 -0
- package/dist/cjs/analytics/AnalyticsError.js +12 -0
- package/dist/cjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
- package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +38 -0
- package/dist/cjs/analytics/eventProviders/EventProvider.d.ts +24 -0
- package/dist/cjs/analytics/eventProviders/EventProvider.js +25 -0
- package/dist/cjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
- package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +56 -0
- package/dist/cjs/analytics/transports/AxiosTransport.d.ts +4 -0
- package/dist/cjs/analytics/transports/AxiosTransport.js +60 -0
- package/dist/cjs/analytics/transports/FetchTransport.d.ts +4 -0
- package/dist/cjs/analytics/transports/FetchTransport.js +31 -0
- package/dist/cjs/analytics/types.d.ts +26 -0
- package/dist/cjs/analytics/types.js +3 -0
- package/dist/cjs/certificates/binary-splitter.d.ts +27 -0
- package/dist/cjs/certificates/binary-splitter.js +279 -0
- package/dist/cjs/certificates/crl.d.ts +6 -0
- package/dist/cjs/certificates/crl.js +66 -0
- package/dist/cjs/certificates/generator.d.ts +38 -0
- package/dist/cjs/certificates/generator.js +262 -0
- package/dist/cjs/certificates/helper.d.ts +29 -0
- package/dist/cjs/certificates/helper.js +216 -0
- package/dist/cjs/certificates/index.d.ts +5 -0
- package/dist/cjs/certificates/index.js +22 -0
- package/dist/cjs/certificates/ocsp.d.ts +14 -0
- package/dist/cjs/certificates/ocsp.js +320 -0
- package/dist/cjs/certificates/serializer.d.ts +13 -0
- package/dist/cjs/certificates/serializer.js +142 -0
- package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
- package/dist/cjs/certificates/setup-crypto.js +48 -0
- package/dist/cjs/certificates/types.d.ts +122 -0
- package/dist/cjs/certificates/types.js +10 -0
- package/dist/cjs/config.d.ts +3 -0
- package/dist/cjs/config.js +7 -0
- package/dist/cjs/connectors/BaseConnector.d.ts +52 -0
- package/dist/cjs/connectors/BaseConnector.js +61 -0
- package/dist/cjs/connectors/BlockchainConnector.d.ts +78 -0
- package/dist/cjs/connectors/BlockchainConnector.js +325 -0
- package/dist/cjs/connectors/BlockchainEventsListener.d.ts +33 -0
- package/dist/cjs/connectors/BlockchainEventsListener.js +283 -0
- package/dist/cjs/connectors/index.d.ts +2 -0
- package/dist/cjs/connectors/index.js +11 -0
- package/dist/cjs/constants.d.ts +48 -0
- package/dist/cjs/constants.js +683 -0
- package/dist/cjs/contracts/SuperProtocolToken.d.ts +300 -0
- package/dist/cjs/contracts/SuperProtocolToken.js +3 -0
- package/dist/cjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
- package/dist/cjs/contracts/SuperProtocolToken__factory.js +521 -0
- package/dist/cjs/contracts/typechain-types/common.d.ts +50 -0
- package/dist/cjs/contracts/typechain-types/common.js +3 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4335 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +10 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
- package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +32 -0
- package/dist/cjs/contracts/typechain-types/factories/index.d.ts +1 -0
- package/dist/cjs/contracts/typechain-types/factories/index.js +32 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +3 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +3 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
- package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.js +3 -0
- package/dist/cjs/contracts/typechain-types/index.d.ts +5 -0
- package/dist/cjs/contracts/typechain-types/index.js +34 -0
- package/dist/cjs/crypto/Crypto.d.ts +70 -0
- package/dist/cjs/crypto/Crypto.js +137 -0
- package/dist/cjs/crypto/index.d.ts +4 -0
- package/dist/cjs/crypto/index.js +37 -0
- package/dist/cjs/crypto/nodejs/AES.d.ts +25 -0
- package/dist/cjs/crypto/nodejs/AES.js +105 -0
- package/dist/cjs/crypto/nodejs/ARIA.d.ts +23 -0
- package/dist/cjs/crypto/nodejs/ARIA.js +77 -0
- package/dist/cjs/crypto/nodejs/ECIES.d.ts +10 -0
- package/dist/cjs/crypto/nodejs/ECIES.js +107 -0
- package/dist/cjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
- package/dist/cjs/crypto/nodejs/NativeCrypto.js +154 -0
- package/dist/cjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
- package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +94 -0
- package/dist/cjs/crypto/types.d.ts +10 -0
- package/dist/cjs/crypto/types.js +3 -0
- package/dist/cjs/crypto/utils.d.ts +15 -0
- package/dist/cjs/crypto/utils.js +94 -0
- package/dist/cjs/crypto/utils.spec.d.ts +1 -0
- package/dist/cjs/crypto/utils.spec.js +221 -0
- package/dist/cjs/errors/base.error.d.ts +3 -0
- package/dist/cjs/errors/base.error.js +19 -0
- package/dist/cjs/errors/index.d.ts +3 -0
- package/dist/cjs/errors/index.js +10 -0
- package/dist/cjs/errors/insufficient-funds.error.d.ts +19 -0
- package/dist/cjs/errors/insufficient-funds.error.js +57 -0
- package/dist/cjs/errors/not-found.error.d.ts +3 -0
- package/dist/cjs/errors/not-found.error.js +8 -0
- package/dist/cjs/errors/utils.d.ts +2 -0
- package/dist/cjs/errors/utils.js +30 -0
- package/dist/cjs/index.d.ts +58 -0
- package/dist/cjs/index.js +119 -0
- package/dist/cjs/logger.d.ts +7 -0
- package/dist/cjs/logger.js +12 -0
- package/dist/cjs/models/EtlModel.d.ts +34 -0
- package/dist/cjs/models/EtlModel.js +125 -0
- package/dist/cjs/models/index.d.ts +1 -0
- package/dist/cjs/models/index.js +9 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/polyfills.d.ts +4 -0
- package/dist/cjs/polyfills.js +8 -0
- package/dist/cjs/proto/AmdSevSnp.d.ts +194 -0
- package/dist/cjs/proto/AmdSevSnp.js +358 -0
- package/dist/cjs/proto/Compression.d.ts +43 -0
- package/dist/cjs/proto/Compression.js +133 -0
- package/dist/cjs/proto/Hash.d.ts +37 -0
- package/dist/cjs/proto/Hash.js +104 -0
- package/dist/cjs/proto/Nvtrust.d.ts +116 -0
- package/dist/cjs/proto/Nvtrust.js +159 -0
- package/dist/cjs/proto/OrderReport.d.ts +730 -0
- package/dist/cjs/proto/OrderReport.js +466 -0
- package/dist/cjs/proto/TRI.d.ts +215 -0
- package/dist/cjs/proto/TRI.js +318 -0
- package/dist/cjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
- package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +145 -0
- package/dist/cjs/providers/storage/IStorageProvider.d.ts +15 -0
- package/dist/cjs/providers/storage/IStorageProvider.js +3 -0
- package/dist/cjs/providers/storage/S3StorageProvider.d.ts +26 -0
- package/dist/cjs/providers/storage/S3StorageProvider.js +210 -0
- package/dist/cjs/providers/storage/StorageAdapter.d.ts +62 -0
- package/dist/cjs/providers/storage/StorageAdapter.js +300 -0
- package/dist/cjs/providers/storage/StorageContentWriter.d.ts +46 -0
- package/dist/cjs/providers/storage/StorageContentWriter.js +168 -0
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +139 -0
- package/dist/cjs/providers/storage/StorageMetadataReader.d.ts +20 -0
- package/dist/cjs/providers/storage/StorageMetadataReader.js +56 -0
- package/dist/cjs/providers/storage/StorjAdapter.d.ts +20 -0
- package/dist/cjs/providers/storage/StorjAdapter.js +60 -0
- package/dist/cjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
- package/dist/cjs/providers/storage/StorjCredentialsManager.js +114 -0
- package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +29 -0
- package/dist/cjs/providers/storage/StorjStorageProvider.js +146 -0
- package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/cjs/providers/storage/fs-storage-provider.js +162 -0
- package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/cjs/providers/storage/getStorageProvider.js +23 -0
- package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +4 -0
- package/dist/cjs/providers/storage/parseStorageCredentials.js +21 -0
- package/dist/cjs/providers/storage/types.d.ts +29 -0
- package/dist/cjs/providers/storage/types.js +3 -0
- package/dist/cjs/staticModels/Deposits.d.ts +85 -0
- package/dist/cjs/staticModels/Deposits.js +268 -0
- package/dist/cjs/staticModels/Diamond.d.ts +6 -0
- package/dist/cjs/staticModels/Diamond.js +22 -0
- package/dist/cjs/staticModels/ModelPackager.d.ts +18 -0
- package/dist/cjs/staticModels/ModelPackager.js +49 -0
- package/dist/cjs/staticModels/ProviderRewards.d.ts +5 -0
- package/dist/cjs/staticModels/ProviderRewards.js +81 -0
- package/dist/cjs/staticModels/StaticModel.d.ts +6 -0
- package/dist/cjs/staticModels/StaticModel.js +43 -0
- package/dist/cjs/staticModels/Superpro.d.ts +18 -0
- package/dist/cjs/staticModels/Superpro.js +47 -0
- package/dist/cjs/staticModels/SuperproToken.d.ts +113 -0
- package/dist/cjs/staticModels/SuperproToken.js +333 -0
- package/dist/cjs/store.d.ts +17 -0
- package/dist/cjs/store.js +19 -0
- package/dist/cjs/tee/OrderReportService.d.ts +9 -0
- package/dist/cjs/tee/OrderReportService.js +104 -0
- package/dist/cjs/tee/QuoteParser.d.ts +82 -0
- package/dist/cjs/tee/QuoteParser.js +410 -0
- package/dist/cjs/tee/TeeCertificateService.d.ts +20 -0
- package/dist/cjs/tee/TeeCertificateService.js +143 -0
- package/dist/cjs/tee/TeeSignatureVerifier.d.ts +24 -0
- package/dist/cjs/tee/TeeSignatureVerifier.js +118 -0
- package/dist/cjs/tee/errors.d.ts +11 -0
- package/dist/cjs/tee/errors.js +20 -0
- package/dist/cjs/tee/helpers.d.ts +14 -0
- package/dist/cjs/tee/helpers.js +115 -0
- package/dist/cjs/tee/interface.d.ts +63 -0
- package/dist/cjs/tee/interface.js +3 -0
- package/dist/cjs/tee/statuses.d.ts +14 -0
- package/dist/cjs/tee/statuses.js +20 -0
- package/dist/cjs/tee/types.d.ts +126 -0
- package/dist/cjs/tee/types.js +34 -0
- package/dist/cjs/types/Compressor.d.ts +5 -0
- package/dist/cjs/types/Compressor.js +3 -0
- package/dist/cjs/types/Consensus.d.ts +52 -0
- package/dist/cjs/types/Consensus.js +11 -0
- package/dist/cjs/types/DepositInfo.d.ts +6 -0
- package/dist/cjs/types/DepositInfo.js +3 -0
- package/dist/cjs/types/DistributedSecretStorage.d.ts +68 -0
- package/dist/cjs/types/DistributedSecretStorage.js +3 -0
- package/dist/cjs/types/EtlModel.d.ts +2 -0
- package/dist/cjs/types/EtlModel.js +3 -0
- package/dist/cjs/types/Events.d.ts +34 -0
- package/dist/cjs/types/Events.js +3 -0
- package/dist/cjs/types/HardwareInfo.d.ts +10 -0
- package/dist/cjs/types/HardwareInfo.js +3 -0
- package/dist/cjs/types/Marks.d.ts +9 -0
- package/dist/cjs/types/Marks.js +10 -0
- package/dist/cjs/types/Offer.d.ts +76 -0
- package/dist/cjs/types/Offer.js +32 -0
- package/dist/cjs/types/OfferVersion.d.ts +30 -0
- package/dist/cjs/types/OfferVersion.js +9 -0
- package/dist/cjs/types/OptionInfo.d.ts +8 -0
- package/dist/cjs/types/OptionInfo.js +3 -0
- package/dist/cjs/types/Order.d.ts +144 -0
- package/dist/cjs/types/Order.js +100 -0
- package/dist/cjs/types/OrderUsage.d.ts +28 -0
- package/dist/cjs/types/OrderUsage.js +3 -0
- package/dist/cjs/types/Origins.d.ts +6 -0
- package/dist/cjs/types/Origins.js +3 -0
- package/dist/cjs/types/Provider.d.ts +7 -0
- package/dist/cjs/types/Provider.js +3 -0
- package/dist/cjs/types/ProviderRewards.d.ts +5 -0
- package/dist/cjs/types/ProviderRewards.js +3 -0
- package/dist/cjs/types/ResourceLoader.d.ts +28 -0
- package/dist/cjs/types/ResourceLoader.js +3 -0
- package/dist/cjs/types/SlotInfo.d.ts +7 -0
- package/dist/cjs/types/SlotInfo.js +3 -0
- package/dist/cjs/types/SlotUsage.d.ts +11 -0
- package/dist/cjs/types/SlotUsage.js +9 -0
- package/dist/cjs/types/Superpro.d.ts +9 -0
- package/dist/cjs/types/Superpro.js +14 -0
- package/dist/cjs/types/TeeOfferInfo.d.ts +38 -0
- package/dist/cjs/types/TeeOfferInfo.js +3 -0
- package/dist/cjs/types/TeeOfferOption.d.ts +13 -0
- package/dist/cjs/types/TeeOfferOption.js +3 -0
- package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
- package/dist/cjs/types/TeeOfferSlot.js +3 -0
- package/dist/cjs/types/ValueOfferSlot.d.ts +18 -0
- package/dist/cjs/types/ValueOfferSlot.js +3 -0
- package/dist/cjs/types/Web3.d.ts +30 -0
- package/dist/cjs/types/Web3.js +3 -0
- package/dist/cjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
- package/dist/cjs/types/blockchainConnector/StorageAccess.js +3 -0
- package/dist/cjs/types/index.d.ts +25 -0
- package/dist/cjs/types/index.js +42 -0
- package/dist/cjs/types/storage/StorageAccess.d.ts +7 -0
- package/dist/cjs/types/storage/StorageAccess.js +3 -0
- package/dist/cjs/types/storage/StorageFileAccess.d.ts +5 -0
- package/dist/cjs/types/storage/StorageFileAccess.js +3 -0
- package/dist/cjs/types/storage/StorageObject.d.ts +8 -0
- package/dist/cjs/types/storage/StorageObject.js +3 -0
- package/dist/cjs/utils/CryptoKeysTransformer.d.ts +42 -0
- package/dist/cjs/utils/CryptoKeysTransformer.js +247 -0
- package/dist/cjs/utils/Monitoring.d.ts +11 -0
- package/dist/cjs/utils/Monitoring.js +51 -0
- package/dist/cjs/utils/NonceTracker.d.ts +20 -0
- package/dist/cjs/utils/NonceTracker.js +82 -0
- package/dist/cjs/utils/PubSub.d.ts +9 -0
- package/dist/cjs/utils/PubSub.js +35 -0
- package/dist/cjs/utils/TxManager.d.ts +28 -0
- package/dist/cjs/utils/TxManager.js +285 -0
- package/dist/cjs/utils/cache/index.d.ts +2 -0
- package/dist/cjs/utils/cache/index.js +21 -0
- package/dist/cjs/utils/cache/memory.d.ts +19 -0
- package/dist/cjs/utils/cache/memory.js +66 -0
- package/dist/cjs/utils/cache/memory.spec.d.ts +1 -0
- package/dist/cjs/utils/cache/memory.spec.js +91 -0
- package/dist/cjs/utils/cache/types.d.ts +17 -0
- package/dist/cjs/utils/cache/types.js +3 -0
- package/dist/cjs/utils/compressors/GzipCompressor.d.ts +8 -0
- package/dist/cjs/utils/compressors/GzipCompressor.js +22 -0
- package/dist/cjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
- package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
- package/dist/cjs/utils/compressors/index.d.ts +2 -0
- package/dist/cjs/utils/compressors/index.js +19 -0
- package/dist/cjs/utils/helper.d.ts +87 -0
- package/dist/cjs/utils/helper.js +576 -0
- package/dist/cjs/utils/helpers/calculateObjectHash.d.ts +8 -0
- package/dist/cjs/utils/helpers/calculateObjectHash.js +25 -0
- package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
- package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
- package/dist/cjs/utils/helpers/getStreamChunks.d.ts +9 -0
- package/dist/cjs/utils/helpers/getStreamChunks.js +35 -0
- package/dist/cjs/utils/helpers/index.d.ts +5 -0
- package/dist/cjs/utils/helpers/index.js +22 -0
- package/dist/cjs/utils/helpers/promise.d.ts +2 -0
- package/dist/cjs/utils/helpers/promise.js +10 -0
- package/dist/cjs/utils/helpers/streamToBuffer.d.ts +4 -0
- package/dist/cjs/utils/helpers/streamToBuffer.js +13 -0
- package/dist/cjs/utils/helpers/tryWithInterval.d.ts +13 -0
- package/dist/cjs/utils/helpers/tryWithInterval.js +39 -0
- package/dist/cjs/utils/rent-calculator/index.d.ts +2 -0
- package/dist/cjs/utils/rent-calculator/index.js +19 -0
- package/dist/cjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
- package/dist/cjs/utils/rent-calculator/rent-calculator.js +114 -0
- package/dist/cjs/utils/rent-calculator/types.d.ts +14 -0
- package/dist/cjs/utils/rent-calculator/types.js +3 -0
- package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
- package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +14 -0
- package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
- package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +60 -0
- package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
- package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +51 -0
- package/dist/cjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
- package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
- package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
- package/dist/cjs/utils/resourceLoaders/index.js +18 -0
- package/dist/cjs/utils/schema-utils/index.d.ts +2 -0
- package/dist/cjs/utils/schema-utils/index.js +9 -0
- package/dist/cjs/utils/schema-utils/serializer.d.ts +3 -0
- package/dist/cjs/utils/schema-utils/serializer.js +31 -0
- package/dist/cjs/utils/schema-utils/validator.d.ts +7 -0
- package/dist/cjs/utils/schema-utils/validator.js +49 -0
- package/dist/cjs/utils/tcb.d.ts +2 -0
- package/dist/cjs/utils/tcb.js +13 -0
- package/dist/cjs/utils/tokens/get-tokens-info.d.ts +8 -0
- package/dist/cjs/utils/tokens/get-tokens-info.js +32 -0
- package/dist/cjs/utils/tokens/index.d.ts +1 -0
- package/dist/cjs/utils/tokens/index.js +18 -0
- package/dist/cjs/utils/types.d.ts +13 -0
- package/dist/cjs/utils/types.js +3 -0
- package/dist/mjs/analytics/Analytics.d.ts +17 -0
- package/dist/mjs/analytics/Analytics.js +78 -0
- package/dist/mjs/analytics/AnalyticsError.d.ts +7 -0
- package/dist/mjs/analytics/AnalyticsError.js +8 -0
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +32 -0
- package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +24 -0
- package/dist/mjs/analytics/eventProviders/EventProvider.js +22 -0
- package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
- package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +50 -0
- package/dist/mjs/analytics/transports/AxiosTransport.d.ts +4 -0
- package/dist/mjs/analytics/transports/AxiosTransport.js +31 -0
- package/dist/mjs/analytics/transports/FetchTransport.d.ts +4 -0
- package/dist/mjs/analytics/transports/FetchTransport.js +28 -0
- package/dist/mjs/analytics/types.d.ts +26 -0
- package/dist/mjs/analytics/types.js +2 -0
- package/dist/mjs/certificates/binary-splitter.d.ts +27 -0
- package/dist/mjs/certificates/binary-splitter.js +275 -0
- package/dist/mjs/certificates/crl.d.ts +6 -0
- package/dist/mjs/certificates/crl.js +39 -0
- package/dist/mjs/certificates/generator.d.ts +38 -0
- package/dist/mjs/certificates/generator.js +255 -0
- package/dist/mjs/certificates/helper.d.ts +29 -0
- package/dist/mjs/certificates/helper.js +186 -0
- package/dist/mjs/certificates/index.d.ts +5 -0
- package/dist/mjs/certificates/index.js +6 -0
- package/dist/mjs/certificates/ocsp.d.ts +14 -0
- package/dist/mjs/certificates/ocsp.js +290 -0
- package/dist/mjs/certificates/serializer.d.ts +13 -0
- package/dist/mjs/certificates/serializer.js +135 -0
- package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
- package/dist/mjs/certificates/setup-crypto.js +22 -0
- package/dist/mjs/certificates/types.d.ts +122 -0
- package/dist/mjs/certificates/types.js +7 -0
- package/dist/mjs/config.d.ts +3 -0
- package/dist/mjs/config.js +4 -0
- package/dist/mjs/connectors/BaseConnector.d.ts +52 -0
- package/dist/mjs/connectors/BaseConnector.js +54 -0
- package/dist/mjs/connectors/BlockchainConnector.d.ts +78 -0
- package/dist/mjs/connectors/BlockchainConnector.js +320 -0
- package/dist/mjs/connectors/BlockchainEventsListener.d.ts +33 -0
- package/dist/mjs/connectors/BlockchainEventsListener.js +254 -0
- package/dist/mjs/connectors/index.d.ts +2 -0
- package/dist/mjs/connectors/index.js +3 -0
- package/dist/mjs/constants.d.ts +48 -0
- package/dist/mjs/constants.js +680 -0
- package/dist/mjs/contracts/SuperProtocolToken.d.ts +300 -0
- package/dist/mjs/contracts/SuperProtocolToken.js +2 -0
- package/dist/mjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
- package/dist/mjs/contracts/SuperProtocolToken__factory.js +517 -0
- package/dist/mjs/contracts/typechain-types/common.d.ts +50 -0
- package/dist/mjs/contracts/typechain-types/common.js +2 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4331 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +6 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
- package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +6 -0
- package/dist/mjs/contracts/typechain-types/factories/index.d.ts +1 -0
- package/dist/mjs/contracts/typechain-types/factories/index.js +6 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +2 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +2 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
- package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.js +2 -0
- package/dist/mjs/contracts/typechain-types/index.d.ts +5 -0
- package/dist/mjs/contracts/typechain-types/index.js +7 -0
- package/dist/mjs/crypto/Crypto.d.ts +70 -0
- package/dist/mjs/crypto/Crypto.js +132 -0
- package/dist/mjs/crypto/index.d.ts +4 -0
- package/dist/mjs/crypto/index.js +5 -0
- package/dist/mjs/crypto/nodejs/AES.d.ts +25 -0
- package/dist/mjs/crypto/nodejs/AES.js +77 -0
- package/dist/mjs/crypto/nodejs/ARIA.d.ts +23 -0
- package/dist/mjs/crypto/nodejs/ARIA.js +72 -0
- package/dist/mjs/crypto/nodejs/ECIES.d.ts +10 -0
- package/dist/mjs/crypto/nodejs/ECIES.js +82 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.js +152 -0
- package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
- package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +89 -0
- package/dist/mjs/crypto/types.d.ts +10 -0
- package/dist/mjs/crypto/types.js +2 -0
- package/dist/mjs/crypto/utils.d.ts +15 -0
- package/dist/mjs/crypto/utils.js +81 -0
- package/dist/mjs/crypto/utils.spec.d.ts +1 -0
- package/dist/mjs/crypto/utils.spec.js +219 -0
- package/dist/mjs/errors/base.error.d.ts +3 -0
- package/dist/mjs/errors/base.error.js +15 -0
- package/dist/mjs/errors/index.d.ts +3 -0
- package/dist/mjs/errors/index.js +4 -0
- package/dist/mjs/errors/insufficient-funds.error.d.ts +19 -0
- package/dist/mjs/errors/insufficient-funds.error.js +53 -0
- package/dist/mjs/errors/not-found.error.d.ts +3 -0
- package/dist/mjs/errors/not-found.error.js +4 -0
- package/dist/mjs/errors/utils.d.ts +2 -0
- package/dist/mjs/errors/utils.js +22 -0
- package/dist/mjs/index.d.ts +58 -0
- package/dist/mjs/index.js +53 -0
- package/dist/mjs/logger.d.ts +7 -0
- package/dist/mjs/logger.js +7 -0
- package/dist/mjs/models/EtlModel.d.ts +34 -0
- package/dist/mjs/models/EtlModel.js +96 -0
- package/dist/mjs/models/index.d.ts +1 -0
- package/dist/mjs/models/index.js +2 -0
- package/dist/mjs/package.json +1 -0
- package/dist/mjs/polyfills.d.ts +4 -0
- package/dist/mjs/polyfills.js +8 -0
- package/dist/mjs/proto/AmdSevSnp.d.ts +194 -0
- package/dist/mjs/proto/AmdSevSnp.js +348 -0
- package/dist/mjs/proto/Compression.d.ts +43 -0
- package/dist/mjs/proto/Compression.js +125 -0
- package/dist/mjs/proto/Hash.d.ts +37 -0
- package/dist/mjs/proto/Hash.js +98 -0
- package/dist/mjs/proto/Nvtrust.d.ts +116 -0
- package/dist/mjs/proto/Nvtrust.js +153 -0
- package/dist/mjs/proto/OrderReport.d.ts +730 -0
- package/dist/mjs/proto/OrderReport.js +460 -0
- package/dist/mjs/proto/TRI.d.ts +215 -0
- package/dist/mjs/proto/TRI.js +312 -0
- package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
- package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +139 -0
- package/dist/mjs/providers/storage/IStorageProvider.d.ts +15 -0
- package/dist/mjs/providers/storage/IStorageProvider.js +2 -0
- package/dist/mjs/providers/storage/S3StorageProvider.d.ts +26 -0
- package/dist/mjs/providers/storage/S3StorageProvider.js +203 -0
- package/dist/mjs/providers/storage/StorageAdapter.d.ts +62 -0
- package/dist/mjs/providers/storage/StorageAdapter.js +270 -0
- package/dist/mjs/providers/storage/StorageContentWriter.d.ts +46 -0
- package/dist/mjs/providers/storage/StorageContentWriter.js +161 -0
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +133 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.js +50 -0
- package/dist/mjs/providers/storage/StorjAdapter.d.ts +20 -0
- package/dist/mjs/providers/storage/StorjAdapter.js +54 -0
- package/dist/mjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
- package/dist/mjs/providers/storage/StorjCredentialsManager.js +84 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +29 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.js +140 -0
- package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/mjs/providers/storage/fs-storage-provider.js +132 -0
- package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/mjs/providers/storage/getStorageProvider.js +18 -0
- package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +4 -0
- package/dist/mjs/providers/storage/parseStorageCredentials.js +17 -0
- package/dist/mjs/providers/storage/types.d.ts +29 -0
- package/dist/mjs/providers/storage/types.js +2 -0
- package/dist/mjs/staticModels/Deposits.d.ts +85 -0
- package/dist/mjs/staticModels/Deposits.js +263 -0
- package/dist/mjs/staticModels/Diamond.d.ts +6 -0
- package/dist/mjs/staticModels/Diamond.js +17 -0
- package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
- package/dist/mjs/staticModels/ModelPackager.js +45 -0
- package/dist/mjs/staticModels/ProviderRewards.d.ts +5 -0
- package/dist/mjs/staticModels/ProviderRewards.js +76 -0
- package/dist/mjs/staticModels/StaticModel.d.ts +6 -0
- package/dist/mjs/staticModels/StaticModel.js +38 -0
- package/dist/mjs/staticModels/Superpro.d.ts +18 -0
- package/dist/mjs/staticModels/Superpro.js +45 -0
- package/dist/mjs/staticModels/SuperproToken.d.ts +113 -0
- package/dist/mjs/staticModels/SuperproToken.js +328 -0
- package/dist/mjs/store.d.ts +17 -0
- package/dist/mjs/store.js +17 -0
- package/dist/mjs/tee/OrderReportService.d.ts +9 -0
- package/dist/mjs/tee/OrderReportService.js +97 -0
- package/dist/mjs/tee/QuoteParser.d.ts +82 -0
- package/dist/mjs/tee/QuoteParser.js +381 -0
- package/dist/mjs/tee/TeeCertificateService.d.ts +20 -0
- package/dist/mjs/tee/TeeCertificateService.js +139 -0
- package/dist/mjs/tee/TeeSignatureVerifier.d.ts +24 -0
- package/dist/mjs/tee/TeeSignatureVerifier.js +111 -0
- package/dist/mjs/tee/errors.d.ts +11 -0
- package/dist/mjs/tee/errors.js +12 -0
- package/dist/mjs/tee/helpers.d.ts +14 -0
- package/dist/mjs/tee/helpers.js +110 -0
- package/dist/mjs/tee/interface.d.ts +63 -0
- package/dist/mjs/tee/interface.js +2 -0
- package/dist/mjs/tee/statuses.d.ts +14 -0
- package/dist/mjs/tee/statuses.js +17 -0
- package/dist/mjs/tee/types.d.ts +126 -0
- package/dist/mjs/tee/types.js +28 -0
- package/dist/mjs/types/Compressor.d.ts +5 -0
- package/dist/mjs/types/Compressor.js +2 -0
- package/dist/mjs/types/Consensus.d.ts +52 -0
- package/dist/mjs/types/Consensus.js +8 -0
- package/dist/mjs/types/DepositInfo.d.ts +6 -0
- package/dist/mjs/types/DepositInfo.js +2 -0
- package/dist/mjs/types/DistributedSecretStorage.d.ts +68 -0
- package/dist/mjs/types/DistributedSecretStorage.js +2 -0
- package/dist/mjs/types/EtlModel.d.ts +2 -0
- package/dist/mjs/types/EtlModel.js +2 -0
- package/dist/mjs/types/Events.d.ts +34 -0
- package/dist/mjs/types/Events.js +2 -0
- package/dist/mjs/types/HardwareInfo.d.ts +10 -0
- package/dist/mjs/types/HardwareInfo.js +2 -0
- package/dist/mjs/types/Marks.d.ts +9 -0
- package/dist/mjs/types/Marks.js +7 -0
- package/dist/mjs/types/Offer.d.ts +76 -0
- package/dist/mjs/types/Offer.js +29 -0
- package/dist/mjs/types/OfferVersion.d.ts +30 -0
- package/dist/mjs/types/OfferVersion.js +6 -0
- package/dist/mjs/types/OptionInfo.d.ts +8 -0
- package/dist/mjs/types/OptionInfo.js +2 -0
- package/dist/mjs/types/Order.d.ts +144 -0
- package/dist/mjs/types/Order.js +91 -0
- package/dist/mjs/types/OrderUsage.d.ts +28 -0
- package/dist/mjs/types/OrderUsage.js +2 -0
- package/dist/mjs/types/Origins.d.ts +6 -0
- package/dist/mjs/types/Origins.js +2 -0
- package/dist/mjs/types/Provider.d.ts +7 -0
- package/dist/mjs/types/Provider.js +2 -0
- package/dist/mjs/types/ProviderRewards.d.ts +5 -0
- package/dist/mjs/types/ProviderRewards.js +2 -0
- package/dist/mjs/types/ResourceLoader.d.ts +28 -0
- package/dist/mjs/types/ResourceLoader.js +2 -0
- package/dist/mjs/types/SlotInfo.d.ts +7 -0
- package/dist/mjs/types/SlotInfo.js +2 -0
- package/dist/mjs/types/SlotUsage.d.ts +11 -0
- package/dist/mjs/types/SlotUsage.js +6 -0
- package/dist/mjs/types/Superpro.d.ts +9 -0
- package/dist/mjs/types/Superpro.js +11 -0
- package/dist/mjs/types/TeeOfferInfo.d.ts +38 -0
- package/dist/mjs/types/TeeOfferInfo.js +2 -0
- package/dist/mjs/types/TeeOfferOption.d.ts +13 -0
- package/dist/mjs/types/TeeOfferOption.js +2 -0
- package/dist/mjs/types/TeeOfferSlot.d.ts +8 -0
- package/dist/mjs/types/TeeOfferSlot.js +2 -0
- package/dist/mjs/types/ValueOfferSlot.d.ts +18 -0
- package/dist/mjs/types/ValueOfferSlot.js +2 -0
- package/dist/mjs/types/Web3.d.ts +30 -0
- package/dist/mjs/types/Web3.js +2 -0
- package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
- package/dist/mjs/types/blockchainConnector/StorageAccess.js +2 -0
- package/dist/mjs/types/index.d.ts +25 -0
- package/dist/mjs/types/index.js +26 -0
- package/dist/mjs/types/storage/StorageAccess.d.ts +7 -0
- package/dist/mjs/types/storage/StorageAccess.js +2 -0
- package/dist/mjs/types/storage/StorageFileAccess.d.ts +5 -0
- package/dist/mjs/types/storage/StorageFileAccess.js +2 -0
- package/dist/mjs/types/storage/StorageObject.d.ts +8 -0
- package/dist/mjs/types/storage/StorageObject.js +2 -0
- package/dist/mjs/utils/CryptoKeysTransformer.d.ts +42 -0
- package/dist/mjs/utils/CryptoKeysTransformer.js +240 -0
- package/dist/mjs/utils/Monitoring.d.ts +11 -0
- package/dist/mjs/utils/Monitoring.js +44 -0
- package/dist/mjs/utils/NonceTracker.d.ts +20 -0
- package/dist/mjs/utils/NonceTracker.js +77 -0
- package/dist/mjs/utils/PubSub.d.ts +9 -0
- package/dist/mjs/utils/PubSub.js +32 -0
- package/dist/mjs/utils/TxManager.d.ts +28 -0
- package/dist/mjs/utils/TxManager.js +278 -0
- package/dist/mjs/utils/cache/index.d.ts +2 -0
- package/dist/mjs/utils/cache/index.js +3 -0
- package/dist/mjs/utils/cache/memory.d.ts +19 -0
- package/dist/mjs/utils/cache/memory.js +61 -0
- package/dist/mjs/utils/cache/memory.spec.d.ts +1 -0
- package/dist/mjs/utils/cache/memory.spec.js +89 -0
- package/dist/mjs/utils/cache/types.d.ts +17 -0
- package/dist/mjs/utils/cache/types.js +2 -0
- package/dist/mjs/utils/compressors/GzipCompressor.d.ts +8 -0
- package/dist/mjs/utils/compressors/GzipCompressor.js +15 -0
- package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
- package/dist/mjs/utils/compressors/UncompressedCompressor.js +13 -0
- package/dist/mjs/utils/compressors/index.d.ts +2 -0
- package/dist/mjs/utils/compressors/index.js +3 -0
- package/dist/mjs/utils/helper.d.ts +87 -0
- package/dist/mjs/utils/helper.js +526 -0
- package/dist/mjs/utils/helpers/calculateObjectHash.d.ts +8 -0
- package/dist/mjs/utils/helpers/calculateObjectHash.js +18 -0
- package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
- package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
- package/dist/mjs/utils/helpers/getStreamChunks.d.ts +9 -0
- package/dist/mjs/utils/helpers/getStreamChunks.js +31 -0
- package/dist/mjs/utils/helpers/index.d.ts +5 -0
- package/dist/mjs/utils/helpers/index.js +6 -0
- package/dist/mjs/utils/helpers/promise.d.ts +2 -0
- package/dist/mjs/utils/helpers/promise.js +5 -0
- package/dist/mjs/utils/helpers/streamToBuffer.d.ts +4 -0
- package/dist/mjs/utils/helpers/streamToBuffer.js +9 -0
- package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
- package/dist/mjs/utils/helpers/tryWithInterval.js +35 -0
- package/dist/mjs/utils/rent-calculator/index.d.ts +2 -0
- package/dist/mjs/utils/rent-calculator/index.js +3 -0
- package/dist/mjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
- package/dist/mjs/utils/rent-calculator/rent-calculator.js +110 -0
- package/dist/mjs/utils/rent-calculator/types.d.ts +14 -0
- package/dist/mjs/utils/rent-calculator/types.js +2 -0
- package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
- package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +10 -0
- package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
- package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +53 -0
- package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
- package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +44 -0
- package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
- package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +11 -0
- package/dist/mjs/utils/resourceLoaders/index.d.ts +1 -0
- package/dist/mjs/utils/resourceLoaders/index.js +2 -0
- package/dist/mjs/utils/schema-utils/index.d.ts +2 -0
- package/dist/mjs/utils/schema-utils/index.js +3 -0
- package/dist/mjs/utils/schema-utils/serializer.d.ts +3 -0
- package/dist/mjs/utils/schema-utils/serializer.js +26 -0
- package/dist/mjs/utils/schema-utils/validator.d.ts +7 -0
- package/dist/mjs/utils/schema-utils/validator.js +45 -0
- package/dist/mjs/utils/tcb.d.ts +2 -0
- package/dist/mjs/utils/tcb.js +9 -0
- package/dist/mjs/utils/tokens/get-tokens-info.d.ts +8 -0
- package/dist/mjs/utils/tokens/get-tokens-info.js +25 -0
- package/dist/mjs/utils/tokens/index.d.ts +1 -0
- package/dist/mjs/utils/tokens/index.js +2 -0
- package/dist/mjs/utils/types.d.ts +13 -0
- package/dist/mjs/utils/types.js +2 -0
- package/package.json +103 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { randomUUID } from 'crypto';
|
|
3
|
+
import forge from 'node-forge';
|
|
4
|
+
import { X509CertificateGenerator, BasicConstraintsExtension, ExtendedKeyUsageExtension, Extension, SubjectAlternativeNameExtension, ExtendedKeyUsage, KeyUsageFlags, KeyUsagesExtension, Pkcs10CertificateRequestGenerator, Pkcs10CertificateRequest, X509Certificate, AuthorityInfoAccessExtension, AuthorityKeyIdentifierExtension, SubjectKeyIdentifierExtension, } from '@peculiar/x509';
|
|
5
|
+
import { cryptoProvider } from './setup-crypto.js';
|
|
6
|
+
import { CryptoKeysTransformer } from '../utils/CryptoKeysTransformer.js';
|
|
7
|
+
import { isIpAddress } from '../utils/helper.js';
|
|
8
|
+
const MAX_X509_SERIAL = BigInt('0x' + 'F'.repeat(40));
|
|
9
|
+
const ONE_HOUR_MS = 60 * 60 * 1000; // 1 hour in milliseconds
|
|
10
|
+
const principalAttributeMap = {
|
|
11
|
+
commonName: 'CN',
|
|
12
|
+
country: 'C',
|
|
13
|
+
localityName: 'L',
|
|
14
|
+
stateName: 'ST',
|
|
15
|
+
organization: 'O',
|
|
16
|
+
organizationalUnit: 'OU',
|
|
17
|
+
};
|
|
18
|
+
const notAllowedCertificateCustomExtensions = [...Object.values(forge.pki.oids)];
|
|
19
|
+
export class CertificateGenerator {
|
|
20
|
+
/**
|
|
21
|
+
* Generates certificate based on the provided parameters.
|
|
22
|
+
* @param params - Parameters for generating the certificate.
|
|
23
|
+
* @returns The generated certificate in PEM format.
|
|
24
|
+
*/
|
|
25
|
+
static async generateCert(params) {
|
|
26
|
+
const ca = Boolean(params.ca);
|
|
27
|
+
const { publicKey: subjectPublicKey, privateKey: signerPrivateKey } = await CertificateGenerator.getCryptoKeys(params);
|
|
28
|
+
const signingAlgorithm = subjectPublicKey.algorithm;
|
|
29
|
+
const extensions = [new BasicConstraintsExtension(ca, undefined, true)];
|
|
30
|
+
const extendedKeyUsageItems = [];
|
|
31
|
+
if (signingAlgorithm.namedCurve !== 'K-256' && params.dnsNames?.length) {
|
|
32
|
+
const generalNames = params.dnsNames.map((dnsName) => ({
|
|
33
|
+
type: (isIpAddress(dnsName) ? 'ip' : 'dns'),
|
|
34
|
+
value: dnsName,
|
|
35
|
+
}));
|
|
36
|
+
extensions.push(new SubjectAlternativeNameExtension(generalNames));
|
|
37
|
+
extendedKeyUsageItems.push(...[ExtendedKeyUsage.serverAuth, ExtendedKeyUsage.clientAuth]);
|
|
38
|
+
}
|
|
39
|
+
if (params.ocspSigning) {
|
|
40
|
+
extendedKeyUsageItems.push(ExtendedKeyUsage.ocspSigning);
|
|
41
|
+
}
|
|
42
|
+
if (params.ocspExtension) {
|
|
43
|
+
const { ocspUrl, issuerCertUrl } = params.ocspExtension;
|
|
44
|
+
extensions.push(new AuthorityInfoAccessExtension({
|
|
45
|
+
ocsp: [ocspUrl],
|
|
46
|
+
...(issuerCertUrl ? { caIssuers: [issuerCertUrl] } : {}),
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
if (extendedKeyUsageItems.length) {
|
|
50
|
+
extensions.push(new ExtendedKeyUsageExtension(extendedKeyUsageItems, false));
|
|
51
|
+
}
|
|
52
|
+
let keyUsageFlags = KeyUsageFlags.digitalSignature | KeyUsageFlags.keyEncipherment;
|
|
53
|
+
if (params.ca) {
|
|
54
|
+
keyUsageFlags |= KeyUsageFlags.keyCertSign;
|
|
55
|
+
}
|
|
56
|
+
extensions.push(new KeyUsagesExtension(keyUsageFlags, true));
|
|
57
|
+
const signerPublicKey = await CryptoKeysTransformer.cryptoPublicFromCryptoPrivate(signerPrivateKey);
|
|
58
|
+
extensions.push(...[
|
|
59
|
+
await AuthorityKeyIdentifierExtension.create(signerPublicKey),
|
|
60
|
+
await SubjectKeyIdentifierExtension.create(subjectPublicKey),
|
|
61
|
+
]);
|
|
62
|
+
if (params.customExtensions?.length) {
|
|
63
|
+
const filteredExtensions = params.customExtensions.filter((ext) => !notAllowedCertificateCustomExtensions.includes(ext.oid));
|
|
64
|
+
for (const customExtension of filteredExtensions) {
|
|
65
|
+
if (!customExtension.oid || !customExtension.value) {
|
|
66
|
+
throw new Error('Custom extension OID and value are required');
|
|
67
|
+
}
|
|
68
|
+
extensions.push(new Extension(customExtension.oid, false, customExtension.value));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const createCertificateParams = {
|
|
72
|
+
serialNumber: CertificateGenerator.generateSerialNumber(),
|
|
73
|
+
issuer: CertificateGenerator.getPrincipalInfo(params.issuer),
|
|
74
|
+
subject: CertificateGenerator.getPrincipalInfo(params.subject),
|
|
75
|
+
notBefore: new Date(Date.now() - ONE_HOUR_MS), //1 hour ago to avoid clock skew issues between servers
|
|
76
|
+
notAfter: params.notAfter,
|
|
77
|
+
publicKey: subjectPublicKey,
|
|
78
|
+
signingKey: signerPrivateKey,
|
|
79
|
+
signingAlgorithm,
|
|
80
|
+
extensions,
|
|
81
|
+
};
|
|
82
|
+
const cert = await X509CertificateGenerator.create(createCertificateParams);
|
|
83
|
+
return cert.toString('pem');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generates a pair of cryptographic keys based on the specified signature algorithm.
|
|
87
|
+
* @param signatureAlgorithm - The algorithm to use for key generation.
|
|
88
|
+
* @returns A promise that resolves to a CryptoKeyPair containing the public and private keys.
|
|
89
|
+
*/
|
|
90
|
+
static generateKeys(signatureAlgorithm) {
|
|
91
|
+
const algorithm = CertificateGenerator.getAlgorithm(signatureAlgorithm);
|
|
92
|
+
return cryptoProvider.subtle.generateKey(algorithm, true, ['sign', 'verify']);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generates a Certificate Signing Request (CSR) based on the provided parameters.
|
|
96
|
+
* @param params - Parameters for generating the CSR.
|
|
97
|
+
* @returns The generated CSR in PEM format.
|
|
98
|
+
*/
|
|
99
|
+
static async generateCsr(params) {
|
|
100
|
+
const keys = await CertificateGenerator.getCryptoKeys(params);
|
|
101
|
+
const signingAlgorithm = keys.publicKey.algorithm;
|
|
102
|
+
signingAlgorithm.hash = { name: 'SHA-256' };
|
|
103
|
+
const extensions = [];
|
|
104
|
+
if (signingAlgorithm.namedCurve !== 'K-256' && params.dnsNames?.length) {
|
|
105
|
+
const generalNames = params.dnsNames.map((dnsName) => ({
|
|
106
|
+
type: (isIpAddress(dnsName) ? 'ip' : 'dns'),
|
|
107
|
+
value: dnsName,
|
|
108
|
+
}));
|
|
109
|
+
extensions.push(new SubjectAlternativeNameExtension(generalNames));
|
|
110
|
+
}
|
|
111
|
+
if (params.customExtensions?.length) {
|
|
112
|
+
for (const customExtension of params.customExtensions) {
|
|
113
|
+
if (!customExtension.oid || !customExtension.value) {
|
|
114
|
+
throw new Error(`Some custom extension missed OID or value`);
|
|
115
|
+
}
|
|
116
|
+
extensions.push(new Extension(customExtension.oid, false, customExtension.value));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const createCsrParams = {
|
|
120
|
+
name: CertificateGenerator.getPrincipalInfo(params.subject),
|
|
121
|
+
keys,
|
|
122
|
+
signingAlgorithm,
|
|
123
|
+
extensions,
|
|
124
|
+
};
|
|
125
|
+
const csr = await Pkcs10CertificateRequestGenerator.create(createCsrParams);
|
|
126
|
+
return csr.toString('pem');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Checks and parses a certificate in PEM format.
|
|
130
|
+
* @param certPem - The certificate in PEM format.
|
|
131
|
+
* @returns An object containing the parsed certificate details.
|
|
132
|
+
*/
|
|
133
|
+
static async checkAndParseCert(certPem) {
|
|
134
|
+
const cert = new X509Certificate(certPem);
|
|
135
|
+
if (cert.issuer === cert.subject) {
|
|
136
|
+
const isValid = await cert.verify();
|
|
137
|
+
if (!isValid) {
|
|
138
|
+
throw new Error('Self-signed certificate signature verification failed');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const publicKey = await cryptoProvider.subtle.importKey('spki', cert.publicKey.rawData, Object.assign(cert.signatureAlgorithm, cert.publicKey.algorithm), true, ['verify']);
|
|
142
|
+
const authorityKeyIdentifierExt = cert.extensions.find((ext) => ext instanceof AuthorityKeyIdentifierExtension);
|
|
143
|
+
const authorityKeyIdentifier = authorityKeyIdentifierExt?.keyId;
|
|
144
|
+
const subjectKeyIdentifierExt = cert.extensions.find((ext) => ext instanceof SubjectKeyIdentifierExtension);
|
|
145
|
+
const subjectKeyIdentifier = subjectKeyIdentifierExt?.keyId;
|
|
146
|
+
return {
|
|
147
|
+
serialNumberHex: cert.serialNumber,
|
|
148
|
+
publicKey,
|
|
149
|
+
subject: cert.subject,
|
|
150
|
+
issuer: cert.issuer,
|
|
151
|
+
notBefore: cert.notBefore,
|
|
152
|
+
notAfter: cert.notAfter,
|
|
153
|
+
dnsNames: CertificateGenerator.extractDnsNamesFromExtensions(cert.extensions),
|
|
154
|
+
authorityKeyIdentifier,
|
|
155
|
+
subjectKeyIdentifier,
|
|
156
|
+
extensions: cert.extensions
|
|
157
|
+
.filter((ext) => ext.type !== forge.pki.oids['subjectAltName'])
|
|
158
|
+
.map((ext) => ({
|
|
159
|
+
oid: ext.type,
|
|
160
|
+
value: Buffer.from(ext.value),
|
|
161
|
+
})),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Checks and parses a Certificate Signing Request (CSR) in PEM format.
|
|
166
|
+
* @param csrPem - The CSR in PEM format.
|
|
167
|
+
* @returns An object containing the parsed CSR details.
|
|
168
|
+
*/
|
|
169
|
+
static async checkAndParseCsr(csrPem) {
|
|
170
|
+
const csr = new Pkcs10CertificateRequest(csrPem);
|
|
171
|
+
const isValid = await csr.verify();
|
|
172
|
+
if (!isValid) {
|
|
173
|
+
throw new Error('CSR signature verification failed');
|
|
174
|
+
}
|
|
175
|
+
const publicKey = await cryptoProvider.subtle.importKey('spki', csr.publicKey.rawData, Object.assign(csr.signatureAlgorithm, csr.publicKey.algorithm), true, ['verify']);
|
|
176
|
+
const parsedCsr = {
|
|
177
|
+
subject: csr.subject,
|
|
178
|
+
publicKey,
|
|
179
|
+
dnsNames: CertificateGenerator.extractDnsNamesFromExtensions(csr.extensions),
|
|
180
|
+
extensions: csr.extensions
|
|
181
|
+
.filter((ext) => ext.type !== forge.pki.oids['subjectAltName'])
|
|
182
|
+
.map((ext) => ({
|
|
183
|
+
oid: ext.type,
|
|
184
|
+
value: Buffer.from(ext.value),
|
|
185
|
+
})),
|
|
186
|
+
};
|
|
187
|
+
return parsedCsr;
|
|
188
|
+
}
|
|
189
|
+
static async getCryptoKeys({ privateKey, publicKey }) {
|
|
190
|
+
const [pubKey, privKey] = await Promise.all([
|
|
191
|
+
typeof publicKey === 'string'
|
|
192
|
+
? CryptoKeysTransformer.spkiPemToCryptoKey(publicKey)
|
|
193
|
+
: publicKey,
|
|
194
|
+
typeof privateKey === 'string'
|
|
195
|
+
? CryptoKeysTransformer.pkcs8PemToCryptoKey(privateKey)
|
|
196
|
+
: privateKey,
|
|
197
|
+
]);
|
|
198
|
+
assert.deepEqual(pubKey.algorithm, privKey.algorithm, 'Both keys must have same algorithm defined');
|
|
199
|
+
return { publicKey: pubKey, privateKey: privKey };
|
|
200
|
+
}
|
|
201
|
+
static generateSerialNumber() {
|
|
202
|
+
const uuid = randomUUID().replace(/-/g, '');
|
|
203
|
+
let serial = BigInt('0x' + uuid) % MAX_X509_SERIAL;
|
|
204
|
+
// Ensure the serial number is positive in ASN1
|
|
205
|
+
// 89abcdefABCDEF - set of all hex symbols that have 1 as first bit
|
|
206
|
+
const serialHex = serial.toString(16);
|
|
207
|
+
if (serialHex[0] && '89abcdefABCDEF'.includes(serialHex[0])) {
|
|
208
|
+
serial = serial >> 1n;
|
|
209
|
+
}
|
|
210
|
+
return serial.toString(16);
|
|
211
|
+
}
|
|
212
|
+
static getPrincipalInfo(principal) {
|
|
213
|
+
if (typeof principal === 'string') {
|
|
214
|
+
return principal;
|
|
215
|
+
}
|
|
216
|
+
if (!principal.commonName) {
|
|
217
|
+
throw new Error('Common name is required');
|
|
218
|
+
}
|
|
219
|
+
return Object.entries(principal)
|
|
220
|
+
.map(([key, value]) => `${principalAttributeMap[key] || key}=${value}`)
|
|
221
|
+
.join(',');
|
|
222
|
+
}
|
|
223
|
+
static getAlgorithm(signatureAlgorithm) {
|
|
224
|
+
switch (signatureAlgorithm) {
|
|
225
|
+
case 'RSASSA-PKCS1-SHA256':
|
|
226
|
+
return {
|
|
227
|
+
name: 'RSASSA-PKCS1-v1_5',
|
|
228
|
+
hash: 'SHA-256',
|
|
229
|
+
publicExponent: new Uint8Array([1, 0, 1]), // 65537
|
|
230
|
+
modulusLength: 2048,
|
|
231
|
+
};
|
|
232
|
+
case 'ECDSA-P-256-SHA256':
|
|
233
|
+
return {
|
|
234
|
+
name: 'ECDSA',
|
|
235
|
+
namedCurve: 'P-256',
|
|
236
|
+
};
|
|
237
|
+
case 'ECDSA-secp256k1-SHA256':
|
|
238
|
+
return {
|
|
239
|
+
name: 'ECDSA',
|
|
240
|
+
namedCurve: 'K-256',
|
|
241
|
+
};
|
|
242
|
+
default:
|
|
243
|
+
throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
static extractDnsNamesFromExtensions(extensions) {
|
|
247
|
+
const subjectAltNameExt = extensions.find((ext) => ext.type === forge.pki.oids['subjectAltName']);
|
|
248
|
+
if (!subjectAltNameExt) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const dnsNames = subjectAltNameExt.names.items.map((item) => item.value);
|
|
252
|
+
return dnsNames;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NlcnRpZmljYXRlcy9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixTQUFTLEVBQ1QsK0JBQStCLEVBRy9CLGdCQUFnQixFQUNoQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlDQUFpQyxFQUVqQyx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLDRCQUE0QixFQUM1QiwrQkFBK0IsRUFDL0IsNkJBQTZCLEdBQzlCLE1BQU0sZ0JBQWdCLENBQUM7QUFXeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV0RCxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLHlCQUF5QjtBQUU3RCxNQUFNLHFCQUFxQixHQUEyQjtJQUNwRCxVQUFVLEVBQUUsSUFBSTtJQUNoQixPQUFPLEVBQUUsR0FBRztJQUNaLFlBQVksRUFBRSxHQUFHO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsa0JBQWtCLEVBQUUsSUFBSTtDQUN6QixDQUFDO0FBRUYsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDLEdB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
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as pkijs from 'pkijs';
|
|
3
|
+
import { AlgorithmObj, CertWithKeyIdentifiers, ValidateCertChainResult } from './types.js';
|
|
4
|
+
import './setup-crypto.js';
|
|
5
|
+
export declare class CertificatesHelper {
|
|
6
|
+
private static downloadedCertificateCache;
|
|
7
|
+
static derToPem(data: ArrayBuffer, type?: string): string;
|
|
8
|
+
static pemToDer(certPem: string): Uint8Array;
|
|
9
|
+
static splitPemCerts(certs: string): string[];
|
|
10
|
+
static getDomain(certPem: string): string | undefined;
|
|
11
|
+
static getExtensionValue(certParam: string | pkijs.Certificate, oid: string): Buffer | undefined;
|
|
12
|
+
static extractCAFromChain(certsPem: string): {
|
|
13
|
+
certs: string;
|
|
14
|
+
ca: string;
|
|
15
|
+
};
|
|
16
|
+
static getIssuer(certWithKeyIdent: CertWithKeyIdentifiers, potentialIssuersWithKeyIdent: CertWithKeyIdentifiers[]): CertWithKeyIdentifiers | undefined;
|
|
17
|
+
static pemChainToDer(certsPem: string): Uint8Array[];
|
|
18
|
+
static derChainToPem(certsDer: Uint8Array[]): string;
|
|
19
|
+
static downloadCertWithCache(url: string): Promise<Buffer>;
|
|
20
|
+
static buildChain(leaf: pkijs.Certificate | CertWithKeyIdentifiers, potentialIssuers: pkijs.Certificate[] | CertWithKeyIdentifiers[]): CertWithKeyIdentifiers[];
|
|
21
|
+
static sortCertsFromLeafToRoot(certsPem: string | string[] | pkijs.Certificate[] | CertWithKeyIdentifiers[]): CertWithKeyIdentifiers[];
|
|
22
|
+
static getCertPublicKeyAlgorithm(certPem: string): AlgorithmObj;
|
|
23
|
+
static getCsrPublicKeyAlgorithm(csrPem: string): AlgorithmObj;
|
|
24
|
+
static validateCertChain(certsPem: string | string[], caPem: string | string[], options?: {
|
|
25
|
+
offline?: boolean;
|
|
26
|
+
}): Promise<ValidateCertChainResult>;
|
|
27
|
+
static toPkiCerts(certs: string | string[]): pkijs.Certificate[];
|
|
28
|
+
static addKeyIdentifiersToCerts(certs: Array<pkijs.Certificate | CertWithKeyIdentifiers>): CertWithKeyIdentifiers[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import forge from 'node-forge';
|
|
4
|
+
import * as pkijs from 'pkijs';
|
|
5
|
+
import { Pkcs10CertificateRequest, X509Certificate } from '@peculiar/x509';
|
|
6
|
+
import { createMemoryCache } from '../utils/cache/memory.js';
|
|
7
|
+
import { OCSPHelper } from './ocsp.js';
|
|
8
|
+
import { CRLHelper } from './crl.js';
|
|
9
|
+
import './setup-crypto.js';
|
|
10
|
+
import { OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID, OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID, OID_CUSTOM_EXTENSION_CHALLENGE_ID, OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU, } from '@super-protocol/pki-common';
|
|
11
|
+
const oidsForOcspCheck = [
|
|
12
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_ID,
|
|
13
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID,
|
|
14
|
+
OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
|
|
15
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID,
|
|
16
|
+
];
|
|
17
|
+
export class CertificatesHelper {
|
|
18
|
+
static downloadedCertificateCache = createMemoryCache();
|
|
19
|
+
static derToPem(data, type = 'CERTIFICATE') {
|
|
20
|
+
return forge.pem.encode({
|
|
21
|
+
contentDomain: null,
|
|
22
|
+
dekInfo: null,
|
|
23
|
+
headers: [],
|
|
24
|
+
procType: null,
|
|
25
|
+
type,
|
|
26
|
+
body: Buffer.from(data).toString('binary'),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
static pemToDer(certPem) {
|
|
30
|
+
return Buffer.from(forge.pki.pemToDer(certPem).bytes(), 'binary');
|
|
31
|
+
}
|
|
32
|
+
static splitPemCerts(certs) {
|
|
33
|
+
const pemRegex = /(-----BEGIN CERTIFICATE-----[\s\S]*?-----END CERTIFICATE-----)/g;
|
|
34
|
+
return certs.match(pemRegex) || [];
|
|
35
|
+
}
|
|
36
|
+
static getDomain(certPem) {
|
|
37
|
+
const cert = forge.pki.certificateFromPem(certPem);
|
|
38
|
+
return cert.subject.attributes.find((attribute) => attribute.name === 'commonName')
|
|
39
|
+
?.value;
|
|
40
|
+
}
|
|
41
|
+
static getExtensionValue(certParam, oid) {
|
|
42
|
+
const cert = typeof certParam === 'string'
|
|
43
|
+
? pkijs.Certificate.fromBER(CertificatesHelper.pemToDer(certParam))
|
|
44
|
+
: certParam;
|
|
45
|
+
const extension = cert.extensions?.find((ext) => ext.extnID === oid);
|
|
46
|
+
return extension && Buffer.from(extension.extnValue.valueBlock.toBER());
|
|
47
|
+
}
|
|
48
|
+
static extractCAFromChain(certsPem) {
|
|
49
|
+
const certs = CertificatesHelper.toPkiCerts(certsPem);
|
|
50
|
+
const splitCerts = _.partition(certs, (cert) => !cert.issuer.isEqual(cert.subject));
|
|
51
|
+
const toPemChain = (certs) => certs.map((cert) => CertificatesHelper.derToPem(cert.toSchema().toBER())).join('\n');
|
|
52
|
+
return {
|
|
53
|
+
certs: toPemChain(splitCerts[0]),
|
|
54
|
+
ca: toPemChain(splitCerts[1]),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
static getIssuer(certWithKeyIdent, potentialIssuersWithKeyIdent) {
|
|
58
|
+
return potentialIssuersWithKeyIdent.find((potentialIssuer) => (certWithKeyIdent?.authorityKeyIdentifier && potentialIssuer.subjectKeyIdentifier
|
|
59
|
+
? certWithKeyIdent.authorityKeyIdentifier.isEqual(potentialIssuer.subjectKeyIdentifier)
|
|
60
|
+
: certWithKeyIdent?.cert.issuer.isEqual(potentialIssuer.cert.subject)) &&
|
|
61
|
+
!certWithKeyIdent?.cert.subject.isEqual(certWithKeyIdent?.cert.issuer));
|
|
62
|
+
}
|
|
63
|
+
static pemChainToDer(certsPem) {
|
|
64
|
+
const certs = CertificatesHelper.splitPemCerts(certsPem);
|
|
65
|
+
return certs.map((certPem) => CertificatesHelper.pemToDer(certPem));
|
|
66
|
+
}
|
|
67
|
+
static derChainToPem(certsDer) {
|
|
68
|
+
return certsDer
|
|
69
|
+
.map((cert) => CertificatesHelper.derToPem(cert))
|
|
70
|
+
.join('')
|
|
71
|
+
.trim();
|
|
72
|
+
}
|
|
73
|
+
static async downloadCertWithCache(url) {
|
|
74
|
+
const responseData = await CertificatesHelper.downloadedCertificateCache.wrap(url, async () => {
|
|
75
|
+
const response = await axios(url, {
|
|
76
|
+
responseType: 'arraybuffer',
|
|
77
|
+
});
|
|
78
|
+
return response?.data;
|
|
79
|
+
}, {
|
|
80
|
+
ttl: 5 * 60 * 1000, //5 min
|
|
81
|
+
});
|
|
82
|
+
return responseData;
|
|
83
|
+
}
|
|
84
|
+
static buildChain(leaf, potentialIssuers) {
|
|
85
|
+
const chain = CertificatesHelper.addKeyIdentifiersToCerts([leaf]);
|
|
86
|
+
const potentialIssuersWithKeyIdentifiers = CertificatesHelper.addKeyIdentifiersToCerts(potentialIssuers);
|
|
87
|
+
let currentCert = chain[0];
|
|
88
|
+
do {
|
|
89
|
+
currentCert = CertificatesHelper.getIssuer(currentCert, potentialIssuersWithKeyIdentifiers);
|
|
90
|
+
if (currentCert) {
|
|
91
|
+
chain.push(currentCert);
|
|
92
|
+
}
|
|
93
|
+
} while (currentCert);
|
|
94
|
+
return chain;
|
|
95
|
+
}
|
|
96
|
+
static sortCertsFromLeafToRoot(certsPem) {
|
|
97
|
+
const allCerts = typeof certsPem === 'string' || certsPem.every((cert) => typeof cert === 'string')
|
|
98
|
+
? CertificatesHelper.toPkiCerts(certsPem)
|
|
99
|
+
: certsPem;
|
|
100
|
+
const certsWithKeyIdentifiers = CertificatesHelper.addKeyIdentifiersToCerts(allCerts);
|
|
101
|
+
const leafs = certsWithKeyIdentifiers.filter((certToCheck) => !certsWithKeyIdentifiers.some((certsToCheckWith) => certToCheck.subjectKeyIdentifier && certsToCheckWith.authorityKeyIdentifier
|
|
102
|
+
? certToCheck.subjectKeyIdentifier.isEqual(certsToCheckWith.authorityKeyIdentifier)
|
|
103
|
+
: certToCheck.cert.subject.isEqual(certsToCheckWith.cert.issuer)));
|
|
104
|
+
const chains = leafs
|
|
105
|
+
.map((leaf) => CertificatesHelper.buildChain(leaf.cert, allCerts))
|
|
106
|
+
.sort((one, two) => two.length - one.length);
|
|
107
|
+
return chains.flat();
|
|
108
|
+
}
|
|
109
|
+
static getCertPublicKeyAlgorithm(certPem) {
|
|
110
|
+
const cert = new X509Certificate(certPem);
|
|
111
|
+
const publicKey = cert.publicKey;
|
|
112
|
+
return publicKey.algorithm;
|
|
113
|
+
}
|
|
114
|
+
static getCsrPublicKeyAlgorithm(csrPem) {
|
|
115
|
+
const csr = new Pkcs10CertificateRequest(csrPem);
|
|
116
|
+
const publicKey = csr.publicKey;
|
|
117
|
+
return publicKey.algorithm;
|
|
118
|
+
}
|
|
119
|
+
static async validateCertChain(certsPem, caPem, options = {}) {
|
|
120
|
+
const { offline } = options;
|
|
121
|
+
// reverse() is needed because pkijs expects certificates to be ordered from root to leaf
|
|
122
|
+
const sortedCertsWithKeyIdent = CertificatesHelper.sortCertsFromLeafToRoot(certsPem).reverse();
|
|
123
|
+
const sortedCerts = sortedCertsWithKeyIdent.map((certWithKeyIdent) => certWithKeyIdent.cert);
|
|
124
|
+
const ca = CertificatesHelper.toPkiCerts(caPem);
|
|
125
|
+
try {
|
|
126
|
+
const crls = offline ? [] : await CRLHelper.getCRLFromCerts(sortedCerts);
|
|
127
|
+
const ocspBaseResponses = offline
|
|
128
|
+
? []
|
|
129
|
+
: await OCSPHelper.getOCSPResponseFromCerts(sortedCertsWithKeyIdent, CertificatesHelper.addKeyIdentifiersToCerts(ca), oidsForOcspCheck);
|
|
130
|
+
const chainEngine = new pkijs.CertificateChainValidationEngine({
|
|
131
|
+
certs: sortedCerts,
|
|
132
|
+
trustedCerts: ca,
|
|
133
|
+
ocsps: ocspBaseResponses,
|
|
134
|
+
crls,
|
|
135
|
+
});
|
|
136
|
+
const verifyResult = await chainEngine.verify();
|
|
137
|
+
if (!verifyResult.result) {
|
|
138
|
+
return {
|
|
139
|
+
isValid: false,
|
|
140
|
+
errorMessage: verifyResult.resultMessage,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* When verifying a certificate chain, chainEngine.verify() attempts to find a valid
|
|
145
|
+
* certification path using the provided certificates. It may ignore certificates that
|
|
146
|
+
* don't belong to the valid chain.
|
|
147
|
+
*
|
|
148
|
+
* This check ensures that all certificates we initially provided were actually used
|
|
149
|
+
* in the valid certification path that CertificateChainValidationEngine constructed.
|
|
150
|
+
* If any certificate was ignored/not used, we throw an error.
|
|
151
|
+
*/
|
|
152
|
+
const isEachCertVerified = sortedCerts.every((cert) => verifyResult.certificatePath?.find((verifiedCert) => verifiedCert.serialNumber.isEqual(cert.serialNumber)));
|
|
153
|
+
if (!isEachCertVerified) {
|
|
154
|
+
throw new Error('Some of certificates do not belong to chain');
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
isValid: true,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return {
|
|
162
|
+
isValid: false,
|
|
163
|
+
errorMessage: err.message,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
static toPkiCerts(certs) {
|
|
168
|
+
const certsArray = Array.isArray(certs) ? certs : CertificatesHelper.splitPemCerts(certs);
|
|
169
|
+
return certsArray.map((certPem) => pkijs.Certificate.fromBER(CertificatesHelper.pemToDer(certPem)));
|
|
170
|
+
}
|
|
171
|
+
static addKeyIdentifiersToCerts(certs) {
|
|
172
|
+
return certs.map((cert) => {
|
|
173
|
+
if ('cert' in cert) {
|
|
174
|
+
return cert;
|
|
175
|
+
}
|
|
176
|
+
const authorityKeyIdentifierExt = cert.extensions?.find((ext) => ext.extnID === forge.pki.oids['authorityKeyIdentifier'])?.parsedValue;
|
|
177
|
+
const subjectKeyIdentifierExt = cert.extensions?.find((ext) => ext.extnID === forge.pki.oids['subjectKeyIdentifier'])?.parsedValue;
|
|
178
|
+
return {
|
|
179
|
+
cert,
|
|
180
|
+
authorityKeyIdentifier: authorityKeyIdentifierExt?.keyIdentifier,
|
|
181
|
+
subjectKeyIdentifier: subjectKeyIdentifierExt,
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NlcnRpZmljYXRlcy9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCw2Q0FBNkMsRUFDN0Msd0NBQXdDLEVBQ3hDLGlDQUFpQyxFQUNqQyxvQ0FBb0MsR0FDckMsTUFBTSw0QkFBNEIsQ0FBQztBQUlwQyxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLGlDQUFpQztJQUNqQyx3Q0FBd0M7SUFDeEMsb0NBQW9DO0lBQ3BDLDZDQUE2QztDQUM5QyxDQUFDO0FBRUYsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQUMsMEJBQTBCLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUVoRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQWlCLEVBQUUsT0FBZSxhQUFhO1FBQzdELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDdEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSTtZQUNKLElBQUksRUFBRSxNQUFNLENBQUMsSUFB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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './helper.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './serializer.js';
|
|
4
|
+
export * from './generator.js';
|
|
5
|
+
export * from './ocsp.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2VydGlmaWNhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFdBQVcsQ0FBQyJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as pkijs from 'pkijs';
|
|
2
|
+
import { CertWithKeyIdentifiers, GenerateOcspResponseParams, ParsedOcspRequest } from '../index.js';
|
|
3
|
+
export declare class OCSPHelper {
|
|
4
|
+
static getOCSPResponseFromCerts(certs: CertWithKeyIdentifiers[], ca: CertWithKeyIdentifiers[], oidsToCheck?: string[]): Promise<pkijs.BasicOCSPResponse[]>;
|
|
5
|
+
static generateOCSPResponse(params: GenerateOcspResponseParams): Promise<ArrayBuffer>;
|
|
6
|
+
static parseOCSPRequest(ocspRequestBinary: ArrayBuffer): ParsedOcspRequest;
|
|
7
|
+
private static canCertSignOCSPResponse;
|
|
8
|
+
private static getOCSPRequestData;
|
|
9
|
+
private static getOCSPResponse;
|
|
10
|
+
private static sendOCSPRequest;
|
|
11
|
+
private static getNonceForRequest;
|
|
12
|
+
private static getNonceFromResponse;
|
|
13
|
+
private static getCertExtensionsToCheck;
|
|
14
|
+
}
|