LibreOffice Module xmlsecurity (master) 1
ciphercontext.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <com/sun/star/xml/crypto/XCipherContext.hpp>
23
25#include <mutex>
26#include <seccomon.h>
27#include <secmodt.h>
28
29class OCipherContext : public cppu::WeakImplHelper< css::xml::crypto::XCipherContext >
30{
31private:
32 std::mutex m_aMutex;
33
34 PK11SlotInfo* m_pSlot;
35 PK11SymKey* m_pSymKey;
36 SECItem* m_pSecParam;
37 PK11Context* m_pContext;
38
39 sal_Int32 m_nBlockSize;
40 css::uno::Sequence< sal_Int8 > m_aLastBlock;
41
45 sal_Int64 m_nConverted;
46
49
50 void Dispose();
51
53 : m_pSlot( nullptr )
54 , m_pSymKey( nullptr )
55 , m_pSecParam( nullptr )
56 , m_pContext( nullptr )
57 , m_nBlockSize( 0 )
58 , m_bEncryption( false )
59 , m_bPadding( false )
60 , m_bW3CPadding( false )
61 , m_nConverted( 0 )
62 , m_bDisposed( false )
63 , m_bBroken( false )
64 {}
65
66public:
67
68 virtual ~OCipherContext() override
69 {
70 Dispose();
71 }
72
73 static css::uno::Reference< css::xml::crypto::XCipherContext > Create( CK_MECHANISM_TYPE nNSSCipherID, const css::uno::Sequence< ::sal_Int8 >& aKey, const css::uno::Sequence< ::sal_Int8 >& aInitializationVector, bool bEncryption, bool bW3CPadding );
74
75 // XCipherContext
76 virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL convertWithCipherContext( const css::uno::Sequence< ::sal_Int8 >& aData ) override;
77 virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL finalizeCipherContextAndDispose( ) override;
78};
79
80/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static css::uno::Reference< css::xml::crypto::XCipherContext > Create(CK_MECHANISM_TYPE nNSSCipherID, const css::uno::Sequence< ::sal_Int8 > &aKey, const css::uno::Sequence< ::sal_Int8 > &aInitializationVector, bool bEncryption, bool bW3CPadding)
std::mutex m_aMutex
sal_Int32 m_nBlockSize
sal_Int64 m_nConverted
virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL convertWithCipherContext(const css::uno::Sequence< ::sal_Int8 > &aData) override
PK11SymKey * m_pSymKey
virtual ~OCipherContext() override
virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL finalizeCipherContextAndDispose() override
PK11Context * m_pContext
css::uno::Sequence< sal_Int8 > m_aLastBlock
SECItem * m_pSecParam
PK11SlotInfo * m_pSlot