/**
 * Copyright 2021 Opstrace, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ import { log , keyIDfromPEM , die } from "@opstrace/utils" ; export function authenticatorKeySetAddKey ( previousKeySetJSONString , newPubkeyPem ) { const previousKeySet = JSON . parse ( previousKeySetJSONString ) ; const newKeyID = keyIDfromPEM ( newPubkeyPem ) ; if ( newKeyID in previousKeySet ) { die ( "key already in key set" ) ; } const newKeySet = { ... previousKeySet , [ newKeyID ] : newPubkeyPem } ; return JSON . stringify ( newKeySet ) ; } export function authenticatorKeySetRemoveKey ( previousKeySetJSONString , keyIdToRemove ) { const ks = JSON . parse ( previousKeySetJSONString ) ; if ( ! ( keyIdToRemove in ks ) ) { die ( "key not present in key set" ) ; } delete ks [ keyIdToRemove ] ; return JSON . stringify ( ks ) ; } export function authenticatorKeySetgenerateJSONSingleKey ( pubkeyPem ) { const keyId = keyIDfromPEM ( pubkeyPem ) ; const keyset = { [ keyId ] : pubkeyPem } ; log . debug ( "built authenticator key ID: %s" , keyId ) ; const tenant_api_authenticator_pubkey_set_json = JSON . stringify ( keyset ) ; log . debug ( "generated AuthenticatorPubkeySetJSON: %s" , tenant_api_authenticator_pubkey_set_json ) ; return tenant_api_authenticator_pubkey_set_json ; }