@super-protocol/sdk-js 2.1.2 → 2.1.3
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/{build → dist/cjs}/TIIGenerator.d.ts +2 -2
- package/dist/cjs/TIIGenerator.js +230 -0
- package/{build → dist/cjs}/analytics/Analytics.d.ts +2 -2
- package/dist/cjs/analytics/Analytics.js +67 -0
- package/{build → dist/cjs}/analytics/AnalyticsError.js +2 -1
- package/{build → dist/cjs}/analytics/eventProviders/BrowserEventProvider.d.ts +1 -1
- package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +38 -0
- package/dist/cjs/analytics/eventProviders/EventProvider.js +25 -0
- package/{build → dist/cjs}/analytics/eventProviders/NodeEventProvider.d.ts +1 -1
- package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +56 -0
- package/{build → dist/cjs}/analytics/transports/AxiosTransport.d.ts +1 -1
- package/dist/cjs/analytics/transports/AxiosTransport.js +60 -0
- package/{build → dist/cjs}/analytics/transports/FetchTransport.d.ts +1 -1
- package/dist/cjs/analytics/transports/FetchTransport.js +31 -0
- package/{build → dist/cjs}/analytics/types.d.ts +2 -2
- package/{build → dist/cjs}/analytics/types.js +1 -1
- package/{build → dist/cjs}/config.js +1 -1
- package/{build → dist/cjs}/connectors/BaseConnector.d.ts +1 -1
- package/dist/cjs/connectors/BaseConnector.js +41 -0
- package/{build → dist/cjs}/connectors/BlockchainConnector.d.ts +3 -3
- package/dist/cjs/connectors/BlockchainConnector.js +341 -0
- package/{build → dist/cjs}/connectors/BlockchainEventsListener.d.ts +1 -1
- package/dist/cjs/connectors/BlockchainEventsListener.js +103 -0
- package/{build → dist/cjs}/connectors/index.d.ts +2 -2
- package/{build → dist/cjs}/connectors/index.js +5 -5
- package/{build → dist/cjs}/constants.js +1 -1
- package/{build → dist/cjs}/contracts/abi.js +1 -1
- package/dist/cjs/crypto/Crypto.js +100 -0
- package/dist/cjs/crypto/index.d.ts +2 -0
- package/{build → dist/cjs}/crypto/index.js +3 -3
- package/dist/cjs/crypto/nodejs/AES.js +79 -0
- package/dist/cjs/crypto/nodejs/ARIA.js +78 -0
- package/dist/cjs/crypto/nodejs/ECIES.js +56 -0
- package/{build → dist/cjs}/crypto/nodejs/NativeCrypto.d.ts +3 -3
- package/dist/cjs/crypto/nodejs/NativeCrypto.js +165 -0
- package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +94 -0
- package/dist/cjs/index.d.ts +80 -0
- package/dist/cjs/index.js +143 -0
- package/{build → dist/cjs}/logger.js +1 -1
- package/{build → dist/cjs}/models/EtlModel.d.ts +1 -1
- package/dist/cjs/models/EtlModel.js +126 -0
- package/{build → dist/cjs}/models/Offer.d.ts +1 -1
- package/dist/cjs/models/Offer.js +361 -0
- package/{build → dist/cjs}/models/Order.d.ts +1 -1
- package/dist/cjs/models/Order.js +543 -0
- package/{build → dist/cjs}/models/Provider.d.ts +1 -1
- package/dist/cjs/models/Provider.js +119 -0
- package/{build → dist/cjs}/models/TCB.d.ts +1 -1
- package/dist/cjs/models/TCB.js +112 -0
- package/{build → dist/cjs}/models/TeeOffer.d.ts +2 -2
- package/dist/cjs/models/TeeOffer.js +538 -0
- package/dist/cjs/models/index.d.ts +5 -0
- package/dist/cjs/models/index.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/polyfills.js +7 -0
- package/{build → dist/cjs}/proto/Compression.d.ts +1 -1
- package/dist/cjs/proto/Compression.js +131 -0
- package/{build → dist/cjs}/proto/TRI.d.ts +1 -1
- package/dist/cjs/proto/TRI.js +290 -0
- package/{build → dist/cjs}/proto/TeeProperties.d.ts +1 -1
- package/dist/cjs/proto/TeeProperties.js +397 -0
- package/{build → dist/cjs}/providers/storage/ChunksDownloadDecorator.d.ts +2 -2
- package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +145 -0
- package/{build → dist/cjs}/providers/storage/IStorageProvider.d.ts +1 -1
- package/{build → dist/cjs}/providers/storage/IStorageProvider.js +1 -1
- package/{build → dist/cjs}/providers/storage/S3StorageProvider.d.ts +2 -2
- package/dist/cjs/providers/storage/S3StorageProvider.js +171 -0
- package/{build → dist/cjs}/providers/storage/StorageAdapter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageAdapter.js +301 -0
- package/{build → dist/cjs}/providers/storage/StorageContentWriter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageContentWriter.js +168 -0
- package/{build → dist/cjs}/providers/storage/StorageKeyValueAdapter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +125 -0
- package/{build → dist/cjs}/providers/storage/StorageMetadataReader.d.ts +3 -3
- package/dist/cjs/providers/storage/StorageMetadataReader.js +57 -0
- package/{build → dist/cjs}/providers/storage/StorjAdapter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorjAdapter.js +54 -0
- package/{build → dist/cjs}/providers/storage/StorjStorageProvider.d.ts +2 -3
- package/dist/cjs/providers/storage/StorjStorageProvider.js +145 -0
- package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/cjs/providers/storage/getStorageProvider.js +20 -0
- package/{build → dist/cjs}/providers/storage/types.js +1 -1
- package/{build → dist/cjs}/staticModels/ActiveOffers.d.ts +1 -1
- package/dist/cjs/staticModels/ActiveOffers.js +37 -0
- package/{build → dist/cjs}/staticModels/ActiveOrders.d.ts +1 -1
- package/dist/cjs/staticModels/ActiveOrders.js +76 -0
- package/{build → dist/cjs}/staticModels/Consensus.d.ts +1 -1
- package/dist/cjs/staticModels/Consensus.js +225 -0
- package/{build → dist/cjs}/staticModels/Deposits.d.ts +1 -1
- package/dist/cjs/staticModels/Deposits.js +195 -0
- package/{build → dist/cjs}/staticModels/Marks.d.ts +1 -1
- package/dist/cjs/staticModels/Marks.js +30 -0
- package/dist/cjs/staticModels/ModelPackager.js +49 -0
- package/{build → dist/cjs}/staticModels/Offers.d.ts +2 -2
- package/dist/cjs/staticModels/Offers.js +189 -0
- package/{build → dist/cjs}/staticModels/Orders.d.ts +1 -1
- package/dist/cjs/staticModels/Orders.js +504 -0
- package/{build → dist/cjs}/staticModels/ProviderRegistry.d.ts +1 -1
- package/dist/cjs/staticModels/ProviderRegistry.js +174 -0
- package/{build → dist/cjs}/staticModels/StaticModel.d.ts +2 -2
- package/dist/cjs/staticModels/StaticModel.js +35 -0
- package/{build → dist/cjs}/staticModels/Superpro.d.ts +2 -2
- package/dist/cjs/staticModels/Superpro.js +25 -0
- package/{build → dist/cjs}/staticModels/SuperproToken.d.ts +1 -1
- package/dist/cjs/staticModels/SuperproToken.js +141 -0
- package/{build → dist/cjs}/staticModels/TeeOffers.d.ts +1 -1
- package/dist/cjs/staticModels/TeeOffers.js +314 -0
- package/dist/cjs/store.js +17 -0
- package/{build → dist/cjs}/tee/QuoteParser.d.ts +1 -1
- package/dist/cjs/tee/QuoteParser.js +189 -0
- package/{build → dist/cjs}/tee/QuoteValidator.d.ts +1 -1
- package/dist/cjs/tee/QuoteValidator.js +391 -0
- package/{build → dist/cjs}/tee/errors.js +1 -1
- package/dist/cjs/tee/helpers.js +120 -0
- package/{build → dist/cjs}/tee/interface.d.ts +1 -1
- package/{build → dist/cjs}/tee/interface.js +1 -1
- package/{build → dist/cjs}/tee/statuses.js +4 -4
- package/{build → dist/cjs}/tee/types.d.ts +5 -0
- package/{build → dist/cjs}/tee/types.js +1 -1
- package/{build → dist/cjs}/types/Compressor.js +1 -1
- package/{build → dist/cjs}/types/Consensus.d.ts +1 -1
- package/{build → dist/cjs}/types/Consensus.js +2 -2
- package/{build → dist/cjs}/types/DepositInfo.d.ts +1 -1
- package/{build → dist/cjs}/types/DepositInfo.js +1 -1
- package/{build → dist/cjs}/types/EtlModel.js +1 -1
- package/{build → dist/cjs}/types/Events.d.ts +2 -2
- package/{build → dist/cjs}/types/Events.js +1 -1
- package/dist/cjs/types/HardwareInfo.d.ts +6 -0
- package/{build → dist/cjs}/types/HardwareInfo.js +1 -1
- package/{build → dist/cjs}/types/Marks.js +2 -2
- package/{build → dist/cjs}/types/Offer.d.ts +1 -1
- package/dist/cjs/types/Offer.js +17 -0
- package/{build → dist/cjs}/types/OptionInfo.js +1 -1
- package/{build → dist/cjs}/types/Order.d.ts +1 -1
- package/{build → dist/cjs}/types/Order.js +2 -2
- package/{build → dist/cjs}/types/OrderUsage.d.ts +4 -4
- package/{build → dist/cjs}/types/OrderUsage.js +1 -1
- package/{build → dist/cjs}/types/Origins.js +1 -1
- package/{build → dist/cjs}/types/Provider.js +1 -1
- package/{build → dist/cjs}/types/ResourceLoader.d.ts +1 -1
- package/{build → dist/cjs}/types/ResourceLoader.js +1 -1
- package/{build → dist/cjs}/types/SlotInfo.js +1 -1
- package/{build → dist/cjs}/types/SlotUsage.d.ts +1 -1
- package/{build → dist/cjs}/types/SlotUsage.js +2 -2
- package/{build → dist/cjs}/types/Superpro.js +2 -2
- package/{build → dist/cjs}/types/TeeOfferInfo.d.ts +1 -1
- package/{build → dist/cjs}/types/TeeOfferInfo.js +1 -1
- package/{build → dist/cjs}/types/TeeOfferOption.d.ts +3 -3
- package/{build → dist/cjs}/types/TeeOfferOption.js +1 -1
- package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
- package/{build → dist/cjs}/types/TeeOfferSlot.js +1 -1
- package/{build → dist/cjs}/types/ValueOfferSlot.d.ts +4 -4
- package/{build → dist/cjs}/types/ValueOfferSlot.js +1 -1
- package/{build → dist/cjs}/types/Web3.js +1 -1
- package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.d.ts +1 -1
- package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.js +1 -1
- package/dist/cjs/types/index.d.ts +22 -0
- package/dist/cjs/types/index.js +39 -0
- package/{build → dist/cjs}/types/storage/StorageAccess.js +1 -1
- package/{build → dist/cjs}/types/storage/StorageFileAccess.d.ts +1 -1
- package/{build → dist/cjs}/types/storage/StorageFileAccess.js +1 -1
- package/{build → dist/cjs}/types/storage/StorageObject.js +1 -1
- package/dist/cjs/utils/Monitoring.js +49 -0
- package/dist/cjs/utils/NonceTracker.js +78 -0
- package/dist/cjs/utils/PubSub.js +35 -0
- package/{build → dist/cjs}/utils/TxManager.d.ts +1 -1
- package/dist/cjs/utils/TxManager.js +169 -0
- package/{build → dist/cjs}/utils/compressors/GzipCompressor.d.ts +2 -2
- package/dist/cjs/utils/compressors/GzipCompressor.js +22 -0
- package/{build → dist/cjs}/utils/compressors/UncompressedCompressor.d.ts +2 -2
- package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
- package/dist/cjs/utils/compressors/index.d.ts +2 -0
- package/{build → dist/cjs}/utils/compressors/index.js +3 -3
- package/{build → dist/cjs}/utils/helper.d.ts +3 -3
- package/dist/cjs/utils/helper.js +289 -0
- package/dist/cjs/utils/helpers/getStreamChunks.js +35 -0
- package/dist/cjs/utils/helpers/index.d.ts +1 -0
- package/{build → dist/cjs}/utils/helpers/index.js +2 -2
- package/dist/cjs/utils/helpers/tryWithInterval.js +39 -0
- package/{build → dist/cjs}/utils/resourceLoaders/BaseResourceLoader.d.ts +1 -1
- package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +14 -0
- package/{build → dist/cjs}/utils/resourceLoaders/StorageProviderLoader.d.ts +2 -2
- package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +60 -0
- package/{build → dist/cjs}/utils/resourceLoaders/UrlResourceLoader.d.ts +1 -1
- package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +51 -0
- package/{build → dist/cjs}/utils/resourceLoaders/getResourceLoader.d.ts +1 -1
- package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
- package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
- package/{build → dist/cjs}/utils/resourceLoaders/index.js +2 -2
- package/dist/mjs/TIIGenerator.d.ts +22 -0
- package/dist/mjs/TIIGenerator.js +225 -0
- package/dist/mjs/analytics/Analytics.d.ts +15 -0
- package/dist/mjs/analytics/Analytics.js +61 -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 +18 -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 +22 -0
- package/dist/mjs/analytics/types.js +2 -0
- package/dist/mjs/config.d.ts +4 -0
- package/dist/mjs/config.js +5 -0
- package/dist/mjs/connectors/BaseConnector.d.ts +36 -0
- package/dist/mjs/connectors/BaseConnector.js +34 -0
- package/dist/mjs/connectors/BlockchainConnector.d.ts +81 -0
- package/dist/mjs/connectors/BlockchainConnector.js +313 -0
- package/dist/mjs/connectors/BlockchainEventsListener.d.ts +15 -0
- package/dist/mjs/connectors/BlockchainEventsListener.js +75 -0
- package/dist/mjs/connectors/index.d.ts +2 -0
- package/dist/mjs/connectors/index.js +3 -0
- package/dist/mjs/constants.d.ts +13 -0
- package/dist/mjs/constants.js +14 -0
- package/dist/mjs/contracts/abi.d.ts +9842 -0
- package/dist/mjs/contracts/abi.js +12844 -0
- package/dist/mjs/crypto/Crypto.d.ts +54 -0
- package/dist/mjs/crypto/Crypto.js +95 -0
- package/dist/mjs/crypto/index.d.ts +2 -0
- package/dist/mjs/crypto/index.js +3 -0
- package/dist/mjs/crypto/nodejs/AES.d.ts +24 -0
- package/dist/mjs/crypto/nodejs/AES.js +74 -0
- package/dist/mjs/crypto/nodejs/ARIA.d.ts +24 -0
- package/dist/mjs/crypto/nodejs/ARIA.js +73 -0
- package/dist/mjs/crypto/nodejs/ECIES.d.ts +6 -0
- package/dist/mjs/crypto/nodejs/ECIES.js +51 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +58 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.js +163 -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/index.d.ts +80 -0
- package/dist/mjs/index.js +76 -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/Offer.d.ts +130 -0
- package/dist/mjs/models/Offer.js +356 -0
- package/dist/mjs/models/Order.d.ts +148 -0
- package/dist/mjs/models/Order.js +538 -0
- package/dist/mjs/models/Provider.d.ts +51 -0
- package/dist/mjs/models/Provider.js +114 -0
- package/dist/mjs/models/TCB.d.ts +58 -0
- package/dist/mjs/models/TCB.js +107 -0
- package/dist/mjs/models/TeeOffer.d.ts +204 -0
- package/dist/mjs/models/TeeOffer.js +533 -0
- package/dist/mjs/models/index.d.ts +5 -0
- package/dist/mjs/models/index.js +6 -0
- package/dist/mjs/package.json +1 -0
- package/dist/mjs/polyfills.d.ts +0 -0
- package/dist/mjs/polyfills.js +7 -0
- package/dist/mjs/proto/Compression.d.ts +36 -0
- package/dist/mjs/proto/Compression.js +123 -0
- package/dist/mjs/proto/TRI.d.ts +124 -0
- package/dist/mjs/proto/TRI.js +284 -0
- package/dist/mjs/proto/TeeProperties.d.ts +263 -0
- package/dist/mjs/proto/TeeProperties.js +391 -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 +25 -0
- package/dist/mjs/providers/storage/S3StorageProvider.js +167 -0
- package/dist/mjs/providers/storage/StorageAdapter.d.ts +60 -0
- package/dist/mjs/providers/storage/StorageAdapter.js +271 -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 +23 -0
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +119 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.js +51 -0
- package/dist/mjs/providers/storage/StorjAdapter.d.ts +19 -0
- package/dist/mjs/providers/storage/StorjAdapter.js +48 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +24 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.js +139 -0
- package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/mjs/providers/storage/getStorageProvider.js +15 -0
- package/dist/mjs/providers/storage/types.d.ts +7 -0
- package/dist/mjs/providers/storage/types.js +2 -0
- package/dist/mjs/staticModels/ActiveOffers.d.ts +15 -0
- package/dist/mjs/staticModels/ActiveOffers.js +32 -0
- package/dist/mjs/staticModels/ActiveOrders.d.ts +20 -0
- package/dist/mjs/staticModels/ActiveOrders.js +71 -0
- package/dist/mjs/staticModels/Consensus.d.ts +42 -0
- package/dist/mjs/staticModels/Consensus.js +220 -0
- package/dist/mjs/staticModels/Deposits.d.ts +70 -0
- package/dist/mjs/staticModels/Deposits.js +190 -0
- package/dist/mjs/staticModels/Marks.d.ts +8 -0
- package/dist/mjs/staticModels/Marks.js +25 -0
- package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
- package/dist/mjs/staticModels/ModelPackager.js +45 -0
- package/dist/mjs/staticModels/Offers.d.ts +65 -0
- package/dist/mjs/staticModels/Offers.js +184 -0
- package/dist/mjs/staticModels/Orders.d.ts +155 -0
- package/dist/mjs/staticModels/Orders.js +499 -0
- package/dist/mjs/staticModels/ProviderRegistry.d.ts +74 -0
- package/dist/mjs/staticModels/ProviderRegistry.js +169 -0
- package/dist/mjs/staticModels/StaticModel.d.ts +8 -0
- package/dist/mjs/staticModels/StaticModel.js +30 -0
- package/dist/mjs/staticModels/Superpro.d.ts +16 -0
- package/dist/mjs/staticModels/Superpro.js +23 -0
- package/dist/mjs/staticModels/SuperproToken.d.ts +48 -0
- package/dist/mjs/staticModels/SuperproToken.js +136 -0
- package/dist/mjs/staticModels/TeeOffers.d.ts +115 -0
- package/dist/mjs/staticModels/TeeOffers.js +309 -0
- package/dist/mjs/store.d.ts +15 -0
- package/dist/mjs/store.js +15 -0
- package/dist/mjs/tee/QuoteParser.d.ts +27 -0
- package/dist/mjs/tee/QuoteParser.js +162 -0
- package/dist/mjs/tee/QuoteValidator.d.ts +38 -0
- package/dist/mjs/tee/QuoteValidator.js +384 -0
- package/dist/mjs/tee/errors.d.ts +6 -0
- package/dist/mjs/tee/errors.js +7 -0
- package/dist/mjs/tee/helpers.d.ts +14 -0
- package/dist/mjs/tee/helpers.js +115 -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 +21 -0
- package/dist/mjs/tee/statuses.js +25 -0
- package/dist/mjs/tee/types.d.ts +80 -0
- package/dist/mjs/tee/types.js +2 -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 +60 -0
- package/dist/mjs/types/Consensus.js +16 -0
- package/dist/mjs/types/DepositInfo.d.ts +6 -0
- package/dist/mjs/types/DepositInfo.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 +6 -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 +33 -0
- package/dist/mjs/types/Offer.js +14 -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 +44 -0
- package/dist/mjs/types/Order.js +12 -0
- package/dist/mjs/types/OrderUsage.d.ts +26 -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/ResourceLoader.d.ts +28 -0
- package/dist/mjs/types/ResourceLoader.js +2 -0
- package/dist/mjs/types/SlotInfo.d.ts +6 -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 +10 -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 +16 -0
- package/dist/mjs/types/ValueOfferSlot.js +2 -0
- package/dist/mjs/types/Web3.d.ts +62 -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 +22 -0
- package/dist/mjs/types/index.js +23 -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/Monitoring.d.ts +11 -0
- package/dist/mjs/utils/Monitoring.js +42 -0
- package/dist/mjs/utils/NonceTracker.d.ts +19 -0
- package/dist/mjs/utils/NonceTracker.js +73 -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 +25 -0
- package/dist/mjs/utils/TxManager.js +162 -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 +44 -0
- package/dist/mjs/utils/helper.js +258 -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 +1 -0
- package/dist/mjs/utils/helpers/index.js +2 -0
- package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
- package/dist/mjs/utils/helpers/tryWithInterval.js +35 -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/package.json +16 -18
- package/build/TIIGenerator.js +0 -246
- package/build/analytics/Analytics.js +0 -74
- package/build/analytics/eventProviders/BrowserEventProvider.js +0 -32
- package/build/analytics/eventProviders/EventProvider.js +0 -14
- package/build/analytics/eventProviders/NodeEventProvider.js +0 -48
- package/build/analytics/transports/AxiosTransport.js +0 -72
- package/build/analytics/transports/FetchTransport.js +0 -42
- package/build/connectors/BaseConnector.js +0 -53
- package/build/connectors/BlockchainConnector.js +0 -358
- package/build/connectors/BlockchainEventsListener.js +0 -114
- package/build/crypto/Crypto.js +0 -119
- package/build/crypto/index.d.ts +0 -2
- package/build/crypto/nodejs/AES.js +0 -94
- package/build/crypto/nodejs/ARIA.js +0 -93
- package/build/crypto/nodejs/ECIES.js +0 -69
- package/build/crypto/nodejs/NativeCrypto.js +0 -183
- package/build/crypto/nodejs/RSA-Hybrid.js +0 -95
- package/build/index.d.ts +0 -79
- package/build/index.js +0 -142
- package/build/models/EtlModel.js +0 -138
- package/build/models/Offer.js +0 -407
- package/build/models/Order.js +0 -577
- package/build/models/Provider.js +0 -137
- package/build/models/TCB.js +0 -135
- package/build/models/TeeOffer.js +0 -600
- package/build/models/index.d.ts +0 -5
- package/build/models/index.js +0 -17
- package/build/polyfills.js +0 -7
- package/build/proto/Compression.js +0 -132
- package/build/proto/TRI.js +0 -293
- package/build/proto/TeeProperties.js +0 -401
- package/build/providers/storage/ChunksDownloadDecorator.js +0 -177
- package/build/providers/storage/S3StorageProvider.js +0 -219
- package/build/providers/storage/StorageAdapter.js +0 -323
- package/build/providers/storage/StorageContentWriter.js +0 -183
- package/build/providers/storage/StorageKeyValueAdapter.js +0 -158
- package/build/providers/storage/StorageMetadataReader.js +0 -68
- package/build/providers/storage/StorjAdapter.js +0 -74
- package/build/providers/storage/StorjStorageProvider.js +0 -207
- package/build/providers/storage/getStorageProvider.d.ts +0 -4
- package/build/providers/storage/getStorageProvider.js +0 -20
- package/build/staticModels/ActiveOffers.js +0 -52
- package/build/staticModels/ActiveOrders.js +0 -91
- package/build/staticModels/Consensus.js +0 -247
- package/build/staticModels/Deposits.js +0 -214
- package/build/staticModels/Marks.js +0 -43
- package/build/staticModels/ModelPackager.js +0 -62
- package/build/staticModels/Offers.js +0 -207
- package/build/staticModels/Orders.js +0 -518
- package/build/staticModels/ProviderRegistry.js +0 -192
- package/build/staticModels/StaticModel.js +0 -46
- package/build/staticModels/Superpro.js +0 -24
- package/build/staticModels/SuperproToken.js +0 -154
- package/build/staticModels/TeeOffers.js +0 -344
- package/build/store.js +0 -17
- package/build/tee/QuoteParser.js +0 -189
- package/build/tee/QuoteValidator.js +0 -414
- package/build/tee/helpers.js +0 -119
- package/build/types/HardwareInfo.d.ts +0 -6
- package/build/types/Offer.js +0 -17
- package/build/types/TeeOfferSlot.d.ts +0 -8
- package/build/types/index.d.ts +0 -22
- package/build/types/index.js +0 -39
- package/build/utils/Monitoring.js +0 -48
- package/build/utils/NonceTracker.js +0 -90
- package/build/utils/PubSub.js +0 -37
- package/build/utils/TxManager.js +0 -179
- package/build/utils/compressors/GzipCompressor.js +0 -29
- package/build/utils/compressors/UncompressedCompressor.js +0 -17
- package/build/utils/compressors/index.d.ts +0 -2
- package/build/utils/helper.js +0 -286
- package/build/utils/helpers/getStreamChunks.js +0 -74
- package/build/utils/helpers/index.d.ts +0 -1
- package/build/utils/helpers/tryWithInterval.js +0 -48
- package/build/utils/resourceLoaders/BaseResourceLoader.js +0 -51
- package/build/utils/resourceLoaders/StorageProviderLoader.js +0 -69
- package/build/utils/resourceLoaders/UrlResourceLoader.js +0 -64
- package/build/utils/resourceLoaders/getResourceLoader.js +0 -15
- package/build/utils/resourceLoaders/index.d.ts +0 -1
- /package/{build → dist/cjs}/analytics/AnalyticsError.d.ts +0 -0
- /package/{build → dist/cjs}/analytics/eventProviders/EventProvider.d.ts +0 -0
- /package/{build → dist/cjs}/config.d.ts +0 -0
- /package/{build → dist/cjs}/constants.d.ts +0 -0
- /package/{build → dist/cjs}/contracts/abi.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/Crypto.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/AES.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/ARIA.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/ECIES.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/RSA-Hybrid.d.ts +0 -0
- /package/{build → dist/cjs}/logger.d.ts +0 -0
- /package/{build → dist/cjs}/polyfills.d.ts +0 -0
- /package/{build → dist/cjs}/providers/storage/types.d.ts +0 -0
- /package/{build → dist/cjs}/staticModels/ModelPackager.d.ts +0 -0
- /package/{build → dist/cjs}/store.d.ts +0 -0
- /package/{build → dist/cjs}/tee/errors.d.ts +0 -0
- /package/{build → dist/cjs}/tee/helpers.d.ts +0 -0
- /package/{build → dist/cjs}/tee/statuses.d.ts +0 -0
- /package/{build → dist/cjs}/types/Compressor.d.ts +0 -0
- /package/{build → dist/cjs}/types/EtlModel.d.ts +0 -0
- /package/{build → dist/cjs}/types/Marks.d.ts +0 -0
- /package/{build → dist/cjs}/types/OptionInfo.d.ts +0 -0
- /package/{build → dist/cjs}/types/Origins.d.ts +0 -0
- /package/{build → dist/cjs}/types/Provider.d.ts +0 -0
- /package/{build → dist/cjs}/types/SlotInfo.d.ts +0 -0
- /package/{build → dist/cjs}/types/Superpro.d.ts +0 -0
- /package/{build → dist/cjs}/types/Web3.d.ts +0 -0
- /package/{build → dist/cjs}/types/storage/StorageAccess.d.ts +0 -0
- /package/{build → dist/cjs}/types/storage/StorageObject.d.ts +0 -0
- /package/{build → dist/cjs}/utils/Monitoring.d.ts +0 -0
- /package/{build → dist/cjs}/utils/NonceTracker.d.ts +0 -0
- /package/{build → dist/cjs}/utils/PubSub.d.ts +0 -0
- /package/{build → dist/cjs}/utils/helpers/getStreamChunks.d.ts +0 -0
- /package/{build → dist/cjs}/utils/helpers/tryWithInterval.d.ts +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.QuoteValidator = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const elliptic_1 = __importDefault(require("elliptic"));
|
|
9
|
+
const node_forge_1 = __importDefault(require("node-forge"));
|
|
10
|
+
const x509_1 = require("@fidm/x509");
|
|
11
|
+
const js_encoding_utils_1 = require("js-encoding-utils");
|
|
12
|
+
const pkijs_1 = require("pkijs");
|
|
13
|
+
const asn1js_1 = require("asn1js");
|
|
14
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
15
|
+
const QuoteParser_js_1 = require("./QuoteParser.js");
|
|
16
|
+
const logger_js_1 = __importDefault(require("../logger.js"));
|
|
17
|
+
const errors_js_1 = require("./errors.js");
|
|
18
|
+
const statuses_js_1 = require("./statuses.js");
|
|
19
|
+
const dto_js_1 = require("@super-protocol/dto-js");
|
|
20
|
+
const index_js_1 = __importDefault(require("../crypto/index.js"));
|
|
21
|
+
const { ec } = elliptic_1.default;
|
|
22
|
+
const { util, asn1 } = node_forge_1.default;
|
|
23
|
+
const INTEL_BASE_SGX_URL = 'https://api.trustedservices.intel.com';
|
|
24
|
+
const INTEL_SGX_ROOT_CA_URL = 'https://certificates.trustedservices.intel.com/IntelSGXRootCA.der';
|
|
25
|
+
const SGX_OID = '1.2.840.113741.1.13.1';
|
|
26
|
+
const FMSPC_OID = `${SGX_OID}.4`;
|
|
27
|
+
const PCEID_OID = `${SGX_OID}.3`;
|
|
28
|
+
const TCB_OID = `${SGX_OID}.2`;
|
|
29
|
+
const PCESVN_OID = `${TCB_OID}.17`;
|
|
30
|
+
const INTEL_ROOT_PUB_KEY = new Uint8Array([
|
|
31
|
+
4, 11, 169, 196, 192, 192, 200, 97, 147, 163, 254, 35, 214, 176, 44, 218, 16, 168, 187, 212, 232,
|
|
32
|
+
142, 72, 180, 69, 133, 97, 163, 110, 112, 85, 37, 245, 103, 145, 142, 46, 220, 136, 228, 13, 134,
|
|
33
|
+
11, 208, 204, 78, 226, 106, 172, 201, 136, 229, 5, 169, 83, 85, 140, 69, 63, 107, 9, 4, 174, 115,
|
|
34
|
+
148,
|
|
35
|
+
]);
|
|
36
|
+
class QuoteValidator {
|
|
37
|
+
isDefault;
|
|
38
|
+
baseUrl;
|
|
39
|
+
teeSgxParser;
|
|
40
|
+
logger;
|
|
41
|
+
constructor(baseUrl) {
|
|
42
|
+
this.isDefault = baseUrl === INTEL_BASE_SGX_URL;
|
|
43
|
+
this.baseUrl = `${baseUrl}/sgx/certification/v4`;
|
|
44
|
+
this.teeSgxParser = new QuoteParser_js_1.TeeSgxParser();
|
|
45
|
+
this.logger = logger_js_1.default.child({ className: QuoteValidator.name });
|
|
46
|
+
}
|
|
47
|
+
splitChain(chain) {
|
|
48
|
+
const begin = '-----BEGIN CERTIFICATE-----';
|
|
49
|
+
const end = '-----END CERTIFICATE-----';
|
|
50
|
+
return chain
|
|
51
|
+
.split(begin)
|
|
52
|
+
.filter(Boolean)
|
|
53
|
+
.map((cert) => begin.concat(cert.slice(0, cert.indexOf(end)), end));
|
|
54
|
+
}
|
|
55
|
+
findSequenceByOID(hexValue, targetOID) {
|
|
56
|
+
const buffer = util.hexToBytes(hexValue);
|
|
57
|
+
const asn1Data = asn1.fromDer(buffer);
|
|
58
|
+
return this.searchForSequence(asn1Data, targetOID);
|
|
59
|
+
}
|
|
60
|
+
searchForSequence(asn1Data, targetOID) {
|
|
61
|
+
if (asn1Data.type === asn1.Type.SEQUENCE) {
|
|
62
|
+
for (const child of asn1Data.value) {
|
|
63
|
+
if (child.type === asn1.Type.OID) {
|
|
64
|
+
const oid = asn1.derToOid(child.value);
|
|
65
|
+
if (oid === targetOID) {
|
|
66
|
+
return asn1Data;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(asn1Data.value)) {
|
|
72
|
+
for (const child of asn1Data.value) {
|
|
73
|
+
const result = this.searchForSequence(child, targetOID);
|
|
74
|
+
if (result) {
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
verifyDataBySignature(data, signature, key) {
|
|
82
|
+
const ellipticEc = new ec('p256');
|
|
83
|
+
const result = ellipticEc.verify(data, {
|
|
84
|
+
r: signature.subarray(0, 32),
|
|
85
|
+
s: signature.subarray(32),
|
|
86
|
+
}, ellipticEc.keyFromPublic(key, 'hex'));
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
checkValidDate(from, to) {
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
return from < now && now < to;
|
|
92
|
+
}
|
|
93
|
+
checkChainForIssuers(pckCert, platformCert, rootCert) {
|
|
94
|
+
return (lodash_1.default.isEqual(pckCert.issuer, platformCert.subject) &&
|
|
95
|
+
lodash_1.default.isEqual(platformCert.issuer, rootCert.subject));
|
|
96
|
+
}
|
|
97
|
+
getCrl(crlData) {
|
|
98
|
+
const crlDer = crlData.startsWith('-----')
|
|
99
|
+
? js_encoding_utils_1.formatter.pemToBin(crlData)
|
|
100
|
+
: Buffer.from(crlData, 'hex');
|
|
101
|
+
const crlAsn = (0, asn1js_1.fromBER)(crlDer);
|
|
102
|
+
return new pkijs_1.CertificateRevocationList({ schema: crlAsn.result });
|
|
103
|
+
}
|
|
104
|
+
checkCertificatesInCrl(crl, certIds) {
|
|
105
|
+
if (!crl.thisUpdate || !crl.nextUpdate) {
|
|
106
|
+
throw new errors_js_1.TeeQuoteValidatorError('Certificate revocation list has no update date field');
|
|
107
|
+
}
|
|
108
|
+
if (!this.checkValidDate(crl.thisUpdate.value.valueOf(), crl.nextUpdate.value.valueOf())) {
|
|
109
|
+
throw new errors_js_1.TeeQuoteValidatorError('Certificate revocation list has invalid update date');
|
|
110
|
+
}
|
|
111
|
+
if (crl.revokedCertificates) {
|
|
112
|
+
const isAnyRevoked = crl.revokedCertificates.find((revoked) => certIds.includes(Buffer.from(revoked.userCertificate.valueBlock.valueHexView).toString('hex')));
|
|
113
|
+
if (isAnyRevoked) {
|
|
114
|
+
throw new errors_js_1.TeeQuoteValidatorError('Certificate in revokation list');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async getCertificates(quote) {
|
|
119
|
+
const platformCrlResult = await axios_1.default.get(`${this.baseUrl}/pckcrl?ca=platform&encoding=pem`);
|
|
120
|
+
const platformChain = decodeURIComponent(platformCrlResult.headers['sgx-pck-crl-issuer-chain']);
|
|
121
|
+
const [platformFetchedPem, rootFetchedPem] = this.splitChain(platformChain); // [platform, root]
|
|
122
|
+
const platformFetchedCert = x509_1.Certificate.fromPEM(Buffer.from(platformFetchedPem));
|
|
123
|
+
const rootFetchedCert = x509_1.Certificate.fromPEM(Buffer.from(rootFetchedPem));
|
|
124
|
+
if (!this.checkValidDate(platformFetchedCert.validFrom.valueOf(), platformFetchedCert.validTo.valueOf())) {
|
|
125
|
+
throw new errors_js_1.TeeQuoteValidatorError('Platform certificate validation date is not valid');
|
|
126
|
+
}
|
|
127
|
+
if (!this.checkValidDate(rootFetchedCert.validFrom.valueOf(), rootFetchedCert.validTo.valueOf())) {
|
|
128
|
+
throw new errors_js_1.TeeQuoteValidatorError('Root certificate validation date is not valid');
|
|
129
|
+
}
|
|
130
|
+
if (!lodash_1.default.isEqual(rootFetchedCert.issuer, rootFetchedCert.subject)) {
|
|
131
|
+
throw new errors_js_1.TeeQuoteValidatorError('Root certificate is not self-signed');
|
|
132
|
+
}
|
|
133
|
+
if (Buffer.compare(rootFetchedCert.publicKey.keyRaw, INTEL_ROOT_PUB_KEY) !== 0) {
|
|
134
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong Intel root certificate public key');
|
|
135
|
+
}
|
|
136
|
+
const certificatePems = this.splitChain(quote.qeCertificationData.toString()); // [pck, platform, root]
|
|
137
|
+
const pckCert = x509_1.Certificate.fromPEM(Buffer.from(certificatePems[0]));
|
|
138
|
+
const certType = quote.qeCertificationDataType;
|
|
139
|
+
if (!this.checkValidDate(pckCert.validFrom.valueOf(), pckCert.validTo.valueOf())) {
|
|
140
|
+
throw new errors_js_1.TeeQuoteValidatorError('PCK certificate validation date is not valid');
|
|
141
|
+
}
|
|
142
|
+
if (certType !== 5) {
|
|
143
|
+
throw new errors_js_1.TeeQuoteValidatorError(`Unsupported certification data type: ${certType}`);
|
|
144
|
+
}
|
|
145
|
+
if (rootFetchedPem !== certificatePems[2]) {
|
|
146
|
+
throw new errors_js_1.TeeQuoteValidatorError("Invalid SGX root certificate in quote's certificate chain");
|
|
147
|
+
}
|
|
148
|
+
if (!this.checkChainForIssuers(pckCert, platformFetchedCert, rootFetchedCert)) {
|
|
149
|
+
throw new errors_js_1.TeeQuoteValidatorError('Invalid issuers in certificates chain');
|
|
150
|
+
}
|
|
151
|
+
const certIds = [
|
|
152
|
+
rootFetchedCert.serialNumber,
|
|
153
|
+
platformFetchedCert.serialNumber,
|
|
154
|
+
pckCert.serialNumber,
|
|
155
|
+
];
|
|
156
|
+
if (this.isDefault) {
|
|
157
|
+
const intelCrlDer = await axios_1.default.get(INTEL_SGX_ROOT_CA_URL, {
|
|
158
|
+
responseType: 'arraybuffer',
|
|
159
|
+
});
|
|
160
|
+
const intelCrlAsn = (0, asn1js_1.fromBER)(Buffer.from(intelCrlDer.data));
|
|
161
|
+
this.checkCertificatesInCrl(new pkijs_1.CertificateRevocationList({ schema: intelCrlAsn.result }), certIds);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const intelCrlDer = await axios_1.default.get(`${this.baseUrl}/rootcacrl`);
|
|
165
|
+
const intelCrl = this.getCrl(intelCrlDer.data);
|
|
166
|
+
this.checkCertificatesInCrl(intelCrl, certIds);
|
|
167
|
+
}
|
|
168
|
+
const platformCrl = this.getCrl(platformCrlResult.data);
|
|
169
|
+
this.checkCertificatesInCrl(platformCrl, certIds);
|
|
170
|
+
return { pckCert, rootCertPem: rootFetchedPem };
|
|
171
|
+
}
|
|
172
|
+
async verifyQeReportSignature(quote, pckPublicKey) {
|
|
173
|
+
const signature = Buffer.from(quote.qeReportSignature);
|
|
174
|
+
const reportHash = await this.getSha256Hash(Buffer.from(quote.qeReport));
|
|
175
|
+
return this.verifyDataBySignature(reportHash, signature, pckPublicKey);
|
|
176
|
+
}
|
|
177
|
+
async verifyQeReportData(quote, report) {
|
|
178
|
+
const qeAuthData = quote.qeAuthenticationData;
|
|
179
|
+
const attestationKey = quote.ecdsaAttestationKey;
|
|
180
|
+
const qeReportDataHash = report.dataHash;
|
|
181
|
+
const calculatedHash = await this.getSha256Hash(Buffer.concat([attestationKey, qeAuthData]));
|
|
182
|
+
const result = Buffer.compare(qeReportDataHash, calculatedHash);
|
|
183
|
+
return result === 0;
|
|
184
|
+
}
|
|
185
|
+
async verifyEnclaveReportSignature(quote) {
|
|
186
|
+
const key = Buffer.from(quote.ecdsaAttestationKey);
|
|
187
|
+
const headerBuffer = Buffer.from(quote.rawHeader);
|
|
188
|
+
const reportBuffer = Buffer.from(quote.report);
|
|
189
|
+
const expected = quote.isvEnclaveReportSignature;
|
|
190
|
+
const calculatedHash = await this.getSha256Hash(Buffer.concat([headerBuffer, reportBuffer]));
|
|
191
|
+
const ellipticEc = new ec('p256');
|
|
192
|
+
const result = ellipticEc.verify(calculatedHash, {
|
|
193
|
+
r: expected.subarray(0, 32),
|
|
194
|
+
s: expected.subarray(32),
|
|
195
|
+
}, Buffer.concat([Buffer.from([4]), key]));
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
async validateQuoteStructure(quote, report, pckPublicKey) {
|
|
199
|
+
if (!(await this.verifyQeReportSignature(quote, pckPublicKey))) {
|
|
200
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong QE report signature');
|
|
201
|
+
}
|
|
202
|
+
if (!(await this.verifyQeReportData(quote, report))) {
|
|
203
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong QE report data');
|
|
204
|
+
}
|
|
205
|
+
if (!(await this.verifyEnclaveReportSignature(quote))) {
|
|
206
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong enclave report signature');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
getSgxExtensionData(pckCert) {
|
|
210
|
+
const sgxExtensionData = pckCert.extensions.find((item) => item.oid === SGX_OID);
|
|
211
|
+
if (!sgxExtensionData) {
|
|
212
|
+
throw new errors_js_1.TeeQuoteValidatorError('SGX data not found in PCK certificate');
|
|
213
|
+
}
|
|
214
|
+
return sgxExtensionData;
|
|
215
|
+
}
|
|
216
|
+
getDataFromExtension(sgxExtensionData, targetOid, targetType) {
|
|
217
|
+
const rawData = this.findSequenceByOID(sgxExtensionData.value.toString('hex'), targetOid);
|
|
218
|
+
if (!rawData) {
|
|
219
|
+
throw new errors_js_1.TeeQuoteValidatorError(`OID ${targetOid} not found in PCK certificate's SGX data`);
|
|
220
|
+
}
|
|
221
|
+
const data = rawData.value.filter((asnElement) => asnElement.type === targetType);
|
|
222
|
+
if (!data.length) {
|
|
223
|
+
throw new errors_js_1.TeeQuoteValidatorError(`Data on OID ${targetOid} of type ${targetType} not found`);
|
|
224
|
+
}
|
|
225
|
+
const result = util.bytesToHex(data[0].value);
|
|
226
|
+
return targetType === asn1.Type.OCTETSTRING ? result : parseInt(result, 16).toString();
|
|
227
|
+
}
|
|
228
|
+
async getTcbInfo(fmspc, rootCertPem) {
|
|
229
|
+
const tcbData = await axios_1.default.get(`${this.baseUrl}/tcb?fmspc=${fmspc}`);
|
|
230
|
+
const tcbInfoHeader = 'tcb-info-issuer-chain';
|
|
231
|
+
const tcbInfoChain = this.splitChain(decodeURIComponent(tcbData.headers[tcbInfoHeader])); // [tcb, root]
|
|
232
|
+
if (tcbInfoChain[1] !== rootCertPem) {
|
|
233
|
+
throw new errors_js_1.TeeQuoteValidatorError('Invalid SGX root certificate in TCB chain');
|
|
234
|
+
}
|
|
235
|
+
const tcbCert = x509_1.Certificate.fromPEM(Buffer.from(tcbInfoChain[0]));
|
|
236
|
+
const key = tcbCert.publicKey.keyRaw;
|
|
237
|
+
const signature = Buffer.from(tcbData.data.signature, 'hex');
|
|
238
|
+
const calculatedhash = await this.getSha256Hash(Buffer.from(JSON.stringify(tcbData.data.tcbInfo)));
|
|
239
|
+
const result = this.verifyDataBySignature(calculatedhash, signature, key);
|
|
240
|
+
if (!result) {
|
|
241
|
+
throw new errors_js_1.TeeQuoteValidatorError('TCB info signature is not valid');
|
|
242
|
+
}
|
|
243
|
+
if (tcbData.data.tcbInfo.nextUpdate.valueOf() > Date.now()) {
|
|
244
|
+
throw new errors_js_1.TeeQuoteValidatorError('TCB next update date is out of date');
|
|
245
|
+
}
|
|
246
|
+
return tcbData.data;
|
|
247
|
+
}
|
|
248
|
+
async getQEIdentity(rootCertPem) {
|
|
249
|
+
const qeIdentityData = await axios_1.default.get(`${this.baseUrl}/qe/identity`);
|
|
250
|
+
const qeIdentityHeader = 'sgx-enclave-identity-issuer-chain';
|
|
251
|
+
const qeIdentityChain = this.splitChain(decodeURIComponent(qeIdentityData.headers[qeIdentityHeader])); // [qeIdentity, root]
|
|
252
|
+
if (qeIdentityChain[1] !== rootCertPem) {
|
|
253
|
+
throw new errors_js_1.TeeQuoteValidatorError('Invalid SGX root certificate in enclave identity chain');
|
|
254
|
+
}
|
|
255
|
+
const qeIdentityCert = x509_1.Certificate.fromPEM(Buffer.from(qeIdentityChain[0]));
|
|
256
|
+
const key = qeIdentityCert.publicKey.keyRaw;
|
|
257
|
+
const signature = Buffer.from(qeIdentityData.data.signature, 'hex');
|
|
258
|
+
const calculatedhash = await this.getSha256Hash(Buffer.from(JSON.stringify(qeIdentityData.data.enclaveIdentity)));
|
|
259
|
+
const result = this.verifyDataBySignature(calculatedhash, signature, key);
|
|
260
|
+
if (!result) {
|
|
261
|
+
throw new errors_js_1.TeeQuoteValidatorError('Enclave identity signature is not valid');
|
|
262
|
+
}
|
|
263
|
+
if (qeIdentityData.data.enclaveIdentity.nextUpdate.valueOf() > Date.now()) {
|
|
264
|
+
throw new errors_js_1.TeeQuoteValidatorError('Enclave identity next update date is out of date');
|
|
265
|
+
}
|
|
266
|
+
return qeIdentityData.data;
|
|
267
|
+
}
|
|
268
|
+
getQEIdentityStatus(report, qeIdentity) {
|
|
269
|
+
const mrSigner = report.mrSigner.toString('hex');
|
|
270
|
+
if (mrSigner.toUpperCase() !== qeIdentity.enclaveIdentity.mrsigner) {
|
|
271
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong MR signer in QE report');
|
|
272
|
+
}
|
|
273
|
+
if (report.isvProdId !== qeIdentity.enclaveIdentity.isvprodid) {
|
|
274
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong ISV PROD ID in QE report');
|
|
275
|
+
}
|
|
276
|
+
const tcbLevel = qeIdentity.enclaveIdentity.tcbLevels.find((tcbLevel) => tcbLevel.tcb.isvsvn <= report.isvSvn);
|
|
277
|
+
const status = tcbLevel?.tcbStatus;
|
|
278
|
+
if (status) {
|
|
279
|
+
this.logger.info(`Enclave identity status is ${tcbLevel?.tcbStatus}`);
|
|
280
|
+
return status;
|
|
281
|
+
}
|
|
282
|
+
return statuses_js_1.QEIdentityStatuses.OutOfDate;
|
|
283
|
+
}
|
|
284
|
+
getTcbStatus(fmspc, pceId, tcbData, sgxExtensionData) {
|
|
285
|
+
if (fmspc.toUpperCase() !== tcbData.tcbInfo.fmspc.toUpperCase()) {
|
|
286
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong FMSPC in PCK certificate');
|
|
287
|
+
}
|
|
288
|
+
if (pceId !== tcbData.tcbInfo.pceId) {
|
|
289
|
+
throw new errors_js_1.TeeQuoteValidatorError('Wrong PCEID in PCK certificate');
|
|
290
|
+
}
|
|
291
|
+
const pceSvn = this.getDataFromExtension(sgxExtensionData, PCESVN_OID, asn1.Type.INTEGER);
|
|
292
|
+
const sgxComponents = [...Array(16).keys()].map((i) => this.getDataFromExtension(sgxExtensionData, `${TCB_OID}.${i + 1}`, asn1.Type.INTEGER));
|
|
293
|
+
const tcbLevel = tcbData.tcbInfo.tcbLevels.find((tcbLevel) => tcbLevel.tcb.pcesvn <= Number(pceSvn) &&
|
|
294
|
+
tcbLevel.tcb.sgxtcbcomponents.every((el, index) => el.svn <= Number(sgxComponents[index])));
|
|
295
|
+
const status = tcbLevel?.tcbStatus;
|
|
296
|
+
if (status) {
|
|
297
|
+
this.logger.info(`TCB status is ${tcbLevel?.tcbStatus}`);
|
|
298
|
+
return status;
|
|
299
|
+
}
|
|
300
|
+
return statuses_js_1.TCBStatuses.OutOfDate;
|
|
301
|
+
}
|
|
302
|
+
getQuoteValidationStatus(qeIdentityStatus, tcbStatus) {
|
|
303
|
+
if (qeIdentityStatus === statuses_js_1.QEIdentityStatuses.OutOfDate) {
|
|
304
|
+
if (tcbStatus === statuses_js_1.TCBStatuses.UpToDate || tcbStatus === statuses_js_1.TCBStatuses.SWHardeningNeeded) {
|
|
305
|
+
return statuses_js_1.QuoteValidationStatuses.SecurityPatchNeeded;
|
|
306
|
+
}
|
|
307
|
+
if (tcbStatus === statuses_js_1.TCBStatuses.OutOfDateConfigurationNeeded ||
|
|
308
|
+
tcbStatus === statuses_js_1.TCBStatuses.ConfigurationAndSWHardeningNeeded) {
|
|
309
|
+
return statuses_js_1.QuoteValidationStatuses.SoftwareUpdateNeeded;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (qeIdentityStatus === statuses_js_1.QEIdentityStatuses.Revoked || tcbStatus === statuses_js_1.TCBStatuses.Revoked) {
|
|
313
|
+
throw new errors_js_1.TeeQuoteValidatorError('QE identity or TCB revoked');
|
|
314
|
+
}
|
|
315
|
+
if (tcbStatus === statuses_js_1.TCBStatuses.UpToDate) {
|
|
316
|
+
return statuses_js_1.QuoteValidationStatuses.UpToDate;
|
|
317
|
+
}
|
|
318
|
+
if (tcbStatus === statuses_js_1.TCBStatuses.OutOfDate) {
|
|
319
|
+
return statuses_js_1.QuoteValidationStatuses.SecurityPatchNeeded;
|
|
320
|
+
}
|
|
321
|
+
if (tcbStatus === statuses_js_1.TCBStatuses.ConfigurationNeeded) {
|
|
322
|
+
return statuses_js_1.QuoteValidationStatuses.ConfigurationNeeded;
|
|
323
|
+
}
|
|
324
|
+
return statuses_js_1.QuoteValidationStatuses.SoftwareUpdateNeeded;
|
|
325
|
+
}
|
|
326
|
+
getQuoteValidationStatusDescription(status) {
|
|
327
|
+
switch (status) {
|
|
328
|
+
case statuses_js_1.QuoteValidationStatuses.UpToDate:
|
|
329
|
+
return 'The Quote verification passed and is at the latest TCB level.';
|
|
330
|
+
case statuses_js_1.QuoteValidationStatuses.ConfigurationNeeded:
|
|
331
|
+
return `The SGX platform firmware and SW are at the latest security patching level
|
|
332
|
+
but there are platform hardware configurations may expose the enclave to vulnerabilities.`;
|
|
333
|
+
case statuses_js_1.QuoteValidationStatuses.SecurityPatchNeeded:
|
|
334
|
+
return `The SGX platform firmware and SW are not at the latest security patching level.
|
|
335
|
+
The platform needs to be patched with firmware and/or software patches.`;
|
|
336
|
+
case statuses_js_1.QuoteValidationStatuses.SoftwareUpdateNeeded:
|
|
337
|
+
return `The SGX platform firmware and SW are at the latest security patching level but there are
|
|
338
|
+
certain vulnerabilities that can only be mitigated with software mitigations implemented by the enclave.`;
|
|
339
|
+
default:
|
|
340
|
+
return 'Quote verification failed.';
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
async validate(quoteBuffer) {
|
|
344
|
+
try {
|
|
345
|
+
const quote = this.teeSgxParser.parseQuote(quoteBuffer);
|
|
346
|
+
const report = this.teeSgxParser.parseReport(quote.qeReport);
|
|
347
|
+
const { pckCert, rootCertPem } = await this.getCertificates(quote);
|
|
348
|
+
await this.validateQuoteStructure(quote, report, pckCert.publicKey.keyRaw);
|
|
349
|
+
this.logger.info('Quote structure validated successfully');
|
|
350
|
+
const sgxExtensionData = this.getSgxExtensionData(pckCert);
|
|
351
|
+
const fmspc = this.getDataFromExtension(sgxExtensionData, FMSPC_OID, asn1.Type.OCTETSTRING);
|
|
352
|
+
const pceId = this.getDataFromExtension(sgxExtensionData, PCEID_OID, asn1.Type.OCTETSTRING);
|
|
353
|
+
const tcbData = await this.getTcbInfo(fmspc, rootCertPem);
|
|
354
|
+
const qeIdentity = await this.getQEIdentity(rootCertPem);
|
|
355
|
+
const qeIdentityStatus = this.getQEIdentityStatus(report, qeIdentity);
|
|
356
|
+
const tcbStatus = this.getTcbStatus(fmspc, pceId, tcbData, sgxExtensionData);
|
|
357
|
+
const quoteValidationStatus = this.getQuoteValidationStatus(qeIdentityStatus, tcbStatus);
|
|
358
|
+
this.logger.info(`Quote validation status is ${quoteValidationStatus}`);
|
|
359
|
+
return {
|
|
360
|
+
quoteValidationStatus,
|
|
361
|
+
description: this.getQuoteValidationStatusDescription(quoteValidationStatus),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
this.logger.error(`Validation error: ${error}`);
|
|
366
|
+
return {
|
|
367
|
+
quoteValidationStatus: statuses_js_1.QuoteValidationStatuses.Error,
|
|
368
|
+
description: this.getQuoteValidationStatusDescription(statuses_js_1.QuoteValidationStatuses.Error),
|
|
369
|
+
error,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
async isQuoteHasUserData(quoteBuffer, userDataBuffer) {
|
|
374
|
+
const quote = this.teeSgxParser.parseQuote(quoteBuffer);
|
|
375
|
+
const report = this.teeSgxParser.parseReport(quote.report);
|
|
376
|
+
const userDataHash = await this.getSha256Hash(userDataBuffer);
|
|
377
|
+
const slicedQuoteData = report.userData.slice(0, userDataHash.length);
|
|
378
|
+
const compareResult = Buffer.compare(slicedQuoteData, userDataHash);
|
|
379
|
+
return compareResult === 0;
|
|
380
|
+
}
|
|
381
|
+
async getSha256Hash(data) {
|
|
382
|
+
const hashInfo = {
|
|
383
|
+
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
384
|
+
encoding: dto_js_1.Encoding.base64,
|
|
385
|
+
};
|
|
386
|
+
const hashData = await index_js_1.default.createHash(data, hashInfo);
|
|
387
|
+
return Buffer.from(hashData.hash, hashData.encoding);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
exports.QuoteValidator = QuoteValidator;
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVvdGVWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL1F1b3RlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix3REFBZ0M7QUFDaEMsNERBQStCO0FBQy9CLHFDQUFvRDtBQUNwRCx5REFBOEM7QUFDOUMsaUNBQWtEO0FBQ2xELG1DQUFpQztBQUNqQyxvREFBdUI7QUFDdkIscURBQWdEO0FBRWhELDZEQUFzQztBQUV0QywyQ0FBcUQ7QUFDckQsK0NBQXlGO0FBQ3pGLG1EQUFpRTtBQUNqRSxrRUFBd0M7QUFFeEMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLGtCQUFRLENBQUM7QUFDeEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxvQkFBSyxDQUFDO0FBRTdCLE1BQU0sa0JBQWtCLEdBQUcsdUNBQXVDLENBQUM7QUFDbkUsTUFBTSxxQkFBcUIsR0FBRyxtRUFBbUUsQ0FBQztBQUNsRyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sSUFBSSxDQUFDO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQztBQUMvQixNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDO0FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUM7SUFDeEMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUs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
|
|
@@ -10,4 +10,4 @@ exports.TeeQuoteParserError = TeeQuoteParserError;
|
|
|
10
10
|
class TeeQuoteValidatorError extends Error {
|
|
11
11
|
}
|
|
12
12
|
exports.TeeQuoteValidatorError = TeeQuoteValidatorError;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlZS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxzQkFBdUIsU0FBUSxLQUFLO0NBQUc7QUFBcEQsd0RBQW9EO0FBRXBELE1BQWEsbUJBQW9CLFNBQVEsS0FBSztDQUFHO0FBQWpELGtEQUFpRDtBQUVqRCxNQUFhLHNCQUF1QixTQUFRLEtBQUs7Q0FBRztBQUFwRCx3REFBb0QifQ==
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Signature = exports.splitChain = void 0;
|
|
4
|
+
const splitChain = (chain) => {
|
|
5
|
+
const begin = '-----BEGIN CERTIFICATE-----';
|
|
6
|
+
const end = '-----END CERTIFICATE-----';
|
|
7
|
+
return chain
|
|
8
|
+
.split(begin)
|
|
9
|
+
.filter(Boolean)
|
|
10
|
+
.map((cert) => begin.concat(cert.slice(0, cert.indexOf(end)), end));
|
|
11
|
+
};
|
|
12
|
+
exports.splitChain = splitChain;
|
|
13
|
+
class Position {
|
|
14
|
+
place;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.place = 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
class Signature {
|
|
20
|
+
static toArray(msg) {
|
|
21
|
+
if (Array.isArray(msg)) {
|
|
22
|
+
return new Uint8Array(msg);
|
|
23
|
+
}
|
|
24
|
+
if (!msg) {
|
|
25
|
+
return new Uint8Array();
|
|
26
|
+
}
|
|
27
|
+
const res = [];
|
|
28
|
+
if (typeof msg !== 'string') {
|
|
29
|
+
return new Uint8Array(msg);
|
|
30
|
+
}
|
|
31
|
+
msg = msg.replace(/[^a-z0-9]+/gi, '');
|
|
32
|
+
if (msg.length % 2 !== 0) {
|
|
33
|
+
msg = '0' + msg;
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i < msg.length; i += 2) {
|
|
36
|
+
res.push(parseInt(msg[i] + msg[i + 1], 16));
|
|
37
|
+
}
|
|
38
|
+
return new Uint8Array(res);
|
|
39
|
+
}
|
|
40
|
+
static importFromDER(signature) {
|
|
41
|
+
const data = Signature.toArray(signature);
|
|
42
|
+
const p = new Position();
|
|
43
|
+
if (data[p.place++] !== 0x30) {
|
|
44
|
+
throw new Error('Invald DER');
|
|
45
|
+
}
|
|
46
|
+
const len = Signature.getLength(data, p);
|
|
47
|
+
if (len === false) {
|
|
48
|
+
throw new Error('Invald DER');
|
|
49
|
+
}
|
|
50
|
+
if (Number(len) + p.place !== data.length) {
|
|
51
|
+
throw new Error('Invald DER');
|
|
52
|
+
}
|
|
53
|
+
if (data[p.place++] !== 0x02) {
|
|
54
|
+
throw new Error('Invald DER');
|
|
55
|
+
}
|
|
56
|
+
const rlen = Signature.getLength(data, p);
|
|
57
|
+
if (rlen === false) {
|
|
58
|
+
throw new Error('Invald DER');
|
|
59
|
+
}
|
|
60
|
+
let r = data.slice(p.place, Number(rlen) + p.place);
|
|
61
|
+
p.place += Number(rlen);
|
|
62
|
+
if (data[p.place++] !== 0x02) {
|
|
63
|
+
throw new Error('Invald DER');
|
|
64
|
+
}
|
|
65
|
+
const slen = this.getLength(data, p);
|
|
66
|
+
if (slen === false) {
|
|
67
|
+
throw new Error('Invald DER');
|
|
68
|
+
}
|
|
69
|
+
if (data.length !== Number(slen) + p.place) {
|
|
70
|
+
throw new Error('Invald DER');
|
|
71
|
+
}
|
|
72
|
+
let s = data.slice(p.place, Number(slen) + p.place);
|
|
73
|
+
if (r[0] === 0) {
|
|
74
|
+
if (r[1] & 0x80) {
|
|
75
|
+
r = r.slice(1);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new Error('Leading zeroes');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (s[0] === 0) {
|
|
82
|
+
if (s[1] & 0x80) {
|
|
83
|
+
s = s.slice(1);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
throw new Error('Leading zeroes');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
r: Buffer.from(r).toString('hex'),
|
|
91
|
+
s: Buffer.from(s).toString('hex'),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static getLength(buf, p) {
|
|
95
|
+
const initial = buf[p.place++];
|
|
96
|
+
if (!(initial & 0x80)) {
|
|
97
|
+
return initial;
|
|
98
|
+
}
|
|
99
|
+
const octetLen = initial & 0xf;
|
|
100
|
+
// Indefinite length or overflow
|
|
101
|
+
if (octetLen === 0 || octetLen > 4) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
let val = 0;
|
|
105
|
+
let off = p.place;
|
|
106
|
+
for (let i = 0; i < octetLen; i++, off++) {
|
|
107
|
+
val <<= 8;
|
|
108
|
+
val |= buf[off];
|
|
109
|
+
val >>>= 0;
|
|
110
|
+
}
|
|
111
|
+
// Leading zeroes
|
|
112
|
+
if (val <= 0x7f) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
p.place = off;
|
|
116
|
+
return val;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.Signature = Signature;
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBWSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLDJCQUEyQixDQUFDO0lBRXhDLE9BQU8sS0FBSztTQUNULEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDWixNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQztBQVJXLFFBQUEsVUFBVSxjQVFyQjtBQUVGLE1BQU0sUUFBUTtJQUNaLEtBQUssQ0FBUztJQUVkO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsTUFBYSxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBa0M7UUFDL0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFFekIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFJcEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TeeDataType, BinaryType, TLBlockUnserializeResultType, TLBlockSerializeResultType, TLBlockType } from './types';
|
|
1
|
+
import { TeeDataType, BinaryType, TLBlockUnserializeResultType, TLBlockSerializeResultType, TLBlockType } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Serializes and Unserializes TLB
|
|
4
4
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlZS9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -6,7 +6,7 @@ var QEIdentityStatuses;
|
|
|
6
6
|
QEIdentityStatuses["UpToDate"] = "UpToDate";
|
|
7
7
|
QEIdentityStatuses["OutOfDate"] = "OutOfDate";
|
|
8
8
|
QEIdentityStatuses["Revoked"] = "Revoked";
|
|
9
|
-
})(QEIdentityStatuses
|
|
9
|
+
})(QEIdentityStatuses || (exports.QEIdentityStatuses = QEIdentityStatuses = {}));
|
|
10
10
|
var TCBStatuses;
|
|
11
11
|
(function (TCBStatuses) {
|
|
12
12
|
TCBStatuses["UpToDate"] = "UpToDate";
|
|
@@ -16,7 +16,7 @@ var TCBStatuses;
|
|
|
16
16
|
TCBStatuses["ConfigurationAndSWHardeningNeeded"] = "ConfigurationAndSWHardeningNeeded";
|
|
17
17
|
TCBStatuses["SWHardeningNeeded"] = "SWHardeningNeeded";
|
|
18
18
|
TCBStatuses["OutOfDateConfigurationNeeded"] = "OutOfDateConfigurationNeeded";
|
|
19
|
-
})(TCBStatuses
|
|
19
|
+
})(TCBStatuses || (exports.TCBStatuses = TCBStatuses = {}));
|
|
20
20
|
var QuoteValidationStatuses;
|
|
21
21
|
(function (QuoteValidationStatuses) {
|
|
22
22
|
QuoteValidationStatuses["UpToDate"] = "UpToDate";
|
|
@@ -24,5 +24,5 @@ var QuoteValidationStatuses;
|
|
|
24
24
|
QuoteValidationStatuses["SecurityPatchNeeded"] = "SecurityPatchNeeded";
|
|
25
25
|
QuoteValidationStatuses["SoftwareUpdateNeeded"] = "SoftwareUpdateNeeded";
|
|
26
26
|
QuoteValidationStatuses["Error"] = "Error";
|
|
27
|
-
})(QuoteValidationStatuses
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
})(QuoteValidationStatuses || (exports.QuoteValidationStatuses = QuoteValidationStatuses = {}));
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL3N0YXR1c2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QiwyQ0FBcUIsQ0FBQTtJQUNyQiw2Q0FBdUIsQ0FBQTtJQUN2Qix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFJN0I7QUFFRCxJQUFZLFdBUVg7QUFSRCxXQUFZLFdBQVc7SUFDckIsb0NBQXFCLENBQUE7SUFDckIsc0NBQXVCLENBQUE7SUFDdkIsa0NBQW1CLENBQUE7SUFDbkIsMERBQTJDLENBQUE7SUFDM0Msc0ZBQXVFLENBQUE7SUFDdkUsc0RBQXVDLENBQUE7SUFDdkMsNEVBQTZELENBQUE7QUFDL0QsQ0FBQyxFQVJXLFdBQVcsMkJBQVgsV0FBVyxRQVF0QjtBQUVELElBQVksdUJBTVg7QUFORCxXQUFZLHVCQUF1QjtJQUNqQyxnREFBcUIsQ0FBQTtJQUNyQixzRUFBMkMsQ0FBQTtJQUMzQyxzRUFBMkMsQ0FBQTtJQUMzQyx3RUFBNkMsQ0FBQTtJQUM3QywwQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyx1QkFBdUIsdUNBQXZCLHVCQUF1QixRQU1sQyJ9
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
declare module 'pkijs' {
|
|
3
|
+
interface AbstractCryptoEngine {
|
|
4
|
+
generateKey(algorithm: 'Ed25519', extractable: boolean, keyUsages: ReadonlyArray<'sign' | 'verify'>): Promise<CryptoKeyPair>;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
2
7
|
export type TeeDataBlockType = {
|
|
3
8
|
format: 'lzma' | 'gzip' | 'raw';
|
|
4
9
|
userData: {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcHJlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy9Db21wcmVzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|