1. 程式人生 > >OpenSSL原始碼總覽之檔案結構

OpenSSL原始碼總覽之檔案結構

       Openssl是ssl協議的具體實現,下面從目錄的角度對openssl各個模組資料夾加以說明,從總體上把握openssl。

       1、Crypto目錄包含了整個openssl中的一些最基礎的結構,如下:
       (1)、bio是對io等操作的封裝像檔案,標準輸入輸出,socket都是在該範疇內,可以說bio提供了一個io相關操作的框架。
       (2)、evp主要是實現對於各種演算法包括對稱演算法以及非對稱演算法的封裝,作用在於方便演算法的增加和刪除,因此evp也是一個基礎框架。
       (3)、各類對稱加密,非對稱加密,摘要演算法的實現,包括md目錄,rc目錄,aes,des,ec,dh,rsa,dsa等目錄。還包括相應的bn大數操作以及rand隨機數操作等。
       (4)、一些通用資料結構的實現,例如stack目錄實現了所需的棧資料結構以及棧方法,lhash實現了雜湊表資料結構及其方法,X509表示證書等結構的操作和實現,pkcs7,pkcs12,pem目錄表示這類結構以及方法操作實現。Asn1目錄實現了ASN.1相關操作。
       (5)、動態載入模組實現一些動態庫的載入,遮蔽了不同平臺上例如windows和linux動態庫載入的差異性。
       (6)、conf目錄配置檔案讀取等操作的實現。
       (7)、engine目錄用於控制管理各種加密演算法操作,主要是方便硬體演算法的加入。

       2、ssl目錄是握手協議的實現,證書校驗過程等,具體包括ssl3.0、tls1.0、tls1.1、tls1.2等主流版本。

       3、apps目錄是所有應用程式程式碼的實現,就是使用linux命令來進行ssl證書生成等操作的實現。test目錄存放的是測試程式碼。demos是對於介面函式的一些使用事例。其實在具體使用openssl的時候可以參考apps、test以及demos目錄中對於介面的呼叫。

       4、doc目錄是一些函式的說明文件,可以看到cypto以及ssl目錄均有相關說明文件。

       5、include目錄是在第三方程式呼叫openssl庫的時候提供給第三方使用的介面標頭檔案。

       以上就是openssl主要的目錄結構資訊,後面將學習具體的ssl握手過程,具體包括1、初始化ssl環境;2、建立ssl連結;3、在ssl連線上交換資料;4、關閉ssl連結等方面的內容。

       本文為CSDN村中少年原創文章,轉載記得加上小尾巴偶,博主連結這裡

相關推薦

OpenSSL原始碼總覽檔案結構

       Openssl是ssl協議的具體實現,下面從目錄的角度對openssl各個模組資料夾加以說明,從總體上把握openssl。        1、Crypto目錄包含了整個openssl中的一些最基礎的結構,如下:        (1)、bio是對

STL原始碼分析pair結構

前言 前面在分析set, RB-tree都有在insert實現中出現pair, 下節分析map的時候更會經常出現pair, 所以打算在之前先對pair有個認識. pair是一個有兩個變數的結構體, 即誰都可以直接呼叫它的變數, 畢竟struct預設許可權都是public, 將兩個

zookeeper學習檔案結構

bin資料夾:zookeeper服務的相關命令的資料夾,用於開啟zookeeper服務等。 conf資料夾:存放配置檔案,其中最主要的是zoo_sample.cfg資料夾,啟動zk前需要配置這個檔案 dist-maven:mvn編譯後的資料夾 docs:文件幫助 li

3.Springboot 檔案結構和配置檔案

專案檔案結構 新建的Springboot專案的檔案結構如下: |-customer(專案名稱) | - src | | - main | | | - java | | | - resources | | | | - static |

比特幣bitcoin原始碼解析資料結構

1. CTxOutAn output of a transaction. It contains the public key that the next input must be able to sign with to claim it.CTxOut類圖欄位屬性說明nValue交易輸出對應的金額scr

Springboot原始碼分析專案結構

摘要: 無論是從IDEA還是其他的SDS開發工具亦或是https://start.spring.io/ 進行解壓,我們都會得到同樣的一個pom.xml檔案 xml <?xml version="1.0" encoding="UTF-8"?> <project xm

時序資料庫 Apache-IoTDB 原始碼解析檔案索引塊(五)

上一章聊到 TsFile 的檔案組成,以及資料塊的詳細介紹。詳情請見: 時序資料庫 Apache-IoTDB 原始碼解析之檔案資料塊(四) 打一波廣告,歡迎大家訪問IoTDB 倉庫,求一波 Star。 這一章主要想聊聊: TsFile索引塊的組成 索引塊的查詢過程 索引塊目前在做的改進項 索引塊 索

Nginx入門筆記————配置檔案結構

Nginx入門筆記之————配置檔案結構   ... #全域性塊 events { #events塊 ... } http #http塊 { ... #http全域性塊 server #

SNMP原始碼分析(一)配置檔案部分

snmpd.conf想必不陌生。在程序啟動過程中會去讀取配置檔案中各個配置。其中幾個引數需要先知道是幹什麼的:   token:配置檔案的每行的開頭,例如 group MyROGroup v1 readSec 這行token的引數是group。  

openssl原始碼結構

Openssl整個軟體包主要包括三個主要的功能模組:密碼演算法庫,SSL協議庫,應用程式;     應用程式:主要包括金鑰生成,證書管理,格式轉換,資料加密,簽名,SSL測試等。   evp,對稱演算法,非對稱演算法,摘要演算法的封裝。 隨機數的生成,管理; 最基本的資料結構,struct

QT---.pro檔案結構

Qt_Pro詳解 在QT中,有一個工具qmake可以生成一個makefile檔案,它是由.pro檔案生成而來的,.pro檔案的寫法如下: 1. 註釋 從“#”開始,到這一行結束。 2.模板變數告訴qmake為這個應用程式生成哪種makefile。 下面是可供使用的選擇:

HashTable與HashMap的區別,資料結構,類檔案結構原始碼分析

轉載https://www.imooc.com/article/details/id/23015 與HashMap的區別 1 HashMap是非同步的,沒有對讀寫等操作進行鎖保護,所以是執行緒不安全的,在多執行緒場景下會出現資料不一致的問題。而HashTable是同步的,所有的讀寫等操作都進

c++對檔案進行操作建立特定的檔案結構

首先,介紹如何知道一個檔案是否存在。 //該函式可以判斷某個檔案或者資料夾相應的模式是否成立,如果成立則返回0,否則返回-1 #include<io.h> int _access(const char *path,int mode); mode可以取值為0(該檔案是否存在)、

c++對檔案進行操作遍歷雙層檔案結構

/*本程式碼實現遍歷雙層次層次的目錄結構*/ #include<stdio.h> #include<iostream> #include<io.h> #include<cstring> using namespace std; const ch

.NET Core實戰專案CMS 第三章 入門篇-原始碼解析配置檔案及依賴注入

作者:依樂祝 原文連結:https://www.cnblogs.com/yilezhu/p/9998021.html 寫在前面 上篇文章我給大家講解了ASP.NET Core的概念及為什麼使用它,接著帶著你一步一步的配置了.NET Core的開發環境並建立了一個ASP.NET Core的mvc專

【CI框架原始碼解析】分頁類檔案Pagination.php

<?php /** * ======================================= * Created by Pocket Knife Technology. * User: ZhiHua_W * Date: 2016/11/08 0

mybatis原始碼-解析配置檔案(三)配置檔案Configuration解析(超詳細, 值得收藏)

1. 簡介 1.1 系列內容 本系列文章講解的是mybatis解析配置檔案內部的邏輯, 即 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFact

mybatis原始碼-解析配置檔案(二)解析的流程

1. 簡介 在之前的文章《mybatis 初步使用(IDEA的Maven專案, 超詳細)》中, 講解了mybatis的初步使用, 並總結了以下mybatis的執行流程: 通過 Resources 工具類讀取 mybatis-config.xml,

《C++語言程式設計基礎》學習類與物件檔案結構和預編譯命令​​​​​​​

C++程式的一般組織結構: 一個工程可以劃分為多個原始檔,例如: 類宣告檔案(.h檔案) 類實現檔案(.cpp檔案) 類的使用檔案(main()所在的.cpp檔案) 利用工程來組合各個檔案。Point.h class Point { //類的定義 public:

mybatis原始碼-解析配置檔案(四)配置檔案Mapper解析

其中, mappers作為configuration節點的一部分配置, 在本文章中, 我們講解解析mappers節點, 即 xxxMapper.xml 檔案的解析。 1 解析入口 在解析 mybatis-config.xml 時, 會進行解析 xxxMapper.xml 的檔案。 在圖示流程的 XMLCo