ssl.h 437 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519
  1. /*!
  2. \brief
  3. \return pointer この関数は、新しいwolfssl_method構造体へのポインタを返します。
  4. _Example_
  5. \code
  6. wolfSSL_Init();
  7. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_client_method());
  8. WOLFSSL* ssl = wolfSSL_new(ctx);
  9. \endcode
  10. \sa wolfSSL_Init
  11. \sa wolfSSL_CTX_new
  12. */
  13. WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap);
  14. /*!
  15. \ingroup Setup
  16. \brief この関数は、Wolfsslv23_client_methodと同様のwolfssl_methodを返します(サーバー/クライアント)。
  17. \return WOLFSSL_METHOD* 成功した作成では、wolfssl_methodポインタを返します
  18. \return NULL メモリ割り当てエラーまたはメソッドの作成の失敗の場合はnull
  19. _Example_
  20. \code
  21. WOLFSSL* ctx;
  22. ctx = wolfSSL_CTX_new(wolfSSLv23_method());
  23. // check ret value
  24. \endcode
  25. \sa wolfSSL_new
  26. \sa wolfSSL_free
  27. */
  28. WOLFSSL_METHOD *wolfSSLv23_method(void);
  29. /*!
  30. \ingroup Setup
  31. \brief WOLFSSLV3_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  32. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  33. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  34. _Example_
  35. \code
  36. #include <wolfssl/ssl.h>
  37. WOLFSSL_METHOD* method;
  38. WOLFSSL_CTX* ctx;
  39. method = wolfSSLv3_server_method();
  40. if (method == NULL) {
  41. unable to get method
  42. }
  43. ctx = wolfSSL_CTX_new(method);
  44. ...
  45. \endcode
  46. \sa wolfTLSv1_server_method
  47. \sa wolfTLSv1_1_server_method
  48. \sa wolfTLSv1_2_server_method
  49. \sa wolfTLSv1_3_server_method
  50. \sa wolfDTLSv1_server_method
  51. \sa wolfSSLv23_server_method
  52. \sa wolfSSL_CTX_new
  53. */
  54. WOLFSSL_METHOD *wolfSSLv3_server_method(void);
  55. /*!
  56. \ingroup Setup
  57. \brief wolfsslv3_client_method()関数は、アプリケーションがクライアントであり、SSL 3.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  58. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  59. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  60. _Example_
  61. \code
  62. #include <wolfssl/ssl.h>
  63. WOLFSSL_METHOD* method;
  64. WOLFSSL_CTX* ctx;
  65. method = wolfSSLv3_client_method();
  66. if (method == NULL) {
  67. unable to get method
  68. }
  69. ctx = wolfSSL_CTX_new(method);
  70. ...
  71. \endcode
  72. \sa wolfTLSv1_client_method
  73. \sa wolfTLSv1_1_client_method
  74. \sa wolfTLSv1_2_client_method
  75. \sa wolfTLSv1_3_client_method
  76. \sa wolfDTLSv1_client_method
  77. \sa wolfSSLv23_client_method
  78. \sa wolfSSL_CTX_new
  79. */
  80. WOLFSSL_METHOD *wolfSSLv3_client_method(void);
  81. /*!
  82. \ingroup Setup
  83. \brief WOLFTLSV1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  84. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  85. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  86. _Example_
  87. \code
  88. #include <wolfssl/ssl.h>
  89. WOLFSSL_METHOD* method;
  90. WOLFSSL_CTX* ctx;
  91. method = wolfTLSv1_server_method();
  92. if (method == NULL) {
  93. unable to get method
  94. }
  95. ctx = wolfSSL_CTX_new(method);
  96. ...
  97. \endcode
  98. \sa wolfSSLv3_server_method
  99. \sa wolfTLSv1_1_server_method
  100. \sa wolfTLSv1_2_server_method
  101. \sa wolfTLSv1_3_server_method
  102. \sa wolfDTLSv1_server_method
  103. \sa wolfSSLv23_server_method
  104. \sa wolfSSL_CTX_new
  105. */
  106. WOLFSSL_METHOD *wolfTLSv1_server_method(void);
  107. /*!
  108. \ingroup Setup
  109. \brief wolftlsv1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  110. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  111. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  112. _Example_
  113. \code
  114. #include <wolfssl/ssl.h>
  115. WOLFSSL_METHOD* method;
  116. WOLFSSL_CTX* ctx;
  117. method = wolfTLSv1_client_method();
  118. if (method == NULL) {
  119. unable to get method
  120. }
  121. ctx = wolfSSL_CTX_new(method);
  122. ...
  123. \endcode
  124. \sa wolfSSLv3_client_method
  125. \sa wolfTLSv1_1_client_method
  126. \sa wolfTLSv1_2_client_method
  127. \sa wolfTLSv1_3_client_method
  128. \sa wolfDTLSv1_client_method
  129. \sa wolfSSLv23_client_method
  130. \sa wolfSSL_CTX_new
  131. */
  132. WOLFSSL_METHOD *wolfTLSv1_client_method(void);
  133. /*!
  134. \ingroup Setup
  135. \brief WOLFTLSV1_1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.1プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  136. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  137. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  138. _Example_
  139. \code
  140. #include <wolfssl/ssl.h>
  141. WOLFSSL_METHOD* method;
  142. WOLFSSL_CTX* ctx;
  143. method = wolfTLSv1_1_server_method();
  144. if (method == NULL) {
  145. // unable to get method
  146. }
  147. ctx = wolfSSL_CTX_new(method);
  148. ...
  149. \endcode
  150. \sa wolfSSLv3_server_method
  151. \sa wolfTLSv1_server_method
  152. \sa wolfTLSv1_2_server_method
  153. \sa wolfTLSv1_3_server_method
  154. \sa wolfDTLSv1_server_method
  155. \sa wolfSSLv23_server_method
  156. \sa wolfSSL_CTX_new
  157. */
  158. WOLFSSL_METHOD *wolfTLSv1_1_server_method(void);
  159. /*!
  160. \ingroup Setup
  161. \brief WOLFTLSV1_1_CLIENT_METHOD()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  162. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  163. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  164. _Example_
  165. \code
  166. #include <wolfssl/ssl.h>
  167. WOLFSSL_METHOD* method;
  168. WOLFSSL_CTX* ctx;
  169. method = wolfTLSv1_1_client_method();
  170. if (method == NULL) {
  171. // unable to get method
  172. }
  173. ctx = wolfSSL_CTX_new(method);
  174. ...
  175. \endcode
  176. \sa wolfSSLv3_client_method
  177. \sa wolfTLSv1_client_method
  178. \sa wolfTLSv1_2_client_method
  179. \sa wolfTLSv1_3_client_method
  180. \sa wolfDTLSv1_client_method
  181. \sa wolfSSLv23_client_method
  182. \sa wolfSSL_CTX_new
  183. */
  184. WOLFSSL_METHOD *wolfTLSv1_1_client_method(void);
  185. /*!
  186. \ingroup Setup
  187. \brief WOLFTLSV1_2_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.2プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  188. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  189. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  190. _Example_
  191. \code
  192. #include <wolfssl/ssl.h>
  193. WOLFSSL_METHOD* method;
  194. WOLFSSL_CTX* ctx;
  195. method = wolfTLSv1_2_server_method();
  196. if (method == NULL) {
  197. // unable to get method
  198. }
  199. ctx = wolfSSL_CTX_new(method);
  200. ...
  201. \endcode
  202. \sa wolfSSLv3_server_method
  203. \sa wolfTLSv1_server_method
  204. \sa wolfTLSv1_1_server_method
  205. \sa wolfTLSv1_3_server_method
  206. \sa wolfDTLSv1_server_method
  207. \sa wolfSSLv23_server_method
  208. \sa wolfSSL_CTX_new
  209. */
  210. WOLFSSL_METHOD *wolfTLSv1_2_server_method(void);
  211. /*!
  212. \ingroup Setup
  213. \brief wolftlsv1_2_client_method()関数は、アプリケーションがクライアントであり、TLS 1.2プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  214. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  215. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  216. _Example_
  217. \code
  218. #include <wolfssl/ssl.h>
  219. WOLFSSL_METHOD* method;
  220. WOLFSSL_CTX* ctx;
  221. method = wolfTLSv1_2_client_method();
  222. if (method == NULL) {
  223. // unable to get method
  224. }
  225. ctx = wolfSSL_CTX_new(method);
  226. ...
  227. \endcode
  228. \sa wolfSSLv3_client_method
  229. \sa wolfTLSv1_client_method
  230. \sa wolfTLSv1_1_client_method
  231. \sa wolfTLSv1_3_client_method
  232. \sa wolfDTLSv1_client_method
  233. \sa wolfSSLv23_client_method
  234. \sa wolfSSL_CTX_new
  235. */
  236. WOLFSSL_METHOD *wolfTLSv1_2_client_method(void);
  237. /*!
  238. \ingroup Setup
  239. \brief wolfdtlsv1_client_method()関数は、アプリケーションがクライアントであり、DTLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。この関数は、WolfSSLがDTLSサポート( - enable-dtls、またはWolfSSL_DTLSを定義することによって)コンパイルされている場合にのみ使用できます。
  240. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  241. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  242. _Example_
  243. \code
  244. WOLFSSL_METHOD* method;
  245. WOLFSSL_CTX* ctx;
  246. method = wolfDTLSv1_client_method();
  247. if (method == NULL) {
  248. // unable to get method
  249. }
  250. ctx = wolfSSL_CTX_new(method);
  251. ...
  252. \endcode
  253. \sa wolfSSLv3_client_method
  254. \sa wolfTLSv1_client_method
  255. \sa wolfTLSv1_1_client_method
  256. \sa wolfTLSv1_2_client_method
  257. \sa wolfTLSv1_3_client_method
  258. \sa wolfSSLv23_client_method
  259. \sa wolfSSL_CTX_new
  260. */
  261. WOLFSSL_METHOD *wolfDTLSv1_client_method(void);
  262. /*!
  263. \ingroup Setup
  264. \brief WOLFDTLSV1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、DTLS 1.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。この関数は、WolfSSLがDTLSサポート( - enable-dtls、またはWolfSSL_DTLSを定義することによって)コンパイルされている場合にのみ使用できます。
  265. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  266. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  267. _Example_
  268. \code
  269. WOLFSSL_METHOD* method;
  270. WOLFSSL_CTX* ctx;
  271. method = wolfDTLSv1_server_method();
  272. if (method == NULL) {
  273. // unable to get method
  274. }
  275. ctx = wolfSSL_CTX_new(method);
  276. ...
  277. \endcode
  278. \sa wolfSSLv3_server_method
  279. \sa wolfTLSv1_server_method
  280. \sa wolfTLSv1_1_server_method
  281. \sa wolfTLSv1_2_server_method
  282. \sa wolfTLSv1_3_server_method
  283. \sa wolfSSLv23_server_method
  284. \sa wolfSSL_CTX_new
  285. */
  286. WOLFSSL_METHOD *wolfDTLSv1_server_method(void);
  287. /*!
  288. \brief サーバ側。
  289. \return This 関数はwolfssl_methodポインタを返します。
  290. _Example_
  291. \code
  292. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_server_method());
  293. WOLFSSL* ssl = WOLFSSL_new(ctx);
  294. \endcode
  295. \sa wolfSSL_CTX_new
  296. */
  297. WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void);
  298. /*!
  299. \ingroup Setup
  300. \brief Chacha-Poly Aead Constructionの最初のリリースと新しいバージョンの間にいくつかの違いがあるため、古いバージョンを使用してサーバー/クライアントと通信するオプションを追加しました。デフォルトでは、WolfSSLは新しいバージョンを使用します。
  301. \return 0 成功すると
  302. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  303. _Example_
  304. \code
  305. int ret = 0;
  306. WOLFSSL* ssl;
  307. ...
  308. ret = wolfSSL_use_old_poly(ssl, 1);
  309. if (ret != 0) {
  310. // failed to set poly1305 AEAD version
  311. }
  312. \endcode
  313. \sa none
  314. */
  315. int wolfSSL_use_old_poly(WOLFSSL* ssl, int value);
  316. /*!
  317. \brief セッション状態これにより、ハンドシェイクが完了した後に接続をピックアップすることができます。
  318. \return Success 成功した場合、読み取ったバッファの量が返されます。
  319. \return Failure すべての失敗した戻り値は0未満になります。
  320. \return VERSION_ERROR バージョンの不一致が見つかった場合、IE DTLS V1とCTXがDTLS V1.2に設定された場合、Version_Errorが返されます。
  321. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  322. \param buf インポートするシリアル化されたセッション。
  323. _Example_
  324. \code
  325. WOLFSSL* ssl;
  326. int ret;
  327. unsigned char buf[MAX];
  328. bufSz = MAX;
  329. ...
  330. //get information sent from wc_dtls_export function and place it in buf
  331. fread(buf, 1, bufSz, input);
  332. ret = wolfSSL_dtls_import(ssl, buf, bufSz);
  333. if (ret < 0) {
  334. // handle error case
  335. }
  336. // no wolfSSL_accept needed since handshake was already done
  337. ...
  338. ret = wolfSSL_write(ssl) and wolfSSL_read(ssl);
  339. ...
  340. \endcode
  341. \sa wolfSSL_new
  342. \sa wolfSSL_CTX_new
  343. \sa wolfSSL_CTX_dtls_set_export
  344. */
  345. int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf,
  346. unsigned int sz);
  347. /*!
  348. \brief 接続の状態をインポートします。警告:BUFには、状態に関する機密情報が含まれており、保存されている場合は保存する前に暗号化されるのが最善です。追加のデバッグ情報をマクロwolfssl_session_export_debugが定義して表示できます。
  349. \return the バッファ 'BUF'から読み込まれたバイト数
  350. \param ssl セッションをインポートするためのWolfSSL構造
  351. \param buf シリアル化されたセッション
  352. \sa wolfSSL_dtls_import
  353. \sa wolfSSL_tls_export
  354. */
  355. int wolfSSL_tls_import(WOLFSSL* ssl, const unsigned char* buf,
  356. unsigned int sz);
  357. /*!
  358. \brief セッションをエクスポートするためのコールバック関数。これは、以前に格納されているエクスポート機能をクリアするためのパラメータfuncとしてnullを渡すことが許可されています。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
  359. \return SSL_SUCCESS 成功すると。
  360. \return BAD_FUNC_ARG NULLまたは予想されない引数が渡された場合
  361. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  362. _Example_
  363. \code
  364. int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
  365. // body of send session (wc_dtls_export) that passses
  366. // buf (serialized session) to destination
  367. WOLFSSL_CTX* ctx;
  368. int ret;
  369. ...
  370. ret = wolfSSL_CTX_dtls_set_export(ctx, send_session);
  371. if (ret != SSL_SUCCESS) {
  372. // handle error case
  373. }
  374. ...
  375. ret = wolfSSL_accept(ssl);
  376. ...
  377. \endcode
  378. \sa wolfSSL_new
  379. \sa wolfSSL_CTX_new
  380. \sa wolfSSL_dtls_set_export
  381. \sa Static buffer use
  382. */
  383. int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx,
  384. wc_dtls_export func);
  385. /*!
  386. \brief セッションをエクスポートする機能。これは、以前に格納されているエクスポート機能をクリアするためのパラメータfuncとしてnullを渡すことが許可されています。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
  387. \return SSL_SUCCESS 成功すると。
  388. \return BAD_FUNC_ARG NULLまたは予想されない引数が渡された場合
  389. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  390. _Example_
  391. \code
  392. int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
  393. // body of send session (wc_dtls_export) that passses
  394. // buf (serialized session) to destination
  395. WOLFSSL* ssl;
  396. int ret;
  397. ...
  398. ret = wolfSSL_dtls_set_export(ssl, send_session);
  399. if (ret != SSL_SUCCESS) {
  400. // handle error case
  401. }
  402. ...
  403. ret = wolfSSL_accept(ssl);
  404. ...
  405. \endcode
  406. \sa wolfSSL_new
  407. \sa wolfSSL_CTX_new
  408. \sa wolfSSL_CTX_dtls_set_export
  409. */
  410. int wolfSSL_dtls_set_export(WOLFSSL* ssl, wc_dtls_export func);
  411. /*!
  412. \brief 提供されたバッファへのWolfSSLセッション。セッションをシリアル化したときにセッションを送信するための関数コールバックを使用するよりも少ないメモリオーバーヘッドを許可します。関数に渡されたときにバッファがNULLの場合、SZはWolfSSLセッションの直列化に必要なバッファのサイズに設定されます。
  413. \return Success 成功した場合、使用されるバッファの量が返されます。
  414. \return Failure すべての失敗した戻り値は0未満になります。
  415. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  416. \param buf 直列化セッションを保持するためのバッファ。
  417. _Example_
  418. \code
  419. WOLFSSL* ssl;
  420. int ret;
  421. unsigned char buf[MAX];
  422. bufSz = MAX;
  423. ...
  424. ret = wolfSSL_dtls_export(ssl, buf, bufSz);
  425. if (ret < 0) {
  426. // handle error case
  427. }
  428. ...
  429. \endcode
  430. \sa wolfSSL_new
  431. \sa wolfSSL_CTX_new
  432. \sa wolfSSL_CTX_dtls_set_export
  433. \sa wolfSSL_dtls_import
  434. */
  435. int wolfSSL_dtls_export(WOLFSSL* ssl, unsigned char* buf,
  436. unsigned int* sz);
  437. /*!
  438. \brief 接続の直列化された状態をインポートします。ほとんどの場合、wolfssl_tls_exportの代わりにwolfssl_get1_sessionを使用する必要があります。追加のデバッグ情報をマクロwolfssl_session_export_debugが定義して表示できます。警告:BUFには、状態に関する機密情報が含まれており、保存されている場合は保存する前に暗号化されるのが最善です。
  439. \return the バッファー 'BUF'に書き込まれたバイト数
  440. \param ssl セッションをエクスポートするためのWolfSSL構造
  441. \param buf 直列化セッションの出力
  442. \sa wolfSSL_dtls_import
  443. \sa wolfSSL_tls_import
  444. */
  445. int wolfSSL_tls_export(WOLFSSL* ssl, unsigned char* buf,
  446. unsigned int* sz);
  447. /*!
  448. \brief その後、CTXの有効期間およびCTXから作成されたSSLオブジェクトには、asideを設定します。NULL CTXポインタとWOLFSSL_METHOD_FUNC関数を渡すことによって、CTX自体の作成も静的メモリを使用します。wolfssl_method_funcには、wolfssl_method *(* wolfssl_method_func)の関数署名があります(void *ヒープ)。MAXに0を渡すと、設定されていないかのように動作し、最大の同時使用制限が適用されません。渡されたフラグ値によって、メモリの使用方法と動作中の動作が決まります。利用可能なフラグは次のとおりです.0 - デフォルトの一般メモリ、WolfMEM_IO_POOL - 受信メッセージの送信と一般メモリをオーバーライドするときに入出力バッファに使用されるので、渡されたバッファ内のすべてのメモリがIO、WolfMem_IO_FIXED - WOLFMEM_IO_POOLと同じですが、今度は各SSLと同じです。2つのバッファを自分のライフタイムで自分自身に保ちます。wolfmem_track_stats - 各SSLは実行中にメモリ統計を追跡します。
  449. \return SSL_SUCCESS 成功すると。
  450. \return SSL_FAILURE 失敗すると。
  451. \param ctx wolfssl_ctx構造へのポインタのアドレス。
  452. \param method プロトコルを作成する機能。(CTXもNULLでもない場合はNULLにする必要があります)
  453. \param buf すべての操作に使用するメモリ。
  454. \param sz 渡されているメモリバッファのサイズ。
  455. \param flag メモリの種類
  456. _Example_
  457. \code
  458. WOLFSSL_CTX* ctx;
  459. WOLFSSL* ssl;
  460. int ret;
  461. unsigned char memory[MAX];
  462. int memorySz = MAX;
  463. unsigned char IO[MAX];
  464. int IOSz = MAX;
  465. int flag = WOLFMEM_IO_FIXED | WOLFMEM_TRACK_STATS;
  466. ...
  467. // create ctx also using static memory, start with general memory to use
  468. ctx = NULL:
  469. ret = wolfSSL_CTX_load_static_memory(&ctx, wolfSSLv23_server_method_ex,
  470. memory, memorySz, 0, MAX_CONCURRENT_HANDSHAKES);
  471. if (ret != SSL_SUCCESS) {
  472. // handle error case
  473. }
  474. // load in memory for use with IO
  475. ret = wolfSSL_CTX_load_static_memory(&ctx, NULL, IO, IOSz, flag,
  476. MAX_CONCURRENT_IO);
  477. if (ret != SSL_SUCCESS) {
  478. // handle error case
  479. }
  480. ...
  481. \endcode
  482. \sa wolfSSL_CTX_new
  483. \sa wolfSSL_CTX_is_static_memory
  484. \sa wolfSSL_is_static_memory
  485. */
  486. int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx,
  487. wolfSSL_method_func method,
  488. unsigned char* buf, unsigned int sz,
  489. int flag, int max);
  490. /*!
  491. \brief そして、静的メモリ使用量に関する情報を収集するためにのみ使用されます。
  492. \return 1 CTXの静的メモリを使用する場合は返されます。
  493. \return 0 静的メモリを使用しない場合は返されます。
  494. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  495. _Example_
  496. \code
  497. WOLFSSL_CTX* ctx;
  498. int ret;
  499. WOLFSSL_MEM_STATS mem_stats;
  500. ...
  501. //get information about static memory with CTX
  502. ret = wolfSSL_CTX_is_static_memory(ctx, &mem_stats);
  503. if (ret == 1) {
  504. // handle case of is using static memory
  505. // print out or inspect elements of mem_stats
  506. }
  507. if (ret == 0) {
  508. //handle case of ctx not using static memory
  509. }
  510. \endcode
  511. \sa wolfSSL_CTX_new
  512. \sa wolfSSL_CTX_load_static_memory
  513. \sa wolfSSL_is_static_memory
  514. */
  515. int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx,
  516. WOLFSSL_MEM_STATS* mem_stats);
  517. /*!
  518. \brief SSLの静的メモリ使用量。戻り値は、静的メモリを読み込むときに、静的メモリが使用されているかどうかを示します。
  519. \return 1 CTXの静的メモリを使用する場合は返されます。
  520. \return 0 静的メモリを使用しない場合は返されます。
  521. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  522. _Example_
  523. \code
  524. WOLFSSL* ssl;
  525. int ret;
  526. WOLFSSL_MEM_CONN_STATS mem_stats;
  527. ...
  528. ret = wolfSSL_is_static_memory(ssl, mem_stats);
  529. if (ret == 1) {
  530. // handle case when is static memory
  531. // investigate elements in mem_stats if WOLFMEM_TRACK_STATS flag
  532. }
  533. ...
  534. \endcode
  535. \sa wolfSSL_new
  536. \sa wolfSSL_CTX_is_static_memory
  537. */
  538. int wolfSSL_is_static_memory(WOLFSSL* ssl,
  539. WOLFSSL_MEM_CONN_STATS* mem_stats);
  540. /*!
  541. \ingroup CertsKeys
  542. \brief この関数は証明書ファイルをSSLコンテキストにロードします(wolfssl_ctx)。ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。適切な使用法の例をご覧ください。
  543. \return SSL_SUCCESS 成功すると。
  544. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因が誤った形式にある場合、または「format」引数を使用して誤ったフォーマットが指定されている場合があります。ファイルは存在しません。読み取られない、または破損しているメモリ状態が発生すると、ベース16のデコードはファイルで失敗します。
  545. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  546. \param file WolfSSL SSLコンテキストにロードする証明書を含むファイルの名前へのポインタ。
  547. _Example_
  548. \code
  549. int ret = 0;
  550. WOLFSSL_CTX* ctx;
  551. ...
  552. ret = wolfSSL_CTX_use_certificate_file(ctx, “./client-cert.pem”,
  553. SSL_FILETYPE_PEM);
  554. if (ret != SSL_SUCCESS) {
  555. // error loading cert file
  556. }
  557. ...
  558. \endcode
  559. \sa wolfSSL_CTX_use_certificate_buffer
  560. \sa wolfSSL_use_certificate_file
  561. \sa wolfSSL_use_certificate_buffer
  562. */
  563. int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX* ctx, const char* file,
  564. int format);
  565. /*!
  566. \ingroup CertsKeys
  567. \brief この関数は、秘密鍵ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプを指定します.SSL_FILETYPE_ASN1OR SSL_FILETYPE_PEM。適切な使用法の例をご覧ください。外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。このためには、CryptoコールバックまたはPKコールバックを使用したビルドで構築できます。Cryptoコールバックを有効にするには、-enable-cryptocbまたはwolf_crypto_cbを使用し、wc_cryptocb_registerDeviceを使用して暗号コールバックを登録し、wolfssl_ctx_setdevidを使用して関連するdevidを設定します。
  568. \return SSL_SUCCESS 成功すると。
  569. \return SSL_FAILURE ファイルは間違った形式で、または「format」引数を使用して誤った形式が与えられています。ファイルが存在しない、読み込めない、または破損しています。メモリ不足状態が発生します。base16デコードはファイルで失敗します。キーファイルは暗号化されていますが、パスワードは提供されません。
  570. _Example_
  571. \code
  572. int ret = 0;
  573. WOLFSSL_CTX* ctx;
  574. ...
  575. ret = wolfSSL_CTX_use_PrivateKey_file(ctx, “./server-key.pem”,
  576. SSL_FILETYPE_PEM);
  577. if (ret != SSL_SUCCESS) {
  578. // error loading key file
  579. }
  580. ...
  581. \endcode
  582. \sa wolfSSL_CTX_use_PrivateKey_buffer
  583. \sa wolfSSL_use_PrivateKey_file
  584. \sa wolfSSL_use_PrivateKey_buffer
  585. \sa wc_CryptoCb_RegisterDevice
  586. \sa wolfSSL_CTX_SetDevId
  587. */
  588. int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
  589. /*!
  590. \ingroup CertsKeys
  591. \brief この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 path引数は、信頼できるルートCAの証明書を含むディレクトリの名前へのポインタです。ファイルの値がNULLではない場合、パスを必要な場合はパスをNULLとして指定できます。 Libraryの構築時にパスが指定されていない場合は、WOLFSSLが指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー "-----証明書-----"を持つpemフォーマットされたcert_typeファイルを期待しています。
  592. \return SSL_SUCCESS 成功しました。
  593. \return SSL_FAILURE CTXがNULLの場合、またはファイルとパスの両方がNULLの場合は返されます。
  594. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  595. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  596. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  597. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  598. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  599. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  600. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  601. \return BAD_PATH_ERROR OpenDir()がパスを開こうとしたときに失敗した場合に返されます。
  602. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  603. \param file PEM形式のCA証明書を含むファイルの名前へのポインタ。
  604. _Example_
  605. \code
  606. int ret = 0;
  607. WOLFSSL_CTX* ctx;
  608. ...
  609. ret = wolfSSL_CTX_load_verify_locations(ctx, “./ca-cert.pem”, NULL);
  610. if (ret != WOLFSSL_SUCCESS) {
  611. // error loading CA certs
  612. }
  613. ...
  614. \endcode
  615. \sa wolfSSL_CTX_load_verify_locations_ex
  616. \sa wolfSSL_CTX_load_verify_buffer
  617. \sa wolfSSL_CTX_use_certificate_file
  618. \sa wolfSSL_CTX_use_PrivateKey_file
  619. \sa wolfSSL_CTX_use_certificate_chain_file
  620. \sa wolfSSL_use_certificate_file
  621. \sa wolfSSL_use_PrivateKey_file
  622. \sa wolfSSL_use_certificate_chain_file
  623. */
  624. int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX* ctx, const char* file,
  625. const char* format);
  626. /*!
  627. \ingroup CertsKeys
  628. \brief この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 path引数は、信頼できるルートCAの証明書を含むディレクトリの名前へのポインタです。ファイルの値がNULLではない場合、パスを必要な場合はパスをNULLとして指定できます。 Libraryの構築時にパスが指定されていない場合は、WOLFSSLが指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー "-----証明書-----"を持つPEM形式のcert_typeファイルを想定しています。
  629. \return SSL_SUCCESS 成功しました。
  630. \return SSL_FAILURE CTXがNULLの場合、またはファイルとパスの両方がNULLの場合は返されます。少なくとも1つの証明書が正常にロードされているが、失敗した1つ以上がある場合、これも返されます。理由でエラースタックを確認してください。
  631. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  632. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  633. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  634. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  635. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  636. \return BAD_PATH_ERROR OpenDir()がパスを開こうとしたときに失敗した場合に返されます。
  637. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  638. \param file PEM形式のCA証明書を含むファイルの名前へのポインタ。
  639. \param path PEM形式の証明書をロードするディレクトリの名前へのポインタ。
  640. _Example_
  641. \code
  642. int ret = 0;
  643. WOLFSSL_CTX* ctx;
  644. ...
  645. ret = wolfSSL_CTX_load_verify_locations_ex(ctx, NULL, “./certs/external",
  646. WOLFSSL_LOAD_FLAG_PEM_CA_ONLY);
  647. if (ret != WOLFSSL_SUCCESS) {
  648. // error loading CA certs
  649. }
  650. ...
  651. \endcode
  652. \sa wolfSSL_CTX_load_verify_locations
  653. \sa wolfSSL_CTX_load_verify_buffer
  654. \sa wolfSSL_CTX_use_certificate_file
  655. \sa wolfSSL_CTX_use_PrivateKey_file
  656. \sa wolfSSL_CTX_use_certificate_chain_file
  657. \sa wolfSSL_use_certificate_file
  658. \sa wolfSSL_use_PrivateKey_file
  659. \sa wolfSSL_use_certificate_chain_file
  660. */
  661. int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX* ctx, const char* file,
  662. const char* path, unsigned int flags);
  663. /*!
  664. \ingroup Setup
  665. \brief この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。適切な使用法の例をご覧ください。
  666. \return SSL_SUCCES 成功すると。
  667. \return SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合は返されます。
  668. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  669. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  670. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  671. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  672. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  673. \param file 証明書を含むファイルの名前へのポインタ
  674. _Example_
  675. \code
  676. int ret = 0;
  677. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  678. ...
  679. ret = wolfSSL_CTX_trust_peer_cert(ctx, “./peer-cert.pem”,
  680. SSL_FILETYPE_PEM);
  681. if (ret != SSL_SUCCESS) {
  682. // error loading trusted peer cert
  683. }
  684. ...
  685. \endcode
  686. \sa wolfSSL_CTX_load_verify_buffer
  687. \sa wolfSSL_CTX_use_certificate_file
  688. \sa wolfSSL_CTX_use_PrivateKey_file
  689. \sa wolfSSL_CTX_use_certificate_chain_file
  690. \sa wolfSSL_CTX_trust_peer_buffer
  691. \sa wolfSSL_CTX_Unload_trust_peers
  692. \sa wolfSSL_use_certificate_file
  693. \sa wolfSSL_use_PrivateKey_file
  694. \sa wolfSSL_use_certificate_chain_file
  695. */
  696. int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX* ctx, const char* file, int type);
  697. /*!
  698. \ingroup CertsKeys
  699. \brief この関数は、Chain of chainをSSLコンテキスト(WolfSSL_CTX)にロードします。証明書チェーンを含むファイルはファイル引数によって提供され、PEM形式の証明書を含める必要があります。この関数は、最大MAX_CHAIN_DEPTH(Default = 9、internal.hで定義されている)証明書に加えて、サブジェクト証明書を処理します。
  700. \return SSL_SUCCESS 成功すると
  701. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因が誤った形式にある場合、または「format」引数を使用して誤ったフォーマットが指定されている場合があります。ファイルは存在しません。読み取られない、または破損しているメモリ状態が発生します。
  702. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  703. _Example_
  704. \code
  705. int ret = 0;
  706. WOLFSSL_CTX* ctx;
  707. ...
  708. ret = wolfSSL_CTX_use_certificate_chain_file(ctx, “./cert-chain.pem”);
  709. if (ret != SSL_SUCCESS) {
  710. // error loading cert file
  711. }
  712. ...
  713. \endcode
  714. \sa wolfSSL_CTX_use_certificate_file
  715. \sa wolfSSL_CTX_use_certificate_buffer
  716. \sa wolfSSL_use_certificate_file
  717. \sa wolfSSL_use_certificate_buffer
  718. */
  719. int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *ctx,
  720. const char *file);
  721. /*!
  722. \ingroup openSSL
  723. \brief この関数は、SSL接続で使用されているプライベートRSAキーをSSLコンテキスト(WolfSSL_CTX)にロードします。この関数は、wolfsslがOpenSSL互換層有効(--enable-openSSlextra、#define openssl_extra)でコンパイルされている場合にのみ利用可能で、より一般的に使用されているwolfssl_ctx_use_privatekey_file()関数と同じです。ファイル引数には、RSA秘密鍵ファイルへのポインタが、フォーマットで指定された形式で含まれています。
  724. \return SSL_SUCCESS 成功すると。
  725. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。入力キーファイルが誤った形式であるか、または「format」引数を使用して誤った形式が与えられている場合は、ファイルが存在しない、読み込めない、または破損していない、メモリ不足状態が発生します。
  726. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  727. \param file フォーマットで指定された形式で、WolfSSL SSLコンテキストにロードされるRSA秘密鍵を含むファイルの名前へのポインタ。
  728. _Example_
  729. \code
  730. int ret = 0;
  731. WOLFSSL_CTX* ctx;
  732. ...
  733. ret = wolfSSL_CTX_use_RSAPrivateKey_file(ctx, “./server-key.pem”,
  734. SSL_FILETYPE_PEM);
  735. if (ret != SSL_SUCCESS) {
  736. // error loading private key file
  737. }
  738. ...
  739. \endcode
  740. \sa wolfSSL_CTX_use_PrivateKey_buffer
  741. \sa wolfSSL_CTX_use_PrivateKey_file
  742. \sa wolfSSL_use_RSAPrivateKey_file
  743. \sa wolfSSL_use_PrivateKey_buffer
  744. \sa wolfSSL_use_PrivateKey_file
  745. */
  746. int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
  747. /*!
  748. \ingroup IO
  749. \brief この関数は、有効なセッションのために、デフォルトで9の最大チェーン深度を返します。これは、NULL以外のセッションオブジェクト(SSL)があります。
  750. \return MAX_CHAIN_DEPTH wolfssl_ctx構造がnullではない場合に返されます。デフォルトでは値は9です。
  751. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合に返されます。
  752. _Example_
  753. \code
  754. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  755. WOLFSSL* ssl = wolfSSL_new(ctx);
  756. ...
  757. long sslDep = wolfSSL_get_verify_depth(ssl);
  758. if(sslDep > EXPECTED){
  759. // The verified depth is greater than what was expected
  760. } else {
  761. // The verified depth is smaller or equal to the expected value
  762. }
  763. \endcode
  764. \sa wolfSSL_CTX_get_verify_depth
  765. */
  766. long wolfSSL_get_verify_depth(WOLFSSL* ssl);
  767. /*!
  768. \ingroup Setup
  769. \brief この関数は、CTX構造を使用して証明書チェーン深度を取得します。
  770. \return MAX_CHAIN_DEPTH CTX構造体がNULLではない場合に返されます。最大証明書チェーンピア深度の定数表現。
  771. \return BAD_FUNC_ARG CTX構造がNULLの場合に返されます。
  772. _Example_
  773. \code
  774. WOLFSSL_METHOD method; // protocol method
  775. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
  776. long ret = wolfSSL_CTX_get_verify_depth(ctx);
  777. if(ret == EXPECTED){
  778. // You have the expected value
  779. } else {
  780. // Handle an unexpected depth
  781. }
  782. \endcode
  783. \sa wolfSSL_CTX_use_certificate_chain_file
  784. \sa wolfSSL_get_verify_depth
  785. */
  786. long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx);
  787. /*!
  788. \ingroup openSSL
  789. \brief この関数は証明書ファイルをSSLセッション(WolfSSL構造体)にロードします。証明書ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
  790. \return SSL_SUCCESS 成功すると
  791. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられています。メモリ不足状態が発生すると、ファイルでbase16のデコードが失敗する
  792. \param ssl wolfssl_new()で作成されたwolfssl構造へのポインタ。
  793. \param file wolfssl sslセッションにロードされる証明書を含むファイルの名前へのポインタは、フォーマットで指定された形式でフォーマットします。
  794. _Example_
  795. \code
  796. int ret = 0;
  797. WOLFSSL* ssl;
  798. ...
  799. ret = wolfSSL_use_certificate_file(ssl, “./client-cert.pem”,
  800. SSL_FILETYPE_PEM);
  801. if (ret != SSL_SUCCESS) {
  802. // error loading cert file
  803. }
  804. ...
  805. \endcode
  806. \sa wolfSSL_CTX_use_certificate_buffer
  807. \sa wolfSSL_CTX_use_certificate_file
  808. \sa wolfSSL_use_certificate_buffer
  809. */
  810. int wolfSSL_use_certificate_file(WOLFSSL* ssl, const char* file, int format);
  811. /*!
  812. \ingroup openSSL
  813. \brief この関数は、秘密鍵ファイルをSSLセッション(WolfSSL構造体)にロードします。キーファイルはファイル引数によって提供されます。format引数は、ファイルの形式タイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。このためには、CryptoコールバックまたはPKコールバックを使用したビルドで構築できます。Cryptoコールバックを有効にするには、--enable-cryptocbまたはwolf_crypto_cbを使用し、wc_cryptocb_registerDeviceを使用して暗号コールバックを登録し、wolfssl_setdevidを使用して関連するdevidを設定します。
  814. \return SSL_SUCCESS 成功すると。
  815. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられていますが、ファイルは存在しません。メモリ不足状態が発生すると、ベース16のデコードがファイルで失敗し、キーファイルは暗号化されていますが、パスワードは提供されていません。
  816. \param ssl wolfssl_new()で作成されたwolfssl構造へのポインタ。
  817. \param file wolfssl sslセッションにロードされるキーファイルを含むファイルの名前へのポインタは、フォーマットで指定された形式でフォーマットします。
  818. _Example_
  819. \code
  820. int ret = 0;
  821. WOLFSSL* ssl;
  822. ...
  823. ret = wolfSSL_use_PrivateKey_file(ssl, “./server-key.pem”,
  824. SSL_FILETYPE_PEM);
  825. if (ret != SSL_SUCCESS) {
  826. // error loading key file
  827. }
  828. ...
  829. \endcode
  830. \sa wolfSSL_CTX_use_PrivateKey_buffer
  831. \sa wolfSSL_CTX_use_PrivateKey_file
  832. \sa wolfSSL_use_PrivateKey_buffer
  833. \sa wc_CryptoCb_RegisterDevice
  834. \sa wolfSSL_SetDevId
  835. */
  836. int wolfSSL_use_PrivateKey_file(WOLFSSL* ssl, const char* file, int format);
  837. /*!
  838. \ingroup openSSL
  839. \brief この関数は、Chain of chainをSSLセッション(WolfSSL構造体)にロードします。証明書チェーンを含むファイルはファイル引数によって提供され、PEM形式の証明書を含める必要があります。この関数は、MAX_CHAIN_DEPTH(Default = 9、internal.hで定義されている)証明書に加えて、サブジェクト証明書を処理します。
  840. \return SSL_SUCCESS 成功すると。
  841. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられています。メモリの状態が発生します
  842. \param ssl wolfssl_new()を使用して作成されたwolfssl構造へのポインタ
  843. _Example_
  844. \code
  845. int ret = 0;
  846. WOLFSSL* ctx;
  847. ...
  848. ret = wolfSSL_use_certificate_chain_file(ssl, “./cert-chain.pem”);
  849. if (ret != SSL_SUCCESS) {
  850. // error loading cert file
  851. }
  852. ...
  853. \endcode
  854. \sa wolfSSL_CTX_use_certificate_chain_file
  855. \sa wolfSSL_CTX_use_certificate_chain_buffer
  856. \sa wolfSSL_use_certificate_chain_buffer
  857. */
  858. int wolfSSL_use_certificate_chain_file(WOLFSSL* ssl, const char *file);
  859. /*!
  860. \ingroup openSSL
  861. \brief この関数は、SSL接続で使用されているプライベートRSAキーをSSLセッション(WolfSSL構造体)にロードします。この関数は、wolfsslがOpenSSL互換層有効(--enable-openSSlextra、#define openssl_extra)でコンパイルされている場合にのみ利用可能で、より一般的に使用されるwolfssl_use_privatekey_file()関数と同じです。ファイル引数には、RSA秘密鍵ファイルへのポインタが、フォーマットで指定された形式で含まれています。
  862. \return SSL_SUCCESS 成功すると
  863. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。入力キーファイルが誤った形式であるか、または「format」引数を使用して誤った形式が与えられている場合は、ファイルが存在しない、読み込めない、または破損していない、メモリ不足状態が発生します
  864. \param ssl wolfssl_new()を使用して作成されたwolfssl構造へのポインタ
  865. _Example_
  866. \code
  867. int ret = 0;
  868. WOLFSSL* ssl;
  869. ...
  870. ret = wolfSSL_use_RSAPrivateKey_file(ssl, “./server-key.pem”,
  871. SSL_FILETYPE_PEM);
  872. if (ret != SSL_SUCCESS) {
  873. // error loading private key file
  874. }
  875. ...
  876. \endcode
  877. \sa wolfSSL_CTX_use_RSAPrivateKey_file
  878. \sa wolfSSL_CTX_use_PrivateKey_buffer
  879. \sa wolfSSL_CTX_use_PrivateKey_file
  880. \sa wolfSSL_use_PrivateKey_buffer
  881. \sa wolfSSL_use_PrivateKey_file
  882. */
  883. int wolfSSL_use_RSAPrivateKey_file(WOLFSSL* ssl, const char* file, int format);
  884. /*!
  885. \ingroup CertsKeys
  886. \brief この関数はwolfssl_ctx_load_verify_locationsと似ていますが、DerフォーマットされたCAファイルをSSLコンテキスト(WolfSSL_CTX)にロードすることを許可します。それはまだPEM形式のCAファイルをロードするためにも使用されるかもしれません。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 format引数は、証明書がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかにある形式を指定します。 wolfssl_ctx_load_verify_locationsとは異なり、この関数は特定のディレクトリパスからのCA証明書のロードを許可しません。この関数は、WolfSSLライブラリがwolfssl_der_doad定義された状態でコンパイルされたときにのみ利用可能です。
  887. \return SSL_SUCCESS 成功すると。
  888. \return SSL_FAILURE 失敗すると。
  889. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  890. \param file wolfssl SSLコンテキストにロードされるCA証明書を含むファイルの名前をフォーマットで指定された形式で指定します。
  891. _Example_
  892. \code
  893. int ret = 0;
  894. WOLFSSL_CTX* ctx;
  895. ...
  896. ret = wolfSSL_CTX_der_load_verify_locations(ctx, “./ca-cert.der”,
  897. SSL_FILETYPE_ASN1);
  898. if (ret != SSL_SUCCESS) {
  899. // error loading CA certs
  900. }
  901. ...
  902. \endcode
  903. \sa wolfSSL_CTX_load_verify_locations
  904. \sa wolfSSL_CTX_load_verify_buffer
  905. */
  906. int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX* ctx,
  907. const char* file, int format);
  908. /*!
  909. \ingroup Setup
  910. \brief この関数は、入力のための所望のSSL / TLSプロトコル方式を取って、新しいSSLコンテキストを作成します。
  911. \return pointer 正常にコールが新しく作成されたwolfssl_ctxへのポインタを返します。
  912. \return NULL 失敗すると。
  913. _Example_
  914. \code
  915. WOLFSSL_CTX* ctx = 0;
  916. WOLFSSL_METHOD* method = 0;
  917. method = wolfSSLv3_client_method();
  918. if (method == NULL) {
  919. // unable to get method
  920. }
  921. ctx = wolfSSL_CTX_new(method);
  922. if (ctx == NULL) {
  923. // context creation failed
  924. }
  925. \endcode
  926. \sa wolfSSL_new
  927. */
  928. WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*);
  929. /*!
  930. \ingroup Setup
  931. \brief この関数は新しいSSLセッションを作成し、すでに作成されたSSLコンテキストを入力として作成します。
  932. \return * 成功した場合、呼び出しが新しく作成されたWolfSSL構造へのポインタを返します。
  933. \return NULL 失敗すると。
  934. _Example_
  935. \code
  936. #include <wolfssl/ssl.h>
  937. WOLFSSL* ssl = NULL;
  938. WOLFSSL_CTX* ctx = 0;
  939. ctx = wolfSSL_CTX_new(method);
  940. if (ctx == NULL) {
  941. // context creation failed
  942. }
  943. ssl = wolfSSL_new(ctx);
  944. if (ssl == NULL) {
  945. // SSL object creation failed
  946. }
  947. \endcode
  948. \sa wolfSSL_CTX_new
  949. */
  950. WOLFSSL* wolfSSL_new(WOLFSSL_CTX*);
  951. /*!
  952. \ingroup Setup
  953. \brief この関数は、SSL接続の入出力機能としてファイル記述子(FD)を割り当てます。通常これはソケットファイル記述子になります。
  954. \return SSL_SUCCESS 成功すると。
  955. \return Bad_FUNC_ARG 失敗すると。
  956. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  957. _Example_
  958. \code
  959. int sockfd;
  960. WOLFSSL* ssl = 0;
  961. ...
  962. ret = wolfSSL_set_fd(ssl, sockfd);
  963. if (ret != SSL_SUCCESS) {
  964. // failed to set SSL file descriptor
  965. }
  966. \endcode
  967. \sa wolfSSL_CTX_SetIOSend
  968. \sa wolfSSL_CTX_SetIORecv
  969. \sa wolfSSL_SetIOReadCtx
  970. \sa wolfSSL_SetIOWriteCtx
  971. */
  972. int wolfSSL_set_fd (WOLFSSL* ssl, int fd);
  973. /*!
  974. \ingroup IO
  975. \brief 渡された優先順位の暗号の名前を取得します。
  976. \return string 成功
  977. \return 0 優先順位は範囲外または無効です。
  978. _Example_
  979. \code
  980. printf("The cipher at 1 is %s", wolfSSL_get_cipher_list(1));
  981. \endcode
  982. \sa wolfSSL_CIPHER_get_name
  983. \sa wolfSSL_get_current_cipher
  984. */
  985. char* wolfSSL_get_cipher_list(int priority);
  986. /*!
  987. \ingroup IO
  988. \brief この関数はwolfsslでイネーブルされた暗号を取得します。
  989. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  990. \return BAD_FUNC_ARG bufパラメータがnullの場合、またはlen引数がゼロ以下の場合に返されます。
  991. \return BUFFER_E バッファが十分に大きくなく、オーバーフローすると返されます。
  992. \param buf バッファを表す文字ポインタ。
  993. _Example_
  994. \code
  995. static void ShowCiphers(void){
  996. char* ciphers;
  997. int ret = wolfSSL_get_ciphers(ciphers, (int)sizeof(ciphers));
  998. if(ret == SSL_SUCCES){
  999. printf(“%s\n”, ciphers);
  1000. }
  1001. }
  1002. \endcode
  1003. \sa GetCipherNames
  1004. \sa wolfSSL_get_cipher_list
  1005. \sa ShowCiphers
  1006. */
  1007. int wolfSSL_get_ciphers(char* buf, int len);
  1008. /*!
  1009. \ingroup IO
  1010. \brief この関数は、引数をwolfssl_get_cipher_name_internalに渡すことによって、DHE-RSAの形式の暗号名を取得します。
  1011. \return string この関数は、一致した暗号スイートの文字列表現を返します。
  1012. \return NULL エラーまたは暗号が見つかりません。
  1013. _Example_
  1014. \code
  1015. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  1016. WOLFSSL* ssl = wolfSSL_new(ctx);
  1017. char* cipherS = wolfSSL_get_cipher_name(ssl);
  1018. if(cipher == NULL){
  1019. // There was not a cipher suite matched
  1020. } else {
  1021. // There was a cipher suite matched
  1022. printf(“%s\n”, cipherS);
  1023. }
  1024. \endcode
  1025. \sa wolfSSL_CIPHER_get_name
  1026. \sa wolfSSL_get_current_cipher
  1027. \sa wolfSSL_get_cipher_name_internal
  1028. */
  1029. const char* wolfSSL_get_cipher_name(WOLFSSL* ssl);
  1030. /*!
  1031. \ingroup IO
  1032. \brief この関数は、SSL接続の入出力機能として使用されるファイル記述子(FD)を返します。通常これはソケットファイル記述子になります。
  1033. \return fd 正常にコールがSSLセッションファイル記述子を返します。
  1034. _Example_
  1035. \code
  1036. int sockfd;
  1037. WOLFSSL* ssl = 0;
  1038. ...
  1039. sockfd = wolfSSL_get_fd(ssl);
  1040. ...
  1041. \endcode
  1042. \sa wolfSSL_set_fd
  1043. */
  1044. int wolfSSL_get_fd(const WOLFSSL*);
  1045. /*!
  1046. \ingroup Setup
  1047. \brief この関数は、wolfsslオブジェクトに基礎となるI / Oがブロックされていないことを通知します。アプリケーションがWolfSSLオブジェクトを作成した後、ブロッキング以外のソケットで使用される場合は、wolfssl_set_using_nonblock()を呼び出します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1048. \return none 返品不可。
  1049. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1050. _Example_
  1051. \code
  1052. WOLFSSL* ssl = 0;
  1053. ...
  1054. wolfSSL_set_using_nonblock(ssl, 1);
  1055. \endcode
  1056. \sa wolfSSL_get_using_nonblock
  1057. \sa wolfSSL_dtls_got_timeout
  1058. \sa wolfSSL_dtls_get_current_timeout
  1059. */
  1060. void wolfSSL_set_using_nonblock(WOLFSSL* ssl, int nonblock);
  1061. /*!
  1062. \ingroup IO
  1063. \brief この機能により、WolfSSLが非ブロッキングI / Oを使用しているかどうかをアプリケーションが判断できます。WolfSSLがノンブロッキングI / Oを使用している場合、この関数は1を返します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1064. \return 0 基礎となるI / Oがブロックされています。
  1065. \return 1 基礎となるI / Oは非ブロッキングです。
  1066. _Example_
  1067. \code
  1068. int ret = 0;
  1069. WOLFSSL* ssl = 0;
  1070. ...
  1071. ret = wolfSSL_get_using_nonblock(ssl);
  1072. if (ret == 1) {
  1073. // underlying I/O is non-blocking
  1074. }
  1075. ...
  1076. \endcode
  1077. \sa wolfSSL_set_session
  1078. */
  1079. int wolfSSL_get_using_nonblock(WOLFSSL*);
  1080. /*!
  1081. \ingroup IO
  1082. \brief この関数は、バッファ、データ、SSL接続、SSLにSZバイトを書き込みます。必要に応じて、wolfssl_write()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_write()はSSL / TLSセッションをネゴシエートします。wolfssl_write()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がブロックされていない場合、wolfssl_write()がwolfssl_write()のニーズを満たすことができなかったときにwolfssl_write()が戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となるI / Oが準備ができたら、呼び出し側プロセスはwolfssl_write()への呼び出しを繰り返す必要があります。基礎となる入出力がブロックされている場合、WolfSSL_WRITE()は、サイズSZのバッファデータが完全に書かれたかエラーが発生したら、戻るだけです。
  1083. \return >0 成功時に書かれたバイト数。
  1084. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1085. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_WRITE()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1086. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1087. \param data ピアに送信されるデータバッファ。
  1088. _Example_
  1089. \code
  1090. WOLFSSL* ssl = 0;
  1091. char msg[64] = “hello wolfssl!”;
  1092. int msgSz = (int)strlen(msg);
  1093. int flags;
  1094. int ret;
  1095. ...
  1096. ret = wolfSSL_write(ssl, msg, msgSz);
  1097. if (ret <= 0) {
  1098. // wolfSSL_write() failed, call wolfSSL_get_error()
  1099. }
  1100. \endcode
  1101. \sa wolfSSL_send
  1102. \sa wolfSSL_read
  1103. \sa wolfSSL_recv
  1104. */
  1105. int wolfSSL_write(WOLFSSL* ssl, const void* data, int sz);
  1106. /*!
  1107. \ingroup IO
  1108. \brief この関数は、SSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータに読み出します。読み取られたバイトは内部受信バッファから削除されます。必要に応じて、wolfssl_read()がまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合は、wolfssl_read()がSSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_read()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができます。検索され、次回のwolfssl_read()への呼び出しで復号化される内部WolfSSL受信バッファで待機していない追加の復号化データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数より大きい場合、SSL_READ()は内部読み取りバッファで使用可能なバイトを返します。 BYTESが内部読み取りバッファにバッファされていない場合は、WOLFSSL_READ()への呼び出しは次のレコードの処理をトリガーします。
  1109. \return >0 成功時に読み取られたバイト数。
  1110. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1111. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSL_READ()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1112. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1113. \param data wolfssl_read()がデータを読み取るバッファー。
  1114. _Example_
  1115. \code
  1116. WOLFSSL* ssl = 0;
  1117. char reply[1024];
  1118. ...
  1119. input = wolfSSL_read(ssl, reply, sizeof(reply));
  1120. if (input > 0) {
  1121. // “input” number of bytes returned into buffer “reply”
  1122. }
  1123. See wolfSSL examples (client, server, echoclient, echoserver) for more
  1124. complete examples of wolfSSL_read().
  1125. \endcode
  1126. \sa wolfSSL_recv
  1127. \sa wolfSSL_write
  1128. \sa wolfSSL_peek
  1129. \sa wolfSSL_pending
  1130. */
  1131. int wolfSSL_read(WOLFSSL* ssl, void* data, int sz);
  1132. /*!
  1133. \ingroup IO
  1134. \brief この関数はSSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除されていないか変更されていないことを除いて、wolfssl_read()と同じです。必要に応じて、wolfssl_read()のように、wolfssl_peek()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_peek()はSSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_peek()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができます。 wolfssl_peek()/ wolfssl_read()への次の呼び出しで検索および復号化される内部WolfSSL受信バッファ内で待機していない追加の復号化データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_PEEK()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合、Wolfssl_peek()への呼び出しは次のレコードの処理をトリガーします。
  1135. \return >0 成功時に読み取られたバイト数。
  1136. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1137. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WolfSSL_PEEK()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1138. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1139. \param data wolfssl_peek()がデータを読み取るバッファー。
  1140. _Example_
  1141. \code
  1142. WOLFSSL* ssl = 0;
  1143. char reply[1024];
  1144. ...
  1145. input = wolfSSL_peek(ssl, reply, sizeof(reply));
  1146. if (input > 0) {
  1147. // “input” number of bytes returned into buffer “reply”
  1148. }
  1149. \endcode
  1150. \sa wolfSSL_read
  1151. */
  1152. int wolfSSL_peek(WOLFSSL* ssl, void* data, int sz);
  1153. /*!
  1154. \ingroup IO
  1155. \brief この関数はサーバー側で呼び出され、SSLクライアントがSSL / TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。wolfssl_accept()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がノンブロッキングである場合、wolfssl_accept()は、基礎となるI / Oがwolfssl_acceptのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、読み取り可能なデータが使用可能であり、wolfsslが停止した場所を拾うときに、wolfssl_acceptの呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となるI / Oがブロックされている場合、wolfssl_accept()はハンドシェイクが終了したら、またはエラーが発生したら戻ります。
  1156. \return SSL_SUCCESS 成功すると。
  1157. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  1158. _Example_
  1159. \code
  1160. int ret = 0;
  1161. int err = 0;
  1162. WOLFSSL* ssl;
  1163. char buffer[80];
  1164. ...
  1165. ret = wolfSSL_accept(ssl);
  1166. if (ret != SSL_SUCCESS) {
  1167. err = wolfSSL_get_error(ssl, ret);
  1168. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  1169. }
  1170. \endcode
  1171. \sa wolfSSL_get_error
  1172. \sa wolfSSL_connect
  1173. */
  1174. int wolfSSL_accept(WOLFSSL*);
  1175. /*!
  1176. \ingroup Setup
  1177. \brief この関数は、割り当てられたwolfssl_ctxオブジェクトを解放します。この関数はCTX参照数を減らし、参照カウントが0に達したときにのみコンテキストを解放します。
  1178. \return none 返品不可。
  1179. _Example_
  1180. \code
  1181. WOLFSSL_CTX* ctx = 0;
  1182. ...
  1183. wolfSSL_CTX_free(ctx);
  1184. \endcode
  1185. \sa wolfSSL_CTX_new
  1186. \sa wolfSSL_new
  1187. \sa wolfSSL_free
  1188. */
  1189. void wolfSSL_CTX_free(WOLFSSL_CTX*);
  1190. /*!
  1191. \ingroup Setup
  1192. \brief この関数は割り当てられたwolfsslオブジェクトを解放します。
  1193. \return none 返品不可。
  1194. _Example_
  1195. \code
  1196. #include <wolfssl/ssl.h>
  1197. WOLFSSL* ssl = 0;
  1198. ...
  1199. wolfSSL_free(ssl);
  1200. \endcode
  1201. \sa wolfSSL_CTX_new
  1202. \sa wolfSSL_new
  1203. \sa wolfSSL_CTX_free
  1204. */
  1205. void wolfSSL_free(WOLFSSL*);
  1206. /*!
  1207. \ingroup TLS
  1208. \brief この関数は、SSLセッションSSLを使用してアクティブなSSL / TLS接続をシャットダウンします。この関数は、ピアに「Close Notify」アラートを送信しようとします。呼び出し側アプリケーションは、Peerがその「閉じる通知」アラートを応答に送信するのを待つか、または直接wolfssl_shutdownを呼び出した後(リソースを保存するために)wolfssl_shutdownを直接通話した後に基礎となる接続を停止するのを待つことができます。どちらのオプションはTLS仕様で許可されています。将来、基礎となる接続が再び使用される場合、同期をピア間で無傷のまま保つために完全な2方向のシャットダウン手順を実行する必要があります。 wolfssl_shutdown()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfsl_shutdown()がwolfssl_shutdown()のニーズを満たすことができなかった場合、wolfssl_shutdown()はエラーを返します。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となるI / Oが準備ができたら、呼び出し側プロセスはwolfssl_shutdown()への呼び出しを繰り返す必要があります。
  1209. \return SSL_SUCCESS 成功に戻ります。
  1210. \return SSL_SHUTDOWN_NOT_DONE シャットダウンが終了していない場合は返され、機能を再度呼び出す必要があります。
  1211. \return SSL_FATAL_ERROR 失敗したときに返されます。より具体的なエラーコードに対してwolfssl_get_error()を呼び出します。
  1212. _Example_
  1213. \code
  1214. #include <wolfssl/ssl.h>
  1215. int ret = 0;
  1216. WOLFSSL* ssl = 0;
  1217. ...
  1218. ret = wolfSSL_shutdown(ssl);
  1219. if (ret != 0) {
  1220. // failed to shut down SSL connection
  1221. }
  1222. \endcode
  1223. \sa wolfSSL_free
  1224. \sa wolfSSL_CTX_free
  1225. */
  1226. int wolfSSL_shutdown(WOLFSSL*);
  1227. /*!
  1228. \ingroup IO
  1229. \brief この関数は、基礎となる書き込み操作のために指定されたフラグを使用して、バッファ、データ、データからSZバイトをSSL接続SSLに書き込みます。必要に応じて、wolfssl_send()がまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合は、wolfssl_send()がSSL / TLSセッションをネゴシエートします。wolfssl_send()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力が非ブロックされていない場合、wolfssl_send()がwolfssl_sendのニーズを満たすことができなかったときにwolfssl_send()が戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となる入出力が準備ができたら、呼び出し側プロセスはwolfssl_send()への呼び出しを繰り返す必要があります。基礎となる入出力がブロックされている場合、Wolfssl_send()は、サイズSZのバッファデータが完全に書き込まれたかエラーが発生したら、戻るだけです。
  1230. \return >0 成功時に書かれたバイト数。
  1231. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1232. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_SEND()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1233. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1234. \param data ピアに送信するデータバッファ。
  1235. \param sz ピアに送信されるデータのサイズ(バイト)。
  1236. _Example_
  1237. \code
  1238. WOLFSSL* ssl = 0;
  1239. char msg[64] = “hello wolfssl!”;
  1240. int msgSz = (int)strlen(msg);
  1241. int flags = ... ;
  1242. ...
  1243. input = wolfSSL_send(ssl, msg, msgSz, flags);
  1244. if (input != msgSz) {
  1245. // wolfSSL_send() failed
  1246. }
  1247. \endcode
  1248. \sa wolfSSL_write
  1249. \sa wolfSSL_read
  1250. \sa wolfSSL_recv
  1251. */
  1252. int wolfSSL_send(WOLFSSL* ssl, const void* data, int sz, int flags);
  1253. /*!
  1254. \ingroup IO
  1255. \brief この関数は、基礎となるRECV動作のために指定されたフラグを使用して、SSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータに読み出します。読み取られたバイトは内部受信バッファから削除されます。この関数はwolfssl_read()と同じです。ただし、アプリケーションが基礎となる読み取り操作のRECVフラグを設定できることを許可します。必要に応じてwolfssl_recv()がwolfssl_connect()またはwolfssl_accept()によってハンドシェイクがまだ実行されていない場合は、SSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_recv()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができるだけです。 wolfssl_recv()への次の呼び出しで検索および復号化される内部WolfSSL受信バッファで待機していない追加の復号化されたデータがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_RECV()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合は、WOLFSSL_RECV()への呼び出しは次のレコードの処理をトリガーします。
  1256. \return >0 成功時に読み取られたバイト数。
  1257. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1258. \return SSL_FATAL_ERROR エラーが発生した場合、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが発生し、アプリケーションが再びWOLFSSL_RECV()を呼び出す必要があります。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1259. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1260. \param data wolfssl_recv()がデータを読み取るバッファー。
  1261. \param sz データを読み込むためのバイト数。
  1262. _Example_
  1263. \code
  1264. WOLFSSL* ssl = 0;
  1265. char reply[1024];
  1266. int flags = ... ;
  1267. ...
  1268. input = wolfSSL_recv(ssl, reply, sizeof(reply), flags);
  1269. if (input > 0) {
  1270. // “input” number of bytes returned into buffer “reply”
  1271. }
  1272. \endcode
  1273. \sa wolfSSL_read
  1274. \sa wolfSSL_write
  1275. \sa wolfSSL_peek
  1276. \sa wolfSSL_pending
  1277. */
  1278. int wolfSSL_recv(WOLFSSL* ssl, void* data, int sz, int flags);
  1279. /*!
  1280. \ingroup Debug
  1281. \brief この関数は、以前のAPI関数呼び出し(wolfssl_connect、wolfssl_accept、wolfssl_read、wolfssl_writeなど)がエラー戻りコード(ssl_failure)を呼び出した理由を表す一意のエラーコードを返します。前の関数の戻り値は、RETを介してwolfssl_get_errorに渡されます。wolfssl_get_errorが呼び出された後、一意のエラーコードを返します、wolfssl_err_error_string()を呼び出して人間が読めるエラー文字列を取得することができます。詳細については、wolfssl_err_error_string()を参照してください。
  1282. \return On 完了成功、この関数は、前のAPI関数が失敗した理由を説明する固有のエラーコードを返します。
  1283. \return SSL_ERROR_NONE RET> 0の場合は返されます.Ret <= 0の場合、以前のAPIがエラーコードを返すが実際に発生しなかった場合にこの値を返す場合があります。例は、ゼロSZパラメータを使用してwolfssl_read()を呼び出すことです。a 0 wolfssl_read()からの戻り値は通常エラーを示しますが、この場合はエラーは発生しませんでした。wolfssl_get_error()がその後呼び出された場合、ssl_error_noneが返されます。
  1284. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1285. _Example_
  1286. \code
  1287. int err = 0;
  1288. WOLFSSL* ssl;
  1289. char buffer[80];
  1290. ...
  1291. err = wolfSSL_get_error(ssl, 0);
  1292. wolfSSL_ERR_error_string(err, buffer);
  1293. printf(“err = %d, %s\n”, err, buffer);
  1294. \endcode
  1295. \sa wolfSSL_ERR_error_string
  1296. \sa wolfSSL_ERR_error_string_n
  1297. \sa wolfSSL_ERR_print_errors_fp
  1298. \sa wolfSSL_load_error_strings
  1299. */
  1300. int wolfSSL_get_error(WOLFSSL* ssl, int ret);
  1301. /*!
  1302. \ingroup IO
  1303. \brief この関数はアラート履歴を取得します。
  1304. \return SSL_SUCCESS 関数が正常に完了したときに返されます。警告履歴があったか、またはいずれにも、戻り値はSSL_SUCCESSです。
  1305. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1306. _Example_
  1307. \code
  1308. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  1309. WOLFSSL* ssl = wolfSSL_new(ctx);
  1310. WOLFSSL_ALERT_HISTORY* h;
  1311. ...
  1312. wolfSSL_get_alert_history(ssl, h);
  1313. // h now has a copy of the ssl->alert_history contents
  1314. \endcode
  1315. \sa wolfSSL_get_error
  1316. */
  1317. int wolfSSL_get_alert_history(WOLFSSL* ssl, WOLFSSL_ALERT_HISTORY *h);
  1318. /*!
  1319. \ingroup Setup
  1320. \brief この関数は、SSLオブジェクトSSLがSSL / TLS接続を確立するために使用されるときに使用されるセッションを設定します。セッションの再開の場合、wolfssl_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。これはセッションへのポインタを返します。後で、アプリケーションは新しいWolfSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションがそれを使用してそれを使用して解放される必要があります。
  1321. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  1322. \return SSL_FAILURE 失敗した場合に返されます。これはセッションキャッシュが無効になっている、またはセッションがタイムアウトした場合によって発生する可能性があります。
  1323. \return When OpenSSL_EXTRAとWOLFSSL_ERROR_CODE_OPENSSLが定義されているため、セッションがタイムアウトしていてもSSL_SUCCESSが返されます。
  1324. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1325. _Example_
  1326. \code
  1327. int ret;
  1328. WOLFSSL* ssl;
  1329. WOLFSSL_SESSION* session;
  1330. ...
  1331. session = wolfSSL_get1_session(ssl);
  1332. if (session == NULL) {
  1333. // failed to get session object from ssl object
  1334. }
  1335. ...
  1336. ret = wolfSSL_set_session(ssl, session);
  1337. if (ret != SSL_SUCCESS) {
  1338. // failed to set the SSL session
  1339. }
  1340. wolfSSL_SESSION_free(session);
  1341. ...
  1342. \endcode
  1343. \sa wolfSSL_get1_session
  1344. */
  1345. int wolfSSL_set_session(WOLFSSL* ssl, WOLFSSL_SESSION* session);
  1346. /*!
  1347. \ingroup IO
  1348. \brief NO_SESSION_CACHE_REFが定義されている場合、この関数はSSLで使用されている現在のセッション(WolfSSL_SESSION)へのポインタを返します。この関数は、wolfssl_sessionオブジェクトへの永続的なポインタを返します。返されるポインタは、wolfssl_freeが呼び出されたときに解放されます。この呼び出しは、現在のセッションを検査または変更するためにのみ使用されます。セッションの再開の場合は、wolfssl_get1_session()を使用することをお勧めします。NO_SESSION_CACHE_REFが定義されていない場合の後方互換性のために、この関数はローカルキャッシュに格納されている永続セッションオブジェクトポインタを返します。キャッシュサイズは有限であり、アプリケーションがwolfssl_set_session()を呼び出す時までにセッションオブジェクトが別のSSL接続によって上書きされる危険性があります。アプリケーションにNO_SESSION_CACHE_REFを定義し、セッション再開にwolfssl_get1_session()を使用することをお勧めします。
  1349. \return pointer 正常にコールが現在のSSLセッションオブジェクトへのポインタを返します。
  1350. \return NULL SSLがNULLの場合、SSLセッションキャッシュが無効になっている場合、WolfSSLはセッションIDを使用できない、またはミューテックス関数が失敗します。
  1351. _Example_
  1352. \code
  1353. WOLFSSL* ssl;
  1354. WOLFSSL_SESSION* session;
  1355. ...
  1356. session = wolfSSL_get_session(ssl);
  1357. if (session == NULL) {
  1358. // failed to get session pointer
  1359. }
  1360. ...
  1361. \endcode
  1362. \sa wolfSSL_get1_session
  1363. \sa wolfSSL_set_session
  1364. */
  1365. WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl);
  1366. /*!
  1367. \ingroup IO
  1368. \brief この機能は、期限切れになったセッションキャッシュからセッションをフラッシュします。時間比較にはTMが使用されます。WolfSSLは現在セッションに静的テーブルを使用しているため、フラッシングは不要です。そのため、この機能は現在サブだけです。この関数は、wolfsslがOpenSSL互換層でコンパイルされているときのOpenSSL互換性(ssl_flush_sessions)を提供します。
  1369. \return none いいえ返します。
  1370. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1371. _Example_
  1372. \code
  1373. WOLFSSL_CTX* ssl;
  1374. ...
  1375. wolfSSL_flush_sessions(ctx, time(0));
  1376. \endcode
  1377. \sa wolfSSL_get1_session
  1378. \sa wolfSSL_set_session
  1379. */
  1380. void wolfSSL_flush_sessions(WOLFSSL_CTX* ctx, long tm);
  1381. /*!
  1382. \ingroup TLS
  1383. \brief この関数はクライアントセッションをサーバーIDと関連付けます。Newsessionフラグがオンの場合、既存のセッションは再利用されません。
  1384. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1385. \return BAD_FUNC_ARG wolfssl structまたはidパラメータがnullの場合、またはLenがゼロ以下の場合に返されます。
  1386. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1387. \param id wolfssl_session構造体のServerIDメンバーにコピーされる定数バイトポインタ。
  1388. \param len セッションIDパラメータの長さを表すint型。
  1389. _Example_
  1390. \code
  1391. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol );
  1392. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1393. const byte id[MAX_SIZE]; // or dynamically create space
  1394. int len = 0; // initialize length
  1395. int newSession = 0; // flag to allow
  1396. int ret = wolfSSL_SetServerID(ssl, id, len, newSession);
  1397. if (ret == WOLFSSL_SUCCESS) {
  1398. // The Id was successfully set
  1399. }
  1400. \endcode
  1401. \sa wolfSSL_set_session
  1402. */
  1403. int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char* id,
  1404. int len, int newSession);
  1405. /*!
  1406. \ingroup IO
  1407. \brief この関数は、WolfSSL構造体のセッションインデックスを取得します。
  1408. \return int この関数は、wolfssl構造体内のSessionIndexを表すint型を返します。
  1409. _Example_
  1410. \code
  1411. WOLFSSL_CTX_new( protocol method );
  1412. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1413. ...
  1414. int sesIdx = wolfSSL_GetSessionIndex(ssl);
  1415. if(sesIdx < 0 || sesIdx > sizeof(ssl->sessionIndex)/sizeof(int)){
  1416. // You have an out of bounds index number and something is not right.
  1417. }
  1418. \endcode
  1419. \sa wolfSSL_GetSessionAtIndex
  1420. */
  1421. int wolfSSL_GetSessionIndex(WOLFSSL* ssl);
  1422. /*!
  1423. \ingroup IO
  1424. \brief この関数はセッションキャッシュの指定されたインデックスでセッションを取得し、それをメモリにコピーします。wolfssl_session構造体はセッション情報を保持します。
  1425. \return SSL_SUCCESS 関数が正常に実行され、エラーがスローされなかった場合に返されます。
  1426. \return BAD_MUTEX_E アンロックまたはロックミューテックスエラーが発生した場合は返されます。
  1427. \return SSL_FAILURE 関数が正常に実行されなかった場合に返されます。
  1428. \param idx セッションインデックスを表すint型。
  1429. _Example_
  1430. \code
  1431. int idx; // The index to locate the session.
  1432. WOLFSSL_SESSION* session; // Buffer to copy to.
  1433. ...
  1434. if(wolfSSL_GetSessionAtIndex(idx, session) != SSL_SUCCESS){
  1435. // Failure case.
  1436. }
  1437. \endcode
  1438. \sa UnLockMutex
  1439. \sa LockMutex
  1440. \sa wolfSSL_GetSessionIndex
  1441. */
  1442. int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session);
  1443. /*!
  1444. \ingroup IO
  1445. \brief wolfssl_session構造体からピア証明書チェーンを返します。
  1446. \return pointer ピア認証チェーンを含むWOLFSSL_X509_CHAIN構造体へのポインタ。
  1447. _Example_
  1448. \code
  1449. WOLFSSL_SESSION* session;
  1450. WOLFSSL_X509_CHAIN* chain;
  1451. ...
  1452. chain = wolfSSL_SESSION_get_peer_chain(session);
  1453. if(!chain){
  1454. // There was no chain. Failure case.
  1455. }
  1456. \endcode
  1457. \sa wolfSSL_GetSessionAtIndex
  1458. \sa wolfSSL_GetSessionIndex
  1459. \sa AddSession
  1460. */
  1461. WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session);
  1462. /*!
  1463. \ingroup Setup
  1464. \brief この関数はリモートピアの検証方法を設定し、またSSLコンテキストに登録されることを確認することもできます。検証コールバックは、検証障害が発生した場合にのみ呼び出されます。検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。ピア証明書の検証モードは、論理的またはフラグのリストです。可能なフラグ値は次のとおりです.SSL_VERIFY_NONEクライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 ssl_verify_peerクライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfsslではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 ssl_verify_fail_if_no_peer_certクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 ssl_verify_fail_except_pskクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:PSK接続の場合を除き、検証はssl_verify_fail_if_no_peer_certと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
  1465. \return none 返品不可。
  1466. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1467. \param mode セッションタイムアウト値(秒)
  1468. _Example_
  1469. \code
  1470. WOLFSSL_CTX* ctx = 0;
  1471. ...
  1472. wolfSSL_CTX_set_verify(ctx, (WOLFSSL_VERIFY_PEER |
  1473. WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT), NULL);
  1474. \endcode
  1475. \sa wolfSSL_set_verify
  1476. */
  1477. void wolfSSL_CTX_set_verify(WOLFSSL_CTX* ctx, int mode,
  1478. VerifyCallback verify_callback);
  1479. /*!
  1480. \ingroup Setup
  1481. \brief この関数はリモートピアの検証方法を設定し、またSSLセッションに登録するのを登録することもできます。検証コールバックは、検証障害が発生した場合にのみ呼び出されます。検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。ピア証明書の検証モードは、論理的またはフラグのリストです。可能なフラグ値は次のとおりです.SSL_VERIFY_NONEクライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 ssl_verify_peerクライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfsslではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 ssl_verify_fail_if_no_peer_certクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 ssl_verify_fail_except_pskクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:PSK接続の場合を除き、検証はssl_verify_fail_if_no_peer_certと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
  1482. \return none 返品不可。
  1483. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1484. \param mode セッションタイムアウト値(秒単位)。
  1485. _Example_
  1486. \code
  1487. WOLFSSL* ssl = 0;
  1488. ...
  1489. wolfSSL_set_verify(ssl, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
  1490. \endcode
  1491. \sa wolfSSL_CTX_set_verify
  1492. */
  1493. void wolfSSL_set_verify(WOLFSSL* ssl, int mode, VerifyCallback verify_callback);
  1494. /*!
  1495. \ingroup CertsKeys
  1496. \brief この関数は、検証コールバックのためのユーザーCTXオブジェクト情報を格納します。
  1497. \return none 返品不可。
  1498. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1499. _Example_
  1500. \code
  1501. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1502. WOLFSSL* ssl = wolfSSL_new(ctx);
  1503. (void*)ctx;
  1504. ...
  1505. if(ssl != NULL){
  1506. wolfSSL_SetCertCbCtx(ssl, ctx);
  1507. } else {
  1508. // Error case, the SSL is not initialized properly.
  1509. }
  1510. \endcode
  1511. \sa wolfSSL_CTX_save_cert_cache
  1512. \sa wolfSSL_CTX_restore_cert_cache
  1513. \sa wolfSSL_CTX_set_verify
  1514. */
  1515. void wolfSSL_SetCertCbCtx(WOLFSSL* ssl, void* ctx);
  1516. /*!
  1517. \ingroup CertsKeys
  1518. \brief この関数は、検証コールバックのためのユーザーCTXオブジェクト情報を格納します。
  1519. \return none 返品不可。
  1520. \param ctx wolfssl_ctx構造へのポインタ。
  1521. _Example_
  1522. \code
  1523. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1524. void* userCtx = NULL; // Assign some user defined context
  1525. ...
  1526. if(ctx != NULL){
  1527. wolfSSL_SetCertCbCtx(ctx, userCtx);
  1528. } else {
  1529. // Error case, the SSL is not initialized properly.
  1530. }
  1531. \endcode
  1532. \sa wolfSSL_CTX_save_cert_cache
  1533. \sa wolfSSL_CTX_restore_cert_cache
  1534. \sa wolfSSL_CTX_set_verify
  1535. */
  1536. void wolfSSL_CTX_SetCertCbCtx(WOLFSSL_CTX* ctx, void* userCtx);
  1537. /*!
  1538. \ingroup IO
  1539. \brief この関数は、wolfssl_read()によって読み取られるSSLオブジェクトでバッファされているバイト数を返します。
  1540. \return int この関数は、保留中のバイト数を返します。
  1541. _Example_
  1542. \code
  1543. int pending = 0;
  1544. WOLFSSL* ssl = 0;
  1545. ...
  1546. pending = wolfSSL_pending(ssl);
  1547. printf(“There are %d bytes buffered and available for reading”, pending);
  1548. \endcode
  1549. \sa wolfSSL_recv
  1550. \sa wolfSSL_read
  1551. \sa wolfSSL_peek
  1552. */
  1553. int wolfSSL_pending(WOLFSSL*);
  1554. /*!
  1555. \ingroup Debug
  1556. \brief この機能はOpenSSL互換性(SSL_LOAD_ERROR_STRING)のみであり、アクションを取ります。
  1557. \return none いいえ返します。
  1558. _Example_
  1559. \code
  1560. wolfSSL_load_error_strings();
  1561. \endcode
  1562. \sa wolfSSL_get_error
  1563. \sa wolfSSL_ERR_error_string
  1564. \sa wolfSSL_ERR_error_string_n
  1565. \sa wolfSSL_ERR_print_errors_fp
  1566. \sa wolfSSL_load_error_strings
  1567. */
  1568. void wolfSSL_load_error_strings(void);
  1569. /*!
  1570. \ingroup TLS
  1571. \brief この関数はwolfssl_ctx_new()内で内部的に呼び出されます。この関数はwolfssl_init()の周囲のラッパーで、wolfsslがOpenSSL互換層でコンパイルされたときにOpenSSL互換性(ssl_library_init)に存在します。wolfssl_init()は、より一般的に使用されているWolfSSL初期化機能です。
  1572. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  1573. \return SSL_FATAL_ERROR 失敗したときに返されます。
  1574. _Example_
  1575. \code
  1576. int ret = 0;
  1577. ret = wolfSSL_library_init();
  1578. if (ret != SSL_SUCCESS) {
  1579. failed to initialize wolfSSL
  1580. }
  1581. ...
  1582. \endcode
  1583. \sa wolfSSL_Init
  1584. \sa wolfSSL_Cleanup
  1585. */
  1586. int wolfSSL_library_init(void);
  1587. /*!
  1588. \brief
  1589. \return WOLFSSL_SUCCESS 成功すると。
  1590. \return BAD_FUNC_ARG SSLがNULLの場合
  1591. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1592. _Example_
  1593. \code
  1594. WOLFSSL* ssl;
  1595. int DevId = -2;
  1596. wolfSSL_SetDevId(ssl, devId);
  1597. \endcode
  1598. \sa wolfSSL_CTX_SetDevId
  1599. \sa wolfSSL_CTX_GetDevId
  1600. */
  1601. int wolfSSL_SetDevId(WOLFSSL* ssl, int devId);
  1602. /*!
  1603. \brief
  1604. \return WOLFSSL_SUCCESS 成功すると。
  1605. \return BAD_FUNC_ARG SSLがNULLの場合
  1606. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1607. _Example_
  1608. \code
  1609. WOLFSSL_CTX* ctx;
  1610. int DevId = -2;
  1611. wolfSSL_CTX_SetDevId(ctx, devId);
  1612. \endcode
  1613. \sa wolfSSL_SetDevId
  1614. \sa wolfSSL_CTX_GetDevId
  1615. */
  1616. int wolfSSL_CTX_SetDevId(WOLFSSL_CTX* ctx, int devId);
  1617. /*!
  1618. \brief
  1619. \return devId 成功すると。
  1620. \return INVALID_DEVID SSLとCTXの両方がNULLの場合。
  1621. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1622. _Example_
  1623. \code
  1624. WOLFSSL_CTX* ctx;
  1625. wolfSSL_CTX_GetDevId(ctx, ssl);
  1626. \endcode
  1627. \sa wolfSSL_SetDevId
  1628. \sa wolfSSL_CTX_SetDevId
  1629. */
  1630. int wolfSSL_CTX_GetDevId(WOLFSSL_CTX* ctx, WOLFSSL* ssl);
  1631. /*!
  1632. \ingroup Setup
  1633. \brief この関数はSSLセッションキャッシュを有効または無効にします。動作はモードに使用される値によって異なります。モードの値は次のとおりです.SSL_SESS_CACHE_OFF - セッションキャッシングを無効にします。デフォルトでセッションキャッシングがオンになっています。SSL_SESS_CACHE_NO_AUTO_CLEAR - セッションキャッシュのオートフラッシュを無効にします。デフォルトで自動フラッシングはオンになっています。
  1634. \return SSL_SUCCESS 成功に戻ります。
  1635. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1636. _Example_
  1637. \code
  1638. WOLFSSL_CTX* ctx = 0;
  1639. ...
  1640. ret = wolfSSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
  1641. if (ret != SSL_SUCCESS) {
  1642. // failed to turn SSL session caching off
  1643. }
  1644. \endcode
  1645. \sa wolfSSL_flush_sessions
  1646. \sa wolfSSL_get1_session
  1647. \sa wolfSSL_set_session
  1648. \sa wolfSSL_get_sessionID
  1649. \sa wolfSSL_CTX_set_timeout
  1650. */
  1651. long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX* ctx, long mode);
  1652. /*!
  1653. \brief SessionSecRETCBタイプには、署名があります。int(* sessioneCretcb)(wolfssl * ssl、void * secret、int * secretsz、void * ctx)。WolfSSL構造体のSESSIONSECRETCBメンバーはパラメータCBに設定されています。
  1654. \return SSL_SUCCESS 関数の実行がエラーを返されなかった場合に返されます。
  1655. \return SSL_FATAL_ERROR WolfSSL構造がNULLの場合に返されます。
  1656. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1657. _Example_
  1658. \code
  1659. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1660. WOLFSSL* ssl = wolfSSL_new(ctx);
  1661. // Signature of SessionSecretCb
  1662. int SessionSecretCB (WOLFSSL* ssl, void* secret, int* secretSz,
  1663. void* ctx) = SessionSecretCb;
  1664. int wolfSSL_set_session_secret_cb(ssl, SessionSecretCB, (void*)ssl->ctx){
  1665. // Function body.
  1666. }
  1667. \endcode
  1668. \sa SessionSecretCb
  1669. */
  1670. int wolfSSL_set_session_secret_cb(WOLFSSL* ssl, SessionSecretCb cb, void* ctx);
  1671. /*!
  1672. \ingroup IO
  1673. \brief この関数はセッションキャッシュをファイルに持続します。追加のメモリ使用のため、MEMSAVEは使用されません。
  1674. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。セッションキャッシュはファイルに書き込まれました。
  1675. \return SSL_BAD_FILE FNAMEを開くことができないか、それ以外の場合は破損した場合に返されます。
  1676. \return FWRITE_ERROR XfWriteがファイルへの書き込みに失敗した場合に返されます。
  1677. \return BAD_MUTEX_E ミューテックスロック障害が発生した場合は返されます。
  1678. _Example_
  1679. \code
  1680. const char* fname;
  1681. ...
  1682. if(wolfSSL_save_session_cache(fname) != SSL_SUCCESS){
  1683. // Fail to write to file.
  1684. }
  1685. \endcode
  1686. \sa XFWRITE
  1687. \sa wolfSSL_restore_session_cache
  1688. \sa wolfSSL_memrestore_session_cache
  1689. */
  1690. int wolfSSL_save_session_cache(const char*);
  1691. /*!
  1692. \ingroup IO
  1693. \brief この関数はファイルから永続セッションキャッシュを復元します。追加のメモリ使用のため、MEMSTOREは使用しません。
  1694. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1695. \return SSL_BAD_FILE 関数に渡されたファイルが破損していてXFOPENによって開くことができなかった場合に返されます。
  1696. \return FREAD_ERROR ファイルにXFREADから読み取りエラーが発生した場合は返されます。
  1697. \return CACHE_MATCH_ERROR セッションキャッシュヘッダの一致が失敗した場合に返されます。
  1698. \return BAD_MUTEX_E ミューテックスロック障害が発生した場合は返されます。
  1699. _Example_
  1700. \code
  1701. const char *fname;
  1702. ...
  1703. if(wolfSSL_restore_session_cache(fname) != SSL_SUCCESS){
  1704. // Failure case. The function did not return SSL_SUCCESS.
  1705. }
  1706. \endcode
  1707. \sa XFREAD
  1708. \sa XFOPEN
  1709. */
  1710. int wolfSSL_restore_session_cache(const char*);
  1711. /*!
  1712. \ingroup IO
  1713. \brief この関数はセッションキャッシュをメモリに保持します。
  1714. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。セッションキャッシュはメモリに正常に永続化されました。
  1715. \return BAD_MUTEX_E ミューテックスロックエラーが発生した場合は返されます。
  1716. \return BUFFER_E バッファサイズが小さすぎると返されます。
  1717. \param mem メモリコピーxmemcpy()の宛先を表すvoidポインタ。
  1718. _Example_
  1719. \code
  1720. void* mem;
  1721. int sz; // Max size of the memory buffer.
  1722. if(wolfSSL_memsave_session_cache(mem, sz) != SSL_SUCCESS){
  1723. // Failure case, you did not persist the session cache to memory
  1724. }
  1725. \endcode
  1726. \sa XMEMCPY
  1727. \sa wolfSSL_get_session_cache_memsize
  1728. */
  1729. int wolfSSL_memsave_session_cache(void* mem, int sz);
  1730. /*!
  1731. \ingroup IO
  1732. \brief この関数はメモリから永続セッションキャッシュを復元します。
  1733. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1734. \return BUFFER_E メモリバッファが小さすぎると返されます。
  1735. \return BAD_MUTEX_E セッションキャッシュミューテックスロックが失敗した場合に返されます。
  1736. \return CACHE_MATCH_ERROR セッションキャッシュヘッダの一致が失敗した場合に返されます。
  1737. \param mem 復元の原因を含む定数のボイドポインタ。
  1738. _Example_
  1739. \code
  1740. const void* memoryFile;
  1741. int szMf;
  1742. ...
  1743. if(wolfSSL_memrestore_session_cache(memoryFile, szMf) != SSL_SUCCESS){
  1744. // Failure case. SSL_SUCCESS was not returned.
  1745. }
  1746. \endcode
  1747. \sa wolfSSL_save_session_cache
  1748. */
  1749. int wolfSSL_memrestore_session_cache(const void* mem, int sz);
  1750. /*!
  1751. \ingroup IO
  1752. \brief この関数は、セッションキャッシュ保存バッファをどのように大きくするかを返します。
  1753. \return int この関数は、セッションキャッシュ保存バッファのサイズを表す整数を返します。
  1754. _Example_
  1755. \code
  1756. int sz = // Minimum size for error checking;
  1757. ...
  1758. if(sz < wolfSSL_get_session_cache_memsize()){
  1759. // Memory buffer is too small
  1760. }
  1761. \endcode
  1762. \sa wolfSSL_memrestore_session_cache
  1763. */
  1764. int wolfSSL_get_session_cache_memsize(void);
  1765. /*!
  1766. \ingroup CertsKeys
  1767. \brief この関数はCertキャッシュをメモリからファイルに書き込みます。
  1768. \return SSL_SUCCESS CM_SaveCertCacheが正常に終了した場合。
  1769. \return BAD_FUNC_ARG 引数のいずれかの引数がNULLの場合に返されます。
  1770. \return SSL_BAD_FILE 証明書キャッシュ保存ファイルを開くことができなかった場合。
  1771. \return BAD_MUTEX_E ロックミューテックスが失敗した場合
  1772. \return MEMORY_E メモリの割り当てに失敗しました。
  1773. \return FWRITE_ERROR 証明書キャッシュファイルの書き込みに失敗しました。
  1774. \param ctx wolfssl_ctx構造へのポインタ、証明書情報を保持します。
  1775. _Example_
  1776. \code
  1777. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
  1778. const char* fname;
  1779. ...
  1780. if(wolfSSL_CTX_save_cert_cache(ctx, fname)){
  1781. // file was written.
  1782. }
  1783. \endcode
  1784. \sa CM_SaveCertCache
  1785. \sa DoMemSaveCertCache
  1786. */
  1787. int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
  1788. /*!
  1789. \ingroup CertsKeys
  1790. \brief この関数はファイルから証明書キャッシュを担当します。
  1791. \return SSL_SUCCESS 関数cm_restorecertcacheが正常に実行された場合に返されます。
  1792. \return SSL_BAD_FILE xfopenがxbadfileを返すと返されます。ファイルが破損しています。
  1793. \return MEMORY_E TEMPバッファの割り当てられたメモリが失敗した場合に返されます。
  1794. \return BAD_FUNC_ARG FNAMEまたはCTXにNULL値がある場合は返されます。
  1795. \param ctx wolfssl_ctx構造へのポインタ、証明書情報を保持します。
  1796. _Example_
  1797. \code
  1798. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  1799. WOLFSSL* ssl = wolfSSL_new(ctx);
  1800. const char* fname = "path to file";
  1801. ...
  1802. if(wolfSSL_CTX_restore_cert_cache(ctx, fname)){
  1803. // check to see if the execution was successful
  1804. }
  1805. \endcode
  1806. \sa CM_RestoreCertCache
  1807. \sa XFOPEN
  1808. */
  1809. int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
  1810. /*!
  1811. \ingroup CertsKeys
  1812. \brief この関数は証明書キャッシュをメモリに持続します。
  1813. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。エラーが投げられていません。
  1814. \return BAD_MUTEX_E wolfssl_cert_managerメンバーのカーボックが0(ゼロ)ではなかったミューテックスエラー。
  1815. \return BAD_FUNC_ARG CTX、MEM、または使用がNULLの場合、またはSZが0以下の場合(0(ゼロ)。
  1816. \return BUFFER_E 出力バッファMEMが小さすぎました。
  1817. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1818. \param mem 宛先へのvoidポインタ(出力バッファ)。
  1819. \param sz 出力バッファのサイズ。
  1820. _Example_
  1821. \code
  1822. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
  1823. void* mem;
  1824. int sz;
  1825. int* used;
  1826. ...
  1827. if(wolfSSL_CTX_memsave_cert_cache(ctx, mem, sz, used) != SSL_SUCCESS){
  1828. // The function returned with an error
  1829. }
  1830. \endcode
  1831. \sa DoMemSaveCertCache
  1832. \sa GetCertCacheMemSize
  1833. \sa CM_MemRestoreCertCache
  1834. \sa CM_GetCertCacheMemSize
  1835. */
  1836. int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX* ctx, void* mem, int sz, int* used);
  1837. /*!
  1838. \ingroup Setup
  1839. \brief この関数は証明書キャッシュをメモリから復元します。
  1840. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  1841. \return BAD_FUNC_ARG CTXまたはMEMパラメータがNULLまたはSZパラメータがゼロ以下の場合に返されます。
  1842. \return BUFFER_E CERTキャッシュメモリバッファが小さすぎると戻ります。
  1843. \return CACHE_MATCH_ERROR CERTキャッシュヘッダーの不一致があった場合に返されます。
  1844. \return BAD_MUTEX_E ロックミューテックスが失敗した場合に返されます。
  1845. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1846. \param mem 証明書キャッシュに復元される値を持つvoidポインタ。
  1847. _Example_
  1848. \code
  1849. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  1850. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1851. void* mem;
  1852. int sz = (*int) sizeof(mem);
  1853. if(wolfSSL_CTX_memrestore_cert_cache(ssl->ctx, mem, sz)){
  1854. // The success case
  1855. }
  1856. \endcode
  1857. \sa CM_MemRestoreCertCache
  1858. */
  1859. int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX* ctx, const void* mem, int sz);
  1860. /*!
  1861. \ingroup CertsKeys
  1862. \brief Certificate Cache Saveバッファが必要なサイズを返します。
  1863. \return int 成功したときにメモリサイズを表す整数値。
  1864. \return BAD_FUNC_ARG wolfssl_ctx構造体がNULLの場合に返されます。
  1865. \return BAD_MUTEX_E - ミューテックスロックエラーが発生した場合は返されます。
  1866. _Example_
  1867. \code
  1868. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol);
  1869. ...
  1870. int certCacheSize = wolfSSL_CTX_get_cert_cache_memsize(ctx);
  1871. if(certCacheSize != BAD_FUNC_ARG || certCacheSize != BAD_MUTEX_E){
  1872. // Successfully retrieved the memory size.
  1873. }
  1874. \endcode
  1875. \sa CM_GetCertCacheMemSize
  1876. */
  1877. int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX*);
  1878. /*!
  1879. \ingroup Setup
  1880. \brief この関数は、与えられたwolfssl_ctxの暗号スイートリストを設定します。このCipher Suiteリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。リスト内の暗号は、最高から最低への好みの順にソートされるべきです。wolfssl_ctx_set_cipher_list()の各呼び出しは、関数が呼び出されるたびに、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。暗号スイートリスト、リストは、ヌル終端テキスト文字列、およびコロン区切りリストです。たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src / internal.cのcipher_names []配列のフルネーム値です。(有効な暗号化値の明確なリストの場合はsrc / internal.cをチェックしてください)
  1881. \return SSL_SUCCESS 機能完了に成功したときに返されます。
  1882. \return SSL_FAILURE 失敗した場合に返されます。
  1883. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1884. _Example_
  1885. \code
  1886. WOLFSSL_CTX* ctx = 0;
  1887. ...
  1888. ret = wolfSSL_CTX_set_cipher_list(ctx,
  1889. “DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
  1890. if (ret != SSL_SUCCESS) {
  1891. // failed to set cipher suite list
  1892. }
  1893. \endcode
  1894. \sa wolfSSL_set_cipher_list
  1895. \sa wolfSSL_CTX_new
  1896. */
  1897. int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX* ctx, const char* list);
  1898. /*!
  1899. \ingroup Setup
  1900. \brief この関数は、特定のWolfSSLオブジェクト(SSLセッション)の暗号スイートリストを設定します。リスト内の暗号は、最高から最低への好みの順にソートされるべきです。wolfssl_set_cipher_list()の各呼び出しは、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストを提供されたリストにリセットします。暗号スイートリスト、リストは、ヌル終端テキスト文字列、およびコロン区切りリストです。例えば、リストのための1つの値は、「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」であり得る。有効な暗号化値は、src / internal.c(有効な暗号化値の明確なリストのリストの場合はsrc / internal.cを指定してください)のcipher_names []配列のフルネーム値です。
  1901. \return SSL_SUCCESS 機能完了に成功したときに返されます。
  1902. \return SSL_FAILURE 失敗した場合に返されます。
  1903. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1904. _Example_
  1905. \code
  1906. int ret = 0;
  1907. WOLFSSL* ssl = 0;
  1908. ...
  1909. ret = wolfSSL_set_cipher_list(ssl,
  1910. “DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
  1911. if (ret != SSL_SUCCESS) {
  1912. // failed to set cipher suite list
  1913. }
  1914. \endcode
  1915. \sa wolfSSL_CTX_set_cipher_list
  1916. \sa wolfSSL_new
  1917. */
  1918. int wolfSSL_set_cipher_list(WOLFSSL* ssl, const char* list);
  1919. /*!
  1920. \brief UDP I / Oはノンブロッキングです。アプリケーションがWolfSSLオブジェクトを作成した後、ブロックされていないUDPソケットで使用される場合は、WolfsSL_DTLS_SET_USING_NONBLOCK()を呼び出します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1921. \return none 返品不可。
  1922. \param ssl wolfssl_new()で作成されたDTLSセッションへのポインタ。
  1923. _Example_
  1924. \code
  1925. WOLFSSL* ssl = 0;
  1926. ...
  1927. wolfSSL_dtls_set_using_nonblock(ssl, 1);
  1928. \endcode
  1929. \sa wolfSSL_dtls_get_using_nonblock
  1930. \sa wolfSSL_dtls_got_timeout
  1931. \sa wolfSSL_dtls_get_current_timeout
  1932. */
  1933. void wolfSSL_dtls_set_using_nonblock(WOLFSSL* ssl, int nonblock);
  1934. /*!
  1935. \brief UDPを使用して非ブロッキングI / Oを使用する。WolfSSLがノンブロッキングI / Oを使用している場合、この関数は1を返します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。この機能はDTLSセッションにとってのみ意味があります。
  1936. \return 0 基礎となるI / Oがブロックされています。
  1937. \return 1 基礎となるI / Oは非ブロッキングです。
  1938. _Example_
  1939. \code
  1940. int ret = 0;
  1941. WOLFSSL* ssl = 0;
  1942. ...
  1943. ret = wolfSSL_dtls_get_using_nonblock(ssl);
  1944. if (ret == 1) {
  1945. // underlying I/O is non-blocking
  1946. }
  1947. ...
  1948. \endcode
  1949. \sa wolfSSL_dtls_set_using_nonblock
  1950. \sa wolfSSL_dtls_got_timeout
  1951. \sa wolfSSL_dtls_set_using_nonblock
  1952. */
  1953. int wolfSSL_dtls_get_using_nonblock(WOLFSSL*);
  1954. /*!
  1955. \brief wolfsslオブジェクト。遮断されていないソケットを使用する場合、ユーザーコード内の何かは、利用可能なRECVデータをチェックするときにいつでも待機しているのかを決定する必要があります。この関数によって返される値は、アプリケーションがどのくらい待機するかを示します。
  1956. \return seconds 現在のDTLSタイムアウト値(秒)
  1957. \return NOT_COMPILED_IN WolfSSLがDTLSサポートで構築されていない場合。
  1958. _Example_
  1959. \code
  1960. int timeout = 0;
  1961. WOLFSSL* ssl;
  1962. ...
  1963. timeout = wolfSSL_get_dtls_current_timeout(ssl);
  1964. printf(“DTLS timeout (sec) = %d\n”, timeout);
  1965. \endcode
  1966. \sa wolfSSL_dtls
  1967. \sa wolfSSL_dtls_get_peer
  1968. \sa wolfSSL_dtls_got_timeout
  1969. \sa wolfSSL_dtls_set_peer
  1970. */
  1971. int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl);
  1972. /*!
  1973. \ingroup Setup
  1974. \brief この関数はDTLSタイムアウトを設定します。
  1975. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。SSLのDTLS_TIMEOUT_INITとDTLS_TIMEOUTメンバーが設定されています。
  1976. \return BAD_FUNC_ARG wolfssl structがnullの場合、またはタイムアウトが0以下の場合に返されます。タイムアウト引数が許可されている最大値を超えると、戻ります。
  1977. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1978. _Example_
  1979. \code
  1980. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1981. WOLFSSL* ssl = wolfSSL_new(ctx);
  1982. int timeout = TIMEOUT;
  1983. ...
  1984. if(wolfSSL_dtls_set_timeout_init(ssl, timeout)){
  1985. // the dtls timeout was set
  1986. } else {
  1987. // Failed to set DTLS timeout.
  1988. }
  1989. \endcode
  1990. \sa wolfSSL_dtls_set_timeout_max
  1991. \sa wolfSSL_dtls_got_timeout
  1992. */
  1993. int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int);
  1994. /*!
  1995. \brief
  1996. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1997. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合、またはTIMEOUT引数がゼロ以下である場合、またはWolfSSL構造体のDTLS_TIMEOUT_INITメンバーよりも小さい場合に返されます。
  1998. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1999. _Example_
  2000. \code
  2001. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  2002. WOLFSSL* ssl = wolfSSL_new(ctx);
  2003. int timeout = TIMEOUTVAL;
  2004. ...
  2005. int ret = wolfSSL_dtls_set_timeout_max(ssl);
  2006. if(!ret){
  2007. // Failed to set the max timeout
  2008. }
  2009. \endcode
  2010. \sa wolfSSL_dtls_set_timeout_init
  2011. \sa wolfSSL_dtls_got_timeout
  2012. */
  2013. int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int);
  2014. /*!
  2015. \brief 制御コードが送信がタイムアウトしたと考えると、WolfSSLオブジェクトで呼び出されます。タイムアウト値の調整を含む、最後の送信を再試行するために必要な操作を実行します。長すぎると、これは失敗を返します。
  2016. \return SSL_SUCCESS 成功に戻ります
  2017. \return SSL_FATAL_ERROR ピアからの応答を得ることなく、再送信/タイムアウトが多すぎる場合に返されます。
  2018. \return NOT_COMPILED_IN WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2019. _Example_
  2020. \code
  2021. See the following files for usage examples:
  2022. <wolfssl_root>/examples/client/client.c
  2023. <wolfssl_root>/examples/server/server.c
  2024. \endcode
  2025. \sa wolfSSL_dtls_get_current_timeout
  2026. \sa wolfSSL_dtls_get_peer
  2027. \sa wolfSSL_dtls_set_peer
  2028. \sa wolfSSL_dtls
  2029. */
  2030. int wolfSSL_dtls_got_timeout(WOLFSSL* ssl);
  2031. /*!
  2032. \brief DTLSを使用するように構成されています。
  2033. \return 1 SSLセッション(SSL)がDTLSを使用するように設定されている場合、この関数は1を返します。
  2034. \return 0 そうでなければ。
  2035. _Example_
  2036. \code
  2037. int ret = 0;
  2038. WOLFSSL* ssl;
  2039. ...
  2040. ret = wolfSSL_dtls(ssl);
  2041. if (ret) {
  2042. // SSL session has been configured to use DTLS
  2043. }
  2044. \endcode
  2045. \sa wolfSSL_dtls_get_current_timeout
  2046. \sa wolfSSL_dtls_get_peer
  2047. \sa wolfSSL_dtls_got_timeout
  2048. \sa wolfSSL_dtls_set_peer
  2049. */
  2050. int wolfSSL_dtls(WOLFSSL* ssl);
  2051. /*!
  2052. \brief ピースズ。
  2053. \return SSL_SUCCESS 成功に戻ります。
  2054. \return SSL_FAILURE 失敗したときに返されます。
  2055. \return SSL_NOT_IMPLEMENTED WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2056. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2057. \param peer ピアのSOCKADDR_IN構造へのポインタ。
  2058. _Example_
  2059. \code
  2060. int ret = 0;
  2061. WOLFSSL* ssl;
  2062. sockaddr_in addr;
  2063. ...
  2064. ret = wolfSSL_dtls_set_peer(ssl, &addr, sizeof(addr));
  2065. if (ret != SSL_SUCCESS) {
  2066. // failed to set DTLS peer
  2067. }
  2068. \endcode
  2069. \sa wolfSSL_dtls_get_current_timeout
  2070. \sa wolfSSL_dtls_get_peer
  2071. \sa wolfSSL_dtls_got_timeout
  2072. \sa wolfSSL_dtls
  2073. */
  2074. int wolfSSL_dtls_set_peer(WOLFSSL* ssl, void* peer, unsigned int peerSz);
  2075. /*!
  2076. \brief DTLSピアこの関数は、PeerszをSSLセッションに格納されている実際のDTLSピアサイズに比較します。ピアがピアに収まる場合、ピアのSOCKADDR_INはピアにコピーされ、ピースがピアのサイズに設定されます。
  2077. \return SSL_SUCCESS 成功に戻ります。
  2078. \return SSL_FAILURE 失敗したときに返されます。
  2079. \return SSL_NOT_IMPLEMENTED WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2080. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2081. \param peer ピアのSOCKADDR_IN構造を保存するには、メモリの場所へのポインタ。
  2082. _Example_
  2083. \code
  2084. int ret = 0;
  2085. WOLFSSL* ssl;
  2086. sockaddr_in addr;
  2087. ...
  2088. ret = wolfSSL_dtls_get_peer(ssl, &addr, sizeof(addr));
  2089. if (ret != SSL_SUCCESS) {
  2090. // failed to get DTLS peer
  2091. }
  2092. \endcode
  2093. \sa wolfSSL_dtls_get_current_timeout
  2094. \sa wolfSSL_dtls_got_timeout
  2095. \sa wolfSSL_dtls_set_peer
  2096. \sa wolfSSL_dtls
  2097. */
  2098. int wolfSSL_dtls_get_peer(WOLFSSL* ssl, void* peer, unsigned int* peerSz);
  2099. /*!
  2100. \ingroup Debug
  2101. \brief この関数は、wolfssl_get_error()によって返されたエラーコードをより人間が読めるエラー文字列に変換します。errnumberは、wolfssl_get_error()によって返され、データはエラー文字列が配置されるストレージバッファです。MAX_ERROR_SZで定義されているように、データの最大長はデフォルトで80文字です。これはwolfssl / wolfcrypt / error.hです。
  2102. \return success 正常に完了すると、この関数はデータに返されるのと同じ文字列を返します。
  2103. \return failure 失敗すると、この関数は適切な障害理由、MSGを持つ文字列を返します。
  2104. \param errNumber wolfssl_get_error()によって返されたエラーコード。
  2105. _Example_
  2106. \code
  2107. int err = 0;
  2108. WOLFSSL* ssl;
  2109. char buffer[80];
  2110. ...
  2111. err = wolfSSL_get_error(ssl, 0);
  2112. wolfSSL_ERR_error_string(err, buffer);
  2113. printf(“err = %d, %s\n”, err, buffer);
  2114. \endcode
  2115. \sa wolfSSL_get_error
  2116. \sa wolfSSL_ERR_error_string_n
  2117. \sa wolfSSL_ERR_print_errors_fp
  2118. \sa wolfSSL_load_error_strings
  2119. */
  2120. char* wolfSSL_ERR_error_string(unsigned long,char*);
  2121. /*!
  2122. \ingroup Debug
  2123. \brief この関数は、wolfssl_err_error_string()のバージョンです。ここで、lenはbufに書き込まれ得る最大文字数を指定します。wolfssl_err_error_string()と同様に、この関数はwolfssl_get_error()から返されたエラーコードをより人間が読めるエラー文字列に変換します。人間が読める文字列はbufに置かれます。
  2124. \return none いいえ返します。
  2125. \param e wolfssl_get_error()によって返されたエラーコード。
  2126. \param buff eと一致する人間が読めるエラー文字列を含む出力バッファ。
  2127. _Example_
  2128. \code
  2129. int err = 0;
  2130. WOLFSSL* ssl;
  2131. char buffer[80];
  2132. ...
  2133. err = wolfSSL_get_error(ssl, 0);
  2134. wolfSSL_ERR_error_string_n(err, buffer, 80);
  2135. printf(“err = %d, %s\n”, err, buffer);
  2136. \endcode
  2137. \sa wolfSSL_get_error
  2138. \sa wolfSSL_ERR_error_string
  2139. \sa wolfSSL_ERR_print_errors_fp
  2140. \sa wolfSSL_load_error_strings
  2141. */
  2142. void wolfSSL_ERR_error_string_n(unsigned long e, char* buf,
  2143. unsigned long sz);
  2144. /*!
  2145. \ingroup TLS
  2146. \brief この関数は、Options構造体のClosEnotifyまたはConnresetまたはSentNotifyメンバーのシャットダウン条件をチェックします。オプション構造はWolfSSL構造内にあります。
  2147. \return 1 SSL_SENT_SHUTDOWNが返されます。
  2148. \return 2 ss_received_shutdownが返されます。
  2149. _Example_
  2150. \code
  2151. #include <wolfssl/ssl.h>
  2152. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  2153. WOLFSSL* ssl = WOLFSSL_new(ctx);
  2154. int ret;
  2155. ret = wolfSSL_get_shutdown(ssl);
  2156. if(ret == 1){
  2157. SSL_SENT_SHUTDOWN
  2158. } else if(ret == 2){
  2159. SSL_RECEIVED_SHUTDOWN
  2160. } else {
  2161. Fatal error.
  2162. }
  2163. \endcode
  2164. \sa wolfSSL_SESSION_free
  2165. */
  2166. int wolfSSL_get_shutdown(const WOLFSSL*);
  2167. /*!
  2168. \ingroup IO
  2169. \brief この関数は、オプション構造体の再開メンバを返します。フラグはセッションを再利用するかどうかを示します。そうでなければ、新しいセッションを確立する必要があります。
  2170. \return This 関数セッションの再利用のフラグを表すオプション構造に保持されているint型を返します。
  2171. _Example_
  2172. \code
  2173. WOLFSSL* ssl = wolfSSL_new(ctx);
  2174. if(!wolfSSL_session_reused(sslResume)){
  2175. // No session reuse allowed.
  2176. }
  2177. \endcode
  2178. \sa wolfSSL_SESSION_free
  2179. \sa wolfSSL_GetSessionIndex
  2180. \sa wolfSSL_memsave_session_cache
  2181. */
  2182. int wolfSSL_session_reused(WOLFSSL*);
  2183. /*!
  2184. \ingroup TLS
  2185. \brief この関数は、接続が確立されているかどうかを確認します。
  2186. \return 0 接続が確立されていない場合、すなわちWolfSSL構造体がNULLまたはハンドシェイクが行われていない場合に返されます。
  2187. \return 1 接続が確立されていない場合は返されます.WolfSSL構造体はNULLまたはハンドシェイクが行われていません。
  2188. \code
  2189. #include <wolfssl/ssl.h>
  2190. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  2191. WOLFSSL* ssl = wolfSSL_new(ctx);
  2192. ...
  2193. if(wolfSSL_is_init_finished(ssl)){
  2194. Handshake is done and connection is established
  2195. }
  2196. \endcode
  2197. \sa wolfSSL_set_accept_state
  2198. \sa wolfSSL_get_keys
  2199. \sa wolfSSL_set_shutdown
  2200. */
  2201. int wolfSSL_is_init_finished(WOLFSSL*);
  2202. /*!
  2203. \ingroup IO
  2204. \brief 文字列として使用されているSSLバージョンを返します。
  2205. \return "SSLv3" SSLv3を使う
  2206. \return "TLSv1" TLSV1を使用する
  2207. \return "TLSv1.1" TLSV1.1を使用する
  2208. \return "TLSv1.2" TLSV1.2を使用する
  2209. \return "TLSv1.3" TLSV1.3を使用する
  2210. \return "DTLS": DTLSを使う
  2211. \return "DTLSv1.2" DTLSV1.2を使用する
  2212. \return "unknown" どのバージョンのTLSが使用されているかを判断するという問題がありました。
  2213. _Example_
  2214. \code
  2215. wolfSSL_Init();
  2216. WOLFSSL_CTX* ctx;
  2217. WOLFSSL* ssl;
  2218. WOLFSSL_METHOD method = // Some wolfSSL method
  2219. ctx = wolfSSL_CTX_new(method);
  2220. ssl = wolfSSL_new(ctx);
  2221. printf(wolfSSL_get_version("Using version: %s", ssl));
  2222. \endcode
  2223. \sa wolfSSL_lib_version
  2224. */
  2225. const char* wolfSSL_get_version(WOLFSSL*);
  2226. /*!
  2227. \ingroup IO
  2228. \brief SSLセッションで現在の暗号スイートを返します。
  2229. \return ssl->options.cipherSuite 現在の暗号スイートを表す整数。
  2230. \return 0 提供されているSSLセッションはNULLです。
  2231. _Example_
  2232. \code
  2233. wolfSSL_Init();
  2234. WOLFSSL_CTX* ctx;
  2235. WOLFSSL* ssl;
  2236. WOLFSSL_METHOD method = // Some wolfSSL method
  2237. ctx = wolfSSL_CTX_new(method);
  2238. ssl = wolfSSL_new(ctx);
  2239. if(wolfSSL_get_current_cipher_suite(ssl) == 0)
  2240. {
  2241. // Error getting cipher suite
  2242. }
  2243. \endcode
  2244. \sa wolfSSL_CIPHER_get_name
  2245. \sa wolfSSL_get_current_cipher
  2246. \sa wolfSSL_get_cipher_list
  2247. */
  2248. int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl);
  2249. /*!
  2250. \ingroup IO
  2251. \brief この関数は、SSLセッションの現在の暗号へのポインタを返します。
  2252. \return The 関数WolfSSL構造体の暗号メンバーのアドレスを返します。これはwolfssl_icipher構造へのポインタです。
  2253. \return NULL WolfSSL構造がNULLの場合に返されます。
  2254. _Example_
  2255. \code
  2256. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  2257. WOLFSSL* ssl = wolfSSL_new(ctx);
  2258. WOLFSSL_CIPHER* cipherCurr = wolfSSL_get_current_cipher;
  2259. if(!cipherCurr){
  2260. // Failure case.
  2261. } else {
  2262. // The cipher was returned to cipherCurr
  2263. }
  2264. \endcode
  2265. \sa wolfSSL_get_cipher
  2266. \sa wolfSSL_get_cipher_name_internal
  2267. \sa wolfSSL_get_cipher_name
  2268. */
  2269. WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*);
  2270. /*!
  2271. \ingroup IO
  2272. \brief この関数は、SSLオブジェクト内のCipher Suiteと使用可能なスイートと一致し、文字列表現を返します。
  2273. \return string この関数は、一致した暗号スイートの文字列表現を返します。
  2274. \return none スイートが一致していない場合は「なし」を返します。
  2275. _Example_
  2276. \code
  2277. // gets cipher name in the format DHE_RSA ...
  2278. const char* wolfSSL_get_cipher_name_internal(WOLFSSL* ssl){
  2279. WOLFSSL_CIPHER* cipher;
  2280. const char* fullName;
  2281. cipher = wolfSSL_get_curent_cipher(ssl);
  2282. fullName = wolfSSL_CIPHER_get_name(cipher);
  2283. if(fullName){
  2284. // sanity check on returned cipher
  2285. }
  2286. \endcode
  2287. \sa wolfSSL_get_cipher
  2288. \sa wolfSSL_get_current_cipher
  2289. \sa wolfSSL_get_cipher_name_internal
  2290. \sa wolfSSL_get_cipher_name
  2291. */
  2292. const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher);
  2293. /*!
  2294. \ingroup IO
  2295. \brief この関数は、SSLオブジェクト内の暗号スイートと使用可能なスイートと一致します。
  2296. \return This 関数Suiteが一致させたString値を返します。スイートが一致していない場合は「なし」を返します。
  2297. _Example_
  2298. \code
  2299. #ifdef WOLFSSL_DTLS
  2300. // make sure a valid suite is used
  2301. if(wolfSSL_get_cipher(ssl) == NULL){
  2302. WOLFSSL_MSG(“Can not match cipher suite imported”);
  2303. return MATCH_SUITE_ERROR;
  2304. }
  2305. #endif // WOLFSSL_DTLS
  2306. \endcode
  2307. \sa wolfSSL_CIPHER_get_name
  2308. \sa wolfSSL_get_current_cipher
  2309. */
  2310. const char* wolfSSL_get_cipher(WOLFSSL*);
  2311. /*!
  2312. \ingroup Setup
  2313. \brief この関数は、wolfssl構造からのwolfssl_sessionを参照型として返します。これには、wolfssl_session_freeを呼び出してセッション参照を解除する必要があります。 wolfssl_sessionは、セッションの再開を実行するために必要なすべての必要な情報を含むことを指摘し、新しいハンドシェイクなしで接続を再確立します。セッションの再開の場合、wolfssl_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。これはセッションへのポインタを返します。後で、アプリケーションは新しいWolfSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。 WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。 wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションがそれを使用してそれを使用して解放される必要があります。
  2314. \return WOLFSSL_SESSION 成功の場合はセッションポインタを返します。
  2315. \return NULL SSLがNULLの場合、SSLセッションキャッシュが無効になっている場合、WolfSSLはセッションIDを使用できない、またはミューテックス関数が失敗します。
  2316. _Example_
  2317. \code
  2318. WOLFSSL* ssl;
  2319. WOLFSSL_SESSION* ses;
  2320. // attempt/complete handshake
  2321. wolfSSL_connect(ssl);
  2322. ses = wolfSSL_get1_session(ssl);
  2323. // check ses information
  2324. // disconnect / setup new SSL instance
  2325. wolfSSL_set_session(ssl, ses);
  2326. // attempt/resume handshake
  2327. wolfSSL_SESSION_free(ses);
  2328. \endcode
  2329. \sa wolfSSL_new
  2330. \sa wolfSSL_free
  2331. \sa wolfSSL_SESSION_free
  2332. */
  2333. WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl);
  2334. /*!
  2335. \ingroup Setup
  2336. \brief wolfsslv23_client_method()関数は、アプリケーションがクライアントであることを示すために使用され、SSL 3.0 - TLS 1.3の間でサーバーでサポートされている最高のプロトコルバージョンをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。WolfSSLクライアントとサーバーの両方が堅牢なバージョンのダウングレード機能を持っています。特定のプロトコルバージョンメソッドがどちらの側で使用されている場合は、そのバージョンのみがネゴシエートされたり、エラーが返されます。たとえば、TLSV1を使用し、SSLv3のみに接続しようとするクライアントは、TLSV1.1に接続しても失敗します。この問題を解決するために、wolfsslv23_client_method()関数を使用するクライアントは、サーバーでサポートされている最高のプロトコルバージョンを使用し、必要に応じてSSLv3にダウングレードします。この場合、クライアントはSSLv3 - TLSv1.3を実行しているサーバーに接続できるようになります。
  2337. \return pointer 成功すると、wolfssl_methodへのポインタがあります。
  2338. \return Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  2339. _Example_
  2340. \code
  2341. WOLFSSL_METHOD* method;
  2342. WOLFSSL_CTX* ctx;
  2343. method = wolfSSLv23_client_method();
  2344. if (method == NULL) {
  2345. // unable to get method
  2346. }
  2347. ctx = wolfSSL_CTX_new(method);
  2348. ...
  2349. \endcode
  2350. \sa wolfSSLv3_client_method
  2351. \sa wolfTLSv1_client_method
  2352. \sa wolfTLSv1_1_client_method
  2353. \sa wolfTLSv1_2_client_method
  2354. \sa wolfTLSv1_3_client_method
  2355. \sa wolfDTLSv1_client_method
  2356. \sa wolfSSL_CTX_new
  2357. */
  2358. WOLFSSL_METHOD* wolfSSLv23_client_method(void);
  2359. /*!
  2360. \ingroup IO
  2361. \brief これは、内部メモリバッファの先頭へのバイトポインタを設定するために使用されます。
  2362. \return size 成功すると、バッファのサイズが返されます
  2363. \return SSL_FATAL_ERROR エラーケースに遭遇した場合
  2364. \param bio のメモリバッファを取得するためのwolfssl_bio構造。
  2365. _Example_
  2366. \code
  2367. WOLFSSL_BIO* bio;
  2368. const byte* p;
  2369. int ret;
  2370. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2371. ret = wolfSSL_BIO_get_mem_data(bio, &p);
  2372. // check ret value
  2373. \endcode
  2374. \sa wolfSSL_BIO_new
  2375. \sa wolfSSL_BIO_s_mem
  2376. \sa wolfSSL_BIO_set_fp
  2377. \sa wolfSSL_BIO_free
  2378. */
  2379. int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,void* p);
  2380. /*!
  2381. \ingroup IO
  2382. \brief 使用するBIOのファイル記述子を設定します。
  2383. \return SSL_SUCCESS(1) 成功すると。
  2384. \param bio FDを設定するためのWOLFSSL_BIO構造。
  2385. \param fd 使用するファイル記述子。
  2386. _Example_
  2387. \code
  2388. WOLFSSL_BIO* bio;
  2389. int fd;
  2390. // setup bio
  2391. wolfSSL_BIO_set_fd(bio, fd, BIO_NOCLOSE);
  2392. \endcode
  2393. \sa wolfSSL_BIO_new
  2394. \sa wolfSSL_BIO_free
  2395. */
  2396. long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag);
  2397. /*!
  2398. \ingroup IO
  2399. \brief BIOが解放されたときにI / Oストリームを閉じる必要があることを示すために使用されるクローズフラグを設定します。
  2400. \return SSL_SUCCESS(1) 成功すると。
  2401. \param bio wolfssl_bio構造体。
  2402. _Example_
  2403. \code
  2404. WOLFSSL_BIO* bio;
  2405. // setup bio
  2406. wolfSSL_BIO_set_close(bio, BIO_NOCLOSE);
  2407. \endcode
  2408. \sa wolfSSL_BIO_new
  2409. \sa wolfSSL_BIO_free
  2410. */
  2411. int wolfSSL_BIO_set_close(WOLFSSL_BIO *b, long flag);
  2412. /*!
  2413. \ingroup IO
  2414. \brief これはBio_Socketタイプのwolfssl_bio_methodを取得するために使用されます。
  2415. \return WOLFSSL_BIO_METHOD ソケットタイプであるwolfssl_bio_method構造へのポインタ
  2416. _Example_
  2417. \code
  2418. WOLFSSL_BIO* bio;
  2419. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_socket);
  2420. \endcode
  2421. \sa wolfSSL_BIO_new
  2422. \sa wolfSSL_BIO_s_mem
  2423. */
  2424. WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void);
  2425. /*!
  2426. \ingroup IO
  2427. \brief これは、WolfSSL_BIOのライトバッファのサイズを設定するために使用されます。書き込みバッファが以前に設定されている場合、この関数はサイズをリセットするときに解放されます。読み書きインデックスを0にリセットするという点で、wolfssl_bio_resetに似ています。
  2428. \return SSL_SUCCESS 書き込みバッファの設定に成功しました。
  2429. \return SSL_FAILURE エラーケースに遭遇した場合
  2430. \param bio FDを設定するためのWOLFSSL_BIO構造。
  2431. _Example_
  2432. \code
  2433. WOLFSSL_BIO* bio;
  2434. int ret;
  2435. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2436. ret = wolfSSL_BIO_set_write_buf_size(bio, 15000);
  2437. // check return value
  2438. \endcode
  2439. \sa wolfSSL_BIO_new
  2440. \sa wolfSSL_BIO_s_mem
  2441. \sa wolfSSL_BIO_free
  2442. */
  2443. int wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size);
  2444. /*!
  2445. \ingroup IO
  2446. \brief これは2つのBIOSを一緒にペアリングするために使用されます。一対のBIOSは、2つの方法パイプと同様に、他方で読み取られることができ、その逆も同様である。BIOSの両方が同じスレッド内にあることが予想されます。この機能はスレッドセーフではありません。2つのBIOSのうちの1つを解放すると、両方ともペアになっています。書き込みバッファサイズが以前に設定されていない場合、それはペアになる前に17000(wolfssl_bio_size)のデフォルトサイズに設定されます。
  2447. \return SSL_SUCCESS 2つのBIOSをうまくペアリングします。
  2448. \return SSL_FAILURE エラーケースに遭遇した場合
  2449. \param b1 ペアを設定するためのwolfssl_bio構造。
  2450. _Example_
  2451. \code
  2452. WOLFSSL_BIO* bio;
  2453. WOLFSSL_BIO* bio2;
  2454. int ret;
  2455. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
  2456. bio2 = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
  2457. ret = wolfSSL_BIO_make_bio_pair(bio, bio2);
  2458. // check ret value
  2459. \endcode
  2460. \sa wolfSSL_BIO_new
  2461. \sa wolfSSL_BIO_s_mem
  2462. \sa wolfSSL_BIO_free
  2463. */
  2464. int wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2);
  2465. /*!
  2466. \ingroup IO
  2467. \brief これは、読み取り要求フラグを0に戻すために使用されます。
  2468. \return SSL_SUCCESS 値を正常に設定します。
  2469. \return SSL_FAILURE エラーケースに遭遇した場合
  2470. _Example_
  2471. \code
  2472. WOLFSSL_BIO* bio;
  2473. int ret;
  2474. ...
  2475. ret = wolfSSL_BIO_ctrl_reset_read_request(bio);
  2476. // check ret value
  2477. \endcode
  2478. \sa wolfSSL_BIO_new, wolfSSL_BIO_s_mem
  2479. \sa wolfSSL_BIO_new, wolfSSL_BIO_free
  2480. */
  2481. int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b);
  2482. /*!
  2483. \ingroup IO
  2484. \brief これは、読み取り用のバッファポインタを取得するために使用されます。WOLFSSL_BIO_NREADとは異なり、内部読み取りインデックスは関数呼び出しから返された番号によって高度にはなりません。返される値を超えて読み取ると、アレイの境界から読み出される可能性があります。
  2485. \return >=0 成功すると、読み取るバイト数を返します
  2486. \param bio wolfssl_bio構造体から読み取り。
  2487. _Example_
  2488. \code
  2489. WOLFSSL_BIO* bio;
  2490. char* bufPt;
  2491. int ret;
  2492. // set up bio
  2493. ret = wolfSSL_BIO_nread0(bio, &bufPt); // read as many bytes as possible
  2494. // handle negative ret check
  2495. // read ret bytes from bufPt
  2496. \endcode
  2497. \sa wolfSSL_BIO_new
  2498. \sa wolfSSL_BIO_nwrite0
  2499. */
  2500. int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf);
  2501. /*!
  2502. \ingroup IO
  2503. \brief これは、読み取り用のバッファポインタを取得するために使用されます。内部読み取りインデックスは、読み取り元のバッファの先頭に指されているBUFを使用して、関数呼び出しから返される数によって高度です。数numで要求された値よりもバイトが少ない場合、より少ない値が返されます。返される値を超えて読み取ると、アレイの境界から読み出される可能性があります。
  2504. \return >=0 成功すると、読み取るバイト数を返します
  2505. \return WOLFSSL_BIO_ERROR(-1) Return -1を読むものではないエラーケースについて
  2506. \param bio wolfssl_bio構造体から読み取り。
  2507. \param buf 読み取り配列の先頭に設定するポインタ。
  2508. _Example_
  2509. \code
  2510. WOLFSSL_BIO* bio;
  2511. char* bufPt;
  2512. int ret;
  2513. // set up bio
  2514. ret = wolfSSL_BIO_nread(bio, &bufPt, 10); // try to read 10 bytes
  2515. // handle negative ret check
  2516. // read ret bytes from bufPt
  2517. \endcode
  2518. \sa wolfSSL_BIO_new
  2519. \sa wolfSSL_BIO_nwrite
  2520. */
  2521. int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num);
  2522. /*!
  2523. \ingroup IO
  2524. \brief 関数によって返される数のバイトを書き込むためにバッファーへのポインタを取得します。返されるポインタに追加のバイトを書き込んだ場合、返された値は範囲外の書き込みにつながる可能性があります。
  2525. \return int 返されたバッファポインタに書き込むことができるバイト数を返します。
  2526. \return WOLFSSL_BIO_UNSET(-2) バイオペアの一部ではない場合
  2527. \return WOLFSSL_BIO_ERROR(-1) に書くべき部屋がこれ以上ない場合
  2528. \param bio WOLFSSL_BIO構造に書き込む構造。
  2529. \param buf 書き込むためのバッファへのポインタ。
  2530. _Example_
  2531. \code
  2532. WOLFSSL_BIO* bio;
  2533. char* bufPt;
  2534. int ret;
  2535. // set up bio
  2536. ret = wolfSSL_BIO_nwrite(bio, &bufPt, 10); // try to write 10 bytes
  2537. // handle negative ret check
  2538. // write ret bytes to bufPt
  2539. \endcode
  2540. \sa wolfSSL_BIO_new
  2541. \sa wolfSSL_BIO_free
  2542. \sa wolfSSL_BIO_nread
  2543. */
  2544. int wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num);
  2545. /*!
  2546. \ingroup IO
  2547. \brief バイオを初期状態にリセットします。タイプBIO_BIOの例として、これは読み書きインデックスをリセットします。
  2548. \return 0 バイオのリセットに成功しました。
  2549. \return WOLFSSL_BIO_ERROR(-1) 不良入力または失敗したリセットで返されます。
  2550. _Example_
  2551. \code
  2552. WOLFSSL_BIO* bio;
  2553. // setup bio
  2554. wolfSSL_BIO_reset(bio);
  2555. //use pt
  2556. \endcode
  2557. \sa wolfSSL_BIO_new
  2558. \sa wolfSSL_BIO_free
  2559. */
  2560. int wolfSSL_BIO_reset(WOLFSSL_BIO *bio);
  2561. /*!
  2562. \ingroup IO
  2563. \brief この関数は、指定されたオフセットへのファイルポインタを調整します。これはファイルの先頭からのオフセットです。
  2564. \return 0 正常に探しています。
  2565. \return -1 エラーケースに遭遇した場合
  2566. \param bio 設定するwolfssl_bio構造体。
  2567. _Example_
  2568. \code
  2569. WOLFSSL_BIO* bio;
  2570. XFILE fp;
  2571. int ret;
  2572. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  2573. ret = wolfSSL_BIO_set_fp(bio, &fp);
  2574. // check ret value
  2575. ret = wolfSSL_BIO_seek(bio, 3);
  2576. // check ret value
  2577. \endcode
  2578. \sa wolfSSL_BIO_new
  2579. \sa wolfSSL_BIO_s_mem
  2580. \sa wolfSSL_BIO_set_fp
  2581. \sa wolfSSL_BIO_free
  2582. */
  2583. int wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs);
  2584. /*!
  2585. \ingroup IO
  2586. \brief これはファイルに設定および書き込むために使用されます。現在ファイル内のデータを上書きし、BIOが解放されたときにファイルを閉じるように設定されます。
  2587. \return SSL_SUCCESS ファイルの開きと設定に成功しました。
  2588. \return SSL_FAILURE エラーケースに遭遇した場合
  2589. \param bio ファイルを設定するwolfssl_bio構造体。
  2590. _Example_
  2591. \code
  2592. WOLFSSL_BIO* bio;
  2593. int ret;
  2594. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  2595. ret = wolfSSL_BIO_write_filename(bio, “test.txt”);
  2596. // check ret value
  2597. \endcode
  2598. \sa wolfSSL_BIO_new
  2599. \sa wolfSSL_BIO_s_file
  2600. \sa wolfSSL_BIO_set_fp
  2601. \sa wolfSSL_BIO_free
  2602. */
  2603. int wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name);
  2604. /*!
  2605. \ingroup IO
  2606. \brief これはファイル値の終わりを設定するために使用されます。一般的な値は予想される正の値と混同されないように-1です。
  2607. \return 0 完了に戻りました
  2608. \param bio ファイル値の終わりを設定するためのwolfssl_bio構造体。
  2609. _Example_
  2610. \code
  2611. WOLFSSL_BIO* bio;
  2612. int ret;
  2613. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2614. ret = wolfSSL_BIO_set_mem_eof_return(bio, -1);
  2615. // check ret value
  2616. \endcode
  2617. \sa wolfSSL_BIO_new
  2618. \sa wolfSSL_BIO_s_mem
  2619. \sa wolfSSL_BIO_set_fp
  2620. \sa wolfSSL_BIO_free
  2621. */
  2622. long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v);
  2623. /*!
  2624. \ingroup IO
  2625. \brief これはWolfSSL_BIOメモリポインタのゲッター関数です。
  2626. \return SSL_SUCCESS ポインタSSL_SUCCESSを返す正常に(現在1の値)。
  2627. \return SSL_FAILURE null引数が渡された場合(現在0の値)に渡された場合は返されます。
  2628. \param bio メモリポインタを取得するためのWOLFSSL_BIO構造体へのポインタ。
  2629. _Example_
  2630. \code
  2631. WOLFSSL_BIO* bio;
  2632. WOLFSSL_BUF_MEM* pt;
  2633. // setup bio
  2634. wolfSSL_BIO_get_mem_ptr(bio, &pt);
  2635. //use pt
  2636. \endcode
  2637. \sa wolfSSL_BIO_new
  2638. \sa wolfSSL_BIO_s_mem
  2639. */
  2640. long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **m);
  2641. /*!
  2642. \ingroup CertsKeys
  2643. \brief この関数はX509の名前をバッファにコピーします。
  2644. \return A WOLFSSL_X509_NAME構造名メンバーのデータが正常に実行された場合、バッファへのPOINTER found struffer nameメンバーのデータが返されます。
  2645. \param name wolfssl_x509構造へのポインタ。
  2646. \param in wolfssl_x509_name構造からコピーされた名前を保持するためのバッファ。
  2647. _Example_
  2648. \code
  2649. WOLFSSL_X509 x509;
  2650. char* name;
  2651. ...
  2652. name = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
  2653. if(name <= 0){
  2654. // There’s nothing in the buffer.
  2655. }
  2656. \endcode
  2657. \sa wolfSSL_X509_get_subject_name
  2658. \sa wolfSSL_X509_get_issuer_name
  2659. \sa wolfSSL_X509_get_isCA
  2660. \sa wolfSSL_get_peer_certificate
  2661. \sa wolfSSL_X509_version
  2662. */
  2663. char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME* name, char* in, int sz);
  2664. /*!
  2665. \ingroup CertsKeys
  2666. \brief この関数は証明書発行者の名前を返します。
  2667. \return point WOLFSSL_X509構造体の発行者メンバーへのポインタが返されます。
  2668. \return NULL 渡された証明書がNULLの場合
  2669. _Example_
  2670. \code
  2671. WOLFSSL_X509* x509;
  2672. WOLFSSL_X509_NAME issuer;
  2673. ...
  2674. issuer = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
  2675. if(!issuer){
  2676. // NULL was returned
  2677. } else {
  2678. // issuer hods the name of the certificate issuer.
  2679. }
  2680. \endcode
  2681. \sa wolfSSL_X509_get_subject_name
  2682. \sa wolfSSL_X509_get_isCA
  2683. \sa wolfSSL_get_peer_certificate
  2684. \sa wolfSSL_X509_NAME_oneline
  2685. */
  2686. WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*);
  2687. /*!
  2688. \ingroup CertsKeys
  2689. \brief この関数は、wolfssl_x509構造の件名メンバーを返します。
  2690. \return pointer wolfssl_x509_name構造へのポインタ。WOLFSSL_X509構造体がNULLの場合、または構造体の件名メンバーがNULLの場合、ポインタはNULLになることがあります。
  2691. _Example_
  2692. \code
  2693. WOLFSSL_X509* cert;
  2694. WOLFSSL_X509_NAME name;
  2695. name = wolfSSL_X509_get_subject_name(cert);
  2696. if(name == NULL){
  2697. // Deal with the NULL cacse
  2698. }
  2699. \endcode
  2700. \sa wolfSSL_X509_get_issuer_name
  2701. \sa wolfSSL_X509_get_isCA
  2702. \sa wolfSSL_get_peer_certificate
  2703. */
  2704. WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509*);
  2705. /*!
  2706. \ingroup CertsKeys
  2707. \brief wolfssl_x509構造のISCAメンバーをチェックして値を返します。
  2708. \return isCA wolfssl_x509構造のISCAメンバー内の値を返します。
  2709. \return 0 有効なX509構造が渡されない場合は返されます。
  2710. _Example_
  2711. \code
  2712. WOLFSSL* ssl;
  2713. ...
  2714. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  2715. WOLFSSL* ssl = wolfSSL_new(ctx);
  2716. ...
  2717. if(wolfSSL_X509_get_isCA(ssl)){
  2718. // This is the CA
  2719. }else {
  2720. // Failure case
  2721. }
  2722. \endcode
  2723. \sa wolfSSL_X509_get_issuer_name
  2724. \sa wolfSSL_X509_get_isCA
  2725. */
  2726. int wolfSSL_X509_get_isCA(WOLFSSL_X509*);
  2727. /*!
  2728. \ingroup CertsKeys
  2729. \brief この関数は、渡されたNID値に関連するテキストを取得します。
  2730. \return int テキストバッファのサイズを返します。
  2731. \param name wolfssl_x509_nameテキストを検索する。
  2732. \param nid 検索するNID。
  2733. \param buf 見つかったときにテキストを保持するためのバッファー。
  2734. _Example_
  2735. \code
  2736. WOLFSSL_X509_NAME* name;
  2737. char buffer[100];
  2738. int bufferSz;
  2739. int ret;
  2740. // get WOLFSSL_X509_NAME
  2741. ret = wolfSSL_X509_NAME_get_text_by_NID(name, NID_commonName,
  2742. buffer, bufferSz);
  2743. //check ret value
  2744. \endcode
  2745. \sa none
  2746. */
  2747. int wolfSSL_X509_NAME_get_text_by_NID(WOLFSSL_X509_NAME* name, int nid,
  2748. char* buf, int len);
  2749. /*!
  2750. \ingroup CertsKeys
  2751. \brief この関数は、wolfssl_x509構造のSigoidメンバーに格納されている値を返します。
  2752. \return 0 wolfssl_x509構造がNULLの場合に返されます。
  2753. \return int x509オブジェクトから取得された整数値が返されます。
  2754. _Example_
  2755. \code
  2756. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2757. DYNAMIC_TYPE_X509);
  2758. ...
  2759. int x509SigType = wolfSSL_X509_get_signature_type(x509);
  2760. if(x509SigType != EXPECTED){
  2761. // Deal with an unexpected value
  2762. }
  2763. \endcode
  2764. \sa wolfSSL_X509_get_signature
  2765. \sa wolfSSL_X509_version
  2766. \sa wolfSSL_X509_get_der
  2767. \sa wolfSSL_X509_get_serial_number
  2768. \sa wolfSSL_X509_notBefore
  2769. \sa wolfSSL_X509_notAfter
  2770. \sa wolfSSL_X509_free
  2771. */
  2772. int wolfSSL_X509_get_signature_type(WOLFSSL_X509*);
  2773. /*!
  2774. \brief
  2775. _Example_
  2776. \code
  2777. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALOC(sizeof(WOLFSSL_X509), NULL,
  2778. DYNAMIC_TYPE_X509) ;
  2779. wolfSSL_X509_free(x509);
  2780. \endcode
  2781. \sa wolfSSL_X509_get_signature
  2782. \sa wolfSSL_X509_version
  2783. \sa wolfSSL_X509_get_der
  2784. \sa wolfSSL_X509_get_serial_number
  2785. \sa wolfSSL_X509_notBefore
  2786. \sa wolfSSL_X509_notAfter
  2787. */
  2788. void wolfSSL_X509_free(WOLFSSL_X509* x509);
  2789. /*!
  2790. \ingroup CertsKeys
  2791. \brief x509署名を取得し、それをバッファに保存します。
  2792. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。署名がバッファにロードされます。
  2793. \return SSL_FATAL_ERRROR X509構造体またはBUFSZメンバーがNULLの場合に返します。SIG構造の長さメンバのチェックもある(SIGはX509のメンバーである)。
  2794. \param x509 wolfssl_x509構造へのポインタ。
  2795. \param buf バッファへの文字ポインタ。
  2796. _Example_
  2797. \code
  2798. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  2799. DYNAMIC_TYPE_X509);
  2800. unsigned char* buf; // Initialize
  2801. int* bufSz = sizeof(buf)/sizeof(unsigned char);
  2802. ...
  2803. if(wolfSSL_X509_get_signature(x509, buf, bufSz) != SSL_SUCCESS){
  2804. // The function did not execute successfully.
  2805. } else{
  2806. // The buffer was written to correctly.
  2807. }
  2808. \endcode
  2809. \sa wolfSSL_X509_get_serial_number
  2810. \sa wolfSSL_X509_get_signature_type
  2811. \sa wolfSSL_X509_get_device_type
  2812. */
  2813. int wolfSSL_X509_get_signature(WOLFSSL_X509* x509, unsigned char* buf, int* bufSz);
  2814. /*!
  2815. \ingroup CertsKeys
  2816. \brief この関数は、wolfssl_x509_stre構造に証明書を追加します。
  2817. \return SSL_SUCCESS 証明書が正常に追加された場合。
  2818. \return SSL_FATAL_ERROR: 証明書が正常に追加されない場合
  2819. \param str 証明書を追加する証明書ストア。
  2820. _Example_
  2821. \code
  2822. WOLFSSL_X509_STORE* str;
  2823. WOLFSSL_X509* x509;
  2824. int ret;
  2825. ret = wolfSSL_X509_STORE_add_cert(str, x509);
  2826. //check ret value
  2827. \endcode
  2828. \sa wolfSSL_X509_free
  2829. */
  2830. int wolfSSL_X509_STORE_add_cert(WOLFSSL_X509_STORE* store, WOLFSSL_X509* x509);
  2831. /*!
  2832. \ingroup CertsKeys
  2833. \brief この関数は、wolfssl_x509_store_ctx構造体のチェーン変数のgetter関数です。現在チェーンは取り込まれていません。
  2834. \return pointer 成功した場合wolfssl_stack(stack_of(wolfssl_x509))ポインタと同じ
  2835. \return Null 失敗すると
  2836. _Example_
  2837. \code
  2838. WOLFSSL_STACK* sk;
  2839. WOLFSSL_X509_STORE_CTX* ctx;
  2840. sk = wolfSSL_X509_STORE_CTX_get_chain(ctx);
  2841. //check sk for NULL and then use it. sk needs freed after done.
  2842. \endcode
  2843. \sa wolfSSL_sk_X509_free
  2844. */
  2845. WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain(
  2846. WOLFSSL_X509_STORE_CTX* ctx);
  2847. /*!
  2848. \ingroup CertsKeys
  2849. \brief この関数は、渡されたwolfssl_x509_store構造体の動作を変更するためのフラグを取ります。使用されるフラグの例はwolfssl_crl_checkです。
  2850. \return SSL_SUCCESS フラグを設定するときにエラーが発生しなかった場合。
  2851. \return <0 障害の際に負の値が返されます。
  2852. \param str フラグを設定する証明書ストア。
  2853. _Example_
  2854. \code
  2855. WOLFSSL_X509_STORE* str;
  2856. int ret;
  2857. // create and set up str
  2858. ret = wolfSSL_X509_STORE_set_flags(str, WOLFSSL_CRL_CHECKALL);
  2859. If (ret != SSL_SUCCESS) {
  2860. //check ret value and handle error case
  2861. }
  2862. \endcode
  2863. \sa wolfSSL_X509_STORE_new
  2864. \sa wolfSSL_X509_STORE_free
  2865. */
  2866. int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store,
  2867. unsigned long flag);
  2868. /*!
  2869. \ingroup CertsKeys
  2870. \brief これは、BYTEアレイとして符号化された有効性の証明書「NOT BEFISE」を機能します。
  2871. \return NULL wolfssl_x509構造がNULLの場合に返されます。
  2872. \return byte NetBeforEdataを含む返されます。
  2873. _Example_
  2874. \code
  2875. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2876. DYNAMIC_TYPE_X509);
  2877. ...
  2878. byte* notBeforeData = wolfSSL_X509_notBefore(x509);
  2879. \endcode
  2880. \sa wolfSSL_X509_get_signature
  2881. \sa wolfSSL_X509_version
  2882. \sa wolfSSL_X509_get_der
  2883. \sa wolfSSL_X509_get_serial_number
  2884. \sa wolfSSL_X509_notAfter
  2885. \sa wolfSSL_X509_free
  2886. */
  2887. const byte* wolfSSL_X509_notBefore(WOLFSSL_X509* x509);
  2888. /*!
  2889. \ingroup CertsKeys
  2890. \brief これは、BYTE配列として符号化された有効性の証明書「未処理」を機能します。
  2891. \return NULL wolfssl_x509構造がNULLの場合に返されます。
  2892. \return byte NOTAFTERDATAを含む返されます。
  2893. _Example_
  2894. \code
  2895. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2896. DYNAMIC_TYPE_X509);
  2897. ...
  2898. byte* notAfterData = wolfSSL_X509_notAfter(x509);
  2899. \endcode
  2900. \sa wolfSSL_X509_get_signature
  2901. \sa wolfSSL_X509_version
  2902. \sa wolfSSL_X509_get_der
  2903. \sa wolfSSL_X509_get_serial_number
  2904. \sa wolfSSL_X509_notBefore
  2905. \sa wolfSSL_X509_free
  2906. */
  2907. const byte* wolfSSL_X509_notAfter(WOLFSSL_X509* x509);
  2908. /*!
  2909. \ingroup Setup
  2910. \brief この関数は、wolfssl_asn1_integer値をwolfssl_bignum構造にコピーするために使用されます。
  2911. \return pointer wolfssl_asn1_integer値を正常にコピーすると、wolfssl_bignumポインタが返されます。
  2912. \return Null 失敗すると。
  2913. \param ai wolfssl asn1_integer構造体からコピーする。
  2914. _Example_
  2915. \code
  2916. WOLFSSL_ASN1_INTEGER* ai;
  2917. WOLFSSL_BIGNUM* bn;
  2918. // create ai
  2919. bn = wolfSSL_ASN1_INTEGER_to_BN(ai, NULL);
  2920. // or if having already created bn and wanting to reuse structure
  2921. // wolfSSL_ASN1_INTEGER_to_BN(ai, bn);
  2922. // check bn is or return value is not NULL
  2923. \endcode
  2924. \sa none
  2925. */
  2926. WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai,
  2927. WOLFSSL_BIGNUM *bn);
  2928. /*!
  2929. \ingroup Setup
  2930. \brief この関数は、wolfssl_ctx構造で構築されている内部チェーンに証明書を追加します。
  2931. \return SSL_SUCCESS 証明書の追加に成功したら。
  2932. \return SSL_FAILURE チェーンに証明書を追加することが失敗した場合。
  2933. \param ctx 証明書を追加するためのwolfssl_ctx構造。
  2934. _Example_
  2935. \code
  2936. WOLFSSL_CTX* ctx;
  2937. WOLFSSL_X509* x509;
  2938. int ret;
  2939. // create ctx
  2940. ret = wolfSSL_CTX_add_extra_chain_cert(ctx, x509);
  2941. // check ret value
  2942. \endcode
  2943. \sa wolfSSL_CTX_new
  2944. \sa wolfSSL_CTX_free
  2945. */
  2946. long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX* ctx, WOLFSSL_X509* x509);
  2947. /*!
  2948. \ingroup Setup
  2949. \brief この関数は、wolfssl_ctx構造からGet Read Hapeフラグを返します。
  2950. \return flag 成功すると、読み取り先のフラグを返します。
  2951. \return SSL_FAILURE ctxがnullの場合、ssl_failureが返されます。
  2952. _Example_
  2953. \code
  2954. WOLFSSL_CTX* ctx;
  2955. int flag;
  2956. // setup ctx
  2957. flag = wolfSSL_CTX_get_read_ahead(ctx);
  2958. //check flag
  2959. \endcode
  2960. \sa wolfSSL_CTX_new
  2961. \sa wolfSSL_CTX_free
  2962. \sa wolfSSL_CTX_set_read_ahead
  2963. */
  2964. int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX*);
  2965. /*!
  2966. \ingroup Setup
  2967. \brief この関数は、wolfssl_ctx構造内の読み出し先のフラグを設定します。
  2968. \return SSL_SUCCESS CTXが先読みフラグを設定した場合。
  2969. \return SSL_FAILURE ctxがnullの場合、ssl_failureが返されます。
  2970. _Example_
  2971. \code
  2972. WOLFSSL_CTX* ctx;
  2973. int flag;
  2974. int ret;
  2975. // setup ctx
  2976. ret = wolfSSL_CTX_set_read_ahead(ctx, flag);
  2977. // check return value
  2978. \endcode
  2979. \sa wolfSSL_CTX_new
  2980. \sa wolfSSL_CTX_free
  2981. \sa wolfSSL_CTX_get_read_ahead
  2982. */
  2983. int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX* ctx, int v);
  2984. /*!
  2985. \ingroup Setup
  2986. \brief この関数はOCSPで使用するオプション引数を設定します。
  2987. \return SSL_FAILURE CTXまたはITのCERT ManagerがNULLの場合。
  2988. \return SSL_SUCCESS 正常に設定されている場合。
  2989. \param ctx wolfssl_ctx構造ユーザー引数を設定するための構造。
  2990. _Example_
  2991. \code
  2992. WOLFSSL_CTX* ctx;
  2993. void* data;
  2994. int ret;
  2995. // setup ctx
  2996. ret = wolfSSL_CTX_set_tlsext_status_arg(ctx, data);
  2997. //check ret value
  2998. \endcode
  2999. \sa wolfSSL_CTX_new
  3000. \sa wolfSSL_CTX_free
  3001. */
  3002. long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX* ctx, void* arg);
  3003. /*!
  3004. \ingroup Setup
  3005. \brief この関数は、PRFコールバックに渡すオプションの引数を設定します。
  3006. \return SSL_FAILURE CTXがNULLの場合
  3007. \return SSL_SUCCESS 正常に設定されている場合。
  3008. \param ctx wolfssl_ctx構造ユーザー引数を設定するための構造。
  3009. _Example_
  3010. \code
  3011. WOLFSSL_CTX* ctx;
  3012. void* data;
  3013. int ret;
  3014. // setup ctx
  3015. ret = wolfSSL_CTX_set_tlsext_opaques_prf_input_callback_arg(ctx, data);
  3016. //check ret value
  3017. \endcode
  3018. \sa wolfSSL_CTX_new
  3019. \sa wolfSSL_CTX_free
  3020. */
  3021. long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(
  3022. WOLFSSL_CTX* ctx, void* arg);
  3023. /*!
  3024. \ingroup Setup
  3025. \brief この関数は、SSLのオプションマスクを設定します。いくつかの有効なオプションは、ssl_op_all、ssl_op_cookie_exchange、ssl_op_no_sslv2、ssl_op_no_sslv3、ssl_op_no_tlsv1_1、ssl_op_no_tlsv1_2、ssl_op_no_compressionです。
  3026. \return val SSLに格納されている更新されたオプションマスク値を返します。
  3027. \param s オプションマスクを設定するためのWolfSSL構造。
  3028. _Example_
  3029. \code
  3030. WOLFSSL* ssl;
  3031. unsigned long mask;
  3032. mask = SSL_OP_NO_TLSv1
  3033. mask = wolfSSL_set_options(ssl, mask);
  3034. // check mask
  3035. \endcode
  3036. \sa wolfSSL_new
  3037. \sa wolfSSL_free
  3038. \sa wolfSSL_get_options
  3039. */
  3040. long wolfSSL_set_options(WOLFSSL *s, long op);
  3041. /*!
  3042. \ingroup Setup
  3043. \brief この関数は現在のオプションマスクを返します。
  3044. \return val SSLに格納されているマスク値を返します。
  3045. _Example_
  3046. \code
  3047. WOLFSSL* ssl;
  3048. unsigned long mask;
  3049. mask = wolfSSL_get_options(ssl);
  3050. // check mask
  3051. \endcode
  3052. \sa wolfSSL_new
  3053. \sa wolfSSL_free
  3054. \sa wolfSSL_set_options
  3055. */
  3056. long wolfSSL_get_options(const WOLFSSL *s);
  3057. /*!
  3058. \ingroup Setup
  3059. \brief これは、渡されたデバッグ引数を設定するために使用されます。
  3060. \return SSL_SUCCESS 設定の成功した引数について。
  3061. \return SSL_FAILURE NULL SSLが渡された場合。
  3062. \param ssl 引数を設定するためのWolfSSL構造。
  3063. _Example_
  3064. \code
  3065. WOLFSSL* ssl;
  3066. void* args;
  3067. int ret;
  3068. // create ssl object
  3069. ret = wolfSSL_set_tlsext_debug_arg(ssl, args);
  3070. // check ret value
  3071. \endcode
  3072. \sa wolfSSL_new
  3073. \sa wolfSSL_free
  3074. */
  3075. long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg);
  3076. /*!
  3077. \ingroup openSSL
  3078. \brief この関数は、サーバがOCSPステータス応答(OCSPステイプルとも呼ばれる)を送受信するクライアントアプリケーションが要求されたときに呼び出されます。
  3079. \return 1 成功すると。
  3080. \return 0 エラー時に。
  3081. \param s ssl_new()関数によって作成されたwolfssl構造体へのポインタ
  3082. _Example_
  3083. \code
  3084. WOLFSSL *ssl;
  3085. WOLFSSL_CTX *ctx;
  3086. int ret;
  3087. ctx = wolfSSL_CTX_new(wolfSSLv23_server_method());
  3088. ssl = wolfSSL_new(ctx);
  3089. ret = WolfSSL_set_tlsext_status_type(ssl,TLSEXT_STATUSTYPE_ocsp);
  3090. wolfSSL_free(ssl);
  3091. wolfSSL_CTX_free(ctx);
  3092. \endcode
  3093. \sa wolfSSL_new
  3094. \sa wolfSSL_CTX_new
  3095. \sa wolfSSL_free
  3096. \sa wolfSSL_CTX_free
  3097. */
  3098. long wolfSSL_set_tlsext_status_type(WOLFSSL *s, int type);
  3099. /*!
  3100. \ingroup Setup
  3101. \brief これは、ピアの証明書を確認しようとした後に結果を取得するために使用されます。
  3102. \return X509_V_OK 成功した検証について
  3103. \return SSL_FAILURE NULL SSLが渡された場合。
  3104. _Example_
  3105. \code
  3106. WOLFSSL* ssl;
  3107. long ret;
  3108. // attempt/complete handshake
  3109. ret = wolfSSL_get_verify_result(ssl);
  3110. // check ret value
  3111. \endcode
  3112. \sa wolfSSL_new
  3113. \sa wolfSSL_free
  3114. */
  3115. long wolfSSL_get_verify_result(const WOLFSSL *ssl);
  3116. /*!
  3117. \ingroup Debug
  3118. \brief この関数は、wolfssl_get_error()によって返されたエラーコードをより多くの人間が読めるエラー文字列に変換し、その文字列を出力ファイルに印刷します。ERRは、WOLFSSL_GET_ERROR()によって返され、FPがエラー文字列が配置されるファイルであるエラーコードです。
  3119. \return none いいえ返します。
  3120. \param fp に書き込まれる人間が読めるエラー文字列の出力ファイル。
  3121. _Example_
  3122. \code
  3123. int err = 0;
  3124. WOLFSSL* ssl;
  3125. FILE* fp = ...
  3126. ...
  3127. err = wolfSSL_get_error(ssl, 0);
  3128. wolfSSL_ERR_print_errors_fp(fp, err);
  3129. \endcode
  3130. \sa wolfSSL_get_error
  3131. \sa wolfSSL_ERR_error_string
  3132. \sa wolfSSL_ERR_error_string_n
  3133. \sa wolfSSL_load_error_strings
  3134. */
  3135. void wolfSSL_ERR_print_errors_fp(XFILE fp, int err);
  3136. /*!
  3137. \ingroup Debug
  3138. \brief この関数は提供されたコールバックを使用してエラー報告を処理します。コールバック関数はエラー回線ごとに実行されます。文字列、長さ、およびUSERDATAはコールバックパラメータに渡されます。
  3139. \return none いいえ返します。
  3140. \param cb コールバック関数
  3141. _Example_
  3142. \code
  3143. int error_cb(const char *str, size_t len, void *u)
  3144. { fprintf((FILE*)u, "%-*.*s\n", (int)len, (int)len, str); return 0; }
  3145. ...
  3146. FILE* fp = ...
  3147. wolfSSL_ERR_print_errors_cb(error_cb, fp);
  3148. \endcode
  3149. \sa wolfSSL_get_error
  3150. \sa wolfSSL_ERR_error_string
  3151. \sa wolfSSL_ERR_error_string_n
  3152. \sa wolfSSL_load_error_strings
  3153. */
  3154. void wolfSSL_ERR_print_errors_cb (
  3155. int (*cb)(const char *str, size_t len, void *u), void *u);
  3156. /*!
  3157. \brief wolfssl_ctx構造
  3158. \return none いいえ返します。
  3159. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3160. _Example_
  3161. \code
  3162. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
  3163. static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
  3164. char* identity, unsigned int id_max_len, unsigned char* key,
  3165. Unsigned int key_max_len){
  3166. wolfSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb);
  3167. \endcode
  3168. \sa wolfSSL_set_psk_client_callback
  3169. \sa wolfSSL_set_psk_server_callback
  3170. \sa wolfSSL_CTX_set_psk_server_callback
  3171. \sa wolfSSL_CTX_set_psk_client_callback
  3172. */
  3173. void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX* ctx,
  3174. wc_psk_client_callback);
  3175. /*!
  3176. \brief
  3177. \return none いいえ返します。
  3178. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3179. _Example_
  3180. \code
  3181. WOLFSSL* ssl;
  3182. static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
  3183. char* identity, unsigned int id_max_len, unsigned char* key,
  3184. Unsigned int key_max_len){
  3185. if(ssl){
  3186. wolfSSL_set_psk_client_callback(ssl, my_psk_client_cb);
  3187. } else {
  3188. // could not set callback
  3189. }
  3190. \endcode
  3191. \sa wolfSSL_CTX_set_psk_client_callback
  3192. \sa wolfSSL_CTX_set_psk_server_callback
  3193. \sa wolfSSL_set_psk_server_callback
  3194. */
  3195. void wolfSSL_set_psk_client_callback(WOLFSSL* ssl,
  3196. wc_psk_client_callback);
  3197. /*!
  3198. \ingroup CertsKeys
  3199. \brief この関数はPSKアイデンティティヒントを返します。
  3200. \return pointer WolfSSL構造の配列メンバーに格納されている値へのconst charポインタが返されます。
  3201. \return NULL WOLFSSLまたは配列構造がNULLの場合に返されます。
  3202. _Example_
  3203. \code
  3204. WOLFSSL* ssl = wolfSSL_new(ctx);
  3205. char* idHint;
  3206. ...
  3207. idHint = wolfSSL_get_psk_identity_hint(ssl);
  3208. if(idHint){
  3209. // The hint was retrieved
  3210. return idHint;
  3211. } else {
  3212. // Hint wasn’t successfully retrieved
  3213. }
  3214. \endcode
  3215. \sa wolfSSL_get_psk_identity
  3216. */
  3217. const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*);
  3218. /*!
  3219. \ingroup CertsKeys
  3220. \brief 関数は、配列構造のClient_Identityメンバーへの定数ポインタを返します。
  3221. \return string 配列構造のclient_identityメンバの文字列値。
  3222. \return NULL WOLFSSL構造がNULLの場合、またはWOLFSSL構造の配列メンバーがNULLの場合。
  3223. _Example_
  3224. \code
  3225. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  3226. WOLFSSL* ssl = wolfSSL_new(ctx);
  3227. const char* pskID;
  3228. ...
  3229. pskID = wolfSSL_get_psk_identity(ssl);
  3230. if(pskID == NULL){
  3231. // There is not a value in pskID
  3232. }
  3233. \endcode
  3234. \sa wolfSSL_get_psk_identity_hint
  3235. \sa wolfSSL_use_psk_identity_hint
  3236. */
  3237. const char* wolfSSL_get_psk_identity(const WOLFSSL*);
  3238. /*!
  3239. \ingroup CertsKeys
  3240. \brief この関数は、wolfssl_ctx構造体のserver_hintメンバーにHINT引数を格納します。
  3241. \return SSL_SUCCESS 機能の実行が成功したために返されます。
  3242. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3243. _Example_
  3244. \code
  3245. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3246. const char* hint;
  3247. int ret;
  3248. ret = wolfSSL_CTX_use_psk_identity_hint(ctx, hint);
  3249. if(ret == SSL_SUCCESS){
  3250. // Function was successful.
  3251. return ret;
  3252. } else {
  3253. // Failure case.
  3254. }
  3255. \endcode
  3256. \sa wolfSSL_use_psk_identity_hint
  3257. */
  3258. int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX* ctx, const char* hint);
  3259. /*!
  3260. \ingroup CertsKeys
  3261. \brief この関数は、wolfssl構造内の配列構造のserver_hintメンバーにHINT引数を格納します。
  3262. \return SSL_SUCCESS ヒントがWolfSSL構造に正常に保存された場合に返されます。
  3263. \return SSL_FAILURE WOLFSSLまたは配列構造がNULLの場合に返されます。
  3264. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3265. _Example_
  3266. \code
  3267. WOLFSSL* ssl = wolfSSL_new(ctx);
  3268. const char* hint;
  3269. ...
  3270. if(wolfSSL_use_psk_identity_hint(ssl, hint) != SSL_SUCCESS){
  3271. // Handle failure case.
  3272. }
  3273. \endcode
  3274. \sa wolfSSL_CTX_use_psk_identity_hint
  3275. */
  3276. int wolfSSL_use_psk_identity_hint(WOLFSSL* ssl, const char* hint);
  3277. /*!
  3278. \brief wolfssl_ctx構造体
  3279. \return none いいえ返します。
  3280. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3281. _Example_
  3282. \code
  3283. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3284. WOLFSSL* ssl = wolfSSL_new(ctx);
  3285. static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
  3286. unsigned char* key, unsigned int key_max_len)
  3287. {
  3288. // Function body.
  3289. }
  3290. if(ctx != NULL){
  3291. wolfSSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb);
  3292. } else {
  3293. // The CTX object was not properly initialized.
  3294. }
  3295. \endcode
  3296. \sa wc_psk_server_callback
  3297. \sa wolfSSL_set_psk_client_callback
  3298. \sa wolfSSL_set_psk_server_callback
  3299. \sa wolfSSL_CTX_set_psk_client_callback
  3300. */
  3301. void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX* ctx,
  3302. wc_psk_server_callback cb);
  3303. /*!
  3304. \brief WolfSSL構造オプションメンバー。
  3305. \return none いいえ返します。
  3306. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3307. _Example_
  3308. \code
  3309. WOLFSSL_CTX* ctx;
  3310. WOLFSSL* ssl;
  3311. static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
  3312. unsigned char* key, unsigned int key_max_len)
  3313. {
  3314. // Function body.
  3315. }
  3316. if(ssl != NULL && cb != NULL){
  3317. wolfSSL_set_psk_server_callback(ssl, my_psk_server_cb);
  3318. }
  3319. \endcode
  3320. \sa wolfSSL_set_psk_client_callback
  3321. \sa wolfSSL_CTX_set_psk_server_callback
  3322. \sa wolfSSL_CTX_set_psk_client_callback
  3323. \sa wolfSSL_get_psk_identity_hint
  3324. \sa wc_psk_server_callback
  3325. \sa InitSuites
  3326. */
  3327. void wolfSSL_set_psk_server_callback(WOLFSSL* ssl,
  3328. wc_psk_server_callback cb);
  3329. /*!
  3330. \brief
  3331. \return WOLFSSL_SUCCESS またはwolfssl_failure.
  3332. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3333. \sa wolfSSL_get_psk_callback_ctx
  3334. \sa wolfSSL_CTX_set_psk_callback_ctx
  3335. \sa wolfSSL_CTX_get_psk_callback_ctx
  3336. */
  3337. int wolfSSL_set_psk_callback_ctx(WOLFSSL* ssl, void* psk_ctx);
  3338. /*!
  3339. \brief
  3340. \return WOLFSSL_SUCCESS またはwolfssl_failure.
  3341. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3342. \sa wolfSSL_set_psk_callback_ctx
  3343. \sa wolfSSL_get_psk_callback_ctx
  3344. \sa wolfSSL_CTX_get_psk_callback_ctx
  3345. */
  3346. int wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX* ctx, void* psk_ctx);
  3347. /*!
  3348. \brief
  3349. \return void ユーザーPSKコンテキストへのポインタ
  3350. \sa wolfSSL_set_psk_callback_ctx
  3351. \sa wolfSSL_CTX_set_psk_callback_ctx
  3352. \sa wolfSSL_CTX_get_psk_callback_ctx
  3353. */
  3354. void* wolfSSL_get_psk_callback_ctx(WOLFSSL* ssl);
  3355. /*!
  3356. \brief
  3357. \return void ユーザーPSKコンテキストへのポインタ
  3358. \sa wolfSSL_CTX_set_psk_callback_ctx
  3359. \sa wolfSSL_set_psk_callback_ctx
  3360. \sa wolfSSL_get_psk_callback_ctx
  3361. */
  3362. void* wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX* ctx);
  3363. /*!
  3364. \ingroup Setup
  3365. \brief この機能により、CTX構造のHAVAnonメンバーがコンパイル中に定義されている場合は、CTX構造のHABANONメンバーを有効にします。
  3366. \return SSL_SUCCESS 機能が正常に実行され、CTXのHaveannonメンバーが1に設定されている場合に返されます。
  3367. \return SSL_FAILURE CTX構造がNULLの場合に返されます。
  3368. _Example_
  3369. \code
  3370. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3371. WOLFSSL* ssl = wolfSSL_new(ctx);
  3372. ...
  3373. #ifdef HAVE_ANON
  3374. if(cipherList == NULL){
  3375. wolfSSL_CTX_allow_anon_cipher(ctx);
  3376. if(wolfSSL_CTX_set_cipher_list(ctx, “ADH_AES128_SHA”) != SSL_SUCCESS){
  3377. // failure case
  3378. }
  3379. }
  3380. #endif
  3381. \endcode
  3382. \sa none
  3383. */
  3384. int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*);
  3385. /*!
  3386. \ingroup Setup
  3387. \brief wolfsslv23_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0 - TLS 1.3からプロトコルバージョンと接続するクライアントをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  3388. \return pointer 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  3389. \return Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  3390. _Example_
  3391. \code
  3392. WOLFSSL_METHOD* method;
  3393. WOLFSSL_CTX* ctx;
  3394. method = wolfSSLv23_server_method();
  3395. if (method == NULL) {
  3396. // unable to get method
  3397. }
  3398. ctx = wolfSSL_CTX_new(method);
  3399. ...
  3400. \endcode
  3401. \sa wolfSSLv3_server_method
  3402. \sa wolfTLSv1_server_method
  3403. \sa wolfTLSv1_1_server_method
  3404. \sa wolfTLSv1_2_server_method
  3405. \sa wolfTLSv1_3_server_method
  3406. \sa wolfDTLSv1_server_method
  3407. \sa wolfSSL_CTX_new
  3408. */
  3409. WOLFSSL_METHOD *wolfSSLv23_server_method(void);
  3410. /*!
  3411. \ingroup Setup
  3412. \brief これは、WolfSSL構造体の内部エラー状態を取得するために使用されます。
  3413. \return wolfssl_error SSLエラー状態、通常はマイナスを返します
  3414. \return BAD_FUNC_ARG SSLがNULLの場合
  3415. _Example_
  3416. \code
  3417. WOLFSSL* ssl;
  3418. int ret;
  3419. // create ssl object
  3420. ret = wolfSSL_state(ssl);
  3421. // check ret value
  3422. \endcode
  3423. \sa wolfSSL_new
  3424. \sa wolfSSL_free
  3425. */
  3426. int wolfSSL_state(WOLFSSL* ssl);
  3427. /*!
  3428. \ingroup CertsKeys
  3429. \brief この関数はピアの証明書を取得します。
  3430. \return pointer WOLFSSL_X509構造のPECRERTメンバーへのポインタが存在する場合は。
  3431. \return 0 ピア証明書発行者サイズが定義されていない場合に返されます。
  3432. _Example_
  3433. \code
  3434. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  3435. WOLFSSL* ssl = wolfSSL_new(ctx);
  3436. ...
  3437. WOLFSSL_X509* peerCert = wolfSSL_get_peer_certificate(ssl);
  3438. if(peerCert){
  3439. // You have a pointer peerCert to the peer certification
  3440. }
  3441. \endcode
  3442. \sa wolfSSL_X509_get_issuer_name
  3443. \sa wolfSSL_X509_get_subject_name
  3444. \sa wolfSSL_X509_get_isCA
  3445. */
  3446. WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl);
  3447. /*!
  3448. \ingroup Debug
  3449. \brief この関数は、wolfssl_get_error()を呼び出してssl_error_want_readを取得するのと似ています。基礎となるエラー状態がSSL_ERROR_WANT_READの場合、この関数は1を返しますが、それ以外の場合は0です。
  3450. \return 1 WOLFSSL_GET_ERROR()はSSL_ERROR_WANT_READを返し、基礎となるI / Oには読み取り可能なデータがあります。
  3451. \return 0 SSL_ERROR_WANT_READエラー状態はありません。
  3452. _Example_
  3453. \code
  3454. int ret;
  3455. WOLFSSL* ssl = 0;
  3456. ...
  3457. ret = wolfSSL_want_read(ssl);
  3458. if (ret == 1) {
  3459. // underlying I/O has data available for reading (SSL_ERROR_WANT_READ)
  3460. }
  3461. \endcode
  3462. \sa wolfSSL_want_write
  3463. \sa wolfSSL_get_error
  3464. */
  3465. int wolfSSL_want_read(WOLFSSL*);
  3466. /*!
  3467. \ingroup Debug
  3468. \brief この関数は、wolfssl_get_error()を呼び出し、RETURSのSSL_ERROR_WANT_WRITEを取得するのと同じです。基礎となるエラー状態がSSL_ERROR_WANT_WRITEの場合、この関数は1を返しますが、それ以外の場合は0です。
  3469. \return 1 WOLFSSL_GET_ERROR()はSSL_ERROR_WANT_WRITEを返します。基礎となるI / Oは、基礎となるSSL接続で進行状況を行うために書き込まれるデータを必要とします。
  3470. \return 0 ssl_error_want_writeエラー状態はありません。
  3471. _Example_
  3472. \code
  3473. int ret;
  3474. WOLFSSL* ssl = 0;
  3475. ...
  3476. ret = wolfSSL_want_write(ssl);
  3477. if (ret == 1) {
  3478. // underlying I/O needs data to be written (SSL_ERROR_WANT_WRITE)
  3479. }
  3480. \endcode
  3481. \sa wolfSSL_want_read
  3482. \sa wolfSSL_get_error
  3483. */
  3484. int wolfSSL_want_write(WOLFSSL*);
  3485. /*!
  3486. \ingroup Setup
  3487. \brief wolfsslデフォルトでは、有効な日付範囲と検証済みの署名のためにピア証明書をチェックします。wolfssl_connect()またはwolfssl_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。DN受信時にピア証明書を確認するためのドメイン名を保持します。
  3488. \return SSL_SUCCESS 成功すると。
  3489. \return SSL_FAILURE メモリエラーが発生した場合に返されます。
  3490. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3491. _Example_
  3492. \code
  3493. int ret = 0;
  3494. WOLFSSL* ssl;
  3495. char* domain = (char*) “www.yassl.com”;
  3496. ...
  3497. ret = wolfSSL_check_domain_name(ssl, domain);
  3498. if (ret != SSL_SUCCESS) {
  3499. // failed to enable domain name check
  3500. }
  3501. \endcode
  3502. \sa none
  3503. */
  3504. int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn);
  3505. /*!
  3506. \ingroup TLS
  3507. \brief 使用するためにWolfSSLライブラリを初期化します。アプリケーションごとに1回、その他のライブラリへの呼び出しの前に呼び出す必要があります。
  3508. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  3509. \return BAD_MUTEX_E 返される可能性があるエラーです。
  3510. _Example_
  3511. \code
  3512. int ret = 0;
  3513. ret = wolfSSL_Init();
  3514. if (ret != SSL_SUCCESS) {
  3515. failed to initialize wolfSSL library
  3516. }
  3517. \endcode
  3518. \sa wolfSSL_Cleanup
  3519. */
  3520. int wolfSSL_Init(void);
  3521. /*!
  3522. \ingroup TLS
  3523. \brief さらなる使用からWOLFSSLライブラリを初期化します。ライブラリによって使用されるリソースを解放しますが、呼び出される必要はありません。
  3524. \return SSL_SUCCESS エラーを返しません。
  3525. _Example_
  3526. \code
  3527. wolfSSL_Cleanup();
  3528. \endcode
  3529. \sa wolfSSL_Init
  3530. */
  3531. int wolfSSL_Cleanup(void);
  3532. /*!
  3533. \ingroup IO
  3534. \brief この関数は現在のライブラリーバージョンを返します。
  3535. \return LIBWOLFSSL_VERSION_STRING バージョンを定義するconst charポインタ。
  3536. _Example_
  3537. \code
  3538. char version[MAXSIZE];
  3539. version = wolfSSL_KeepArrays();
  3540. if(version != ExpectedVersion){
  3541. // Handle the mismatch case
  3542. }
  3543. \endcode
  3544. \sa word32_wolfSSL_lib_version_hex
  3545. */
  3546. const char* wolfSSL_lib_version(void);
  3547. /*!
  3548. \ingroup IO
  3549. \brief この関数は、現在のライブラリーのバージョンを16進表記で返します。
  3550. \return LILBWOLFSSL_VERSION_HEX wolfssl / version.hで定義されている16進数バージョンを返します。
  3551. _Example_
  3552. \code
  3553. word32 libV;
  3554. libV = wolfSSL_lib_version_hex();
  3555. if(libV != EXPECTED_HEX){
  3556. // How to handle an unexpected value
  3557. } else {
  3558. // The expected result for libV
  3559. }
  3560. \endcode
  3561. \sa wolfSSL_lib_version
  3562. */
  3563. word32 wolfSSL_lib_version_hex(void);
  3564. /*!
  3565. \ingroup IO
  3566. \brief SSLメソッドの側面に基づいて、実際の接続または承認を実行します。クライアント側から呼び出された場合、サーバ側から呼び出された場合にwolfssl_accept()が実行されている間にwolfssl_connect()が行われる。
  3567. \return SSL_SUCCESS 成功した場合に返却されます。(注意、古いバージョンは0を返します)
  3568. \return SSL_FATAL_ERROR 基礎となる呼び出しがエラーになった場合に返されます。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  3569. _Example_
  3570. \code
  3571. int ret = SSL_FATAL_ERROR;
  3572. WOLFSSL* ssl = 0;
  3573. ...
  3574. ret = wolfSSL_negotiate(ssl);
  3575. if (ret == SSL_FATAL_ERROR) {
  3576. // SSL establishment failed
  3577. int error_code = wolfSSL_get_error(ssl);
  3578. ...
  3579. }
  3580. ...
  3581. \endcode
  3582. \sa SSL_connect
  3583. \sa SSL_accept
  3584. */
  3585. int wolfSSL_negotiate(WOLFSSL* ssl);
  3586. /*!
  3587. \ingroup Setup
  3588. \brief SSL接続に圧縮を使用する機能をオンにします。両側には圧縮がオンになっている必要があります。そうでなければ圧縮は使用されません。ZLIBライブラリは実際のデータ圧縮を実行します。ライブラリにコンパイルするには、システムの設定システムに--with-libzを使用し、そうでない場合はhand_libzを定義します。送受信されるメッセージの実際のサイズを減らす前にデータを圧縮している間に、圧縮によって保存されたデータの量は通常、ネットワークの遅いすべてのネットワークを除いたものよりも分析に時間がかかります。
  3589. \return SSL_SUCCESS 成功すると。
  3590. \return NOT_COMPILED_IN 圧縮サポートがライブラリに組み込まれていない場合に返されます。
  3591. _Example_
  3592. \code
  3593. int ret = 0;
  3594. WOLFSSL* ssl = 0;
  3595. ...
  3596. ret = wolfSSL_set_compression(ssl);
  3597. if (ret == SSL_SUCCESS) {
  3598. // successfully enabled compression for SSL session
  3599. }
  3600. \endcode
  3601. \sa none
  3602. */
  3603. int wolfSSL_set_compression(WOLFSSL* ssl);
  3604. /*!
  3605. \ingroup Setup
  3606. \brief この関数はSSLセッションタイムアウト値を秒単位で設定します。
  3607. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  3608. \return BAD_FUNC_ARG SSLがNULLの場合に返されます。
  3609. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  3610. _Example_
  3611. \code
  3612. int ret = 0;
  3613. WOLFSSL* ssl = 0;
  3614. ...
  3615. ret = wolfSSL_set_timeout(ssl, 500);
  3616. if (ret != SSL_SUCCESS) {
  3617. // failed to set session timeout value
  3618. }
  3619. ...
  3620. \endcode
  3621. \sa wolfSSL_get1_session
  3622. \sa wolfSSL_set_session
  3623. */
  3624. int wolfSSL_set_timeout(WOLFSSL* ssl, unsigned int to);
  3625. /*!
  3626. \ingroup Setup
  3627. \brief この関数は、指定されたSSLコンテキストに対して、SSLセッションのタイムアウト値を秒単位で設定します。
  3628. \return the wolfssl_error_code_opensslの場合、以前のタイムアウト値
  3629. \return defined 成功しています。定義されていない場合、SSL_SUCCESSは返されます。
  3630. \return BAD_FUNC_ARG 入力コンテキスト(CTX)がNULLのときに返されます。
  3631. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  3632. _Example_
  3633. \code
  3634. WOLFSSL_CTX* ctx = 0;
  3635. ...
  3636. ret = wolfSSL_CTX_set_timeout(ctx, 500);
  3637. if (ret != SSL_SUCCESS) {
  3638. // failed to set session timeout value
  3639. }
  3640. \endcode
  3641. \sa wolfSSL_flush_sessions
  3642. \sa wolfSSL_get1_session
  3643. \sa wolfSSL_set_session
  3644. \sa wolfSSL_get_sessionID
  3645. \sa wolfSSL_CTX_set_session_cache_mode
  3646. */
  3647. int wolfSSL_CTX_set_timeout(WOLFSSL_CTX* ctx, unsigned int to);
  3648. /*!
  3649. \ingroup openSSL
  3650. \brief ピアの証明書チェーンを取得します。
  3651. \return chain 正常にコールがピアの証明書チェーンを返します。
  3652. \return 0 無効なWolfSSLポインタが関数に渡されると返されます。
  3653. _Example_
  3654. \code
  3655. none
  3656. \endcode
  3657. \sa wolfSSL_get_chain_count
  3658. \sa wolfSSL_get_chain_length
  3659. \sa wolfSSL_get_chain_cert
  3660. \sa wolfSSL_get_chain_cert_pem
  3661. */
  3662. WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl);
  3663. /*!
  3664. \ingroup openSSL
  3665. \brief ピアの証明書チェーン数を取得します。
  3666. \return Success 正常にコールがピアの証明書チェーン数を返します。
  3667. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3668. _Example_
  3669. \code
  3670. none
  3671. \endcode
  3672. \sa wolfSSL_get_peer_chain
  3673. \sa wolfSSL_get_chain_length
  3674. \sa wolfSSL_get_chain_cert
  3675. \sa wolfSSL_get_chain_cert_pem
  3676. */
  3677. int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain);
  3678. /*!
  3679. \ingroup openSSL
  3680. \brief Index(IDX)のピアのASN1.DER証明書長をバイト単位で取得します。
  3681. \return Success 正常にコールがインデックス別にピアの証明書長をバイト単位で返します。
  3682. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3683. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3684. _Example_
  3685. \code
  3686. none
  3687. \endcode
  3688. \sa wolfSSL_get_peer_chain
  3689. \sa wolfSSL_get_chain_count
  3690. \sa wolfSSL_get_chain_cert
  3691. \sa wolfSSL_get_chain_cert_pem
  3692. */
  3693. int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN* chain, int idx);
  3694. /*!
  3695. \ingroup openSSL
  3696. \brief インデックス(IDX)でピアのASN1.DER証明書を取得します。
  3697. \return Success 正常にコールがインデックスでピアの証明書を返します。
  3698. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3699. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3700. _Example_
  3701. \code
  3702. none
  3703. \endcode
  3704. \sa wolfSSL_get_peer_chain
  3705. \sa wolfSSL_get_chain_count
  3706. \sa wolfSSL_get_chain_length
  3707. \sa wolfSSL_get_chain_cert_pem
  3708. */
  3709. unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN* chain, int idx);
  3710. /*!
  3711. \ingroup CertsKeys
  3712. \brief この関数は、証明書のチェーンからのピアのwolfssl_x509_209_Certificateをインデックス(IDX)で取得します。
  3713. \return pointer wolfssl_x509構造へのポインタを返します。
  3714. \param chain 動的メモリsession_cacheの場合に使用されるWOLFSSL_X509_CHAINへのポインタ。
  3715. _Example_
  3716. \code
  3717. WOLFSSL_X509_CHAIN* chain = &session->chain;
  3718. int idx = 999; // set idx
  3719. ...
  3720. WOLFSSL_X509_CHAIN ptr;
  3721. prt = wolfSSL_get_chain_X509(chain, idx);
  3722. if(ptr != NULL){
  3723. //ptr contains the cert at the index specified
  3724. } else {
  3725. // ptr is NULL
  3726. }
  3727. \endcode
  3728. \sa InitDecodedCert
  3729. \sa ParseCertRelative
  3730. \sa CopyDecodedToX509
  3731. */
  3732. WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN* chain, int idx);
  3733. /*!
  3734. \ingroup openSSL
  3735. \brief インデックス(IDX)でピアのPEM証明書を取得します。
  3736. \return Success 正常にコールがインデックスでピアの証明書を返します。
  3737. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3738. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3739. _Example_
  3740. \code
  3741. none
  3742. \endcode
  3743. \sa wolfSSL_get_peer_chain
  3744. \sa wolfSSL_get_chain_count
  3745. \sa wolfSSL_get_chain_length
  3746. \sa wolfSSL_get_chain_cert
  3747. */
  3748. int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN* chain, int idx,
  3749. unsigned char* buf, int inLen, int* outLen);
  3750. /*!
  3751. \ingroup openSSL
  3752. \brief セッションのIDを取得します。セッションIDは常に32バイトの長さです。
  3753. \return id セッションID。
  3754. _Example_
  3755. \code
  3756. none
  3757. \endcode
  3758. \sa SSL_get_session
  3759. */
  3760. const unsigned char* wolfSSL_get_sessionID(const WOLFSSL_SESSION* s);
  3761. /*!
  3762. \ingroup openSSL
  3763. \brief ピアの証明書のシリアル番号を取得します。シリアル番号バッファ(IN)は少なくとも32バイト以上であり、入力として* INOUTSZ引数として提供されます。関数を呼び出した後* INOUTSZはINバッファに書き込まれた実際の長さをバイト単位で保持します。
  3764. \return SSL_SUCCESS 成功すると。
  3765. \return BAD_FUNC_ARG 関数の不良引数が見つかった場合に返されます。
  3766. \param in シリアル番号バッファは少なくとも32バイトの長さであるべきです
  3767. _Example_
  3768. \code
  3769. none
  3770. \endcode
  3771. \sa SSL_get_peer_certificate
  3772. */
  3773. int wolfSSL_X509_get_serial_number(WOLFSSL_X509* x509, unsigned char* in,
  3774. int* inOutSz);
  3775. /*!
  3776. \ingroup CertsKeys
  3777. \brief 証明書から件名の共通名を返します。
  3778. \return NULL X509構造がNULLの場合に返されます
  3779. \return string サブジェクトの共通名の文字列表現は成功に返されます
  3780. _Example_
  3781. \code
  3782. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3783. DYNAMIC_TYPE_X509);
  3784. ...
  3785. int x509Cn = wolfSSL_X509_get_subjectCN(x509);
  3786. if(x509Cn == NULL){
  3787. // Deal with NULL case
  3788. } else {
  3789. // x509Cn contains the common name
  3790. }
  3791. \endcode
  3792. \sa wolfSSL_X509_Name_get_entry
  3793. \sa wolfSSL_X509_get_next_altname
  3794. \sa wolfSSL_X509_get_issuer_name
  3795. \sa wolfSSL_X509_get_subject_name
  3796. */
  3797. char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*);
  3798. /*!
  3799. \ingroup CertsKeys
  3800. \brief この関数は、wolfssl_x509構造体のDERエンコードされた証明書を取得します。
  3801. \return buffer この関数はDerbuffer構造体のバッファメンバーを返します。これはバイト型です。
  3802. \return NULL x509またはoutszパラメーターがnullの場合に返されます。
  3803. \param x509 証明書情報を含むWolfSSL_X509構造へのポインタ。
  3804. _Example_
  3805. \code
  3806. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3807. DYNAMIC_TYPE_X509);
  3808. int* outSz; // initialize
  3809. ...
  3810. byte* x509Der = wolfSSL_X509_get_der(x509, outSz);
  3811. if(x509Der == NULL){
  3812. // Failure case one of the parameters was NULL
  3813. }
  3814. \endcode
  3815. \sa wolfSSL_X509_version
  3816. \sa wolfSSL_X509_Name_get_entry
  3817. \sa wolfSSL_X509_get_next_altname
  3818. \sa wolfSSL_X509_get_issuer_name
  3819. \sa wolfSSL_X509_get_subject_name
  3820. */
  3821. const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509* x509, int* outSz);
  3822. /*!
  3823. \ingroup CertsKeys
  3824. \brief この関数は、x509がnullのかどうかを確認し、そうでない場合は、x509構造体のノッカスメンバーを返します。
  3825. \return pointer ASN1_TIMEを使用してX509構造体のノカフターメンバーに構造体を表明します。
  3826. \return NULL X509オブジェクトがNULLの場合に返されます。
  3827. _Example_
  3828. \code
  3829. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  3830. DYNAMIC_TYPE_X509) ;
  3831. ...
  3832. const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notAfter(x509);
  3833. if(notAfter == NULL){
  3834. // Failure case, the x509 object is null.
  3835. }
  3836. \endcode
  3837. \sa wolfSSL_X509_get_notBefore
  3838. */
  3839. WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notAfter(WOLFSSL_X509*);
  3840. /*!
  3841. \ingroup CertsKeys
  3842. \brief この関数はX509証明書のバージョンを取得します。
  3843. \return 0 X509構造がNULLの場合に返されます。
  3844. \return version X509構造に保存されているバージョンが返されます。
  3845. _Example_
  3846. \code
  3847. WOLFSSL_X509* x509;
  3848. int version;
  3849. ...
  3850. version = wolfSSL_X509_version(x509);
  3851. if(!version){
  3852. // The function returned 0, failure case.
  3853. }
  3854. \endcode
  3855. \sa wolfSSL_X509_get_subject_name
  3856. \sa wolfSSL_X509_get_issuer_name
  3857. \sa wolfSSL_X509_get_isCA
  3858. \sa wolfSSL_get_peer_certificate
  3859. */
  3860. int wolfSSL_X509_version(WOLFSSL_X509*);
  3861. /*!
  3862. \ingroup CertsKeys
  3863. \brief no_stdio_filesystemが定義されている場合、この関数はヒープメモリを割り当て、wolfssl_x509構造を初期化してそれにポインタを返します。
  3864. \return *WOLFSSL_X509 関数が正常に実行された場合、WolfSSL_X509構造ポインタが返されます。
  3865. \return NULL Xftellマクロの呼び出しが負の値を返す場合。
  3866. \param x509 wolfssl_x509ポインタへのポインタ。
  3867. _Example_
  3868. \code
  3869. WOLFSSL_X509* x509a = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3870. DYNAMIC_TYPE_X509);
  3871. WOLFSSL_X509** x509 = x509a;
  3872. XFILE file; (mapped to struct fs_file*)
  3873. ...
  3874. WOLFSSL_X509* newX509 = wolfSSL_X509_d2i_fp(x509, file);
  3875. if(newX509 == NULL){
  3876. // The function returned NULL
  3877. }
  3878. \endcode
  3879. \sa wolfSSL_X509_d2i
  3880. \sa XFTELL
  3881. \sa XREWIND
  3882. \sa XFSEEK
  3883. */
  3884. WOLFSSL_X509*
  3885. wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE* file);
  3886. /*!
  3887. \ingroup CertsKeys
  3888. \brief 関数はX509証明書をメモリにロードします。
  3889. \return pointer 実行された実行は、wolfssl_x509構造へのポインタを返します。
  3890. \return NULL 証明書が書き込まれなかった場合に返されます。
  3891. \param fname ロードする証明書ファイル。
  3892. _Example_
  3893. \code
  3894. #define cliCert “certs/client-cert.pem”
  3895. X509* x509;
  3896. x509 = wolfSSL_X509_load_certificate_file(cliCert, SSL_FILETYPE_PEM);
  3897. AssertNotNull(x509);
  3898. \endcode
  3899. \sa InitDecodedCert
  3900. \sa PemToDer
  3901. \sa wolfSSL_get_certificate
  3902. \sa AssertNotNull
  3903. */
  3904. WOLFSSL_X509*
  3905. wolfSSL_X509_load_certificate_file(const char* fname, int format);
  3906. /*!
  3907. \ingroup CertsKeys
  3908. \brief この関数は、デバイスの種類をX509構造からバッファにコピーします。
  3909. \return pointer X509構造からデバイスの種類を保持するバイトポインタを返します。
  3910. \return NULL バッファサイズがNULLの場合に返されます。
  3911. \param x509 wolfssl_x509_new()で作成されたwolfssl_x509構造へのポインタ。
  3912. \param in デバイスタイプ(バッファ)を保持するバイトタイプへのポインタ。
  3913. _Example_
  3914. \code
  3915. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  3916. DYNAMIC_TYPE_X509);
  3917. byte* in;
  3918. int* inOutSz;
  3919. ...
  3920. byte* deviceType = wolfSSL_X509_get_device_type(x509, in, inOutSz);
  3921. if(!deviceType){
  3922. // Failure case, NULL was returned.
  3923. }
  3924. \endcode
  3925. \sa wolfSSL_X509_get_hw_type
  3926. \sa wolfSSL_X509_get_hw_serial_number
  3927. \sa wolfSSL_X509_d2i
  3928. */
  3929. unsigned char*
  3930. wolfSSL_X509_get_device_type(WOLFSSL_X509* x509, unsigned char* in,
  3931. int* inOutSz);
  3932. /*!
  3933. \ingroup CertsKeys
  3934. \brief この関数は、wolfssl_x509構造のHWTypeメンバーをバッファにコピーします。
  3935. \return byte この関数は、wolfssl_x509構造のHWTypeメンバーに以前に保持されているデータのバイトタイプを返します。
  3936. \return NULL inoutszがnullの場合に返されます。
  3937. \param x509 証明書情報を含むWolfSSL_X509構造へのポインタ。
  3938. \param in バッファを表すバイトを入力するポインタ。
  3939. _Example_
  3940. \code
  3941. WOLFSSL_X509* x509; // X509 certificate
  3942. byte* in; // initialize the buffer
  3943. int* inOutSz; // holds the size of the buffer
  3944. ...
  3945. byte* hwType = wolfSSL_X509_get_hw_type(x509, in, inOutSz);
  3946. if(hwType == NULL){
  3947. // Failure case function returned NULL.
  3948. }
  3949. \endcode
  3950. \sa wolfSSL_X509_get_hw_serial_number
  3951. \sa wolfSSL_X509_get_device_type
  3952. */
  3953. unsigned char*
  3954. wolfSSL_X509_get_hw_type(WOLFSSL_X509* x509, unsigned char* in,
  3955. int* inOutSz);
  3956. /*!
  3957. \ingroup CertsKeys
  3958. \brief この関数はX509オブジェクトのhwserialNumメンバを返します。
  3959. \return pointer この関数は、X509オブジェクトからロードされたシリアル番号を含むINバッファへのバイトポインタを返します。
  3960. \param x509 証明書情報を含むWOLFSSL_X509構造へのポインタ。
  3961. \param in コピーされるバッファへのポインタ。
  3962. _Example_
  3963. \code
  3964. char* serial;
  3965. byte* in;
  3966. int* inOutSz;
  3967. WOLFSSL_X509 x509;
  3968. ...
  3969. serial = wolfSSL_X509_get_hw_serial_number(x509, in, inOutSz);
  3970. if(serial == NULL || serial <= 0){
  3971. // Failure case
  3972. }
  3973. \endcode
  3974. \sa wolfSSL_X509_get_subject_name
  3975. \sa wolfSSL_X509_get_issuer_name
  3976. \sa wolfSSL_X509_get_isCA
  3977. \sa wolfSSL_get_peer_certificate
  3978. \sa wolfSSL_X509_version
  3979. */
  3980. unsigned char*
  3981. wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509* x509,
  3982. unsigned char* in, int* inOutSz);
  3983. /*!
  3984. \ingroup IO
  3985. \brief この関数はクライアント側で呼び出され、ピアの証明書チェーンを取得するのに十分な長さだけサーバーを持つSSL / TLSハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect_cert()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングである場合、wolfsl_connect_cert()は、wolfssl_connect_cert_cert()のニーズを満たすことができなかったときに戻ります。ハンドシェイクを続けます。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / Oが準備ができて、wolfsslがオフになっているところを拾うときに、wolfssl_connect_cert()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect_cert()はピアの証明書チェーンが受信されたらのみ返されます。
  3986. \return SSL_SUCCESS 成功すると。
  3987. \return SSL_FAILURE SSLセッションパラメータがNULLの場合、返されます。
  3988. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  3989. _Example_
  3990. \code
  3991. int ret = 0;
  3992. int err = 0;
  3993. WOLFSSL* ssl;
  3994. char buffer[80];
  3995. ...
  3996. ret = wolfSSL_connect_cert(ssl);
  3997. if (ret != SSL_SUCCESS) {
  3998. err = wolfSSL_get_error(ssl, ret);
  3999. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  4000. }
  4001. \endcode
  4002. \sa wolfSSL_get_error
  4003. \sa wolfSSL_connect
  4004. \sa wolfSSL_accept
  4005. */
  4006. int wolfSSL_connect_cert(WOLFSSL* ssl);
  4007. /*!
  4008. \ingroup openSSL
  4009. \brief WOLFSSL_D2I_PKCS12_BIO(D2I_PKCS12_BIO)は、WOLFSSL_BIOから構造WC_PKCS12へのPKCS12情報にコピーされます。この情報は、オプションのMAC情報を保持するための構造とともにコンテンツに関する情報のリストとして構造内に分割されています。構造体WC_PKCS12で情報がチャンク(ただし復号化されていない)に分割された後、それはその後、呼び出しによって解析および復号化され得る。
  4010. \return WC_PKCS12 WC_PKCS12構造へのポインタ。
  4011. \return Failure 関数に失敗した場合はNULLを返します。
  4012. \param bio PKCS12バッファを読み取るためのWOLFSSL_BIO構造。
  4013. _Example_
  4014. \code
  4015. WC_PKCS12* pkcs;
  4016. WOLFSSL_BIO* bio;
  4017. WOLFSSL_X509* cert;
  4018. WOLFSSL_EVP_PKEY* pkey;
  4019. STACK_OF(X509) certs;
  4020. //bio loads in PKCS12 file
  4021. wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
  4022. wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
  4023. wc_PKCS12_free(pkcs)
  4024. //use cert, pkey, and optionally certs stack
  4025. \endcode
  4026. \sa wolfSSL_PKCS12_parse
  4027. \sa wc_PKCS12_free
  4028. */
  4029. WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio,
  4030. WC_PKCS12** pkcs12);
  4031. /*!
  4032. \ingroup openSSL
  4033. \brief WOLFSSL_I2D_PKCS12_BIO(I2D_PKCS12_BIO)は、構造WC_PKCS12からWOLFSSL_BIOへの証明書情報にコピーされます。
  4034. \return 1 成功のために。
  4035. \return Failure 0。
  4036. \param bio PKCS12バッファを書き込むためのWOLFSSL_BIO構造。
  4037. _Example_
  4038. \code
  4039. WC_PKCS12 pkcs12;
  4040. FILE *f;
  4041. byte buffer[5300];
  4042. char file[] = "./test.p12";
  4043. int bytes;
  4044. WOLFSSL_BIO* bio;
  4045. pkcs12 = wc_PKCS12_new();
  4046. f = fopen(file, "rb");
  4047. bytes = (int)fread(buffer, 1, sizeof(buffer), f);
  4048. fclose(f);
  4049. //convert the DER file into an internal structure
  4050. wc_d2i_PKCS12(buffer, bytes, pkcs12);
  4051. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  4052. //convert PKCS12 structure into bio
  4053. wolfSSL_i2d_PKCS12_bio(bio, pkcs12);
  4054. wc_PKCS12_free(pkcs)
  4055. //use bio
  4056. \endcode
  4057. \sa wolfSSL_PKCS12_parse
  4058. \sa wc_PKCS12_free
  4059. */
  4060. WC_PKCS12* wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO* bio,
  4061. WC_PKCS12* pkcs12);
  4062. /*!
  4063. \ingroup openSSL
  4064. \brief pkcs12は、configureコマンドへの-enable-openSSLAXTRAを追加することで有効にできます。それは復号化のためにトリプルDESとRC4を使うことができるので、OpenSSlextra(--enable-des3 -enable-arc4)を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号化は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSE(PKCS12_PARSE)。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号化しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号化され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、PKCS12ファイルを解析するときにスキップされます。
  4065. \return SSL_SUCCESS PKCS12の解析に成功しました。
  4066. \return SSL_FAILURE エラーケースに遭遇した場合
  4067. \param pkcs12 wc_pkcs12解析する構造
  4068. \param paswd PKCS12を復号化するためのパスワード。
  4069. \param pkey PKCS12からデコードされた秘密鍵を保持するための構造。
  4070. \param cert PKCS12から復号された証明書を保持する構造
  4071. _Example_
  4072. \code
  4073. WC_PKCS12* pkcs;
  4074. WOLFSSL_BIO* bio;
  4075. WOLFSSL_X509* cert;
  4076. WOLFSSL_EVP_PKEY* pkey;
  4077. STACK_OF(X509) certs;
  4078. //bio loads in PKCS12 file
  4079. wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
  4080. wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
  4081. wc_PKCS12_free(pkcs)
  4082. //use cert, pkey, and optionally certs stack
  4083. \endcode
  4084. \sa wolfSSL_d2i_PKCS12_bio
  4085. \sa wc_PKCS12_free
  4086. */
  4087. int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
  4088. WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca);
  4089. /*!
  4090. \ingroup CertsKeys
  4091. \brief サーバーDIFFIE-HELLMANエフェメラルパラメータ設定。この関数は、サーバーがDHEを使用する暗号スイートをネゴシエートしている場合に使用するグループパラメータを設定します。
  4092. \return SSL_SUCCESS 成功すると。
  4093. \return MEMORY_ERROR メモリエラーが発生した場合に返されます。
  4094. \return SIDE_ERROR この関数がSSLサーバではなくSSLクライアントで呼び出されると返されます。
  4095. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4096. \param p Diffie-Hellman素数パラメータ。
  4097. \param pSz pのサイズ。
  4098. \param g Diffie-Hellman "Generator"パラメータ。
  4099. _Example_
  4100. \code
  4101. WOLFSSL* ssl;
  4102. static unsigned char p[] = {...};
  4103. static unsigned char g[] = {...};
  4104. ...
  4105. wolfSSL_SetTmpDH(ssl, p, sizeof(p), g, sizeof(g));
  4106. \endcode
  4107. \sa SSL_accept
  4108. */
  4109. int wolfSSL_SetTmpDH(WOLFSSL* ssl, const unsigned char* p, int pSz,
  4110. const unsigned char* g, int gSz);
  4111. /*!
  4112. \ingroup CertsKeys
  4113. \brief 関数はwolfssl_settmph_buffer_wrapperを呼び出します。これはDiffie-Hellmanパラメータのラッパーです。
  4114. \return SSL_SUCCESS 実行に成功した場合。
  4115. \return SSL_BAD_FILETYPE ファイルの種類がpemではなく、asn.1ではない場合WC_DHParamSLOADが正常に戻っていない場合は、も返されます。
  4116. \return SSL_NO_PEM_HEADER PEMヘッダーがない場合はPemToderから返します。
  4117. \return SSL_BAD_FILE PemToderにファイルエラーがある場合は返されます。
  4118. \return SSL_FATAL_ERROR コピーエラーが発生した場合はPemToderから返されました。
  4119. \return MEMORY_E - メモリ割り当てエラーが発生した場合
  4120. \return BAD_FUNC_ARG wolfssl構造体がnullの場合、またはそうでない場合はサブルーチンに渡された場合に返されます。
  4121. \return DH_KEY_SIZE_E wolfssl_settmph()またはwolfssl_ctx_settmph()のキーサイズエラーがある場合に返されます。
  4122. \return SIDE_ERROR wolfssl_settmphのサーバー側ではない場合は返されます。
  4123. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4124. \param buf wolfssl_settmph_file_wrapperから渡された割り当てバッファー。
  4125. \param sz ファイルのサイズ(wolfssl_settmph_file_wrapper内のfname)を保持するロングint。
  4126. _Example_
  4127. \code
  4128. Static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
  4129. Const char* fname, int format);
  4130. long sz = 0;
  4131. byte* myBuffer = staticBuffer[FILE_BUFFER_SIZE];
  4132. if(ssl)
  4133. ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
  4134. \endcode
  4135. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4136. \sa wc_DhParamsLoad
  4137. \sa wolfSSL_SetTmpDH
  4138. \sa PemToDer
  4139. \sa wolfSSL_CTX_SetTmpDH
  4140. \sa wolfSSL_CTX_SetTmpDH_file
  4141. */
  4142. int wolfSSL_SetTmpDH_buffer(WOLFSSL* ssl, const unsigned char* b, long sz,
  4143. int format);
  4144. /*!
  4145. \ingroup CertsKeys
  4146. \brief この関数は、wolfssl_settmph_file_wrapperを呼び出してサーバdiffie-hellmanパラメータを設定します。
  4147. \return SSL_SUCCESS この機能の正常な完了とそのサブルーチンの完了に戻りました。
  4148. \return MEMORY_E この関数またはサブルーチンにメモリ割り当てが失敗した場合に返されます。
  4149. \return SIDE_ERROR WolfSSL構造体にあるオプション構造のサイドメンバーがサーバー側ではない場合。
  4150. \return SSL_BAD_FILETYPE 証明書が一連のチェックに失敗した場合は返します。
  4151. \return DH_KEY_SIZE_E DHパラメーターのキーサイズがWolfSSL構造体のMinkKeyszメンバーの値より小さい場合に返されます。
  4152. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl構造体のMAXDHKEYSZメンバーの値よりも大きい場合に返されます。
  4153. \return BAD_FUNC_ARG wolfssl構造など、引数値がnullの場合に返します。
  4154. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4155. \param fname 証明書を保持している定数の文字ポインタ。
  4156. _Example_
  4157. \code
  4158. WOLFSSL* ssl = wolfSSL_new(ctx);
  4159. const char* dhParam;
  4160. AssertIntNE(SSL_SUCCESS,
  4161. wolfSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM));
  4162. \endcode
  4163. \sa wolfSSL_CTX_SetTmpDH_file
  4164. \sa wolfSSL_SetTmpDH_file_wrapper
  4165. \sa wolfSSL_SetTmpDH_buffer
  4166. \sa wolfSSL_CTX_SetTmpDH_buffer
  4167. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4168. \sa wolfSSL_SetTmpDH
  4169. \sa wolfSSL_CTX_SetTmpDH
  4170. */
  4171. int wolfSSL_SetTmpDH_file(WOLFSSL* ssl, const char* f, int format);
  4172. /*!
  4173. \ingroup CertsKeys
  4174. \brief サーバーCTX Diffie-Hellmanのパラメータを設定します。
  4175. \return SSL_SUCCESS 関数とすべてのサブルーチンがエラーなしで戻った場合に返されます。
  4176. \return BAD_FUNC_ARG CTX、P、またはGパラメーターがNULLの場合に返されます。
  4177. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMindHKEYSZメンバーの値より小さい場合に返されます。
  4178. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMaxDhkeySZメンバーの値よりも大きい場合に返されます。
  4179. \return MEMORY_E この関数またはサブルーチンにメモリの割り当てが失敗した場合は返されます。
  4180. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4181. \param p ServerDH_P構造体のバッファメンバーにロードされた定数の符号なし文字ポインタ。
  4182. \param pSz pのサイズを表すint型は、max_dh_sizeに初期化されます。
  4183. \param g ServerDh_g構造体のバッファメンバーにロードされた定数の符号なし文字ポインタ。
  4184. \code
  4185. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
  4186. byte* p;
  4187. byte* g;
  4188. word32 pSz = (word32)sizeof(p)/sizeof(byte);
  4189. word32 gSz = (word32)sizeof(g)/sizeof(byte);
  4190. int ret = wolfSSL_CTX_SetTmpDH(ctx, p, pSz, g, gSz);
  4191. if(ret != SSL_SUCCESS){
  4192. // Failure case
  4193. }
  4194. \endcode
  4195. \sa wolfSSL_SetTmpDH
  4196. \sa wc_DhParamsLoad
  4197. */
  4198. int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX* ctx, const unsigned char* p,
  4199. int pSz, const unsigned char* g, int gSz);
  4200. /*!
  4201. \ingroup CertsKeys
  4202. \brief wolfssl_settmph_buffer_wrapperを呼び出すラッパー関数
  4203. \return 0 実行が成功するために返されました。
  4204. \return BAD_FUNC_ARG CTXパラメータまたはBUFパラメータがNULLの場合に返されます。
  4205. \return MEMORY_E メモリ割り当てエラーがある場合
  4206. \return SSL_BAD_FILETYPE フォーマットが正しくない場合は返されます。
  4207. \param ctx wolfssl_ctx_new()を使用して作成されたWolfSSL構造へのポインタ。
  4208. \param buf バッファとして割り当てられ、wolfssl_settmpdh_buffer_wrapperに渡された定数の符号なし文字型へのポインタ。
  4209. \param sz wolfssl_settmph_file_wrapper()のFNAMEパラメータから派生した長い整数型。
  4210. _Example_
  4211. \code
  4212. static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
  4213. Const char* fname, int format);
  4214. #ifdef WOLFSSL_SMALL_STACK
  4215. byte staticBuffer[1]; // force heap usage
  4216. #else
  4217. byte* staticBuffer;
  4218. long sz = 0;
  4219. if(ssl){
  4220. ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
  4221. } else {
  4222. ret = wolfSSL_CTX_SetTmpDH_buffer(ctx, myBuffer, sz, format);
  4223. }
  4224. \endcode
  4225. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4226. \sa wolfSSL_SetTMpDH_buffer
  4227. \sa wolfSSL_SetTmpDH_file_wrapper
  4228. \sa wolfSSL_CTX_SetTmpDH_file
  4229. */
  4230. int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX* ctx, const unsigned char* b,
  4231. long sz, int format);
  4232. /*!
  4233. \ingroup CertsKeys
  4234. \brief この関数は、wolfssl_settmph_file_wrapperを呼び出してサーバーDiffie-Hellmanパラメータを設定します。
  4235. \return SSL_SUCCESS wolfssl_settmph_file_wrapperまたはそのサブルーチンのいずれかが正常に戻った場合に返されます。
  4236. \return MEMORY_E 動的メモリの割り当てがサブルーチンで失敗した場合に返されます。
  4237. \return BAD_FUNC_ARG CTXまたはFNAMEパラメータがNULLまたはサブルーチンがNULL引数に渡された場合に返されます。
  4238. \return SSL_BAD_FILE 証明書ファイルが開くことができない場合、またはファイルの一連のチェックがwolfssl_settmpdh_file_wrapperから失敗した場合に返されます。
  4239. \return SSL_BAD_FILETYPE フォーマットがwolfssl_settmph_buffer_wrapper()からPEMまたはASN.1ではない場合に返されます。
  4240. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMindHKEYSZメンバーの値より小さい場合に返されます。
  4241. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMaxDhkeySZメンバーの値よりも大きい場合に返されます。
  4242. \return SIDE_ERROR wolfssl_settmph()で返されたサイドがサーバー終了ではない場合。
  4243. \return SSL_NO_PEM_HEADER PEMヘッダーがない場合はPemToderから返されます。
  4244. \return SSL_FATAL_ERROR メモリコピーの失敗がある場合はPemToderから返されます。
  4245. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4246. \param fname 証明書ファイルへの定数文字ポインタ。
  4247. _Example_
  4248. \code
  4249. #define dhParam “certs/dh2048.pem”
  4250. #DEFINE aSSERTiNTne(x, y) AssertInt(x, y, !=, ==)
  4251. WOLFSSL_CTX* ctx;
  4252. AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()))
  4253. AssertIntNE(SSL_SUCCESS, wolfSSL_CTX_SetTmpDH_file(NULL, dhParam,
  4254. SSL_FILETYPE_PEM));
  4255. \endcode
  4256. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4257. \sa wolfSSL_SetTmpDH
  4258. \sa wolfSSL_CTX_SetTmpDH
  4259. \sa wolfSSL_SetTmpDH_buffer
  4260. \sa wolfSSL_CTX_SetTmpDH_buffer
  4261. \sa wolfSSL_SetTmpDH_file_wrapper
  4262. \sa AllocDer
  4263. \sa PemToDer
  4264. */
  4265. int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX* ctx, const char* f,
  4266. int format);
  4267. /*!
  4268. \ingroup CertsKeys
  4269. \brief この関数は、wolfssl_ctx構造体のminkkeyszメンバーにアクセスして、Diffie Hellmanキーサイズの最小サイズ(ビット単位)を設定します。
  4270. \return SSL_SUCCESS 関数が正常に完了した場合に返されます。
  4271. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーz_BITSが16,000を超えるか、または8によって割り切れない場合に返されます。
  4272. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4273. _Example_
  4274. \code
  4275. public static int CTX_SetMinDhKey_Sz(IntPtr ctx, short minDhKey){
  4276. return wolfSSL_CTX_SetMinDhKey_Sz(local_ctx, minDhKeyBits);
  4277. \endcode
  4278. \sa wolfSSL_SetMinDhKey_Sz
  4279. \sa wolfSSL_CTX_SetMaxDhKey_Sz
  4280. \sa wolfSSL_SetMaxDhKey_Sz
  4281. \sa wolfSSL_GetDhKey_Sz
  4282. \sa wolfSSL_CTX_SetTMpDH_file
  4283. */
  4284. int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX* ctx, word16);
  4285. /*!
  4286. \ingroup CertsKeys
  4287. \brief WolfSSL構造のDiffie-Hellmanキーの最小サイズ(ビット単位)を設定します。
  4288. \return SSL_SUCCESS 最小サイズは正常に設定されました。
  4289. \return BAD_FUNC_ARG wolfssl構造はNULL、またはKeysz_BITSが16,000を超えるか、または8によって割り切れない場合
  4290. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4291. _Example_
  4292. \code
  4293. WOLFSSL* ssl = wolfSSL_new(ctx);
  4294. word16 keySz_bits;
  4295. ...
  4296. if(wolfSSL_SetMinDhKey_Sz(ssl, keySz_bits) != SSL_SUCCESS){
  4297. // Failed to set.
  4298. }
  4299. \endcode
  4300. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4301. \sa wolfSSL_GetDhKey_Sz
  4302. */
  4303. int wolfSSL_SetMinDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
  4304. /*!
  4305. \ingroup CertsKeys
  4306. \brief この関数は、wolfssl_ctx構造体のmaxdhkeyszメンバーにアクセスして、Diffie Hellmanキーサイズの最大サイズ(ビット単位)を設定します。
  4307. \return SSL_SUCCESS 関数が正常に完了した場合に返されます。
  4308. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーz_BITSが16,000を超えるか、または8によって割り切れない場合に返されます。
  4309. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4310. _Example_
  4311. \code
  4312. public static int CTX_SetMaxDhKey_Sz(IntPtr ctx, short maxDhKey){
  4313. return wolfSSL_CTX_SetMaxDhKey_Sz(local_ctx, keySz_bits);
  4314. \endcode
  4315. \sa wolfSSL_SetMinDhKey_Sz
  4316. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4317. \sa wolfSSL_SetMaxDhKey_Sz
  4318. \sa wolfSSL_GetDhKey_Sz
  4319. \sa wolfSSL_CTX_SetTMpDH_file
  4320. */
  4321. int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX* ctx, word16 keySz_bits);
  4322. /*!
  4323. \ingroup CertsKeys
  4324. \brief WolfSSL構造のDiffie-Hellmanキーの最大サイズ(ビット単位)を設定します。
  4325. \return SSL_SUCCESS 最大サイズは正常に設定されました。
  4326. \return BAD_FUNC_ARG WOLFSSL構造はNULLまたはKEYSZパラメータは許容サイズより大きかったか、または8によって割り切れませんでした。
  4327. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4328. _Example_
  4329. \code
  4330. WOLFSSL* ssl = wolfSSL_new(ctx);
  4331. word16 keySz;
  4332. ...
  4333. if(wolfSSL_SetMaxDhKey(ssl, keySz) != SSL_SUCCESS){
  4334. // Failed to set.
  4335. }
  4336. \endcode
  4337. \sa wolfSSL_CTX_SetMaxDhKey_Sz
  4338. \sa wolfSSL_GetDhKey_Sz
  4339. */
  4340. int wolfSSL_SetMaxDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
  4341. /*!
  4342. \ingroup CertsKeys
  4343. \brief オプション構造のメンバーであるDHKEYSZ(ビット内)の値を返します。この値は、Diffie-Hellmanキーサイズをバイト単位で表します。
  4344. \return dhKeySz サイズを表す整数値であるssl-> options.dhkeyszで保持されている値を返します。
  4345. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合に返します。
  4346. _Example_
  4347. \code
  4348. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  4349. WOLFSSL* ssl = wolfSSL_new(ctx);
  4350. int dhKeySz;
  4351. ...
  4352. dhKeySz = wolfSSL_GetDhKey_Sz(ssl);
  4353. if(dhKeySz == BAD_FUNC_ARG || dhKeySz <= 0){
  4354. // Failure case
  4355. } else {
  4356. // dhKeySz holds the size of the key.
  4357. }
  4358. \endcode
  4359. \sa wolfSSL_SetMinDhKey_sz
  4360. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4361. \sa wolfSSL_CTX_SetTmpDH
  4362. \sa wolfSSL_SetTmpDH
  4363. \sa wolfSSL_CTX_SetTmpDH_file
  4364. */
  4365. int wolfSSL_GetDhKey_Sz(WOLFSSL*);
  4366. /*!
  4367. \ingroup CertsKeys
  4368. \brief wolfssl_ctx構造体とwolfssl_cert_manager構造の両方で最小RSAキーサイズを設定します。
  4369. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  4370. \return BAD_FUNC_ARG CTX構造がNULLの場合、またはKEYSZがゼロより小さいか、または8によって割り切れない場合は返されます。
  4371. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4372. _Example_
  4373. \code
  4374. WOLFSSL_CTX* ctx = SSL_CTX_new(method);
  4375. (void)minDhKeyBits;
  4376. ourCert = myoptarg;
  4377. minDhKeyBits = atoi(myoptarg);
  4378. if(wolfSSL_CTX_SetMinRsaKey_Sz(ctx, minRsaKeyBits) != SSL_SUCCESS){
  4379. \endcode
  4380. \sa wolfSSL_SetMinRsaKey_Sz
  4381. */
  4382. int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX* ctx, short keySz);
  4383. /*!
  4384. \ingroup CertsKeys
  4385. \brief WolfSSL構造にあるRSAのためのビットで最小許容キーサイズを設定します。
  4386. \return SSL_SUCCESS 最小値が正常に設定されました。
  4387. \return BAD_FUNC_ARG SSL構造がNULLの場合、またはKSYSZがゼロより小さい場合、または8によって割り切れない場合は返されます。
  4388. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4389. _Example_
  4390. \code
  4391. WOLFSSL* ssl = wolfSSL_new(ctx);
  4392. short keySz;
  4393. int isSet = wolfSSL_SetMinRsaKey_Sz(ssl, keySz);
  4394. if(isSet != SSL_SUCCESS){
  4395. Failed to set.
  4396. }
  4397. \endcode
  4398. \sa wolfSSL_CTX_SetMinRsaKey_Sz
  4399. */
  4400. int wolfSSL_SetMinRsaKey_Sz(WOLFSSL* ssl, short keySz);
  4401. /*!
  4402. \ingroup CertsKeys
  4403. \brief wolf_ctx構造体とwolfssl_cert_manager構造体のECCキーの最小サイズをビット単位で設定します。
  4404. \return SSL_SUCCESS 実行が成功したために返され、MineCkeyszメンバーが設定されます。
  4405. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーが負の場合、または8によって割り切れない場合は返されます。
  4406. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4407. _Example_
  4408. \code
  4409. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  4410. short keySz; // minimum key size
  4411. if(wolfSSL_CTX_SetMinEccKey(ctx, keySz) != SSL_SUCCESS){
  4412. // Failed to set min key size
  4413. }
  4414. \endcode
  4415. \sa wolfSSL_SetMinEccKey_Sz
  4416. */
  4417. int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX* ssl, short keySz);
  4418. /*!
  4419. \ingroup CertsKeys
  4420. \brief オプション構造のMineCckeyszメンバーの値を設定します。オプション構造体は、WolfSSL構造のメンバーであり、SSLパラメータを介してアクセスされます。
  4421. \return SSL_SUCCESS 関数がオプション構造のMineCckeyszメンバーを正常に設定した場合。
  4422. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーサイズ(keysz)が0(ゼロ)未満の場合、または8で割り切れない場合。
  4423. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4424. _Example_
  4425. \code
  4426. WOLFSSL* ssl = wolfSSL_new(ctx); // New session
  4427. short keySz = 999; // should be set to min key size allowable
  4428. ...
  4429. if(wolfSSL_SetMinEccKey_Sz(ssl, keySz) != SSL_SUCCESS){
  4430. // Failure case.
  4431. }
  4432. \endcode
  4433. \sa wolfSSL_CTX_SetMinEccKey_Sz
  4434. \sa wolfSSL_CTX_SetMinRsaKey_Sz
  4435. \sa wolfSSL_SetMinRsaKey_Sz
  4436. */
  4437. int wolfSSL_SetMinEccKey_Sz(WOLFSSL* ssl, short keySz);
  4438. /*!
  4439. \ingroup CertsKeys
  4440. \brief この関数は、eap_tlsとeap-ttlsによって、マスターシークレットからキーイングマテリアルを導出します。
  4441. \return BUFFER_E バッファの実際のサイズが許容最大サイズを超える場合は返されます。
  4442. \return MEMORY_E メモリ割り当てにエラーがある場合は返されます。
  4443. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4444. \param msk p_hash関数の結果を保持するvoidポインタ変数。
  4445. \param len MSK変数の長さを表す符号なし整数。
  4446. _Example_
  4447. \code
  4448. WOLFSSL* ssl = wolfSSL_new(ctx);;
  4449. void* msk;
  4450. unsigned int len;
  4451. const char* label;
  4452. return wolfSSL_make_eap_keys(ssl, msk, len, label);
  4453. \endcode
  4454. \sa wc_PRF
  4455. \sa wc_HmacFinal
  4456. \sa wc_HmacUpdate
  4457. */
  4458. int wolfSSL_make_eap_keys(WOLFSSL* ssl, void* key, unsigned int len,
  4459. const char* label);
  4460. /*!
  4461. \ingroup IO
  4462. \brief Writev Semanticsをシミュレートしますが、SSL_Write()の動作のために実際にはブロックしないため、フロント追加が小さくなる可能性があるためWritevを使いやすいソフトウェアに移植する。
  4463. \return >0 成功時に書かれたバイト数。
  4464. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  4465. \return MEMORY_ERROR メモリエラーが発生した場合に返されます。
  4466. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_WRITE()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  4467. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4468. \param iov 書き込みへのI / Oベクトルの配列
  4469. _Example_
  4470. \code
  4471. WOLFSSL* ssl = 0;
  4472. char *bufA = “hello\n”;
  4473. char *bufB = “hello world\n”;
  4474. int iovcnt;
  4475. struct iovec iov[2];
  4476. iov[0].iov_base = buffA;
  4477. iov[0].iov_len = strlen(buffA);
  4478. iov[1].iov_base = buffB;
  4479. iov[1].iov_len = strlen(buffB);
  4480. iovcnt = 2;
  4481. ...
  4482. ret = wolfSSL_writev(ssl, iov, iovcnt);
  4483. // wrote “ret” bytes, or error if <= 0.
  4484. \endcode
  4485. \sa wolfSSL_write
  4486. */
  4487. int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov,
  4488. int iovcnt);
  4489. /*!
  4490. \ingroup Setup
  4491. \brief この関数はCA署名者リストをアンロードし、署名者全体のテーブルを解放します。
  4492. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  4493. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、または他の方法では未解決の引数値がサブルーチンに渡された場合に返されます。
  4494. \return BAD_MUTEX_E ミューテックスエラーが発生した場合は返されます。lockmutex()は0を返しませんでした。
  4495. _Example_
  4496. \code
  4497. WOLFSSL_METHOD method = wolfTLSv1_2_client_method();
  4498. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
  4499. if(!wolfSSL_CTX_UnloadCAs(ctx)){
  4500. // The function did not unload CAs
  4501. }
  4502. \endcode
  4503. \sa wolfSSL_CertManagerUnloadCAs
  4504. \sa LockMutex
  4505. \sa FreeSignerTable
  4506. \sa UnlockMutex
  4507. */
  4508. int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*);
  4509. /*!
  4510. \ingroup Setup
  4511. \brief この関数は、以前にロードされたすべての信頼できるピア証明書をアンロードするために使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。
  4512. \return SSL_SUCCESS 成功すると。
  4513. \return BAD_FUNC_ARG CTXがNULLの場合は返されます。
  4514. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4515. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4516. _Example_
  4517. \code
  4518. int ret = 0;
  4519. WOLFSSL_CTX* ctx;
  4520. ...
  4521. ret = wolfSSL_CTX_Unload_trust_peers(ctx);
  4522. if (ret != SSL_SUCCESS) {
  4523. // error unloading trusted peer certs
  4524. }
  4525. ...
  4526. \endcode
  4527. \sa wolfSSL_CTX_trust_peer_buffer
  4528. \sa wolfSSL_CTX_trust_peer_cert
  4529. */
  4530. int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX*);
  4531. /*!
  4532. \ingroup Setup
  4533. \brief この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。ファイルの代わりにバッファーの場合は、wolfssl_ctx_trust_peer_certと同じ機能です。特徴はマクロwolfssl_trust_peer_certを定義することによって有効になっています適切な使用法の例を参照してください。
  4534. \return SSL_SUCCESS 成功すると
  4535. \return SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合は返されます。
  4536. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4537. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4538. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4539. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4540. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4541. \param buffer 証明書を含むバッファへのポインタ。
  4542. \param sz バッファ入力の長さ。
  4543. _Example_
  4544. \code
  4545. int ret = 0;
  4546. WOLFSSL_CTX* ctx;
  4547. ...
  4548. ret = wolfSSL_CTX_trust_peer_buffer(ctx, bufferPtr, bufferSz,
  4549. SSL_FILETYPE_PEM);
  4550. if (ret != SSL_SUCCESS) {
  4551. // error loading trusted peer cert
  4552. }
  4553. ...
  4554. \endcode
  4555. \sa wolfSSL_CTX_load_verify_buffer
  4556. \sa wolfSSL_CTX_use_certificate_file
  4557. \sa wolfSSL_CTX_use_PrivateKey_file
  4558. \sa wolfSSL_CTX_use_certificate_chain_file
  4559. \sa wolfSSL_CTX_trust_peer_cert
  4560. \sa wolfSSL_CTX_Unload_trust_peers
  4561. \sa wolfSSL_use_certificate_file
  4562. \sa wolfSSL_use_PrivateKey_file
  4563. \sa wolfSSL_use_certificate_chain_file
  4564. */
  4565. int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
  4566. long sz, int format);
  4567. /*!
  4568. \ingroup CertsKeys
  4569. \brief この関数はCA証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。適切な使用法の例をご覧ください。
  4570. \return SSL_SUCCESS 成功すると
  4571. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4572. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4573. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4574. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4575. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4576. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4577. \param in CA証明書バッファへのポインタ。
  4578. \param sz 入力CA証明書バッファのサイズ、IN。
  4579. _Example_
  4580. \code
  4581. int ret = 0;
  4582. int sz = 0;
  4583. WOLFSSL_CTX* ctx;
  4584. byte certBuff[...];
  4585. ...
  4586. ret = wolfSSL_CTX_load_verify_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
  4587. if (ret != SSL_SUCCESS) {
  4588. // error loading CA certs from buffer
  4589. }
  4590. ...
  4591. \endcode
  4592. \sa wolfSSL_CTX_load_verify_locations
  4593. \sa wolfSSL_CTX_use_certificate_buffer
  4594. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4595. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4596. \sa wolfSSL_use_certificate_buffer
  4597. \sa wolfSSL_use_PrivateKey_buffer
  4598. \sa wolfSSL_use_certificate_chain_buffer
  4599. */
  4600. int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
  4601. long sz, int format);
  4602. /*!
  4603. \ingroup CertsKeys
  4604. \brief この関数はCA証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。_EXバージョンはPR 2413に追加され、UserChainとFlagsの追加の引数をサポートします。
  4605. \return SSL_SUCCESS 成功すると
  4606. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4607. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4608. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4609. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4610. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4611. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4612. \param in CA証明書バッファへのポインタ。
  4613. \param sz 入力CA証明書バッファのサイズ、IN。
  4614. \param format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
  4615. \param userChain フォーマットwolfssl_filetype_asn1を使用する場合、このセットはゼロ以外のセットを示しています.Derのチェーンが表示されています。
  4616. _Example_
  4617. \code
  4618. int ret = 0;
  4619. int sz = 0;
  4620. WOLFSSL_CTX* ctx;
  4621. byte certBuff[...];
  4622. ...
  4623. // Example for force loading an expired certificate
  4624. ret = wolfSSL_CTX_load_verify_buffer_ex(ctx, certBuff, sz, SSL_FILETYPE_PEM,
  4625. 0, (WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY));
  4626. if (ret != SSL_SUCCESS) {
  4627. // error loading CA certs from buffer
  4628. }
  4629. ...
  4630. \endcode
  4631. \sa wolfSSL_CTX_load_verify_buffer
  4632. \sa wolfSSL_CTX_load_verify_locations
  4633. \sa wolfSSL_CTX_use_certificate_buffer
  4634. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4635. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4636. \sa wolfSSL_use_certificate_buffer
  4637. \sa wolfSSL_use_PrivateKey_buffer
  4638. \sa wolfSSL_use_certificate_chain_buffer
  4639. */
  4640. int wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX* ctx,
  4641. const unsigned char* in, long sz,
  4642. int format, int userChain, word32 flags);
  4643. /*!
  4644. \ingroup CertsKeys
  4645. \brief この関数は、CA証明書チェーンバッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。適切な使用法の例をご覧ください。
  4646. \return SSL_SUCCESS 成功すると
  4647. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4648. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4649. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4650. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4651. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4652. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4653. \param in CA証明書バッファへのポインタ。
  4654. \param sz 入力CA証明書バッファのサイズ、IN。
  4655. _Example_
  4656. \code
  4657. int ret = 0;
  4658. int sz = 0;
  4659. WOLFSSL_CTX* ctx;
  4660. byte certBuff[...];
  4661. ...
  4662. ret = wolfSSL_CTX_load_verify_chain_buffer_format(ctx,
  4663. certBuff, sz, WOLFSSL_FILETYPE_ASN1);
  4664. if (ret != SSL_SUCCESS) {
  4665. // error loading CA certs from buffer
  4666. }
  4667. ...
  4668. \endcode
  4669. \sa wolfSSL_CTX_load_verify_locations
  4670. \sa wolfSSL_CTX_use_certificate_buffer
  4671. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4672. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4673. \sa wolfSSL_use_certificate_buffer
  4674. \sa wolfSSL_use_PrivateKey_buffer
  4675. \sa wolfSSL_use_certificate_chain_buffer
  4676. */
  4677. int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX* ctx,
  4678. const unsigned char* in,
  4679. long sz, int format);
  4680. /*!
  4681. \ingroup CertsKeys
  4682. \brief この関数は証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4683. \return SSL_SUCCESS 成功すると
  4684. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4685. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4686. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4687. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4688. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4689. \param in ロードする証明書を含む入力バッファ。
  4690. \param sz 入力バッファのサイズ。
  4691. _Example_
  4692. \code
  4693. int ret = 0;
  4694. int sz = 0;
  4695. WOLFSSL_CTX* ctx;
  4696. byte certBuff[...];
  4697. ...
  4698. ret = wolfSSL_CTX_use_certificate_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
  4699. if (ret != SSL_SUCCESS) {
  4700. // error loading certificate from buffer
  4701. }
  4702. ...
  4703. \endcode
  4704. \sa wolfSSL_CTX_load_verify_buffer
  4705. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4706. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4707. \sa wolfSSL_use_certificate_buffer
  4708. \sa wolfSSL_use_PrivateKey_buffer
  4709. \sa wolfSSL_use_certificate_chain_buffer
  4710. */
  4711. int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX* ctx,
  4712. const unsigned char* in, long sz,
  4713. int format);
  4714. /*!
  4715. \ingroup CertsKeys
  4716. \brief この関数は、秘密鍵バッファをSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1OR SSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4717. \return SSL_SUCCESS 成功すると
  4718. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4719. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4720. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4721. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4722. \return NO_PASSWORD キーファイルが暗号化されているがパスワードが提供されていない場合は返されます。
  4723. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4724. \param in ロードする秘密鍵を含む入力バッファ。
  4725. \param sz 入力バッファのサイズ。
  4726. _Example_
  4727. \code
  4728. int ret = 0;
  4729. int sz = 0;
  4730. WOLFSSL_CTX* ctx;
  4731. byte keyBuff[...];
  4732. ...
  4733. ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx, keyBuff, sz, SSL_FILETYPE_PEM);
  4734. if (ret != SSL_SUCCESS) {
  4735. // error loading private key from buffer
  4736. }
  4737. ...
  4738. \endcode
  4739. \sa wolfSSL_CTX_load_verify_buffer
  4740. \sa wolfSSL_CTX_use_certificate_buffer
  4741. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4742. \sa wolfSSL_use_certificate_buffer
  4743. \sa wolfSSL_use_PrivateKey_buffer
  4744. \sa wolfSSL_use_certificate_chain_buffer
  4745. */
  4746. int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX* ctx,
  4747. const unsigned char* in, long sz,
  4748. int format);
  4749. /*!
  4750. \ingroup CertsKeys
  4751. \brief この関数は、証明書チェーンバッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。バッファはPEM形式で、ルート証明書で終わる対象の証明書から始めてください。適切な使用法の例をご覧ください。
  4752. \return SSL_SUCCESS 成功すると
  4753. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4754. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4755. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4756. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4757. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4758. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4759. \param in ロードされるPEM形式の証明書チェーンを含む入力バッファ。
  4760. _Example_
  4761. \code
  4762. int ret = 0;
  4763. int sz = 0;
  4764. WOLFSSL_CTX* ctx;
  4765. byte certChainBuff[...];
  4766. ...
  4767. ret = wolfSSL_CTX_use_certificate_chain_buffer(ctx, certChainBuff, sz);
  4768. if (ret != SSL_SUCCESS) {
  4769. // error loading certificate chain from buffer
  4770. }
  4771. ...
  4772. \endcode
  4773. \sa wolfSSL_CTX_load_verify_buffer
  4774. \sa wolfSSL_CTX_use_certificate_buffer
  4775. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4776. \sa wolfSSL_use_certificate_buffer
  4777. \sa wolfSSL_use_PrivateKey_buffer
  4778. \sa wolfSSL_use_certificate_chain_buffer
  4779. */
  4780. int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX* ctx,
  4781. const unsigned char* in, long sz);
  4782. /*!
  4783. \ingroup CertsKeys
  4784. \brief この関数は、証明書バッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4785. \return SSL_SUCCESS 成功すると。
  4786. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4787. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4788. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4789. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4790. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4791. \param in ロードする証明書を含むバッファ。
  4792. \param sz バッファにある証明書のサイズ。
  4793. _Example_
  4794. \code
  4795. int buffSz;
  4796. int ret;
  4797. byte certBuff[...];
  4798. WOLFSSL* ssl = 0;
  4799. ...
  4800. ret = wolfSSL_use_certificate_buffer(ssl, certBuff, buffSz, SSL_FILETYPE_PEM);
  4801. if (ret != SSL_SUCCESS) {
  4802. // failed to load certificate from buffer
  4803. }
  4804. \endcode
  4805. \sa wolfSSL_CTX_load_verify_buffer
  4806. \sa wolfSSL_CTX_use_certificate_buffer
  4807. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4808. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4809. \sa wolfSSL_use_PrivateKey_buffer
  4810. \sa wolfSSL_use_certificate_chain_buffer
  4811. */
  4812. int wolfSSL_use_certificate_buffer(WOLFSSL* ssl, const unsigned char* in,
  4813. long sz, int format);
  4814. /*!
  4815. \ingroup CertsKeys
  4816. \brief この関数は、秘密鍵バッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4817. \return SSL_SUCCESS 成功すると。
  4818. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4819. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4820. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4821. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4822. \return NO_PASSWORD キーファイルが暗号化されているがパスワードが提供されていない場合は返されます。
  4823. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4824. \param in ロードする秘密鍵を含むバッファ。
  4825. \param sz バッファにある秘密鍵のサイズ。
  4826. _Example_
  4827. \code
  4828. int buffSz;
  4829. int ret;
  4830. byte keyBuff[...];
  4831. WOLFSSL* ssl = 0;
  4832. ...
  4833. ret = wolfSSL_use_PrivateKey_buffer(ssl, keyBuff, buffSz, SSL_FILETYPE_PEM);
  4834. if (ret != SSL_SUCCESS) {
  4835. // failed to load private key from buffer
  4836. }
  4837. \endcode
  4838. \sa wolfSSL_use_PrivateKey
  4839. \sa wolfSSL_CTX_load_verify_buffer
  4840. \sa wolfSSL_CTX_use_certificate_buffer
  4841. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4842. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4843. \sa wolfSSL_use_certificate_buffer
  4844. \sa wolfSSL_use_certificate_chain_buffer
  4845. */
  4846. int wolfSSL_use_PrivateKey_buffer(WOLFSSL* ssl, const unsigned char* in,
  4847. long sz, int format);
  4848. /*!
  4849. \ingroup CertsKeys
  4850. \brief この関数は、証明書チェーンバッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。バッファはPEM形式で、ルート証明書で終わる対象の証明書から始めてください。適切な使用法の例をご覧ください。
  4851. \return SSL_SUCCES 成功すると。
  4852. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4853. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4854. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4855. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4856. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4857. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4858. \param in ロードする証明書を含むバッファ。
  4859. _Example_
  4860. \code
  4861. int buffSz;
  4862. int ret;
  4863. byte certChainBuff[...];
  4864. WOLFSSL* ssl = 0;
  4865. ...
  4866. ret = wolfSSL_use_certificate_chain_buffer(ssl, certChainBuff, buffSz);
  4867. if (ret != SSL_SUCCESS) {
  4868. // failed to load certificate chain from buffer
  4869. }
  4870. \endcode
  4871. \sa wolfSSL_CTX_load_verify_buffer
  4872. \sa wolfSSL_CTX_use_certificate_buffer
  4873. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4874. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4875. \sa wolfSSL_use_certificate_buffer
  4876. \sa wolfSSL_use_PrivateKey_buffer
  4877. */
  4878. int wolfSSL_use_certificate_chain_buffer(WOLFSSL* ssl,
  4879. const unsigned char* in, long sz);
  4880. /*!
  4881. \ingroup CertsKeys
  4882. \brief この関数は、SSLが所有する証明書またはキーをアンロードします。
  4883. \return SSL_SUCCESS - 関数が正常に実行された場合に返されます。
  4884. \return BAD_FUNC_ARG - wolfsslオブジェクトがnullの場合に返されます。
  4885. _Example_
  4886. \code
  4887. WOLFSSL* ssl = wolfSSL_new(ctx);
  4888. ...
  4889. int unloadKeys = wolfSSL_UnloadCertsKeys(ssl);
  4890. if(unloadKeys != SSL_SUCCESS){
  4891. // Failure case.
  4892. }
  4893. \endcode
  4894. \sa wolfSSL_CTX_UnloadCAs
  4895. */
  4896. int wolfSSL_UnloadCertsKeys(WOLFSSL*);
  4897. /*!
  4898. \ingroup Setup
  4899. \brief この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
  4900. \return SSL_SUCCESS 成功に戻ります。
  4901. \return BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。
  4902. _Example_
  4903. \code
  4904. WOLFSSL_CTX* ctx = 0;
  4905. ...
  4906. ret = wolfSSL_CTX_set_group_messages(ctx);
  4907. if (ret != SSL_SUCCESS) {
  4908. // failed to set handshake message grouping
  4909. }
  4910. \endcode
  4911. \sa wolfSSL_set_group_messages
  4912. \sa wolfSSL_CTX_new
  4913. */
  4914. int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*);
  4915. /*!
  4916. \ingroup Setup
  4917. \brief この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
  4918. \return SSL_SUCCESS 成功に戻ります。
  4919. \return BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。
  4920. _Example_
  4921. \code
  4922. WOLFSSL* ssl = 0;
  4923. ...
  4924. ret = wolfSSL_set_group_messages(ssl);
  4925. if (ret != SSL_SUCCESS) {
  4926. // failed to set handshake message grouping
  4927. }
  4928. \endcode
  4929. \sa wolfSSL_CTX_set_group_messages
  4930. \sa wolfSSL_new
  4931. */
  4932. int wolfSSL_set_group_messages(WOLFSSL*);
  4933. /*!
  4934. \brief
  4935. \return none いいえ返します。
  4936. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4937. \param cbf フォームの関数ポインタであるCallBackFozzerタイプ:int(* callbackfuzzer)(wolfssl * ssl、consigned char * buf、int sz、int型、void * fuzzctx);
  4938. _Example_
  4939. \code
  4940. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  4941. WOLFSSL* ssl = wolfSSL_new(ctx);
  4942. void* fCtx;
  4943. int callbackFuzzerCB(WOLFSSL* ssl, const unsigned char* buf, int sz,
  4944. int type, void* fuzzCtx){
  4945. // function definition
  4946. }
  4947. wolfSSL_SetFuzzerCb(ssl, callbackFuzzerCB, fCtx);
  4948. \endcode
  4949. \sa CallbackFuzzer
  4950. */
  4951. void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx);
  4952. /*!
  4953. \brief
  4954. \return 0 関数がエラーなしで実行された場合に返されます。
  4955. \return BAD_FUNC_ARG 許容できない値で関数に渡された引数があった場合に返されます。
  4956. \return COOKIE_SECRET_SZ 秘密サイズが0の場合に返されます。
  4957. \return MEMORY_ERROR 新しいCookie Secretにメモリを割り当てる問題がある場合は返されました。
  4958. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4959. \param secret 秘密バッファを表す定数バイトポインタ。
  4960. _Example_
  4961. \code
  4962. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  4963. WOLFSSL* ssl = wolfSSL_new(ctx);
  4964. const* byte secret;
  4965. word32 secretSz; // size of secret
  4966. if(!wolfSSL_DTLS_SetCookieSecret(ssl, secret, secretSz)){
  4967. // Code block for failure to set DTLS cookie secret
  4968. } else {
  4969. // Success! Cookie secret is set.
  4970. }
  4971. \endcode
  4972. \sa ForceZero
  4973. \sa wc_RNG_GenerateBlock
  4974. */
  4975. int wolfSSL_DTLS_SetCookieSecret(WOLFSSL* ssl,
  4976. const unsigned char* secret,
  4977. unsigned int secretSz);
  4978. /*!
  4979. \brief
  4980. \return rng 成功すると。
  4981. \return NULL SSLがNULLの場合
  4982. _Example_
  4983. \code
  4984. WOLFSSL* ssl;
  4985. wolfSSL_GetRNG(ssl);
  4986. \endcode
  4987. \sa wolfSSL_CTX_new_rng
  4988. */
  4989. WC_RNG* wolfSSL_GetRNG(WOLFSSL* ssl);
  4990. /*!
  4991. \ingroup Setup
  4992. \brief この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。
  4993. \return SSL_SUCCESS エラーなしで返された関数と最小バージョンが設定されている場合に返されます。
  4994. \return BAD_FUNC_ARG wolfssl_ctx構造がNULLの場合、または最小バージョンがサポートされていない場合に返されます。
  4995. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4996. _Example_
  4997. \code
  4998. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  4999. WOLFSSL* ssl = WOLFSSL_new(ctx);
  5000. int version; // macrop representation
  5001. if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
  5002. // Failed to set min version
  5003. }
  5004. \endcode
  5005. \sa SetMinVersionHelper
  5006. */
  5007. int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version);
  5008. /*!
  5009. \ingroup TLS
  5010. \brief この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。
  5011. \return SSL_SUCCESS この関数とそのサブルーチンがエラーなしで実行された場合に返されます。
  5012. \return BAD_FUNC_ARG SSLオブジェクトがNULLの場合に返されます。サブルーチンでは、良いバージョンが一致しない場合、このエラーはスローされます。
  5013. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  5014. _Example_
  5015. \code
  5016. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol method);
  5017. WOLFSSL* ssl = WOLFSSL_new(ctx);
  5018. int version; macro representation
  5019. if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
  5020. Failed to set min version
  5021. }
  5022. \endcode
  5023. \sa SetMinVersionHelper
  5024. */
  5025. int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version);
  5026. /*!
  5027. \brief ビルドオプションと設定に依存します。WolfSSLを構築するときにshow_sizesが定義されている場合、この関数はWolfSSLオブジェクト(スイート、暗号など)内の個々のオブジェクトのサイズもstdoutに印刷されます。
  5028. \return size この関数は、WolfSSLオブジェクトのサイズを返します。
  5029. _Example_
  5030. \code
  5031. int size = 0;
  5032. size = wolfSSL_GetObjectSize();
  5033. printf(“sizeof(WOLFSSL) = %d\n”, size);
  5034. \endcode
  5035. \sa wolfSSL_new
  5036. */
  5037. int wolfSSL_GetObjectSize(void); /* object size based on build */
  5038. /*!
  5039. \brief アプリケーションがトランスポートレイヤ間で何バイトを送信したい場合は、指定された平文の入力サイズを指定してください。SSL / TLSハンドシェイクが完了した後に呼び出す必要があります。
  5040. \return size 成功すると、要求されたサイズが返されます
  5041. \return INPUT_SIZE_E 入力サイズが最大TLSフラグメントサイズより大きい場合は返されます(WOLFSSL_GETMAXOUTPUTSIZE())。
  5042. \return BAD_FUNC_ARG 無効な関数引数に戻り、またはSSL / TLSハンドシェイクがまだ完了していない場合
  5043. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5044. _Example_
  5045. \code
  5046. none
  5047. \endcode
  5048. \sa wolfSSL_GetMaxOutputSize
  5049. */
  5050. int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz);
  5051. /*!
  5052. \brief プロトコル規格で指定されている最大SSL / TLSレコードサイズのいずれかに対応します。この関数は、アプリケーションがwolfssl_getOutputSize()と呼ばれ、input_size_eエラーを受信したときに役立ちます。SSL / TLSハンドシェイクが完了した後に呼び出す必要があります。
  5053. \return size 成功すると、最大出力サイズが返されます
  5054. \return BAD_FUNC_ARG 無効な関数引数のときに返されるか、SSL / TLSハンドシェイクがまだ完了していない場合。
  5055. _Example_
  5056. \code
  5057. none
  5058. \endcode
  5059. \sa wolfSSL_GetOutputSize
  5060. */
  5061. int wolfSSL_GetMaxOutputSize(WOLFSSL*);
  5062. /*!
  5063. \ingroup Setup
  5064. \brief この関数は、バージョンで指定されたバージョンを使用して、指定されたSSLセッション(WolfSSLオブジェクト)のSSL / TLSプロトコルバージョンを設定します。これにより、SSLセッション(SSL)のプロトコル設定が最初に定義され、SSLコンテキスト(WolfSSL_CTX_NEW())メソッドの種類によって上書きされます。
  5065. \return SSL_SUCCESS 成功すると。
  5066. \return BAD_FUNC_ARG 入力SSLオブジェクトがNULLまたは誤ったプロトコルバージョンがバージョンで指定されている場合に返されます。
  5067. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  5068. _Example_
  5069. \code
  5070. int ret = 0;
  5071. WOLFSSL* ssl;
  5072. ...
  5073. ret = wolfSSL_SetVersion(ssl, WOLFSSL_TLSV1);
  5074. if (ret != SSL_SUCCESS) {
  5075. // failed to set SSL session protocol version
  5076. }
  5077. \endcode
  5078. \sa wolfSSL_CTX_new
  5079. */
  5080. int wolfSSL_SetVersion(WOLFSSL* ssl, int version);
  5081. /*!
  5082. \brief MAC /暗号化コールバック。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。MacOutは、MACの結果を保存する必要がある出力バッファです。MacinはMac入力バッファーとMacinszのサイズを注意しています。MacContentとMacverifyは、Wolfssl_SettlShmacinner()に必要であり、そのまま通過します。Encoutは、暗号化の結果を格納する必要がある出力バッファです。ENCINはENCSZが入力のサイズである間は暗号化する入力バッファです。コールバックの例は、wolfssl / test.h mymacencryptcb()を見つけることができます。
  5083. \return none 返品不可。
  5084. _Example_
  5085. \code
  5086. none
  5087. \endcode
  5088. \sa wolfSSL_SetMacEncryptCtx
  5089. \sa wolfSSL_GetMacEncryptCtx
  5090. */
  5091. void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX* ctx, CallbackMacEncrypti cb);
  5092. /*!
  5093. \brief CTXへのコールバックコンテキスト。
  5094. \return none 返品不可。
  5095. _Example_
  5096. \code
  5097. none
  5098. \endcode
  5099. \sa wolfSSL_CTX_SetMacEncryptCb
  5100. \sa wolfSSL_GetMacEncryptCtx
  5101. */
  5102. void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx);
  5103. /*!
  5104. \brief Mac / Encryptコールバックコンテキストは、wolfssl_setmacencryptx()で保存されていました。
  5105. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5106. \return NULL 空白のコンテキストのために返されます。
  5107. _Example_
  5108. \code
  5109. none
  5110. \endcode
  5111. \sa wolfSSL_CTX_SetMacEncryptCb
  5112. \sa wolfSSL_SetMacEncryptCtx
  5113. */
  5114. void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl);
  5115. /*!
  5116. \brief コールバックを復号化/確認します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。DECOUTは、復号化の結果を格納する出力バッファです。DECINは暗号化された入力バッファーとDecinszのサイズを注意しています。コンテンツと検証は、WolfSSL_SettlShmacinner()に必要であり、そのまま通過します。PADSZは、パディングの合計値で設定する出力変数です。つまり、MACサイズとパディングバイトとパッドバイトを加えています。コールバックの例は、wolfssl / test.h mydecryptverifycb()を見つけることができます。
  5117. \return none いいえ返します。
  5118. _Example_
  5119. \code
  5120. none
  5121. \endcode
  5122. \sa wolfSSL_SetMacEncryptCtx
  5123. \sa wolfSSL_GetMacEncryptCtx
  5124. */
  5125. void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX* ctx,
  5126. CallbackDecryptVerify cb);
  5127. /*!
  5128. \brief コールバックコンテキストをCTXに復号化/検証します。
  5129. \return none いいえ返します。
  5130. _Example_
  5131. \code
  5132. none
  5133. \endcode
  5134. \sa wolfSSL_CTX_SetDecryptVerifyCb
  5135. \sa wolfSSL_GetDecryptVerifyCtx
  5136. */
  5137. void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx);
  5138. /*!
  5139. \brief wolfssl_setdecryptverifyctx()で以前に保存されているコールバックコンテキストを復号化/検証します。
  5140. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5141. \return NULL 空白のコンテキストのために返されます。
  5142. _Example_
  5143. \code
  5144. none
  5145. \endcode
  5146. \sa wolfSSL_CTX_SetDecryptVerifyCb
  5147. \sa wolfSSL_SetDecryptVerifyCtx
  5148. */
  5149. void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl);
  5150. /*!
  5151. \brief VERIFYパラメーターは、これがピア・メッセージの検証のためのものであるかどうかを指定します。
  5152. \return pointer 正常にコールが秘密に有効なポインタを返します。秘密のサイズは、Wolfssl_gethmacsize()から入手できます。
  5153. \return NULL エラー状態に戻ります。
  5154. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5155. _Example_
  5156. \code
  5157. none
  5158. \endcode
  5159. \sa wolfSSL_GetHmacSize
  5160. */
  5161. const unsigned char* wolfSSL_GetMacSecret(WOLFSSL* ssl, int verify);
  5162. /*!
  5163. \brief
  5164. \return pointer 正常にコールがキーへの有効なポインタを返します。キーのサイズは、wolfssl_getkeysize()から取得できます。
  5165. \return NULL エラー状態に戻ります。
  5166. _Example_
  5167. \code
  5168. none
  5169. \endcode
  5170. \sa wolfSSL_GetKeySize
  5171. \sa wolfSSL_GetClientWriteIV
  5172. */
  5173. const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*);
  5174. /*!
  5175. \brief ハンドシェイクプロセスから。
  5176. \return pointer 正常にコールがIVへの有効なポインタを返します。IVのサイズは、wolfssl_getCipherBlockSize()から取得できます。
  5177. \return NULL エラー状態に戻ります。
  5178. _Example_
  5179. \code
  5180. none
  5181. \endcode
  5182. \sa wolfSSL_GetCipherBlockSize()
  5183. \sa wolfSSL_GetClientWriteKey()
  5184. */
  5185. const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*);
  5186. /*!
  5187. \brief
  5188. \return pointer 正常にコールがキーへの有効なポインタを返します。キーのサイズは、wolfssl_getkeysize()から取得できます。
  5189. \return NULL エラー状態に戻ります。
  5190. _Example_
  5191. \code
  5192. none
  5193. \endcode
  5194. \sa wolfSSL_GetKeySize
  5195. \sa wolfSSL_GetServerWriteIV
  5196. */
  5197. const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*);
  5198. /*!
  5199. \brief ハンドシェイクプロセスから。
  5200. \return pointer 正常にコールがIVへの有効なポインタを返します。IVのサイズは、wolfssl_getCipherBlockSize()から取得できます。
  5201. \return NULL エラー状態に戻ります。
  5202. \sa wolfSSL_GetCipherBlockSize
  5203. \sa wolfSSL_GetClientWriteKey
  5204. */
  5205. const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*);
  5206. /*!
  5207. \brief
  5208. \return size 正常にコールがキーサイズをバイト単位で返します。
  5209. \return BAD_FUNC_ARG エラー状態に戻ります。
  5210. _Example_
  5211. \code
  5212. none
  5213. \endcode
  5214. \sa wolfSSL_GetClientWriteKey
  5215. \sa wolfSSL_GetServerWriteKey
  5216. */
  5217. int wolfSSL_GetKeySize(WOLFSSL*);
  5218. /*!
  5219. \ingroup CertsKeys
  5220. \brief WolfSSL構造体に保持されているSpecs構造体のIV_SIZEメンバーを返します。
  5221. \return iv_size ssl-> specs.iv_sizeで保持されている値を返します。
  5222. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  5223. _Example_
  5224. \code
  5225. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  5226. WOLFSSL* ssl = wolfSSL_new(ctx);
  5227. int ivSize;
  5228. ...
  5229. ivSize = wolfSSL_GetIVSize(ssl);
  5230. if(ivSize > 0){
  5231. // ivSize holds the specs.iv_size value.
  5232. }
  5233. \endcode
  5234. \sa wolfSSL_GetKeySize
  5235. \sa wolfSSL_GetClientWriteIV
  5236. \sa wolfSSL_GetServerWriteIV
  5237. */
  5238. int wolfSSL_GetIVSize(WOLFSSL*);
  5239. /*!
  5240. \brief
  5241. \return success 成功した場合、呼び出しがWolfSSLオブジェクトの側面に応じてwolfssl_server_endまたはwolfssl_client_endを返します。
  5242. \return BAD_FUNC_ARG エラー状態に戻ります。
  5243. _Example_
  5244. \code
  5245. none
  5246. \endcode
  5247. \sa wolfSSL_GetClientWriteKey
  5248. \sa wolfSSL_GetServerWriteKey
  5249. */
  5250. int wolfSSL_GetSide(WOLFSSL*);
  5251. /*!
  5252. \brief 少なくともTLSバージョン1.1以上です。
  5253. \return true/false 成功した場合、呼び出しがTRUEまたは0の場合は0を返します。
  5254. \return BAD_FUNC_ARG エラー状態に戻ります。
  5255. _Example_
  5256. \code
  5257. none
  5258. \endcode
  5259. \sa wolfSSL_GetSide
  5260. */
  5261. int wolfSSL_IsTLSv1_1(WOLFSSL*);
  5262. /*!
  5263. \brief ハンドシェイクから。
  5264. \return If コールが成功すると、wolfssl_cipher_null、wolfssl_des、wolfssl_triple_des、wolfssl_aes、wolfssl_aes_gcm、wolfssl_aes_ccm、wolfssl_camellia。
  5265. \return BAD_FUNC_ARG エラー状態に戻ります。
  5266. _Example_
  5267. \code
  5268. none
  5269. \endcode
  5270. \sa wolfSSL_GetCipherBlockSize
  5271. \sa wolfSSL_GetKeySize
  5272. */
  5273. int wolfSSL_GetBulkCipher(WOLFSSL*);
  5274. /*!
  5275. \brief ハンドシェイク。
  5276. \return size 正常にコールが暗号ブロックサイズのサイズをバイト単位で戻します。
  5277. \return BAD_FUNC_ARG エラー状態に戻ります。
  5278. _Example_
  5279. \code
  5280. none
  5281. \endcode
  5282. \sa wolfSSL_GetBulkCipher
  5283. \sa wolfSSL_GetKeySize
  5284. */
  5285. int wolfSSL_GetCipherBlockSize(WOLFSSL*);
  5286. /*!
  5287. \brief ハンドシェーク。暗号タイプのwolfssl_aead_typeの場合。
  5288. \return size 正常にコールがEAD MACサイズのサイズをバイト単位で戻します。
  5289. \return BAD_FUNC_ARG エラー状態に戻ります。
  5290. _Example_
  5291. \code
  5292. none
  5293. \endcode
  5294. \sa wolfSSL_GetBulkCipher
  5295. \sa wolfSSL_GetKeySize
  5296. */
  5297. int wolfSSL_GetAeadMacSize(WOLFSSL*);
  5298. /*!
  5299. \brief ハンドシェーク。wolfssl_aead_type以外の暗号タイプの場合。
  5300. \return size 正常にコールが(H)MACサイズのサイズをバイト単位で戻します。
  5301. \return BAD_FUNC_ARG エラー状態に戻ります。
  5302. _Example_
  5303. \code
  5304. none
  5305. \endcode
  5306. \sa wolfSSL_GetBulkCipher
  5307. \sa wolfSSL_GetHmacType
  5308. */
  5309. int wolfSSL_GetHmacSize(WOLFSSL*);
  5310. /*!
  5311. \brief ハンドシェーク。wolfssl_aead_type以外の暗号タイプの場合。
  5312. \return If コールが成功すると、次のいずれかが返されます.MD5、SHA、SHA256、SHA384。
  5313. \return BAD_FUNC_ARG エラー状態に対して返される可能性があります。
  5314. \return SSL_FATAL_ERROR エラー状態にも返される可能性があります。
  5315. _Example_
  5316. \code
  5317. none
  5318. \endcode
  5319. \sa wolfSSL_GetBulkCipher
  5320. \sa wolfSSL_GetHmacSize
  5321. */
  5322. int wolfSSL_GetHmacType(WOLFSSL*);
  5323. /*!
  5324. \brief ハンドシェイクから。
  5325. \return If 正常にコールは次のいずれかを返します.WolfSSL_BLOCK_TYPE、WOLFSSL_STREAM_TYPE、WOLFSSL_AEAD_TYPE。
  5326. \return BAD_FUNC_ARG エラー状態に戻ります。
  5327. _Example_
  5328. \code
  5329. none
  5330. \endcode
  5331. \sa wolfSSL_GetBulkCipher
  5332. \sa wolfSSL_GetHmacType
  5333. */
  5334. int wolfSSL_GetCipherType(WOLFSSL*);
  5335. /*!
  5336. \brief 送受信結果は、少なくともwolfssl_gethmacsize()バイトであるべきである内部に書き込まれます。メッセージのサイズはSZで指定され、内容はメッセージの種類であり、検証はこれがピアメッセージの検証であるかどうかを指定します。wolfssl_aead_typeを除く暗号タイプに有効です。
  5337. \return 1 成功すると。
  5338. \return BAD_FUNC_ARG エラー状態に戻ります。
  5339. _Example_
  5340. \code
  5341. none
  5342. \endcode
  5343. \sa wolfSSL_GetBulkCipher
  5344. \sa wolfSSL_GetHmacType
  5345. */
  5346. int wolfSSL_SetTlsHmacInner(WOLFSSL* ssl, byte* inner,
  5347. word32 sz, int content, int verify);
  5348. /*!
  5349. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INSは入力バッファーが入力の長さを表します。OUTは、署名の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、署名の実際のサイズを戻す前に格納する必要があります。keyderはASN1フォーマットのECC秘密鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myeccsign()を見つけることができます。
  5350. \return none いいえ返します。
  5351. _Example_
  5352. \code
  5353. none
  5354. \endcode
  5355. \sa wolfSSL_SetEccSignCtx
  5356. \sa wolfSSL_GetEccSignCtx
  5357. */
  5358. void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX* ctx, CallbackEccSign cb);
  5359. /*!
  5360. \brief CTXへのコンテキスト。
  5361. \return none いいえ返します。
  5362. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5363. _Example_
  5364. \code
  5365. none
  5366. \endcode
  5367. \sa wolfSSL_CTX_SetEccSignCb
  5368. \sa wolfSSL_GetEccSignCtx
  5369. */
  5370. void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx);
  5371. /*!
  5372. \brief 以前にwolfssl_seteccsignctx()で保存されていたコンテキスト。
  5373. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5374. \return NULL 空白のコンテキストのために返されます。
  5375. _Example_
  5376. \code
  5377. none
  5378. \endcode
  5379. \sa wolfSSL_CTX_SetEccSignCb
  5380. \sa wolfSSL_SetEccSignCtx
  5381. */
  5382. void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl);
  5383. /*!
  5384. \brief CTXへのコンテキスト。
  5385. \return none いいえ返します。
  5386. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  5387. _Example_
  5388. \code
  5389. none
  5390. \endcode
  5391. \sa wolfSSL_CTX_SetEccSignCb
  5392. \sa wolfSSL_CTX_GetEccSignCtx
  5393. */
  5394. void wolfSSL_CTX_SetEccSignCtx(WOLFSSL_CTX* ctx, void *userCtx);
  5395. /*!
  5396. \brief 以前にwolfssl_seteccsignctx()で保存されていたコンテキスト。
  5397. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5398. \return NULL 空白のコンテキストのために返されます。
  5399. _Example_
  5400. \code
  5401. none
  5402. \endcode
  5403. \sa wolfSSL_CTX_SetEccSignCb
  5404. \sa wolfSSL_CTX_SetEccSignCtx
  5405. */
  5406. void* wolfSSL_CTX_GetEccSignCtx(WOLFSSL_CTX* ctx);
  5407. /*!
  5408. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。ハッシュはメッセージのダイジェストを含む入力バッファであり、HASHSZはハッシュの長さを意味します。結果は、検証の結果を格納する出力変数、成功のために1、失敗のために0を記憶する必要があります。keyderはASN1フォーマットのECC秘密鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myeccverify()を見つけることができます。
  5409. \return none いいえ返します。
  5410. _Example_
  5411. \code
  5412. none
  5413. \endcode
  5414. \sa wolfSSL_SetEccVerifyCtx
  5415. \sa wolfSSL_GetEccVerifyCtx
  5416. */
  5417. void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX* ctx, CallbackEccVerify cb);
  5418. /*!
  5419. \brief CTXへのコンテキスト。
  5420. \return none いいえ返します。
  5421. _Example_
  5422. \code
  5423. none
  5424. \endcode
  5425. \sa wolfSSL_CTX_SetEccVerifyCb
  5426. \sa wolfSSL_GetEccVerifyCtx
  5427. */
  5428. void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx);
  5429. /*!
  5430. \brief 以前にwolfssl_setecverifyctx()で保存されていたコンテキスト。
  5431. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5432. \return NULL 空白のコンテキストのために返されます。
  5433. _Example_
  5434. \code
  5435. none
  5436. \endcode
  5437. \sa wolfSSL_CTX_SetEccVerifyCb
  5438. \sa wolfSSL_SetEccVerifyCtx
  5439. */
  5440. void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl);
  5441. /*!
  5442. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INSは入力バッファーが入力の長さを表します。OUTは、署名の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、署名の実際のサイズを戻す前に格納する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsasign()を見つけることができます。
  5443. \return none いいえ返します。
  5444. _Example_
  5445. \code
  5446. none
  5447. \endcode
  5448. \sa wolfSSL_SetRsaSignCtx
  5449. \sa wolfSSL_GetRsaSignCtx
  5450. */
  5451. void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX* ctx, CallbackRsaSign cb);
  5452. /*!
  5453. \brief ctxに。
  5454. \return none いいえ返します。
  5455. _Example_
  5456. \code
  5457. none
  5458. \endcode
  5459. \sa wolfSSL_CTX_SetRsaSignCb
  5460. \sa wolfSSL_GetRsaSignCtx
  5461. */
  5462. void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx);
  5463. /*!
  5464. \brief 以前にwolfssl_setrsAsignctx()で保存されていたコンテキスト。
  5465. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5466. \return NULL 空白のコンテキストのために返されます。
  5467. \param none パラメータはありません。
  5468. _Example_
  5469. \code
  5470. none
  5471. \endcode
  5472. \sa wolfSSL_CTX_SetRsaSignCb
  5473. \sa wolfSSL_SetRsaSignCtx
  5474. */
  5475. void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl);
  5476. /*!
  5477. \brief コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。復号化プロセスとパディングの後に検証バッファの先頭に設定する必要があります。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myrsaverify()を見つけることができます。
  5478. \return none いいえ返します。
  5479. \sa wolfSSL_SetRsaVerifyCtx
  5480. \sa wolfSSL_GetRsaVerifyCtx
  5481. */
  5482. void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX* ctx, CallbackRsaVerify cb);
  5483. /*!
  5484. \brief CTXへのコンテキスト。
  5485. \return none いいえ返します。
  5486. _Example_
  5487. \code
  5488. none
  5489. \endcode
  5490. \sa wolfSSL_CTX_SetRsaVerifyCb
  5491. \sa wolfSSL_GetRsaVerifyCtx
  5492. */
  5493. void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx);
  5494. /*!
  5495. \brief 以前にwolfssl_setrsaverifyctx()で保存されていたコンテキスト。
  5496. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5497. \return NULL 空白のコンテキストのために返されます。
  5498. _Example_
  5499. \code
  5500. none
  5501. \endcode
  5502. \sa wolfSSL_CTX_SetRsaVerifyCb
  5503. \sa wolfSSL_SetRsaVerifyCtx
  5504. */
  5505. void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl);
  5506. /*!
  5507. \brief 暗号化します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INは入力バッファですが、INSZは入力の長さを表します。暗号化の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、暗号化の実際のサイズは戻って前に格納されるべきです。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。例コールバックの例は、wolfssl / test.h myrsaenc()を見つけることができます。
  5508. \return none いいえ返します。
  5509. \code
  5510. none
  5511. \endcode
  5512. \sa wolfSSL_SetRsaEncCtx
  5513. \sa wolfSSL_GetRsaEncCtx
  5514. */
  5515. void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX* ctx, CallbackRsaEnc cb);
  5516. /*!
  5517. \brief CTXへのコールバックコンテキスト。
  5518. \return none いいえ返します。
  5519. _Example_
  5520. \code
  5521. none
  5522. \endcode
  5523. \sa wolfSSL_CTX_SetRsaEncCb
  5524. \sa wolfSSL_GetRsaEncCtx
  5525. */
  5526. void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx);
  5527. /*!
  5528. \brief コールバックコンテキストは、wolfssl_setrsaencctx()で以前に保存されていました。
  5529. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5530. \return NULL 空白のコンテキストのために返されます。
  5531. _Example_
  5532. \code
  5533. none
  5534. \endcode
  5535. \sa wolfSSL_CTX_SetRsaEncCb
  5536. \sa wolfSSL_SetRsaEncCtx
  5537. */
  5538. void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl);
  5539. /*!
  5540. \brief 復号化します。コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。INは、復号化する入力バッファが入力の長さを表します。復号化プロセスおよび任意のパディングの後、復号化バッファの先頭に設定する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsadec()を見つけることができます。
  5541. \return none いいえ返します。
  5542. _Example_
  5543. \code
  5544. none
  5545. \endcode
  5546. \sa wolfSSL_SetRsaDecCtx
  5547. \sa wolfSSL_GetRsaDecCtx
  5548. */
  5549. void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX* ctx, CallbackRsaDec cb);
  5550. /*!
  5551. \brief CTXへのコールバックコンテキスト。
  5552. \return none いいえ返します。
  5553. _Example_
  5554. \code
  5555. none
  5556. \endcode
  5557. \sa wolfSSL_CTX_SetRsaDecCb
  5558. \sa wolfSSL_GetRsaDecCtx
  5559. */
  5560. void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx);
  5561. /*!
  5562. \brief コールバックコンテキストは、wolfssl_setrsadecctx()で以前に保存されていました。
  5563. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5564. \return NULL 空白のコンテキストのために返されます。
  5565. _Example_
  5566. \code
  5567. none
  5568. \endcode
  5569. \sa wolfSSL_CTX_SetRsaDecCb
  5570. \sa wolfSSL_SetRsaDecCtx
  5571. */
  5572. void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl);
  5573. /*!
  5574. \brief 新しいCA証明書がWolfSSLにロードされたときに呼び出される(WolfSSL_CTX)。コールバックには、符号化された証明書を持つバッファが与えられます。
  5575. \return none 返品不可。
  5576. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  5577. _Example_
  5578. \code
  5579. WOLFSSL_CTX* ctx = 0;
  5580. // CA callback prototype
  5581. int MyCACallback(unsigned char *der, int sz, int type);
  5582. // Register the custom CA callback with the SSL context
  5583. wolfSSL_CTX_SetCACb(ctx, MyCACallback);
  5584. int MyCACallback(unsigned char* der, int sz, int type)
  5585. {
  5586. // custom CA callback function, DER-encoded cert
  5587. // located in “der” of size “sz” with type “type”
  5588. }
  5589. \endcode
  5590. \sa wolfSSL_CTX_load_verify_locations
  5591. */
  5592. void wolfSSL_CTX_SetCACb(WOLFSSL_CTX* ctx, CallbackCACache cb);
  5593. /*!
  5594. \ingroup CertManager
  5595. \brief 新しい証明書マネージャコンテキストを割り当てて初期化します。このコンテキストは、SSLのニーズとは無関係に使用できます。証明書をロードしたり、証明書を確認したり、失効状況を確認したりするために使用することができます。
  5596. \return WOLFSSL_CERT_MANAGER 正常にコールが有効なwolfssl_cert_managerポインタを返します。
  5597. \return NULL エラー状態に戻ります。
  5598. \sa wolfSSL_CertManagerFree
  5599. */
  5600. WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew_ex(void* heap);
  5601. /*!
  5602. \ingroup CertManager
  5603. \brief 新しい証明書マネージャコンテキストを割り当てて初期化します。このコンテキストは、SSLのニーズとは無関係に使用できます。証明書をロードしたり、証明書を確認したり、失効状況を確認したりするために使用することができます。
  5604. \return WOLFSSL_CERT_MANAGER 正常にコールが有効なwolfssl_cert_managerポインタを返します。
  5605. \return NULL エラー状態に戻ります。
  5606. _Example_
  5607. \code
  5608. #import <wolfssl/ssl.h>
  5609. WOLFSSL_CERT_MANAGER* cm;
  5610. cm = wolfSSL_CertManagerNew();
  5611. if (cm == NULL) {
  5612. // error creating new cert manager
  5613. }
  5614. \endcode
  5615. \sa wolfSSL_CertManagerFree
  5616. */
  5617. WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void);
  5618. /*!
  5619. \ingroup CertManager
  5620. \brief 証明書マネージャのコンテキストに関連付けられているすべてのリソースを解放します。証明書マネージャを使用する必要がなくなるときにこれを呼び出します。
  5621. \return none
  5622. _Example_
  5623. \code
  5624. #include <wolfssl/ssl.h>
  5625. WOLFSSL_CERT_MANAGER* cm;
  5626. ...
  5627. wolfSSL_CertManagerFree(cm);
  5628. \endcode
  5629. \sa wolfSSL_CertManagerNew
  5630. */
  5631. void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*);
  5632. /*!
  5633. \ingroup CertManager
  5634. \brief ManagerコンテキストへのCA証明書のロードの場所を指定します。PEM証明書カフェイルには、複数の信頼できるCA証明書が含まれている可能性があります。capathがnullでない場合、PEM形式のCA証明書を含むディレクトリを指定します。
  5635. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5636. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5637. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5638. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5639. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5640. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5641. \return SSL_FATAL_ERROR - 失敗時に返されます。
  5642. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5643. \param file ロードするCA証明書を含むファイルの名前へのポインタ。
  5644. _Example_
  5645. \code
  5646. #include <wolfssl/ssl.h>
  5647. int ret = 0;
  5648. WOLFSSL_CERT_MANAGER* cm;
  5649. ...
  5650. ret = wolfSSL_CertManagerLoadCA(cm, “path/to/cert-file.pem”, 0);
  5651. if (ret != SSL_SUCCESS) {
  5652. // error loading CA certs into cert manager
  5653. }
  5654. \endcode
  5655. \sa wolfSSL_CertManagerVerify
  5656. */
  5657. int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* f,
  5658. const char* d);
  5659. /*!
  5660. \ingroup CertManager
  5661. \brief wolfssl_ctx_load_verify_bufferを呼び出して、関数に渡されたCM内の情報を失うことなく一時的なCMを使用してその結果を返すことによってCAバッファをロードします。
  5662. \return SSL_FATAL_ERROR wolfssl_cert_manager構造体がNULLの場合、またはwolfssl_ctx_new()がNULLを返す場合に返されます。
  5663. \return SSL_SUCCESS 実行が成功するために返されます。
  5664. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5665. \param in CERT情報用のバッファー。
  5666. \param sz バッファの長さ。
  5667. _Example_
  5668. \code
  5669. WOLFSSL_CERT_MANAGER* cm = (WOLFSSL_CERT_MANAGER*)vp;
  5670. const unsigned char* in;
  5671. long sz;
  5672. int format;
  5673. if(wolfSSL_CertManagerLoadCABuffer(vp, sz, format) != SSL_SUCCESS){
  5674. Error returned. Failure case code block.
  5675. }
  5676. \endcode
  5677. \sa wolfSSL_CTX_load_verify_buffer
  5678. \sa ProcessChainBuffer
  5679. \sa ProcessBuffer
  5680. \sa cm_pick_method
  5681. */
  5682. int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER* cm,
  5683. const unsigned char* in, long sz, int format);
  5684. /*!
  5685. \ingroup CertManager
  5686. \brief この関数はCA署名者リストをアンロードします。
  5687. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  5688. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  5689. \return BAD_MUTEX_E ミューテックスエラーが発生した場合は返されます。
  5690. _Example_
  5691. \code
  5692. #include <wolfssl/ssl.h>
  5693. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  5694. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5695. ...
  5696. if(wolfSSL_CertManagerUnloadCAs(ctx->cm) != SSL_SUCCESS){
  5697. Failure case.
  5698. }
  5699. \endcode
  5700. \sa FreeSignerTable
  5701. \sa UnlockMutex
  5702. */
  5703. int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm);
  5704. /*!
  5705. \ingroup CertManager
  5706. \brief 関数は信頼できるピアリンクリストを解放し、信頼できるピアリストのロックを解除します。
  5707. \return SSL_SUCCESS 関数が正常に完了した場合
  5708. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合
  5709. \return BAD_MUTEX_E ミューテックスエラーTPLOCKでは、WOLFSSL_CERT_MANAGER構造体のメンバーは0(ニル)です。
  5710. _Example_
  5711. \code
  5712. #include <wolfssl/ssl.h>
  5713. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
  5714. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5715. ...
  5716. if(wolfSSL_CertManagerUnload_trust_peers(cm) != SSL_SUCCESS){
  5717. The function did not execute successfully.
  5718. }
  5719. \endcode
  5720. \sa UnLockMutex
  5721. */
  5722. int wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER* cm);
  5723. /*!
  5724. \ingroup CertManager
  5725. \brief 証明書マネージャのコンテキストで確認する証明書を指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1にすることができます。
  5726. \return SSL_SUCCESS 成功した場合
  5727. \return ASN_SIG_CONFIRM_E 署名が検証できなかった場合に返されます。
  5728. \return ASN_SIG_OID_E 署名の種類がサポートされていない場合は返されます。
  5729. \return CRL_CERT_REVOKED この証明書が取り消された場合に返されるエラーです。
  5730. \return CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラーです。
  5731. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  5732. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  5733. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5734. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5735. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5736. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5737. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5738. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5739. \param fname 検証する証明書を含むファイルの名前へのポインタ。
  5740. _Example_
  5741. \code
  5742. int ret = 0;
  5743. WOLFSSL_CERT_MANAGER* cm;
  5744. ...
  5745. ret = wolfSSL_CertManagerVerify(cm, “path/to/cert-file.pem”,
  5746. SSL_FILETYPE_PEM);
  5747. if (ret != SSL_SUCCESS) {
  5748. error verifying certificate
  5749. }
  5750. \endcode
  5751. \sa wolfSSL_CertManagerLoadCA
  5752. \sa wolfSSL_CertManagerVerifyBuffer
  5753. */
  5754. int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER* cm, const char* f,
  5755. int format);
  5756. /*!
  5757. \ingroup CertManager
  5758. \brief 証明書マネージャのコンテキストを使用して確認する証明書バッファを指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1にすることができます。
  5759. \return SSL_SUCCESS 成功した場合
  5760. \return ASN_SIG_CONFIRM_E 署名が検証できなかった場合に返されます。
  5761. \return ASN_SIG_OID_E 署名の種類がサポートされていない場合は返されます。
  5762. \return CRL_CERT_REVOKED この証明書が取り消された場合に返されるエラーです。
  5763. \return CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラーです。
  5764. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  5765. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  5766. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5767. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5768. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5769. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5770. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5771. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5772. \param buff 検証する証明書を含むバッファ。
  5773. \param sz バッファのサイズ、BUF。
  5774. _Example_
  5775. \code
  5776. #include <wolfssl/ssl.h>
  5777. int ret = 0;
  5778. int sz = 0;
  5779. WOLFSSL_CERT_MANAGER* cm;
  5780. byte certBuff[...];
  5781. ...
  5782. ret = wolfSSL_CertManagerVerifyBuffer(cm, certBuff, sz, SSL_FILETYPE_PEM);
  5783. if (ret != SSL_SUCCESS) {
  5784. error verifying certificate
  5785. }
  5786. \endcode
  5787. \sa wolfSSL_CertManagerLoadCA
  5788. \sa wolfSSL_CertManagerVerify
  5789. */
  5790. int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm,
  5791. const unsigned char* buff, long sz, int format);
  5792. /*!
  5793. \ingroup CertManager
  5794. \brief この関数は、証明書マネージャーのverifyCallback関数を設定します。存在する場合、それはロードされた各CERTに対して呼び出されます。検証エラーがある場合は、検証コールバックを使用してエラーを過度に乗り越えます。
  5795. \return none 返品不可。
  5796. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5797. _Example_
  5798. \code
  5799. #include <wolfssl/ssl.h>
  5800. int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store)
  5801. { // do custom verification of certificate }
  5802. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
  5803. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5804. ...
  5805. wolfSSL_CertManagerSetVerify(cm, myVerify);
  5806. \endcode
  5807. \sa wolfSSL_CertManagerVerify
  5808. */
  5809. void wolfSSL_CertManagerSetVerify(WOLFSSL_CERT_MANAGER* cm,
  5810. VerifyCallback vc);
  5811. /*!
  5812. \brief CRLリスト。
  5813. \return SSL_SUCCESS 関数が予想どおりに返された場合は返します。wolfssl_cert_manager構造体のCRLENABLEDメンバーがオンになっている場合。
  5814. \return MEMORY_E 割り当てられたメモリが失敗した場合は返します。
  5815. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合
  5816. \param cm wolfssl_cert_manager構造体へのポインタ。
  5817. \param der DERフォーマット証明書へのポインタ。
  5818. _Example_
  5819. \code
  5820. WOLFSSL_CERT_MANAGER* cm;
  5821. byte* der;
  5822. int sz; // size of der
  5823. ...
  5824. if(wolfSSL_CertManagerCheckCRL(cm, der, sz) != SSL_SUCCESS){
  5825. // Error returned. Deal with failure case.
  5826. }
  5827. \endcode
  5828. \sa CheckCertCRL
  5829. \sa ParseCertRelative
  5830. \sa wolfSSL_CertManagerSetCRL_CB
  5831. \sa InitDecodedCert
  5832. */
  5833. int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER* cm,
  5834. unsigned char* der, int sz);
  5835. /*!
  5836. \ingroup CertManager
  5837. \brief 証明書マネージャを使用して証明書を検証するときに証明書失効リストの確認をオンにします。デフォルトでは、CRLチェックはオフです。オプションには、wolfssl_crl_checkallが含まれます。これは、チェーン内の各証明書に対してCRL検査を実行します。これはデフォルトであるリーフ証明書のみです。
  5838. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5839. \return NOT_COMPILED_IN WolfSSLがCRLを有効にして構築されていない場合は返されます。
  5840. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5841. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5842. \return SSL_FAILURE CRLコンテキストを正しく初期化できない場合は返されます。
  5843. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5844. _Example_
  5845. \code
  5846. #include <wolfssl/ssl.h>
  5847. int ret = 0;
  5848. WOLFSSL_CERT_MANAGER* cm;
  5849. ...
  5850. ret = wolfSSL_CertManagerEnableCRL(cm, 0);
  5851. if (ret != SSL_SUCCESS) {
  5852. error enabling cert manager
  5853. }
  5854. ...
  5855. \endcode
  5856. \sa wolfSSL_CertManagerDisableCRL
  5857. */
  5858. int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER* cm,
  5859. int options);
  5860. /*!
  5861. \ingroup CertManager
  5862. \brief 証明書マネージャを使用して証明書を検証するときに証明書失効リストの確認をオフにします。デフォルトでは、CRLチェックはオフです。この関数を使用して、このCertificate Managerコンテキストを使用してCRL検査を一時的または恒久的に無効にして、以前はCRL検査が有効になっていました。
  5863. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5864. \return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラーです。
  5865. _Example_
  5866. \code
  5867. #include <wolfssl/ssl.h>
  5868. int ret = 0;
  5869. WOLFSSL_CERT_MANAGER* cm;
  5870. ...
  5871. ret = wolfSSL_CertManagerDisableCRL(cm);
  5872. if (ret != SSL_SUCCESS) {
  5873. error disabling cert manager
  5874. }
  5875. ...
  5876. \endcode
  5877. \sa wolfSSL_CertManagerEnableCRL
  5878. */
  5879. int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*);
  5880. /*!
  5881. \ingroup CertManager
  5882. \brief 失効確認のためにCERTをCRLにロードするために、CERTをCRLにロードするために、ROADCRL()へのエラーがチェックされ、渡されます。
  5883. \return SSL_SUCCESS wolfssl_certmanagerLoadcrlにエラーがない場合、およびloadcrlが正常に戻る場合。
  5884. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がnullの場合
  5885. \return SSL_FATAL_ERROR wolfssl_certmanagerEnableCRLがSSL_SUCCESS以外のものを返す場合。
  5886. \return BAD_PATH_ERROR パスがNULLの場合
  5887. \return MEMORY_E LOADCRLがヒープメモリの割り当てに失敗した場合。
  5888. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5889. \param path CRL経路を保持している一定のチャールポインタ。
  5890. \param type ロードする証明書の種類。
  5891. _Example_
  5892. \code
  5893. #include <wolfssl/ssl.h>
  5894. int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type,
  5895. int monitor);
  5896. wolfSSL_CertManagerLoadCRL(SSL_CM(ssl), path, type, monitor);
  5897. \endcode
  5898. \sa wolfSSL_CertManagerEnableCRL
  5899. \sa wolfSSL_LoadCRL
  5900. */
  5901. int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER* cm,
  5902. const char* path, int type, int monitor);
  5903. /*!
  5904. \ingroup CertManager
  5905. \brief この関数は、BufferLoadCRLを呼び出すことによってCRLファイルをロードします。
  5906. \return SSL_SUCCESS 関数がエラーなしで完了した場合に返されます。
  5907. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  5908. \return SSL_FATAL_ERROR wolfssl_cert_managerに関連付けられているエラーがある場合は返されます。
  5909. \param cm wolfssl_cert_manager構造体へのポインタ。
  5910. \param buff 定数バイトタイプとバッファです。
  5911. \param sz バッファのサイズを表す長いint。
  5912. _Example_
  5913. \code
  5914. #include <wolfssl/ssl.h>
  5915. WOLFSSL_CERT_MANAGER* cm;
  5916. const unsigned char* buff;
  5917. long sz; size of buffer
  5918. int type; cert type
  5919. ...
  5920. int ret = wolfSSL_CertManagerLoadCRLBuffer(cm, buff, sz, type);
  5921. if(ret == SSL_SUCCESS){
  5922. return ret;
  5923. } else {
  5924. Failure case.
  5925. }
  5926. \endcode
  5927. \sa BufferLoadCRL
  5928. \sa wolfSSL_CertManagerEnableCRL
  5929. */
  5930. int wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER* cm,
  5931. const unsigned char* buff, long sz,
  5932. int type);
  5933. /*!
  5934. \ingroup CertManager
  5935. \brief この関数はCRL証明書マネージャコールバックを設定します。LABE_CRLが定義されていて一致するCRLレコードが見つからない場合、CBMissingCRLは呼び出されます(WolfSSL_CertManagerSetCRL_CBを介して設定)。これにより、CRLを外部に検索してロードすることができます。
  5936. \return SSL_SUCCESS 関数とサブルーチンの実行が成功したら返されます。
  5937. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がNULLの場合に返されます。
  5938. \param cm 証明書の情報を保持しているWOLFSSL_CERT_MANAGER構造。
  5939. _Example_
  5940. \code
  5941. #include <wolfssl/ssl.h>
  5942. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  5943. WOLFSSL* ssl = wolfSSL_new(ctx);
  5944. void cb(const char* url){
  5945. Function body.
  5946. }
  5947. CbMissingCRL cb = CbMissingCRL;
  5948. if(ctx){
  5949. return wolfSSL_CertManagerSetCRL_Cb(SSL_CM(ssl), cb);
  5950. }
  5951. \endcode
  5952. \sa CbMissingCRL
  5953. \sa wolfSSL_SetCRL_Cb
  5954. */
  5955. int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER* cm,
  5956. CbMissingCRL cb);
  5957. /*!
  5958. \ingroup CertManager
  5959. \brief この機能により、OCSPENABLED OCSPENABLEDがOCSPチェックオプションが有効になっていることを意味します。
  5960. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。wolfssl_cert_managerのOCSPENABLEDメンバーが有効になっています。
  5961. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がnullの場合、または許可されていない引数値がサブルーチンに渡された場合に返されます。
  5962. \return MEMORY_E この関数内にメモリを割り当てるエラーまたはサブルーチンがある場合に返されます。
  5963. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5964. \param der 証明書へのバイトポインタ。
  5965. _Example_
  5966. \code
  5967. #import <wolfssl/ssl.h>
  5968. WOLFSSL* ssl = wolfSSL_new(ctx);
  5969. byte* der;
  5970. int sz; size of der
  5971. ...
  5972. if(wolfSSL_CertManagerCheckOCSP(cm, der, sz) != SSL_SUCCESS){
  5973. Failure case.
  5974. }
  5975. \endcode
  5976. \sa ParseCertRelative
  5977. \sa CheckCertOCSP
  5978. */
  5979. int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER* cm,
  5980. unsigned char* der, int sz);
  5981. /*!
  5982. \ingroup CertManager
  5983. \brief OCSPがオフになっている場合はOCSPをオンにし、[設定]オプションを使用可能になっている場合。
  5984. \return SSL_SUCCESS 関数呼び出しが成功した場合に返されます。
  5985. \return BAD_FUNC_ARG cm構造体がnullの場合
  5986. \return MEMORY_E wolfssl_ocsp struct値がnullの場合
  5987. \return SSL_FAILURE WOLFSSL_OCSP構造体の初期化は初期化に失敗します。
  5988. \return NOT_COMPILED_IN 正しい機能を有効にしてコンパイルされていないビルド。
  5989. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5990. _Example_
  5991. \code
  5992. #include <wolfssl/ssl.h>
  5993. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  5994. WOLFSSL* ssl = wolfSSL_new(ctx);
  5995. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5996. int options;
  5997. if(wolfSSL_CertManagerEnableOCSP(SSL_CM(ssl), options) != SSL_SUCCESS){
  5998. Failure case.
  5999. }
  6000. \endcode
  6001. \sa wolfSSL_CertManagerNew
  6002. */
  6003. int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER* cm,
  6004. int options);
  6005. /*!
  6006. \ingroup CertManager
  6007. \brief OCSP証明書の失効を無効にします。
  6008. \return SSL_SUCCESS WolfSSL_CertMangerDisableCRLは、WolfSSL_CERT_MANAGER構造体のCRLEnabledメンバを無効にしました。
  6009. \return BAD_FUNC_ARG WOLFSSL構造はヌルでした。
  6010. _Example_
  6011. \code
  6012. #include <wolfssl/ssl.h>
  6013. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
  6014. WOLFSSL* ssl = wolfSSL_new(ctx);
  6015. ...
  6016. if(wolfSSL_CertManagerDisableOCSP(ssl) != SSL_SUCCESS){
  6017. Fail case.
  6018. }
  6019. \endcode
  6020. \sa wolfSSL_DisableCRL
  6021. */
  6022. int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*);
  6023. /*!
  6024. \ingroup CertManager
  6025. \brief この関数は、URLをwolfssl_cert_manager構造体のOCSpoverrideURLメンバーにコピーします。
  6026. \return SSL_SUCCESS この機能は期待どおりに実行できました。
  6027. \return BAD_FUNC_ARG wolfssl_cert_manager構造体はnullです。
  6028. \return MEMEORY_E 証明書マネージャのOCSPoverRideURLメンバーにメモリを割り当てることができませんでした。
  6029. _Example_
  6030. \code
  6031. #include <wolfssl/ssl.h>
  6032. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  6033. const char* url;
  6034. int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url)
  6035. if(wolfSSL_CertManagerSetOCSPOverrideURL(SSL_CM(ssl), url) != SSL_SUCCESS){
  6036. Failure case.
  6037. }
  6038. \endcode
  6039. \sa ocspOverrideURL
  6040. \sa wolfSSL_SetOCSP_OverrideURL
  6041. */
  6042. int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER* cm,
  6043. const char* url);
  6044. /*!
  6045. \ingroup CertManager
  6046. \brief この関数は、wolfssl_cert_managerのOCSPコールバックを設定します。
  6047. \return SSL_SUCCESS 実行に成功したことに戻ります。引数はwolfssl_cert_manager構造体に保存されます。
  6048. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  6049. \param cm wolfssl_cert_manager構造体へのポインタ。
  6050. \param ioCb CBocSpio型の関数ポインタ。
  6051. \param respFreeCb - CBOCSPRESPFREAS型の関数ポインタ。
  6052. _Example_
  6053. \code
  6054. #include <wolfssl/ssl.h>
  6055. wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb,
  6056. CbOCSPRespFree respFreeCb, void* ioCbCtx){
  6057. return wolfSSL_CertManagerSetOCSP_Cb(SSL_CM(ssl), ioCb, respFreeCb, ioCbCtx);
  6058. \endcode
  6059. \sa wolfSSL_CertManagerSetOCSPOverrideURL
  6060. \sa wolfSSL_CertManagerCheckOCSP
  6061. \sa wolfSSL_CertManagerEnableOCSPStapling
  6062. \sa wolfSSL_ENableOCSP
  6063. \sa wolfSSL_DisableOCSP
  6064. \sa wolfSSL_SetOCSP_Cb
  6065. */
  6066. int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER* cm,
  6067. CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6068. void* ioCbCtx);
  6069. /*!
  6070. \ingroup CertManager
  6071. \brief この関数は、オプションをオンにしないとOCSPステープルをオンにします。オプションを設定します。
  6072. \return SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
  6073. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がNULLまたはそうでない場合は、サブルーチンに渡された未解決の引数値があった場合に返されます。
  6074. \return MEMORY_E メモリ割り当てがある問題が発生した場合は返されます。
  6075. \return SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
  6076. \return NOT_COMPILED_IN wolfsslがhaber_certificate_status_requestオプションでコンパイルされていない場合に返されます。
  6077. _Example_
  6078. \code
  6079. int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX* ctx){
  6080. return wolfSSL_CertManagerEnableOCSPStapling(ctx->cm);
  6081. \endcode
  6082. \sa wolfSSL_CTX_EnableOCSPStapling
  6083. */
  6084. int wolfSSL_CertManagerEnableOCSPStapling(
  6085. WOLFSSL_CERT_MANAGER* cm);
  6086. /*!
  6087. \brief
  6088. \return SSL_SUCCESS 関数とサブルーチンはエラーなしで返されました。
  6089. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  6090. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  6091. \return SSL_FAILURE initcrl関数が正常に戻されない場合に返されます。
  6092. \return NOT_COMPILED_IN have_crlはコンパイル中に有効になっていませんでした。
  6093. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6094. _Example_
  6095. \code
  6096. WOLFSSL* ssl = wolfSSL_new(ctx);
  6097. if (wolfSSL_EnableCRL(ssl, WOLFSSL_CRL_CHECKALL) != SSL_SUCCESS){
  6098. // Failure case. SSL_SUCCESS was not returned by this function or
  6099. a subroutine
  6100. }
  6101. \endcode
  6102. \sa wolfSSL_CertManagerEnableCRL
  6103. \sa InitCRL
  6104. */
  6105. int wolfSSL_EnableCRL(WOLFSSL* ssl, int options);
  6106. /*!
  6107. \brief
  6108. \return SSL_SUCCESS WolfSSL_CertMangerDisableCRLは、WolfSSL_CERT_MANAGER構造体のCRLEnabledメンバを無効にしました。
  6109. \return BAD_FUNC_ARG WOLFSSL構造はヌルでした。
  6110. _Example_
  6111. \code
  6112. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6113. WOLFSSL* ssl = wolfSSL_new(ctx);
  6114. ...
  6115. if(wolfSSL_DisableCRL(ssl) != SSL_SUCCESS){
  6116. // Failure case
  6117. }
  6118. \endcode
  6119. \sa wolfSSL_CertManagerDisableCRL
  6120. \sa wolfSSL_CertManagerDisableOCSP
  6121. */
  6122. int wolfSSL_DisableCRL(WOLFSSL* ssl);
  6123. /*!
  6124. \brief 失効検査の証明書
  6125. \return WOLFSSL_SUCCESS 関数とすべてのサブルーチンがエラーなしで実行された場合に返されます。
  6126. \return SSL_FATAL_ERROR サブルーチンの1つが正常に戻されない場合に返されます。
  6127. \return BAD_FUNC_ARG wolfssl_cert_managerまたはwolfssl構造がnullの場合
  6128. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6129. \param path CRLファイルへのパスを保持する定数文字ポインタ。
  6130. \param type 証明書の種類を表す整数。
  6131. _Example_
  6132. \code
  6133. WOLFSSL* ssl = wolfSSL_new(ctx);
  6134. const char* crlPemDir;
  6135. if(wolfSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, 0) != SSL_SUCCESS){
  6136. // Failure case. Did not return SSL_SUCCESS.
  6137. }
  6138. \endcode
  6139. \sa wolfSSL_CertManagerLoadCRL
  6140. \sa wolfSSL_CertManagerEnableCRL
  6141. \sa LoadCRL
  6142. */
  6143. int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type, int monitor);
  6144. /*!
  6145. \brief
  6146. \return SSL_SUCCESS 関数またはサブルーチンがエラーなしで実行された場合に返されます。wolfssl_cert_managerのCBMissingCRLメンバーが設定されています。
  6147. \return BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
  6148. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6149. _Example_
  6150. \code
  6151. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6152. WOLFSSL* ssl = wolfSSL_new(ctx);
  6153. void cb(const char* url) // required signature
  6154. {
  6155. // Function body
  6156. }
  6157. int crlCb = wolfSSL_SetCRL_Cb(ssl, cb);
  6158. if(crlCb != SSL_SUCCESS){
  6159. // The callback was not set properly
  6160. }
  6161. \endcode
  6162. \sa CbMissingCRL
  6163. \sa wolfSSL_CertManagerSetCRL_Cb
  6164. */
  6165. int wolfSSL_SetCRL_Cb(WOLFSSL* ssl, CbMissingCRL cb);
  6166. /*!
  6167. \brief
  6168. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6169. \return BAD_FUNC_ARG この関数またはサブルーチンの引数が無効な引数値を受信した場合に返されます。
  6170. \return MEMORY_E 構造体やその他の変数にメモリを割り当てるエラーが発生した場合は返されます。
  6171. \return NOT_COMPILED_IN wolfsslがhane_ocspオプションでコンパイルされていない場合に返されます。
  6172. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6173. _Example_
  6174. \code
  6175. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6176. WOLFSSL* ssl = wolfSSL_new(ctx);
  6177. int options; // initialize to option constant
  6178. int ret = wolfSSL_EnableOCSP(ssl, options);
  6179. if(ret != SSL_SUCCESS){
  6180. // OCSP is not enabled
  6181. }
  6182. \endcode
  6183. \sa wolfSSL_CertManagerEnableOCSP
  6184. */
  6185. int wolfSSL_EnableOCSP(WOLFSSL* ssl, int options);
  6186. /*!
  6187. \brief
  6188. \return SSL_SUCCESS 関数とそのサブルーチンがエラーなしで戻った場合に返されます。wolfssl_cert_manager構造体のOCSPENABLEDメンバーは正常に設定されました。
  6189. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  6190. _Example_
  6191. \code
  6192. WOLFSSL* ssl = wolfSSL_new(ctx);
  6193. if(wolfSSL_DisableOCSP(ssl) != SSL_SUCCESS){
  6194. // Returned with an error. Failure case in this block.
  6195. }
  6196. \endcode
  6197. \sa wolfSSL_CertManagerDisableOCSP
  6198. */
  6199. int wolfSSL_DisableOCSP(WOLFSSL*);
  6200. /*!
  6201. \brief wolfssl_cert_manager構造体。
  6202. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  6203. \return BAD_FUNC_ARG wolfssl構造体がnullの場合、または未解決の引数がサブルーチンに渡された場合に返されます。
  6204. \return MEMORY_E サブルーチンにメモリを割り当てるエラーが発生した場合に返されます。
  6205. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6206. _Example_
  6207. \code
  6208. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6209. WOLFSSL* ssl = wolfSSL_new(ctx);
  6210. char url[URLSZ];
  6211. ...
  6212. if(wolfSSL_SetOCSP_OverrideURL(ssl, url)){
  6213. // The override url is set to the new value
  6214. }
  6215. \endcode
  6216. \sa wolfSSL_CertManagerSetOCSPOverrideURL
  6217. */
  6218. int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url);
  6219. /*!
  6220. \brief wolfssl_cert_manager構造体。
  6221. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのOCSPIOCB、OCSPRESPFREECB、およびOCSPIOCTXメンバーが設定されています。
  6222. \return BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造がNULLの場合に返されます。
  6223. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6224. \param ioCb CBocSpioを入力するための関数ポインタ。
  6225. \param respFreeCb 応答メモリを解放するための呼び出しであるCBocSpreSpFreeを入力するための関数ポインタ。
  6226. _Example_
  6227. \code
  6228. WOLFSSL* ssl = wolfSSL_new(ctx);
  6229. int OCSPIO_CB(void* , const char*, int , unsigned char* , int,
  6230. unsigned char**){ // must have this signature
  6231. // Function Body
  6232. }
  6233. void OCSPRespFree_CB(void* , unsigned char* ){ // must have this signature
  6234. // function body
  6235. }
  6236. void* ioCbCtx;
  6237. CbOCSPRespFree CB_OCSPRespFree;
  6238. if(wolfSSL_SetOCSP_Cb(ssl, OCSPIO_CB( pass args ), CB_OCSPRespFree,
  6239. ioCbCtx) != SSL_SUCCESS){
  6240. // Callback not set
  6241. }
  6242. \endcode
  6243. \sa wolfSSL_CertManagerSetOCSP_Cb
  6244. \sa CbOCSPIO
  6245. \sa CbOCSPRespFree
  6246. */
  6247. int wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6248. void* ioCbCtx);
  6249. /*!
  6250. \brief
  6251. \return SSL_SUCCESS この関数とそれがサブルーチンの場合はエラーなしで実行されます。
  6252. \return BAD_FUNC_ARG CTX構造体がNULLの場合、またはその他の点ではサブルーチンに無効な引数があった場合に返されます。
  6253. \return MEMORY_E 関数の実行中にメモリの割り当てエラーが発生した場合に返されます。
  6254. \return SSL_FAILURE wolfssl_cert_managerのCRLメンバーが正しく初期化されなかった場合に返されます。
  6255. \return NOT_COMPILED_IN wolfsslはhane_crlオプションでコンパイルされませんでした。
  6256. _Example_
  6257. \code
  6258. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6259. WOLFSSL* ssl = wolfSSL_new(ctx);
  6260. ...
  6261. if(wolfSSL_CTX_EnableCRL(ssl->ctx, options) != SSL_SUCCESS){
  6262. // The function failed
  6263. }
  6264. \endcode
  6265. \sa wolfSSL_CertManagerEnableCRL
  6266. \sa InitCRL
  6267. \sa wolfSSL_CTX_DisableCRL
  6268. */
  6269. int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options);
  6270. /*!
  6271. \brief
  6272. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。wolfssl_cert_manager構造体のCRLEnabledメンバーは0に設定されています。
  6273. \return BAD_FUNC_ARG CTX構造体またはCM構造体にNULL値がある場合に返されます。
  6274. _Example_
  6275. \code
  6276. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6277. WOLFSSL* ssl = wolfSSL_new(ctx);
  6278. ...
  6279. if(wolfSSL_CTX_DisableCRL(ssl->ctx) != SSL_SUCCESS){
  6280. // Failure case.
  6281. }
  6282. \endcode
  6283. \sa wolfSSL_CertManagerDisableCRL
  6284. */
  6285. int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx);
  6286. /*!
  6287. \brief wolfssl_certmanagerLoadcr()。
  6288. \return SSL_SUCCESS - 関数とそのサブルーチンがエラーなしで実行された場合に返されます。
  6289. \return BAD_FUNC_ARG - この関数またはサブルーチンがNULL構造に渡された場合に返されます。
  6290. \return BAD_PATH_ERROR - パス変数がnullとして開くと戻ります。
  6291. \return MEMORY_E - メモリの割り当てが失敗した場合に返されます。
  6292. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6293. \param path 証明書へのパス。
  6294. \param type 証明書の種類を保持する整数変数。
  6295. _Example_
  6296. \code
  6297. WOLFSSL_CTX* ctx;
  6298. const char* path;
  6299. return wolfSSL_CTX_LoadCRL(ctx, path, SSL_FILETYPE_PEM, 0);
  6300. \endcode
  6301. \sa wolfSSL_CertManagerLoadCRL
  6302. \sa LoadCRL
  6303. */
  6304. int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX* ctx, const char* path, int type, int monitor);
  6305. /*!
  6306. \brief wolfssl_certmanagersetCRL_CBを呼び出して、WolfSSL_CERT_MANAGER構造のメンバー。
  6307. \return SSL_SUCCESS 実行が成功するために返されました。WOLFSSL_CERT_MANAGER構造体のCBMSSINGCRLはCBに正常に設定されました。
  6308. \return BAD_FUNC_ARG wolfssl_ctxまたはwolfssl_cert_managerがNULLの場合に返されます。
  6309. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  6310. _Example_
  6311. \code
  6312. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6313. void cb(const char* url) // Required signature
  6314. {
  6315. // Function body
  6316. }
  6317. if (wolfSSL_CTX_SetCRL_Cb(ctx, cb) != SSL_SUCCESS){
  6318. // Failure case, cb was not set correctly.
  6319. }
  6320. \endcode
  6321. \sa wolfSSL_CertManagerSetCRL_Cb
  6322. \sa CbMissingCRL
  6323. */
  6324. int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX* ctx, CbMissingCRL cb);
  6325. /*!
  6326. \brief wolfsslの機能オプションの値が1つ以上のオプションで構成されている場合は、次のオプションを1つ以上にします.wolfssl_ocsp_enable - OCSPルックアップを有効にするwolfssl_ocsp_url_override - 証明書のURLの代わりにURLをオーバーライドします。オーバーライドURLは、wolfssl_ctx_setocsp_overrideURL()関数を使用して指定されます。この関数は、wolfsslがOCSPサポート(--enable-ocsp、#define hane_ocsp)でコンパイルされたときにのみOCSPオプションを設定します。
  6327. \return SSL_SUCCESS 成功したときに返されます。
  6328. \return SSL_FAILURE 失敗したときに返されます。
  6329. \return NOT_COMPILED_IN この関数が呼び出されたときに返されますが、wolfsslがコンパイルされたときにOCSPサポートは有効になっていませんでした。
  6330. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6331. _Example_
  6332. \code
  6333. WOLFSSL_CTX* ctx = 0;
  6334. ...
  6335. wolfSSL_CTX_OCSP_set_options(ctx, WOLFSSL_OCSP_ENABLE);
  6336. \endcode
  6337. \sa wolfSSL_CTX_OCSP_set_override_url
  6338. */
  6339. int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX* ctx, int options);
  6340. /*!
  6341. \brief wolfssl_cert_manager構造体のOCSPENABLEDメンバーに影響を与えます。
  6342. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのOCSPENABLEDメンバーは無効になっています。
  6343. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合に返されます。
  6344. _Example_
  6345. \code
  6346. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6347. WOLFSSL* ssl = wolfSSL_new(ctx);
  6348. ...
  6349. if(!wolfSSL_CTX_DisableOCSP(ssl->ctx)){
  6350. // OCSP is not disabled
  6351. }
  6352. \endcode
  6353. \sa wolfSSL_DisableOCSP
  6354. \sa wolfSSL_CertManagerDisableOCSP
  6355. */
  6356. int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*);
  6357. /*!
  6358. \brief wolfssl_csp_url_overrideオプションがwolfssl_ctx_enableocspを使用して設定されていない限り、OCSPは個々の証明書にあるURLを使用します。
  6359. \return SSL_SUCCESS 成功したときに返されます。
  6360. \return SSL_FAILURE 失敗したときに返されます。
  6361. \return NOT_COMPILED_IN この関数が呼び出されたときに返されますが、wolfsslがコンパイルされたときにOCSPサポートは有効になっていませんでした。
  6362. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6363. _Example_
  6364. \code
  6365. WOLFSSL_CTX* ctx = 0;
  6366. ...
  6367. wolfSSL_CTX_OCSP_set_override_url(ctx, “custom-url-here”);
  6368. \endcode
  6369. \sa wolfSSL_CTX_OCSP_set_options
  6370. */
  6371. int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX* ctx, const char* url);
  6372. /*!
  6373. \brief
  6374. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。CM内のOCSPIOCB、OCSPRESPFREECB、およびOCSPIOCTXメンバーは正常に設定されました。
  6375. \return BAD_FUNC_ARG wolfssl_ctxまたはwolfssl_cert_manager構造体がnullの場合に返されます。
  6376. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6377. \param ioCb 関数ポインタであるCBocSpio型。
  6378. \param respFreeCb 関数ポインタであるCBocSprepSprepFree型。
  6379. _Example_
  6380. \code
  6381. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6382. CbOCSPIO ocspIOCb;
  6383. CbOCSPRespFree ocspRespFreeCb;
  6384. void* ioCbCtx;
  6385. int isSetOCSP = wolfSSL_CTX_SetOCSP_Cb(ctx, ocspIOCb,
  6386. ocspRespFreeCb, ioCbCtx);
  6387. if(isSetOCSP != SSL_SUCCESS){
  6388. // The function did not return successfully.
  6389. }
  6390. \endcode
  6391. \sa wolfSSL_CertManagerSetOCSP_Cb
  6392. \sa CbOCSPIO
  6393. \sa CbOCSPRespFree
  6394. */
  6395. int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX* ctx,
  6396. CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6397. void* ioCbCtx);
  6398. /*!
  6399. \brief wolfssl_certmanagerEnableOcspStapling()。
  6400. \return SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
  6401. \return BAD_FUNC_ARG wolfssl_ctx構造体がNULLまたはそうでない場合は、サブルーチンに渡された未解決の引数値があった場合に返されます。
  6402. \return MEMORY_E メモリ割り当てがある問題が発生した場合は返されます。
  6403. \return SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
  6404. \return NOT_COMPILED_IN wolfsslがhaber_certificate_status_requestオプションでコンパイルされていない場合に返されます。
  6405. _Example_
  6406. \code
  6407. WOLFSSL* ssl = WOLFSSL_new();
  6408. ssl->method.version; // set to desired protocol
  6409. ...
  6410. if(!wolfSSL_CTX_EnableOCSPStapling(ssl->ctx)){
  6411. // OCSP stapling is not enabled
  6412. }
  6413. \endcode
  6414. \sa wolfSSL_CertManagerEnableOCSPStapling
  6415. \sa InitOCSP
  6416. */
  6417. int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*);
  6418. /*!
  6419. \ingroup CertsKeys
  6420. \brief 通常、SSLハンドシェイクの最後に、WolfSSLは一時的なアレイを解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、WolfSSLは一時的な配列を解放するのを防ぎます。Wolfssl_get_keys()またはPSKのヒントなどのものには、一時的な配列が必要になる場合があります。ユーザが一時的な配列で行われると、wolfssl_freearray()のいずれかが即座にリソースを解放することができ、あるいは、関連するSSLオブジェクトが解放されたときにリソースが解放されるようになる可能性がある。
  6421. \return none 返品不可。
  6422. _Example_
  6423. \code
  6424. WOLFSSL* ssl;
  6425. ...
  6426. wolfSSL_KeepArrays(ssl);
  6427. \endcode
  6428. \sa wolfSSL_FreeArrays
  6429. */
  6430. void wolfSSL_KeepArrays(WOLFSSL*);
  6431. /*!
  6432. \ingroup CertsKeys
  6433. \brief 通常、SSLハンドシェイクの最後に、WolfSSLは一時的なアレイを解放します。wolfssl_keeparrays()がハンドシェイクの前に呼び出された場合、WolfSSLは一時的な配列を解放しません。この関数は一時的な配列を明示的に解放し、ユーザーが一時的な配列で行われたときに呼び出されるべきであり、SSLオブジェクトがこれらのリソースを解放するのを待ったくない。
  6434. \return none 返品不可。
  6435. _Example_
  6436. \code
  6437. WOLFSSL* ssl;
  6438. ...
  6439. wolfSSL_FreeArrays(ssl);
  6440. \endcode
  6441. \sa wolfSSL_KeepArrays
  6442. */
  6443. void wolfSSL_FreeArrays(WOLFSSL*);
  6444. /*!
  6445. \brief 'ssl'パラメータに渡されたオブジェクト。これは、WolfSSLクライアントによってSNI拡張機能がClientHelloで送信され、WolfSSL ServerはServerHello + SNIまたはSNIミスマッチの場合は致命的なAlert Hello + SNIを応答します。
  6446. \return WOLFSSL_SUCCESS 成功すると。
  6447. \return BAD_FUNC_ARG 次のいずれかの場合で返されるエラーです.SSLはNULL、データはNULL、タイプは不明な値です。(下記参照)
  6448. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6449. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6450. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6451. \param data サーバー名データへのポインタ。
  6452. _Example_
  6453. \code
  6454. int ret = 0;
  6455. WOLFSSL_CTX* ctx = 0;
  6456. WOLFSSL* ssl = 0;
  6457. ctx = wolfSSL_CTX_new(method);
  6458. if (ctx == NULL) {
  6459. // context creation failed
  6460. }
  6461. ssl = wolfSSL_new(ctx);
  6462. if (ssl == NULL) {
  6463. // ssl creation failed
  6464. }
  6465. ret = wolfSSL_UseSNI(ssl, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
  6466. strlen("www.yassl.com"));
  6467. if (ret != WOLFSSL_SUCCESS) {
  6468. // sni usage failed
  6469. }
  6470. \endcode
  6471. \sa wolfSSL_new
  6472. \sa wolfSSL_CTX_UseSNI
  6473. */
  6474. int wolfSSL_UseSNI(WOLFSSL* ssl, unsigned char type,
  6475. const void* data, unsigned short size);
  6476. /*!
  6477. \brief SSLコンテキストから作成されたオブジェクトは 'ctx'パラメータに渡されました。これは、WolfSSLクライアントによってSNI拡張機能がClientHelloで送信され、WolfSSLサーバーはServerHello + SNIまたはSNIの不一致の場合には致命的なALERT Hello + SNIを応答します。
  6478. \return WOLFSSL_SUCCESS 成功すると。
  6479. \return BAD_FUNC_ARG 次のいずれかの場合で返されるエラーです.CTXはNULL、データはNULL、タイプは不明な値です。(下記参照)
  6480. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6481. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6482. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6483. \param data サーバー名データへのポインタ。
  6484. _Example_
  6485. \code
  6486. int ret = 0;
  6487. WOLFSSL_CTX* ctx = 0;
  6488. ctx = wolfSSL_CTX_new(method);
  6489. if (ctx == NULL) {
  6490. // context creation failed
  6491. }
  6492. ret = wolfSSL_CTX_UseSNI(ctx, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
  6493. strlen("www.yassl.com"));
  6494. if (ret != WOLFSSL_SUCCESS) {
  6495. // sni usage failed
  6496. }
  6497. \endcode
  6498. \sa wolfSSL_CTX_new
  6499. \sa wolfSSL_UseSNI
  6500. */
  6501. int wolfSSL_CTX_UseSNI(WOLFSSL_CTX* ctx, unsigned char type,
  6502. const void* data, unsigned short size);
  6503. /*!
  6504. \brief 'ssl'パラメータに渡されたSSLオブジェクト内のサーバー名表示を使用したSSLセッションの動作。オプションを以下に説明します。
  6505. \return none いいえ返します。
  6506. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6507. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6508. \param options 選択されたオプションを持つビット単位のセマフォ。利用可能なオプションは次のとおりです。enum {wolfssl_sni_continue_on_mismatch = 0x01、wolfssl_sni_answer_on_mismatch = 0x02};通常、サーバーは、クライアントによって提供されたホスト名がサーバーと表示されているホスト名がサーバーで提供されている場合、サーバーはhandshakeを中止します。
  6509. \param WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションを設定すると、サーバーはセッションを中止する代わりにSNI応答を送信しません。
  6510. _Example_
  6511. \code
  6512. int ret = 0;
  6513. WOLFSSL_CTX* ctx = 0;
  6514. WOLFSSL* ssl = 0;
  6515. ctx = wolfSSL_CTX_new(method);
  6516. if (ctx == NULL) {
  6517. // context creation failed
  6518. }
  6519. ssl = wolfSSL_new(ctx);
  6520. if (ssl == NULL) {
  6521. // ssl creation failed
  6522. }
  6523. ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
  6524. if (ret != WOLFSSL_SUCCESS) {
  6525. // sni usage failed
  6526. }
  6527. wolfSSL_SNI_SetOptions(ssl, WOLFSSL_SNI_HOST_NAME,
  6528. WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
  6529. \endcode
  6530. \sa wolfSSL_new
  6531. \sa wolfSSL_UseSNI
  6532. \sa wolfSSL_CTX_SNI_SetOptions
  6533. */
  6534. void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type,
  6535. unsigned char options);
  6536. /*!
  6537. \brief SSLセッションを使用したSSLオブジェクトのサーバ名指示を使用して、SSLコンテキストから作成されたSSLオブジェクトから作成されます。オプションを以下に説明します。
  6538. \return none いいえ返します。
  6539. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6540. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6541. \param options 選択されたオプションを持つビット単位のセマフォ。利用可能なオプションは次のとおりです。enum {wolfssl_sni_continue_on_mismatch = 0x01、wolfssl_sni_answer_on_mismatch = 0x02};通常、サーバーは、クライアントによって提供されたホスト名がサーバーと表示されているホスト名がサーバーで提供されている場合、サーバーはhandshakeを中止します。
  6542. \param WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションを設定すると、サーバーはセッションを中止する代わりにSNI応答を送信しません。
  6543. _Example_
  6544. \code
  6545. int ret = 0;
  6546. WOLFSSL_CTX* ctx = 0;
  6547. ctx = wolfSSL_CTX_new(method);
  6548. if (ctx == NULL) {
  6549. // context creation failed
  6550. }
  6551. ret = wolfSSL_CTX_UseSNI(ctx, 0, "www.yassl.com", strlen("www.yassl.com"));
  6552. if (ret != WOLFSSL_SUCCESS) {
  6553. // sni usage failed
  6554. }
  6555. wolfSSL_CTX_SNI_SetOptions(ctx, WOLFSSL_SNI_HOST_NAME,
  6556. WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
  6557. \endcode
  6558. \sa wolfSSL_CTX_new
  6559. \sa wolfSSL_CTX_UseSNI
  6560. \sa wolfSSL_SNI_SetOptions
  6561. */
  6562. void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx,
  6563. unsigned char type, unsigned char options);
  6564. /*!
  6565. \brief クライアントによってクライアントから提供された名前表示クライアントによって送信されたメッセージセッションを開始する。SNIを取得するためのコンテキストまたはセッション設定が必要ありません。
  6566. \return WOLFSSL_SUCCESS 成功すると。
  6567. \return BAD_FUNC_ARG このケースで返されるエラーは、次のいずれかの場合で返されます。バッファはNULL、BUFFERSZ <= 0、SNIはNULL、INOUTSZはNULLまたは<= 0です。
  6568. \return BUFFER_ERROR 不正なクライアントhelloメッセージがあるときにエラーが返されます。
  6569. \return INCOMPLETE_DATA 抽出を完了するのに十分なデータがない場合に返されるエラーです。
  6570. \param buffer クライアントから提供されたデータへのポインタ(クライアントhello)。
  6571. \param bufferSz クライアントhelloメッセージのサイズ。
  6572. \param type どの種類のサーバー名がバッファーから取得されているかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6573. \param sni 出力が保存される場所へのポインタ。
  6574. _Example_
  6575. \code
  6576. unsigned char buffer[1024] = {0};
  6577. unsigned char result[32] = {0};
  6578. int length = 32;
  6579. // read Client Hello to buffer...
  6580. ret = wolfSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, result, &length));
  6581. if (ret != WOLFSSL_SUCCESS) {
  6582. // sni retrieve failed
  6583. }
  6584. \endcode
  6585. \sa wolfSSL_UseSNI
  6586. \sa wolfSSL_CTX_UseSNI
  6587. \sa wolfSSL_SNI_GetRequest
  6588. */
  6589. int wolfSSL_SNI_GetFromBuffer(
  6590. const unsigned char* clientHello, unsigned int helloSz,
  6591. unsigned char type, unsigned char* sni, unsigned int* inOutSz);
  6592. /*!
  6593. \ingroup IO
  6594. \brief この関数はSNIオブジェクトのステータスを取得します。
  6595. \return value SNIがNULLでない場合、この関数はSNI構造体のステータスメンバーのバイト値を返します。
  6596. \return 0 SNIオブジェクトがNULLの場合
  6597. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6598. _Example_
  6599. \code
  6600. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6601. WOLFSSL* ssl = wolfSSL_new(ctx);
  6602. #define AssertIntEQ(x, y) AssertInt(x, y, ==, !=)
  6603. Byte type = WOLFSSL_SNI_HOST_NAME;
  6604. char* request = (char*)&type;
  6605. AssertIntEQ(WOLFSSL_SNI_NO_MATCH, wolfSSL_SNI_Status(ssl, type));
  6606. \endcode
  6607. \sa TLSX_SNI_Status
  6608. \sa TLSX_SNI_find
  6609. \sa TLSX_Find
  6610. */
  6611. unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type);
  6612. /*!
  6613. \brief SSLセッションでクライアントによって提供されるサーバー名の表示。
  6614. \return size 提供されたSNIデータのサイズ。
  6615. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6616. \param type どの種類のサーバー名がデータ内で取得されているかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6617. _Example_
  6618. \code
  6619. int ret = 0;
  6620. WOLFSSL_CTX* ctx = 0;
  6621. WOLFSSL* ssl = 0;
  6622. ctx = wolfSSL_CTX_new(method);
  6623. if (ctx == NULL) {
  6624. // context creation failed
  6625. }
  6626. ssl = wolfSSL_new(ctx);
  6627. if (ssl == NULL) {
  6628. // ssl creation failed
  6629. }
  6630. ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
  6631. if (ret != WOLFSSL_SUCCESS) {
  6632. // sni usage failed
  6633. }
  6634. if (wolfSSL_accept(ssl) == SSL_SUCCESS) {
  6635. void *data = NULL;
  6636. unsigned short size = wolfSSL_SNI_GetRequest(ssl, 0, &data);
  6637. }
  6638. \endcode
  6639. \sa wolfSSL_UseSNI
  6640. \sa wolfSSL_CTX_UseSNI
  6641. */
  6642. unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl,
  6643. unsigned char type, void** data);
  6644. /*!
  6645. \ingroup Setup
  6646. \brief wolfsslセッションにALPNを設定します。
  6647. \return WOLFSSL_SUCCESS: 成功すると。
  6648. \return BAD_FUNC_ARG SSLまたはPROTOCOL_NAME_LISTがNULLまたはPROTOCOL_NAME_LISTSZが大きすぎたり、オプションがサポートされていないものを含みます。
  6649. \return MEMORY_ERROR プロトコルリストのメモリの割り当て中にエラーが発生しました。
  6650. \return SSL_FAILURE 失敗すると。
  6651. \param ssl 使用するWolfSSLセッション。
  6652. \param protocol_name_list 使用するプロトコル名のリスト。カンマ区切り文字列が必要です。
  6653. \param protocol_name_listSz プロトコル名のリストのサイズ。
  6654. _Example_
  6655. \code
  6656. wolfSSL_Init();
  6657. WOLFSSL_CTX* ctx;
  6658. WOLFSSL* ssl;
  6659. WOLFSSL_METHOD method = // Some wolfSSL method
  6660. ctx = wolfSSL_CTX_new(method);
  6661. ssl = wolfSSL_new(ctx);
  6662. char alpn_list[] = {};
  6663. if (wolfSSL_UseALPN(ssl, alpn_list, sizeof(alpn_list),
  6664. WOLFSSL_APN_FAILED_ON_MISMATCH) != WOLFSSL_SUCCESS)
  6665. {
  6666. // Error setting session ticket
  6667. }
  6668. \endcode
  6669. \sa TLSX_UseALPN
  6670. */
  6671. int wolfSSL_UseALPN(WOLFSSL* ssl, char *protocol_name_list,
  6672. unsigned int protocol_name_listSz,
  6673. unsigned char options);
  6674. /*!
  6675. \ingroup TLS
  6676. \brief この関数は、サーバーによって設定されたプロトコル名を取得します。
  6677. \return SSL_SUCCESS エラーが投げられていない正常な実行に戻りました。
  6678. \return SSL_FATAL_ERROR 拡張子が見つからなかった場合、またはピアとプロトコルが一致しなかった場合に返されます。2つ以上のプロトコル名が受け入れられている場合は、スローされたエラーもあります。
  6679. \return SSL_ALPN_NOT_FOUND ピアとプロトコルの一致が見つからなかったことを示す返されました。
  6680. \return BAD_FUNC_ARG 関数に渡されたnull引数があった場合に返されます。
  6681. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6682. \param protocol_name プロトコル名を表すCHARへのポインタは、ALPN構造に保持されます。
  6683. _Example_
  6684. \code
  6685. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  6686. WOLFSSL* ssl = WOLFSSL_new(ctx);
  6687. ...
  6688. int err;
  6689. char* protocol_name = NULL;
  6690. Word16 protocol_nameSz = 0;
  6691. err = wolfSSL_ALPN_GetProtocol(ssl, &protocol_name, &protocol_nameSz);
  6692. if(err == SSL_SUCCESS){
  6693. // Sent ALPN protocol
  6694. }
  6695. \endcode
  6696. \sa TLSX_ALPN_GetRequest
  6697. \sa TLSX_Find
  6698. */
  6699. int wolfSSL_ALPN_GetProtocol(WOLFSSL* ssl, char **protocol_name,
  6700. unsigned short *size);
  6701. /*!
  6702. \ingroup TLS
  6703. \brief この関数は、alpn_client_listデータをSSLオブジェクトからバッファにコピーします。
  6704. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。SSLオブジェクトのALPN_CLIENT_LISTメンバーがLISTパラメータにコピーされました。
  6705. \return BAD_FUNC_ARG listまたはlistszパラメーターがnullの場合に返されます。
  6706. \return BUFFER_ERROR リストバッファに問題がある場合は(NULLまたはサイズが0の場合)に問題がある場合は返されます。
  6707. \return MEMORY_ERROR メモリを動的に割り当てる問題がある場合に返されます。
  6708. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6709. \param list バッファへのポインタ。SSLオブジェクトからのデータがコピーされます。
  6710. _Example_
  6711. \code
  6712. #import <wolfssl/ssl.h>
  6713. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method);
  6714. WOLFSSL* ssl = wolfSSL_new(ctx);
  6715. #ifdef HAVE_ALPN
  6716. char* list = NULL;
  6717. word16 listSz = 0;
  6718. err = wolfSSL_ALPN_GetPeerProtocol(ssl, &list, &listSz);
  6719. if(err == SSL_SUCCESS){
  6720. List of protocols names sent by client
  6721. }
  6722. \endcode
  6723. \sa wolfSSL_UseALPN
  6724. */
  6725. int wolfSSL_ALPN_GetPeerProtocol(WOLFSSL* ssl, char **list,
  6726. unsigned short *listSz);
  6727. /*!
  6728. \brief 'ssl'パラメータに渡されたSSLオブジェクト内の最大フラグメント長。これは、最大フラグメント長拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6729. \return SSL_SUCCESS 成功すると。
  6730. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULL、MFLは範囲外です。
  6731. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6732. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6733. _Example_
  6734. \code
  6735. int ret = 0;
  6736. WOLFSSL_CTX* ctx = 0;
  6737. WOLFSSL* ssl = 0;
  6738. ctx = wolfSSL_CTX_new(method);
  6739. if (ctx == NULL) {
  6740. // context creation failed
  6741. }
  6742. ssl = wolfSSL_new(ctx);
  6743. if (ssl == NULL) {
  6744. // ssl creation failed
  6745. }
  6746. ret = wolfSSL_UseMaxFragment(ssl, WOLFSSL_MFL_2_11);
  6747. if (ret != 0) {
  6748. // max fragment usage failed
  6749. }
  6750. \endcode
  6751. \sa wolfSSL_new
  6752. \sa wolfSSL_CTX_UseMaxFragment
  6753. */
  6754. int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl);
  6755. /*!
  6756. \brief SSLコンテキストから作成されたSSLオブジェクトの最大フラグメント長さ 'ctx'パラメータに渡されました。これは、最大フラグメント長拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6757. \return SSL_SUCCESS 成功すると。
  6758. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL、MFLは範囲外です。
  6759. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6760. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6761. _Example_
  6762. \code
  6763. int ret = 0;
  6764. WOLFSSL_CTX* ctx = 0;
  6765. ctx = wolfSSL_CTX_new(method);
  6766. if (ctx == NULL) {
  6767. // context creation failed
  6768. }
  6769. ret = wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_11);
  6770. if (ret != 0) {
  6771. // max fragment usage failed
  6772. }
  6773. \endcode
  6774. \sa wolfSSL_CTX_new
  6775. \sa wolfSSL_UseMaxFragment
  6776. */
  6777. int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl);
  6778. /*!
  6779. \brief 'ssl'パラメータに渡されたSSLオブジェクト内のtruncated HMAC。これは、切り捨てられたHMAC拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6780. \return SSL_SUCCESS 成功すると。
  6781. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULLです
  6782. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6783. _Example_
  6784. \code
  6785. int ret = 0;
  6786. WOLFSSL_CTX* ctx = 0;
  6787. WOLFSSL* ssl = 0;
  6788. ctx = wolfSSL_CTX_new(method);
  6789. if (ctx == NULL) {
  6790. // context creation failed
  6791. }
  6792. ssl = wolfSSL_new(ctx);
  6793. if (ssl == NULL) {
  6794. // ssl creation failed
  6795. }
  6796. ret = wolfSSL_UseTruncatedHMAC(ssl);
  6797. if (ret != 0) {
  6798. // truncated HMAC usage failed
  6799. }
  6800. \endcode
  6801. \sa wolfSSL_new
  6802. \sa wolfSSL_CTX_UseMaxFragment
  6803. */
  6804. int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl);
  6805. /*!
  6806. \brief 'ctx'パラメータに渡されたSSLコンテキストから作成されたSSLオブジェクトのためのTruncated HMAC。これは、切り捨てられたHMAC拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6807. \return SSL_SUCCESS 成功すると。
  6808. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL
  6809. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6810. _Example_
  6811. \code
  6812. int ret = 0;
  6813. WOLFSSL_CTX* ctx = 0;
  6814. ctx = wolfSSL_CTX_new(method);
  6815. if (ctx == NULL) {
  6816. // context creation failed
  6817. }
  6818. ret = wolfSSL_CTX_UseTruncatedHMAC(ctx);
  6819. if (ret != 0) {
  6820. // truncated HMAC usage failed
  6821. }
  6822. \endcode
  6823. \sa wolfSSL_CTX_new
  6824. \sa wolfSSL_UseMaxFragment
  6825. */
  6826. int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx);
  6827. /*!
  6828. \brief OCSPで提示された証明書失効チェックのコストを下げます。
  6829. \return SSL_SUCCESS tlsx_usecertificateStatusRequestがエラーなしで実行された場合に返されます。
  6830. \return MEMORY_E メモリの割り当てにエラーがある場合は返されます。
  6831. \return BAD_FUNC_ARG NULLまたはその他の点では、関数に渡された値が渡される引数がある場合に返されます。
  6832. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6833. \param status_type tlsx_usecertificateSrequest()に渡され、CertificateStatusRequest構造体に格納されているバイトタイプ。
  6834. _Example_
  6835. \code
  6836. WOLFSSL* ssl = wolfSSL_new(ctx);
  6837. if (wolfSSL_UseOCSPStapling(ssl, WOLFSSL_CSR2_OCSP,
  6838. WOLFSSL_CSR2_OCSP_USE_NONCE) != SSL_SUCCESS){
  6839. // Failed case.
  6840. }
  6841. \endcode
  6842. \sa TLSX_UseCertificateStatusRequest
  6843. \sa wolfSSL_CTX_UseOCSPStapling
  6844. */
  6845. int wolfSSL_UseOCSPStapling(WOLFSSL* ssl,
  6846. unsigned char status_type, unsigned char options);
  6847. /*!
  6848. \brief
  6849. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6850. \return BAD_FUNC_ARG 未解決の値がサブルーチンに渡された場合、wolfssl_ctx構造体がNULLまたはそうでない場合は返されます。
  6851. \return MEMORY_E 関数またはサブルーチンがメモリを正しく割り振ることができなかった場合に返されます。
  6852. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6853. \param status_type tlsx_usecertificateSrequest()に渡され、CertificateStatusRequest構造体に格納されているバイトタイプ。
  6854. _Example_
  6855. \code
  6856. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6857. WOLFSSL* ssl = wolfSSL_new(ctx);
  6858. byte statusRequest = 0; // Initialize status request
  6859. switch(statusRequest){
  6860. case WOLFSSL_CSR_OCSP:
  6861. if(wolfSSL_CTX_UseOCSPStapling(ssl->ctx, WOLFSSL_CSR_OCSP,
  6862. WOLF_CSR_OCSP_USE_NONCE) != SSL_SUCCESS){
  6863. // UseCertificateStatusRequest failed
  6864. }
  6865. // Continue switch cases
  6866. \endcode
  6867. \sa wolfSSL_UseOCSPStaplingV2
  6868. \sa wolfSSL_UseOCSPStapling
  6869. \sa TLSX_UseCertificateStatusRequest
  6870. */
  6871. int wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX* ctx,
  6872. unsigned char status_type, unsigned char options);
  6873. /*!
  6874. \brief
  6875. \return SSL_SUCCESS - 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6876. \return MEMORY_E - メモリエラーの割り当てがあった場合に返されます。
  6877. \return BAD_FUNC_ARG - NULLまたはそれ以外の場合は解読されていない引数が関数またはサブルーチンに渡された場合に返されます。
  6878. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6879. \param status_type OCSPステータスタイプをロードするバイトタイプ。
  6880. _Example_
  6881. \code
  6882. WOLFSSL* ssl = wolfSSL_new(ctx);
  6883. ...
  6884. if (wolfSSL_UseOCSPStaplingV2(ssl, WOLFSSL_CSR2_OCSP_MULTI, 0) != SSL_SUCCESS){
  6885. // Did not execute properly. Failure case code block.
  6886. }
  6887. \endcode
  6888. \sa TLSX_UseCertificatStatusRequestV2
  6889. \sa wolfSSL_SNI_SetOptions
  6890. \sa wolfSSL_CTX_SNI_SetOptions
  6891. */
  6892. int wolfSSL_UseOCSPStaplingV2(WOLFSSL* ssl,
  6893. unsigned char status_type, unsigned char options);
  6894. /*!
  6895. \brief OCSPステイプルのために。
  6896. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合。
  6897. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合、または側数変数がクライアント側ではない場合に返されます。
  6898. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  6899. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6900. \param status_type CertificatStatusRequest構造体にあるバイトタイプで、wolfssl_csr2_ocspまたはwolfssl_csr2_ocsp_multiでなければなりません。
  6901. _Example_
  6902. \code
  6903. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6904. byte status_type;
  6905. byte options;
  6906. ...
  6907. if(wolfSSL_CTX_UseOCSPStaplingV2(ctx, status_type, options); != SSL_SUCCESS){
  6908. // Failure case.
  6909. }
  6910. \endcode
  6911. \sa TLSX_UseCertificateStatusRequestV2
  6912. \sa wc_RNG_GenerateBlock
  6913. \sa TLSX_Push
  6914. */
  6915. int wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX* ctx,
  6916. unsigned char status_type, unsigned char options);
  6917. /*!
  6918. \brief サポートされている楕円曲線拡張子は、 'SSL'パラメータに渡されたSSLオブジェクトでサポートされています。これは、サポートされているカーブがWolfSSLクライアントによってClientHelloで送信されることを意味します。この機能は複数の曲線を有効にするために複数の時間と呼ぶことができます。
  6919. \return SSL_SUCCESS 成功すると。
  6920. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULLです。名前は未知の値です。(下記参照)
  6921. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6922. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6923. _Example_
  6924. \code
  6925. int ret = 0;
  6926. WOLFSSL_CTX* ctx = 0;
  6927. WOLFSSL* ssl = 0;
  6928. ctx = wolfSSL_CTX_new(method);
  6929. if (ctx == NULL) {
  6930. // context creation failed
  6931. }
  6932. ssl = wolfSSL_new(ctx);
  6933. if (ssl == NULL) {
  6934. // ssl creation failed
  6935. }
  6936. ret = wolfSSL_UseSupportedCurve(ssl, WOLFSSL_ECC_SECP256R1);
  6937. if (ret != 0) {
  6938. // Elliptic Curve Extension usage failed
  6939. }
  6940. \endcode
  6941. \sa wolfSSL_CTX_new
  6942. \sa wolfSSL_CTX_UseSupportedCurve
  6943. */
  6944. int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name);
  6945. /*!
  6946. \brief サポートされている楕円曲線は、 'ctx'パラメータに渡されたSSLコンテキストから作成されたSSLオブジェクトの拡張子です。これは、サポートされているカーブがWolfSSLクライアントによってClientHelloで送信されることを意味します。この機能は複数の曲線を有効にするために複数の時間と呼ぶことができます。
  6947. \return SSL_SUCCESS 成功すると。
  6948. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL、名前は未知の値です。(下記参照)
  6949. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6950. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6951. _Example_
  6952. \code
  6953. int ret = 0;
  6954. WOLFSSL_CTX* ctx = 0;
  6955. ctx = wolfSSL_CTX_new(method);
  6956. if (ctx == NULL) {
  6957. // context creation failed
  6958. }
  6959. ret = wolfSSL_CTX_UseSupportedCurve(ctx, WOLFSSL_ECC_SECP256R1);
  6960. if (ret != 0) {
  6961. // Elliptic Curve Extension usage failed
  6962. }
  6963. \endcode
  6964. \sa wolfSSL_CTX_new
  6965. \sa wolfSSL_UseSupportedCurve
  6966. */
  6967. int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx,
  6968. word16 name);
  6969. /*!
  6970. \ingroup IO
  6971. \brief この関数は、供給されたWOLFSSL構造の安全な再交渉を強制します。これはお勧めできません。
  6972. \return SSL_SUCCESS 安全な再ネゴシエーションを正常に設定します。
  6973. \return BAD_FUNC_ARG SSLがNULLの場合、エラーを返します。
  6974. \return MEMORY_E 安全な再交渉のためにメモリを割り当てることができない場合、エラーを返します。
  6975. _Example_
  6976. \code
  6977. wolfSSL_Init();
  6978. WOLFSSL_CTX* ctx;
  6979. WOLFSSL* ssl;
  6980. WOLFSSL_METHOD method = // Some wolfSSL method
  6981. ctx = wolfSSL_CTX_new(method);
  6982. ssl = wolfSSL_new(ctx);
  6983. if(wolfSSL_UseSecureRenegotiation(ssl) != SSL_SUCCESS)
  6984. {
  6985. // Error setting secure renegotiation
  6986. }
  6987. \endcode
  6988. \sa TLSX_Find
  6989. \sa TLSX_UseSecureRenegotiation
  6990. */
  6991. int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl);
  6992. /*!
  6993. \ingroup IO
  6994. \brief この関数は安全な再交渉ハンドシェイクを実行します。これは、WolfSSLがこの機能を妨げるように強制されます。
  6995. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  6996. \return BAD_FUNC_ARG wolfssl構造がnullまたはそうでなければ、許容できない引数がサブルーチンに渡された場合に返されます。
  6997. \return SECURE_RENEGOTIATION_E ハンドシェイクを再ネゴシエーションすることにエラーが発生した場合は返されます。
  6998. \return SSL_FATAL_ERROR サーバーまたはクライアント構成にエラーが発生した場合は、再ネゴシエーションが完了できなかった場合に返されます。wolfssl_negotiate()を参照してください。
  6999. _Example_
  7000. \code
  7001. WOLFSSL* ssl = wolfSSL_new(ctx);
  7002. ...
  7003. if(wolfSSL_Rehandshake(ssl) != SSL_SUCCESS){
  7004. // There was an error and the rehandshake is not successful.
  7005. }
  7006. \endcode
  7007. \sa wolfSSL_negotiate
  7008. \sa wc_InitSha512
  7009. \sa wc_InitSha384
  7010. \sa wc_InitSha256
  7011. \sa wc_InitSha
  7012. \sa wc_InitMd5
  7013. */
  7014. int wolfSSL_Rehandshake(WOLFSSL* ssl);
  7015. /*!
  7016. \ingroup IO
  7017. \brief セッションチケットを使用するようにWolfSSL構造を強制します。定数hous_session_ticketを定義し、定数NO_WOLFSSL_CLIENTをこの関数を使用するように定義しないでください。
  7018. \return SSL_SUCCESS セッションチケットを使用したセットに成功しました。
  7019. \return BAD_FUNC_ARG SSLがNULLの場合に返されます。
  7020. \return MEMORY_E セッションチケットを設定するためのメモリの割り当て中にエラーが発生しました。
  7021. _Example_
  7022. \code
  7023. wolfSSL_Init();
  7024. WOLFSSL_CTX* ctx;
  7025. WOLFSSL* ssl;
  7026. WOLFSSL_METHOD method = // Some wolfSSL method
  7027. ctx = wolfSSL_CTX_new(method);
  7028. ssl = wolfSSL_new(ctx);
  7029. if(wolfSSL_UseSessionTicket(ssl) != SSL_SUCCESS)
  7030. {
  7031. // Error setting session ticket
  7032. }
  7033. \endcode
  7034. \sa TLSX_UseSessionTicket
  7035. */
  7036. int wolfSSL_UseSessionTicket(WOLFSSL* ssl);
  7037. /*!
  7038. \ingroup Setup
  7039. \brief この関数は、セッションチケットを使用するようにWolfSSLコンテキストを設定します。
  7040. \return SSL_SUCCESS 関数は正常に実行されます。
  7041. \return BAD_FUNC_ARG CTXがNULLの場合に返されます。
  7042. \return MEMORY_E 内部関数内のメモリの割り当て中にエラーが発生しました。
  7043. _Example_
  7044. \code
  7045. wolfSSL_Init();
  7046. WOLFSSL_CTX* ctx;
  7047. WOLFSSL_METHOD method = // Some wolfSSL method ;
  7048. ctx = wolfSSL_CTX_new(method);
  7049. if(wolfSSL_CTX_UseSessionTicket(ctx) != SSL_SUCCESS)
  7050. {
  7051. // Error setting session ticket
  7052. }
  7053. \endcode
  7054. \sa TLSX_UseSessionTicket
  7055. */
  7056. int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx);
  7057. /*!
  7058. \ingroup IO
  7059. \brief この機能は、セッション構造のチケットメンバーをバッファにコピーします。
  7060. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  7061. \return BAD_FUNC_ARG 引数の1つがNULLの場合、またはbufsz引数が0の場合に返されます。
  7062. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7063. \param buf メモリバッファを表すバイトポインタ。
  7064. _Example_
  7065. \code
  7066. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7067. WOLFSSL* ssl = wolfSSL_new(ctx);
  7068. byte* buf;
  7069. word32 bufSz; // Initialize with buf size
  7070. if(wolfSSL_get_SessionTicket(ssl, buf, bufSz) <= 0){
  7071. // Nothing was written to the buffer
  7072. } else {
  7073. // the buffer holds the content from ssl->session->ticket
  7074. }
  7075. \endcode
  7076. \sa wolfSSL_UseSessionTicket
  7077. \sa wolfSSL_set_SessionTicket
  7078. */
  7079. int wolfSSL_get_SessionTicket(WOLFSSL* ssl, unsigned char* buf, word32* bufSz);
  7080. /*!
  7081. \ingroup IO
  7082. \brief この関数は、WolfSSL構造体内のwolfssl_session構造体のチケットメンバーを設定します。関数に渡されたバッファはメモリにコピーされます。
  7083. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。関数はエラーなしで返されました。
  7084. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。BUF引数がNULLの場合は、これはスローされますが、bufsz引数はゼロではありません。
  7085. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7086. \param buf セッション構造のチケットメンバーにロードされるバイトポインタ。
  7087. _Example_
  7088. \code
  7089. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7090. WOLFSSL* ssl = wolfSSL_new(ctx);
  7091. byte* buffer; // File to load
  7092. word32 bufSz;
  7093. ...
  7094. if(wolfSSL_KeepArrays(ssl, buffer, bufSz) != SSL_SUCCESS){
  7095. // There was an error loading the buffer to memory.
  7096. }
  7097. \endcode
  7098. \sa wolfSSL_set_SessionTicket_cb
  7099. */
  7100. int wolfSSL_set_SessionTicket(WOLFSSL* ssl, const unsigned char* buf,
  7101. word32 bufSz);
  7102. /*!
  7103. \brief CallbackSessionTicketは、int(* callbacksessionTicket)(wolfssl *、const unsigned char *、int、void *)の関数ポインタです。
  7104. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  7105. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  7106. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7107. \param cb Type CallbackSessionTicketへの関数ポインタ。
  7108. _Example_
  7109. \code
  7110. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7111. WOLFSSL* ssl = wolfSSL_new(ctx);
  7112. int sessionTicketCB(WOLFSSL* ssl, const unsigned char* ticket, int ticketSz,
  7113. void* ctx){ … }
  7114. wolfSSL_set_SessionTicket_cb(ssl, sessionTicketCB, (void*)”initial session”);
  7115. \endcode
  7116. \sa wolfSSL_set_SessionTicket
  7117. \sa CallbackSessionTicket
  7118. \sa sessionTicketCB
  7119. */
  7120. int wolfSSL_set_SessionTicket_cb(WOLFSSL* ssl,
  7121. CallbackSessionTicket cb, void* ctx);
  7122. /*!
  7123. \brief RFC 5077で指定されているセッションチケットをサポートするためのサーバーが。
  7124. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7125. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7126. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7127. \param cb セッションチケットを暗号化/復号化するためのユーザーコールバック関数
  7128. \param ssl(Callback) WOLFSSL_NEW()で作成されたWolfSSLオブジェクトへのポインタ
  7129. \param key_name(Callback) このチケットコンテキストの一意のキー名はランダムに生成されるべきです
  7130. \param iv(Callback) ユニークなIVこのチケットの場合、最大128ビット、ランダムに生成されるべきです
  7131. \param mac(Callback) このチケットの最大256ビットMAC
  7132. \param enc(Callback) この暗号化パラメータがtrueの場合、ユーザーはキーコード、IV、Macを記入し、チケットを長さのインレルの範囲内に暗号化し、結果として生じる出力長を* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返す暗号化が成功したことをWolfSSLに指示します。この暗号化パラメータがfalseの場合、key_name、iv、およびmacを使用して、リングインレーンの範囲内のチケットの復号化を実行する必要があります。結果の復号長は* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返すと、復号化されたチケットの使用を続行するようにWolfSSLに指示します。 wolfssl_ticket_ret_createを返すと、復号化されたチケットを使用するだけでなく、クライアントに送信するための新しいものを生成するように指示し、最近ロールされている場合に役立つ、フルハンドシェイクを強制したくない。 wolfssl_ticket_ret_rejectを返すと、WolfSSLにこのチケットを拒否し、フルハンドシェイクを実行し、通常のセッション再開のための新しい標準セッションIDを作成します。 wolfssl_ticket_ret_fatalを返すと、致命的なエラーで接続の試みを終了するようにWolfSSLに指示します。
  7133. \param ticket(Callback) 暗号化チケットの入出力バッファ。ENCパラメータを参照してください
  7134. \param inLen(Callback) チケットパラメータの入力長
  7135. \param outLen(Callback) チケットパラメータの結果の出力長。コールバックoutlenを入力すると、チケットバッファで使用可能な最大サイズが表示されます。
  7136. _Example_
  7137. \code
  7138. See wolfssl/test.h myTicketEncCb() used by the example
  7139. server and example echoserver.
  7140. \endcode
  7141. \sa wolfSSL_CTX_set_TicketHint
  7142. \sa wolfSSL_CTX_set_TicketEncCtx
  7143. */
  7144. int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx,
  7145. SessionTicketEncCb);
  7146. /*!
  7147. \brief サーバーサイドの使用のために。
  7148. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7149. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7150. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7151. _Example_
  7152. \code
  7153. none
  7154. \endcode
  7155. \sa wolfSSL_CTX_set_TicketEncCb
  7156. */
  7157. int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int);
  7158. /*!
  7159. \brief 折り返し電話。サーバーサイドの使用のために。
  7160. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7161. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7162. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7163. _Example_
  7164. \code
  7165. none
  7166. \endcode
  7167. \sa wolfSSL_CTX_set_TicketEncCb
  7168. */
  7169. int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*);
  7170. /*!
  7171. \brief 折り返し電話。サーバーサイドの使用のために。
  7172. \return userCtx セッションを正常に取得すると返されます。
  7173. \return NULL 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって、またはユーザーコンテキストが設定されていないときに発生します。
  7174. _Example_
  7175. \code
  7176. none
  7177. \endcode
  7178. \sa wolfSSL_CTX_set_TicketEncCtx
  7179. */
  7180. void* wolfSSL_CTX_get_TicketEncCtx(WOLFSSL_CTX* ctx);
  7181. /*!
  7182. \brief この機能には、WolfSSL構造のHSDonectxメンバーが設定されています。
  7183. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。WolfSSL構造体のHSDONECBとHSDonectxメンバーが設定されています。
  7184. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合に返されます。
  7185. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7186. \param cb int(* HandshakedOneCB)(wolfssl *、void *)の署名を持つタイプHandshakedOneCBの関数ポインタ。
  7187. _Example_
  7188. \code
  7189. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7190. WOLFSSL* ssl = wolfSSL_new(ctx);
  7191. int myHsDoneCb(WOLFSSL* ssl, void* user_ctx){
  7192. // callback function
  7193. }
  7194. wolfSSL_SetHsDoneCb(ssl, myHsDoneCb, NULL);
  7195. \endcode
  7196. \sa HandShakeDoneCb
  7197. */
  7198. int wolfSSL_SetHsDoneCb(WOLFSSL* ssl, HandShakeDoneCb cb, void* user_ctx);
  7199. /*!
  7200. \ingroup IO
  7201. \brief この関数はセッションから統計を印刷します。
  7202. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで戻った場合に返されます。セッション統計は正常に取得され印刷されました。
  7203. \return BAD_FUNC_ARG サブルーチンwolfssl_get_session_stats()が許容できない引数に渡された場合に返されます。
  7204. \return BAD_MUTEX_E サブルーチンにミューテックスエラーがあった場合に返されます。
  7205. _Example_
  7206. \code
  7207. // You will need to have a session object to retrieve stats from.
  7208. if(wolfSSL_PrintSessionStats(void) != SSL_SUCCESS ){
  7209. // Did not print session stats
  7210. }
  7211. \endcode
  7212. \sa wolfSSL_get_session_stats
  7213. */
  7214. int wolfSSL_PrintSessionStats(void);
  7215. /*!
  7216. \ingroup IO
  7217. \brief この関数はセッションの統計を取得します。
  7218. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで戻った場合に返されます。セッション統計は正常に取得され印刷されました。
  7219. \return BAD_FUNC_ARG サブルーチンwolfssl_get_session_stats()が許容できない引数に渡された場合に返されます。
  7220. \return BAD_MUTEX_E サブルーチンにミューテックスエラーがあった場合に返されます。
  7221. \param active 現在のセッションの合計を表すWord32ポインタ。
  7222. \param total 総セッションを表すWord32ポインタ。
  7223. \param peak ピークセッションを表すWord32ポインタ。
  7224. _Example_
  7225. \code
  7226. int wolfSSL_PrintSessionStats(void){
  7227. ret = wolfSSL_get_session_stats(&totalSessionsNow,
  7228. &totalSessionsSeen, &peak, &maxSessions);
  7229. return ret;
  7230. \endcode
  7231. \sa wolfSSL_PrintSessionStats
  7232. */
  7233. int wolfSSL_get_session_stats(unsigned int* active,
  7234. unsigned int* total,
  7235. unsigned int* peak,
  7236. unsigned int* maxSessions);
  7237. /*!
  7238. \ingroup TLS
  7239. \brief この関数はCRとSRの値をコピーしてからWC_PRF(疑似ランダム関数)に渡し、その値を返します。
  7240. \return 0 成功した
  7241. \return BUFFER_E バッファのサイズにエラーが発生した場合は返されます。
  7242. \return MEMORY_E サブルーチンが動的メモリを割り当てることができなかった場合に返されます。
  7243. \param ms マスターシークレットはアレイ構造に保持されています。
  7244. \param msLen マスターシークレットの長さ。
  7245. \param pms マスター前の秘密はアレイ構造に保持されています。
  7246. \param pmsLen マスタープレマスターシークレットの長さ。
  7247. \param cr クライアントのランダム
  7248. \param sr サーバーのランダムです。
  7249. \param tls1_2 バージョンが少なくともTLSバージョン1.2であることを意味します。
  7250. _Example_
  7251. \code
  7252. WOLFSSL* ssl;
  7253. called in MakeTlsMasterSecret and retrieves the necessary
  7254. information as follows:
  7255. int MakeTlsMasterSecret(WOLFSSL* ssl){
  7256. int ret;
  7257. ret = wolfSSL_makeTlsMasterSecret(ssl->arrays->masterSecret, SECRET_LEN,
  7258. ssl->arrays->preMasterSecret, ssl->arrays->preMasterSz,
  7259. ssl->arrays->clientRandom, ssl->arrays->serverRandom,
  7260. IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
  7261. return ret;
  7262. }
  7263. \endcode
  7264. \sa wc_PRF
  7265. \sa MakeTlsMasterSecret
  7266. */
  7267. int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, word32 msLen,
  7268. const unsigned char* pms, word32 pmsLen,
  7269. const unsigned char* cr, const unsigned char* sr,
  7270. int tls1_2, int hash_type);
  7271. /*!
  7272. \ingroup CertsKeys
  7273. \brief TLSキーを導き出すための外部のラッパー。
  7274. \return 0 成功に戻りました。
  7275. \return BUFFER_E LABLENとSEADLENの合計(合計サイズを計算)が最大サイズを超えると返されます。
  7276. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  7277. \param key_data DeriveTlSkeysに割り当てられ、最終ハッシュを保持するためにWC_PRFに渡されたバイトポインタ。
  7278. \param keyLen WOLFSSL構造体のスペックメンバーからのDerivetlskeysで派生したWord32タイプ。
  7279. \param ms WolfSSL構造内でアレイ構造に保持されているマスターシークレットを保持する定数ポインタ型。
  7280. \param msLen 列挙された定義で、マスターシークレットの長さを保持するWord32タイプ。
  7281. \param sr WOLFSSL構造内の配列構造のServerRandomメンバーへの定数バイトポインタ。
  7282. \param cr WolfSSL構造内の配列構造のClientRandomメンバーへの定数バイトポインタ。
  7283. \param tls1_2 ISATLEASTLSV1_2()から返された整数型。
  7284. _Example_
  7285. \code
  7286. int DeriveTlsKeys(WOLFSSL* ssl){
  7287. int ret;
  7288. ret = wolfSSL_DeriveTlsKeys(key_data, length, ssl->arrays->masterSecret,
  7289. SECRET_LEN, ssl->arrays->clientRandom,
  7290. IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
  7291. }
  7292. \endcode
  7293. \sa wc_PRF
  7294. \sa DeriveTlsKeys
  7295. \sa IsAtLeastTLSv1_2
  7296. */
  7297. int wolfSSL_DeriveTlsKeys(unsigned char* key_data, word32 keyLen,
  7298. const unsigned char* ms, word32 msLen,
  7299. const unsigned char* sr, const unsigned char* cr,
  7300. int tls1_2, int hash_type);
  7301. /*!
  7302. \brief ハンドシェイクコールバックが設定されます。これは、デバッガが利用できず、スニッフィングが実用的ではない場合に、サポートをデバッグするための組み込みシステムで役立ちます。ハンドシェイクエラーが発生したか否かが呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名をPacketNames []でアクセスできます。接続拡張機能は、タイムアウト値とともにタイムアウトコールバックを設定することもできます。これは、ユーザーがTCPスタックをタイムアウトするのを待ったくない場合に便利です。この拡張子は、コールバックのどちらか、またはどちらのコールバックも呼び出されません。
  7303. \return SSL_SUCCESS 成功すると。
  7304. \return GETTIME_ERROR gettimeofday()がエラーを検出した場合、返されます。
  7305. \return SETITIMER_ERROR setItimer()がエラーを検出した場合、返されます。
  7306. \return SIGACT_ERROR sigAction()がエラーを検出した場合、返されます。
  7307. \return SSL_FATAL_ERROR 基になるssl_connect()呼び出しがエラーを検出した場合に返されます。
  7308. _Example_
  7309. \code
  7310. none
  7311. \endcode
  7312. \sa wolfSSL_accept_ex
  7313. */
  7314. int wolfSSL_connect_ex(WOLFSSL* ssl, HandShakeCallBack hsCb,
  7315. TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
  7316. /*!
  7317. \brief 設定する。これは、デバッガが利用できず、スニッフィングが実用的ではない場合に、サポートをデバッグするための組み込みシステムで役立ちます。ハンドシェイクエラーが発生したか否かが呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名をPacketNames []でアクセスできます。接続拡張機能は、タイムアウト値とともにタイムアウトコールバックを設定することもできます。これは、ユーザーがTCPスタックをタイムアウトするのを待ったくない場合に便利です。この拡張子は、コールバックのどちらか、またはどちらのコールバックも呼び出されません。
  7318. \return SSL_SUCCESS 成功すると。
  7319. \return GETTIME_ERROR gettimeofday()がエラーを検出した場合、返されます。
  7320. \return SETITIMER_ERROR setItimer()がエラーを検出した場合、返されます。
  7321. \return SIGACT_ERROR sigAction()がエラーを検出した場合、返されます。
  7322. \return SSL_FATAL_ERROR 基礎となるssl_accept()呼び出しがエラーを検出した場合に返されます。
  7323. _Example_
  7324. \code
  7325. none
  7326. \endcode
  7327. \sa wolfSSL_connect_ex
  7328. */
  7329. int wolfSSL_accept_ex(WOLFSSL* ssl, HandShakeCallBacki hsCb,
  7330. TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
  7331. /*!
  7332. \ingroup IO
  7333. \brief これはBIOの内部ファイルポインタを設定するために使用されます。
  7334. \return SSL_SUCCESS ファイルポインタを正常に設定します。
  7335. \return SSL_FAILURE エラーケースに遭遇した場合
  7336. \param bio ペアを設定するためのwolfssl_bio構造。
  7337. \param fp バイオで設定するファイルポインタ。
  7338. _Example_
  7339. \code
  7340. WOLFSSL_BIO* bio;
  7341. XFILE fp;
  7342. int ret;
  7343. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  7344. ret = wolfSSL_BIO_set_fp(bio, fp, BIO_CLOSE);
  7345. // check ret value
  7346. \endcode
  7347. \sa wolfSSL_BIO_new
  7348. \sa wolfSSL_BIO_s_mem
  7349. \sa wolfSSL_BIO_get_fp
  7350. \sa wolfSSL_BIO_free
  7351. */
  7352. long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c);
  7353. /*!
  7354. \ingroup IO
  7355. \brief これは、BIOの内部ファイルポインタを取得するために使用されます。
  7356. \return SSL_SUCCESS ファイルポインタを正常に取得します。
  7357. \return SSL_FAILURE エラーケースに遭遇した場合
  7358. \param bio ペアを設定するためのwolfssl_bio構造。
  7359. _Example_
  7360. \code
  7361. WOLFSSL_BIO* bio;
  7362. XFILE fp;
  7363. int ret;
  7364. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  7365. ret = wolfSSL_BIO_get_fp(bio, &fp);
  7366. // check ret value
  7367. \endcode
  7368. \sa wolfSSL_BIO_new
  7369. \sa wolfSSL_BIO_s_mem
  7370. \sa wolfSSL_BIO_set_fp
  7371. \sa wolfSSL_BIO_free
  7372. */
  7373. long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp);
  7374. /*!
  7375. \ingroup Setup
  7376. \brief この関数は、秘密鍵が使用されている証明書との一致であることを確認します。
  7377. \return SSL_SUCCESS うまく一致します。
  7378. \return SSL_FAILURE エラーケースに遭遇した場合
  7379. \return <0 ssl_failure以外のすべてのエラーケースは負の値です。
  7380. _Example_
  7381. \code
  7382. WOLFSSL* ssl;
  7383. int ret;
  7384. // create and set up ssl
  7385. ret = wolfSSL_check_private_key(ssl);
  7386. // check ret value
  7387. \endcode
  7388. \sa wolfSSL_new
  7389. \sa wolfSSL_free
  7390. */
  7391. int wolfSSL_check_private_key(const WOLFSSL* ssl);
  7392. /*!
  7393. \ingroup CertsKeys
  7394. \brief この機能は、渡されたNID値に一致する拡張索引を探して返します。
  7395. \return >= 0拡張インデックスが成功した場合は返されます。
  7396. \return -1 拡張が見つからないかエラーが発生した場合
  7397. \param x509 拡張のために解析する証明書。
  7398. \param nid 見つかる拡張OID。
  7399. _Example_
  7400. \code
  7401. const WOLFSSL_X509* x509;
  7402. int lastPos = -1;
  7403. int idx;
  7404. idx = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, lastPos);
  7405. \endcode
  7406. */
  7407. int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509* x509,
  7408. int nid, int lastPos);
  7409. /*!
  7410. \ingroup CertsKeys
  7411. \brief この関数は、渡されたNID値に合った拡張子を探して返します。
  7412. \return pointer STACK_OF(wolfssl_asn1_object)ポインタが成功した場合は返されます。
  7413. \return NULL 拡張が見つからないかエラーが発生した場合
  7414. \param x509 拡張のために解析する証明書。
  7415. \param nid 見つかる拡張OID。
  7416. \param c not nullが複数の拡張子に-2に設定されていない場合は-1が見つかりませんでした。
  7417. _Example_
  7418. \code
  7419. const WOLFSSL_X509* x509;
  7420. int c;
  7421. int idx = 0;
  7422. STACK_OF(WOLFSSL_ASN1_OBJECT)* sk;
  7423. sk = wolfSSL_X509_get_ext_d2i(x509, NID_basic_constraints, &c, &idx);
  7424. //check sk for NULL and then use it. sk needs freed after done.
  7425. \endcode
  7426. \sa wolfSSL_sk_ASN1_OBJECT_free
  7427. */
  7428. void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509,
  7429. int nid, int* c, int* idx);
  7430. /*!
  7431. \ingroup CertsKeys
  7432. \brief この関数はDER証明書のハッシュを返します。
  7433. \return SSL_SUCCESS ハッシュの作成に成功しました。
  7434. \return SSL_FAILURE 不良入力または失敗したハッシュに戻りました。
  7435. \param x509 ハッシュを得るための証明書。
  7436. \param digest 使用するハッシュアルゴリズム
  7437. \param buf ハッシュを保持するためのバッファ。
  7438. _Example_
  7439. \code
  7440. WOLFSSL_X509* x509;
  7441. unsigned char buffer[64];
  7442. unsigned int bufferSz;
  7443. int ret;
  7444. ret = wolfSSL_X509_digest(x509, wolfSSL_EVP_sha256(), buffer, &bufferSz);
  7445. //check ret value
  7446. \endcode
  7447. \sa none
  7448. */
  7449. int wolfSSL_X509_digest(const WOLFSSL_X509* x509,
  7450. const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len);
  7451. /*!
  7452. \ingroup Setup
  7453. \brief ハンドシェイク中に使用するために、WolfSSL構造の証明書を設定するために使用されます。
  7454. \return SSL_SUCCESS 設定の成功した引数について。
  7455. \return SSL_FAILURE NULL引数が渡された場合。
  7456. \param ssl 証明書を設定するためのWolfSSL構造。
  7457. _Example_
  7458. \code WOLFSSL* ssl;
  7459. WOLFSSL_X509* x509
  7460. int ret;
  7461. // create ssl object and x509
  7462. ret = wolfSSL_use_certificate(ssl, x509);
  7463. // check ret value
  7464. \endcode
  7465. \sa wolfSSL_new
  7466. \sa wolfSSL_free
  7467. */
  7468. int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509);
  7469. /*!
  7470. \ingroup Setup
  7471. \brief これは、handshakeの間に使用するためにWolfSSL構造の証明書を設定するために使用されます。DERフォーマットバッファが予想されます。
  7472. \return SSL_SUCCESS 設定の成功した引数について。
  7473. \return SSL_FAILURE NULL引数が渡された場合。
  7474. \param ssl 証明書を設定するためのWolfSSL構造。
  7475. \param der 使用する証明書。
  7476. _Example_
  7477. \code
  7478. WOLFSSL* ssl;
  7479. unsigned char* der;
  7480. int derSz;
  7481. int ret;
  7482. // create ssl object and set DER variables
  7483. ret = wolfSSL_use_certificate_ASN1(ssl, der, derSz);
  7484. // check ret value
  7485. \endcode
  7486. \sa wolfSSL_new
  7487. \sa wolfSSL_free
  7488. */
  7489. int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der,
  7490. int derSz);
  7491. /*!
  7492. \ingroup CertsKeys
  7493. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。
  7494. \return SSL_SUCCESS 設定の成功した引数について。
  7495. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7496. \param ssl 引数を設定するためのWolfSSL構造。
  7497. _Example_
  7498. \code
  7499. WOLFSSL* ssl;
  7500. WOLFSSL_EVP_PKEY* pkey;
  7501. int ret;
  7502. // create ssl object and set up private key
  7503. ret = wolfSSL_use_PrivateKey(ssl, pkey);
  7504. // check ret value
  7505. \endcode
  7506. \sa wolfSSL_new
  7507. \sa wolfSSL_free
  7508. */
  7509. int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey);
  7510. /*!
  7511. \ingroup CertsKeys
  7512. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。DERフォーマットのキーバッファが予想されます。
  7513. \return SSL_SUCCESS 秘密鍵の構文解析と設定に成功した場合。
  7514. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7515. \param pri 秘密鍵の種類。
  7516. \param ssl 引数を設定するためのWolfSSL構造。
  7517. \param der バッファー保持DERキー。
  7518. _Example_
  7519. \code
  7520. WOLFSSL* ssl;
  7521. unsigned char* pkey;
  7522. long pkeySz;
  7523. int ret;
  7524. // create ssl object and set up private key
  7525. ret = wolfSSL_use_PrivateKey_ASN1(1, ssl, pkey, pkeySz);
  7526. // check ret value
  7527. \endcode
  7528. \sa wolfSSL_new
  7529. \sa wolfSSL_free
  7530. \sa wolfSSL_use_PrivateKey
  7531. */
  7532. int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl,
  7533. unsigned char* der, long derSz);
  7534. /*!
  7535. \ingroup CertsKeys
  7536. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。DERフォーマットのRSAキーバッファが予想されます。
  7537. \return SSL_SUCCESS 秘密鍵の構文解析と設定に成功した場合。
  7538. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7539. \param ssl 引数を設定するためのWolfSSL構造。
  7540. \param der バッファー保持DERキー。
  7541. _Example_
  7542. \code
  7543. WOLFSSL* ssl;
  7544. unsigned char* pkey;
  7545. long pkeySz;
  7546. int ret;
  7547. // create ssl object and set up RSA private key
  7548. ret = wolfSSL_use_RSAPrivateKey_ASN1(ssl, pkey, pkeySz);
  7549. // check ret value
  7550. \endcode
  7551. \sa wolfSSL_new
  7552. \sa wolfSSL_free
  7553. \sa wolfSSL_use_PrivateKey
  7554. */
  7555. int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL* ssl, unsigned char* der,
  7556. long derSz);
  7557. /*!
  7558. \ingroup CertsKeys
  7559. \brief この関数は、DSAのパラメータを新しく作成されたWOLFSSL_DH構造体に重複しています。
  7560. \return WOLFSSL_DH 重複した場合はWolfSSL_DH構造体を返す場合
  7561. \return NULL 失敗すると
  7562. _Example_
  7563. \code
  7564. WOLFSSL_DH* dh;
  7565. WOLFSSL_DSA* dsa;
  7566. // set up dsa
  7567. dh = wolfSSL_DSA_dup_DH(dsa);
  7568. // check dh is not null
  7569. \endcode
  7570. \sa none
  7571. */
  7572. WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r);
  7573. /*!
  7574. \ingroup Setup
  7575. \brief これはハンドシェイクを完了した後にマスターキーを取得するために使用されます。
  7576. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7577. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7578. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7579. \param ses マスターシークレットバッファを取得するためのWolfSSL_SESSION構造。
  7580. \param out データを保持するためのバッファ。
  7581. _Example_
  7582. \code
  7583. WOLFSSL_SESSION ssl;
  7584. unsigned char* buffer;
  7585. size_t bufferSz;
  7586. size_t ret;
  7587. // complete handshake and get session structure
  7588. bufferSz = wolfSSL_SESSION_get_master_secret(ses, NULL, 0);
  7589. buffer = malloc(bufferSz);
  7590. ret = wolfSSL_SESSION_get_master_secret(ses, buffer, bufferSz);
  7591. // check ret value
  7592. \endcode
  7593. \sa wolfSSL_new
  7594. \sa wolfSSL_free
  7595. */
  7596. int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION* ses,
  7597. unsigned char* out, int outSz);
  7598. /*!
  7599. \ingroup Setup
  7600. \brief これはマスター秘密鍵の長さを取得するために使用されます。
  7601. \return size マスターシークレットキーサイズを返します。
  7602. _Example_
  7603. \code
  7604. WOLFSSL_SESSION ssl;
  7605. unsigned char* buffer;
  7606. size_t bufferSz;
  7607. size_t ret;
  7608. // complete handshake and get session structure
  7609. bufferSz = wolfSSL_SESSION_get_master_secret_length(ses);
  7610. buffer = malloc(bufferSz);
  7611. // check ret value
  7612. \endcode
  7613. \sa wolfSSL_new
  7614. \sa wolfSSL_free
  7615. */
  7616. int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses);
  7617. /*!
  7618. \ingroup Setup
  7619. \brief これは、CTXのWOLFSSL_X509_STORE構造の設定機能です。
  7620. \return none 返品不可。
  7621. \param ctx Cert Storeポインタを設定するためのWolfSSL_CTX構造体へのポインタ。
  7622. _Example_
  7623. \code
  7624. WOLFSSL_CTX ctx;
  7625. WOLFSSL_X509_STORE* st;
  7626. // setup ctx and st
  7627. st = wolfSSL_CTX_set_cert_store(ctx, st);
  7628. //use st
  7629. \endcode
  7630. \sa wolfSSL_CTX_new
  7631. \sa wolfSSL_CTX_free
  7632. */
  7633. void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx,
  7634. WOLFSSL_X509_STORE* str);
  7635. /*!
  7636. \ingroup CertsKeys
  7637. \brief この関数はBIOからDERバッファを取得し、それをWolfSSL_X509構造に変換します。
  7638. \return pointer 成功したwolfssl_x509構造ポインタを返します。
  7639. \return Null 失敗時にNULLを返します
  7640. \param bio DER証明書バッファを持つwolfssl_bio構造体へのポインタ。
  7641. _Example_
  7642. \code
  7643. WOLFSSL_BIO* bio;
  7644. WOLFSSL_X509* x509;
  7645. // load DER into bio
  7646. x509 = wolfSSL_d2i_X509_bio(bio, NULL);
  7647. Or
  7648. wolfSSL_d2i_X509_bio(bio, &x509);
  7649. // use x509 returned (check for NULL)
  7650. \endcode
  7651. \sa none
  7652. */
  7653. WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509);
  7654. /*!
  7655. \ingroup Setup
  7656. \brief これは、CTXのWOLFSSL_X509_STORE構造のゲッター関数です。
  7657. \return WOLFSSL_X509_STORE* ポインタを正常に入手します。
  7658. \return NULL NULL引数が渡された場合に返されます。
  7659. _Example_
  7660. \code
  7661. WOLFSSL_CTX ctx;
  7662. WOLFSSL_X509_STORE* st;
  7663. // setup ctx
  7664. st = wolfSSL_CTX_get_cert_store(ctx);
  7665. //use st
  7666. \endcode
  7667. \sa wolfSSL_CTX_new
  7668. \sa wolfSSL_CTX_free
  7669. \sa wolfSSL_CTX_set_cert_store
  7670. */
  7671. WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx);
  7672. /*!
  7673. \ingroup IO
  7674. \brief 保留中のバイト数を読み取る数を取得します。BIOタイプがBIO_BIOの場合、ペアから読み取る番号です。BIOにSSLオブジェクトが含まれている場合は、SSLオブジェクトからのデータを保留中です(WolfSSL_Pending(SSL))。bio_memoryタイプがある場合は、メモリバッファのサイズを返します。
  7675. \return >=0 保留中のバイト数。
  7676. _Example_
  7677. \code
  7678. WOLFSSL_BIO* bio;
  7679. int pending;
  7680. bio = wolfSSL_BIO_new();
  7681. pending = wolfSSL_BIO_ctrl_pending(bio);
  7682. \endcode
  7683. \sa wolfSSL_BIO_make_bio_pair
  7684. \sa wolfSSL_BIO_new
  7685. */
  7686. size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b);
  7687. /*!
  7688. \ingroup Setup
  7689. \brief これは、ハンドシェイク中にサーバーによって送信されたランダムなデータを取得するために使用されます。
  7690. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7691. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7692. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7693. \param ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  7694. \param out ランダムデータを保持するためのバッファ。
  7695. _Example_
  7696. \code
  7697. WOLFSSL ssl;
  7698. unsigned char* buffer;
  7699. size_t bufferSz;
  7700. size_t ret;
  7701. bufferSz = wolfSSL_get_server_random(ssl, NULL, 0);
  7702. buffer = malloc(bufferSz);
  7703. ret = wolfSSL_get_server_random(ssl, buffer, bufferSz);
  7704. // check ret value
  7705. \endcode
  7706. \sa wolfSSL_new
  7707. \sa wolfSSL_free
  7708. */
  7709. size_t wolfSSL_get_server_random(const WOLFSSL *ssl,
  7710. unsigned char *out, size_t outlen);
  7711. /*!
  7712. \ingroup Setup
  7713. \brief これは、ハンドシェイク中にクライアントによって送信されたランダムなデータを取得するために使用されます。
  7714. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7715. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7716. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7717. \param ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  7718. \param out ランダムデータを保持するためのバッファ。
  7719. _Example_
  7720. \code
  7721. WOLFSSL ssl;
  7722. unsigned char* buffer;
  7723. size_t bufferSz;
  7724. size_t ret;
  7725. bufferSz = wolfSSL_get_client_random(ssl, NULL, 0);
  7726. buffer = malloc(bufferSz);
  7727. ret = wolfSSL_get_client_random(ssl, buffer, bufferSz);
  7728. // check ret value
  7729. \endcode
  7730. \sa wolfSSL_new
  7731. \sa wolfSSL_free
  7732. */
  7733. size_t wolfSSL_get_client_random(const WOLFSSL* ssl,
  7734. unsigned char* out, size_t outSz);
  7735. /*!
  7736. \ingroup Setup
  7737. \brief これはCTXで設定されたパスワードコールバックのゲッター関数です。
  7738. \return func 成功すると、コールバック関数を返します。
  7739. \return NULL CTXがNULLの場合、NULLが返されます。
  7740. _Example_
  7741. \code
  7742. WOLFSSL_CTX* ctx;
  7743. wc_pem_password_cb cb;
  7744. // setup ctx
  7745. cb = wolfSSL_CTX_get_default_passwd_cb(ctx);
  7746. //use cb
  7747. \endcode
  7748. \sa wolfSSL_CTX_new
  7749. \sa wolfSSL_CTX_free
  7750. */
  7751. wc_pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX*
  7752. ctx);
  7753. /*!
  7754. \ingroup Setup
  7755. \brief これは、CTXで設定されているパスワードコールバックユーザーデータの取得機能です。
  7756. \return pointer 成功すると、ユーザーデータポインタを返します。
  7757. \return NULL CTXがNULLの場合、NULLが返されます。
  7758. _Example_
  7759. \code
  7760. WOLFSSL_CTX* ctx;
  7761. void* data;
  7762. // setup ctx
  7763. data = wolfSSL_CTX_get_default_passwd_cb(ctx);
  7764. //use data
  7765. \endcode
  7766. \sa wolfSSL_CTX_new
  7767. \sa wolfSSL_CTX_free
  7768. */
  7769. void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx);
  7770. /*!
  7771. \ingroup CertsKeys
  7772. \brief この関数はwolfssl_pem_read_bio_x509と同じように動作します。AUXは、信頼できる/拒否されたユースケースや人間の読みやすさのためのフレンドリーな名前などの追加情報を含むことを意味します。
  7773. \return WOLFSSL_X509 PEMバッファの解析に成功した場合、wolfssl_x509構造が返されます。
  7774. \return Null PEMバッファの解析に失敗した場合。
  7775. \param bp wolfssl_bio構造体からPEMバッファを取得します。
  7776. \param x wolfssl_x509を機能副作用で設定する場合
  7777. \param cb パスワードコールバック
  7778. _Example_
  7779. \code
  7780. WOLFSSL_BIO* bio;
  7781. WOLFSSL_X509* x509;
  7782. // setup bio
  7783. X509 = wolfSSL_PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL);
  7784. //check x509 is not null and then use it
  7785. \endcode
  7786. \sa wolfSSL_PEM_read_bio_X509
  7787. */
  7788. WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX
  7789. (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, wc_pem_password_cb *cb, void *u);
  7790. /*!
  7791. \ingroup CertsKeys
  7792. \brief wolfssl_ctx構造体のDHメンバーをdiffie-hellmanパラメータで初期化します。
  7793. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。
  7794. \return BAD_FUNC_ARG CTXまたはDH構造体がNULLの場合に返されます。
  7795. \return SSL_FATAL_ERROR 構造値を設定するエラーが発生した場合は返されます。
  7796. \return MEMORY_E メモリを割り当てることができなかった場合は返されます。
  7797. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  7798. _Example_
  7799. \code
  7800. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7801. WOLFSSL_DH* dh;
  7802. return wolfSSL_CTX_set_tmp_dh(ctx, dh);
  7803. \endcode
  7804. \sa wolfSSL_BN_bn2bin
  7805. */
  7806. long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX* ctx, WOLFSSL_DH* dh);
  7807. /*!
  7808. \ingroup CertsKeys
  7809. \brief この関数は、BIOのPEMバッファからDSAパラメータを取得します。
  7810. \return WOLFSSL_DSA PEMバッファの解析に成功した場合、WolfSSL_DSA構造が作成され、返されます。
  7811. \return Null PEMバッファの解析に失敗した場合。
  7812. \param bio PEMメモリポインタを取得するためのwolfssl_bio構造体へのポインタ。
  7813. \param x 新しいWolfSSL_DSA構造に設定するポインタ。
  7814. \param cb パスワードコールバック関数
  7815. _Example_
  7816. \code
  7817. WOLFSSL_BIO* bio;
  7818. WOLFSSL_DSA* dsa;
  7819. // setup bio
  7820. dsa = wolfSSL_PEM_read_bio_DSAparams(bio, NULL, NULL, NULL);
  7821. // check dsa is not NULL and then use dsa
  7822. \endcode
  7823. \sa none
  7824. */
  7825. WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp,
  7826. WOLFSSL_DSA **x, wc_pem_password_cb *cb, void *u);
  7827. /*!
  7828. \ingroup Debug
  7829. \brief この関数は、wolfssl_Errorに遭遇した最後のエラーの絶対値を返します。
  7830. \return error 最後のエラーの絶対値を返します。
  7831. _Example_
  7832. \code
  7833. unsigned long err;
  7834. ...
  7835. err = wolfSSL_ERR_peek_last_error();
  7836. // inspect err value
  7837. \endcode
  7838. \sa wolfSSL_ERR_print_errors_fp
  7839. */
  7840. unsigned long wolfSSL_ERR_peek_last_error(void);
  7841. /*!
  7842. \ingroup CertsKeys
  7843. \brief この関数はピアの証明書チェーンを取得します。
  7844. \return pointer ピアの証明書スタックへのポインタを返します。
  7845. \return NULL ピア証明書がない場合は返されます。
  7846. _Example_
  7847. \code
  7848. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7849. WOLFSSL* ssl = wolfSSL_new(ctx);
  7850. ...
  7851. wolfSSL_connect(ssl);
  7852. STACK_OF(WOLFSSL_X509)* chain = wolfSSL_get_peer_cert_chain(ssl);
  7853. ifchain){
  7854. // You have a pointer to the peer certificate chain
  7855. }
  7856. \endcode
  7857. \sa wolfSSL_X509_get_issuer_name
  7858. \sa wolfSSL_X509_get_subject_name
  7859. \sa wolfSSL_X509_get_isCA
  7860. */
  7861. WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);
  7862. /*!
  7863. \ingroup Setup
  7864. \brief この関数は、wolfssl_ctxオブジェクトのオプションビットをリセットします。
  7865. \return option 新しいオプションビット
  7866. _Example_
  7867. \code
  7868. WOLFSSL_CTX* ctx = 0;
  7869. ...
  7870. wolfSSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1);
  7871. \endcode
  7872. \sa wolfSSL_CTX_new
  7873. \sa wolfSSL_new
  7874. \sa wolfSSL_free
  7875. */
  7876. long wolfSSL_CTX_clear_options(WOLFSSL_CTX* ctx, long opt);
  7877. /*!
  7878. \ingroup IO
  7879. \brief この関数は、WolfSSL構造のjobjectrefメンバーを設定します。
  7880. \return SSL_SUCCESS jobjectrefがobjptrに正しく設定されている場合に返されます。
  7881. \return SSL_FAILURE 関数が正しく実行されず、jobjectrefが設定されていない場合に返されます。
  7882. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7883. _Example_
  7884. \code
  7885. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7886. WOLFSSL* ssl = WOLFSSL_new();
  7887. void* objPtr = &obj;
  7888. ...
  7889. if(wolfSSL_set_jobject(ssl, objPtr)){
  7890. // The success case
  7891. }
  7892. \endcode
  7893. \sa wolfSSL_get_jobject
  7894. */
  7895. int wolfSSL_set_jobject(WOLFSSL* ssl, void* objPtr);
  7896. /*!
  7897. \ingroup IO
  7898. \brief この関数は、wolfssl構造のjobjectrefメンバーを返します。
  7899. \return value wolfssl構造体がnullでない場合、関数はjobjectref値を返します。
  7900. \return NULL wolfssl構造体がNULLの場合に返されます。
  7901. _Example_
  7902. \code
  7903. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7904. WOLFSSL* ssl = wolfSSL(ctx);
  7905. ...
  7906. void* jobject = wolfSSL_get_jobject(ssl);
  7907. if(jobject != NULL){
  7908. // Success case
  7909. }
  7910. \endcode
  7911. \sa wolfSSL_set_jobject
  7912. */
  7913. void* wolfSSL_get_jobject(WOLFSSL* ssl);
  7914. /*!
  7915. \ingroup Setup
  7916. \brief この関数はSSL内のコールバックを設定します。コールバックはハンドシェイクメッセージを観察することです。CBのNULL値はコールバックをリセットします。
  7917. \return SSL_SUCCESS 成功しています。
  7918. \return SSL_FAILURE NULL SSLが渡された場合。
  7919. _Example_
  7920. \code
  7921. static cb(int write_p, int version, int content_type,
  7922. const void *buf, size_t len, WOLFSSL *ssl, void *arg)
  7923. WOLFSSL* ssl;
  7924. ret = wolfSSL_set_msg_callback(ssl, cb);
  7925. // check ret
  7926. \endcode
  7927. \sa wolfSSL_set_msg_callback_arg
  7928. */
  7929. int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb);
  7930. /*!
  7931. \ingroup Setup
  7932. \brief この関数は、SSL内の関連コールバックコンテキスト値を設定します。値はコールバック引数に渡されます。
  7933. \return none 返品不可。
  7934. _Example_
  7935. \code
  7936. static cb(int write_p, int version, int content_type,
  7937. const void *buf, size_t len, WOLFSSL *ssl, void *arg)
  7938. WOLFSSL* ssl;
  7939. ret = wolfSSL_set_msg_callback(ssl, cb);
  7940. // check ret
  7941. wolfSSL_set_msg_callback(ssl, arg);
  7942. \endcode
  7943. \sa wolfSSL_set_msg_callback
  7944. */
  7945. int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
  7946. /*!
  7947. \ingroup CertsKeys
  7948. \brief この関数は、存在する場合は、ピア証明書からaltnameを返します。
  7949. \return NULL 次のAltNameがない場合。
  7950. \return cert->altNamesNext->name wolfssl_x509から、AltNameリストからの文字列値である構造が存在する場合に返されます。
  7951. _Example_
  7952. \code
  7953. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  7954. DYNAMIC_TYPE_X509);
  7955. int x509NextAltName = wolfSSL_X509_get_next_altname(x509);
  7956. if(x509NextAltName == NULL){
  7957. //There isn’t another alt name
  7958. }
  7959. \endcode
  7960. \sa wolfSSL_X509_get_issuer_name
  7961. \sa wolfSSL_X509_get_subject_name
  7962. */
  7963. char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*);
  7964. /*!
  7965. \ingroup CertsKeys
  7966. \brief 関数は、x509がnullのかどうかを確認し、そうでない場合は、x509構造体のNotBeforeメンバーを返します。
  7967. \return pointer X509構造体のNotBeforeメンバーにASN1_TIMEを使用して構造体に。
  7968. \return NULL x509構造がnullの場合、関数はnullを返します。
  7969. _Example_
  7970. \code
  7971. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  7972. DYNAMIC_TYPE_X509) ;
  7973. const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notBefore(x509);
  7974. if(notAfter == NULL){
  7975. //The x509 object was NULL
  7976. }
  7977. \endcode
  7978. \sa wolfSSL_X509_get_notAfter
  7979. */
  7980. WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notBefore(WOLFSSL_X509*);
  7981. /*!
  7982. \ingroup IO
  7983. \brief この関数はクライアント側で呼び出され、サーバーとのSSL / TLSハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfssl_connect()は、基になるI / Oがwolfssl_connectのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / OがREADYおよびWOLFSSLが停止したときにwolfssl_connect()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect()はハンドシェイクが終了したら、またはエラーが発生したらのみ戻る。 WolfSSLはOpenSSLよりも証明書検証に異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバーを確認することです。これは、CASを読み込まない場合、サーバーを確認することができ、確認できません(-155)。 SSL_CONNECTを持つことのOpenSSLの動作が成功した場合は、サーバーを検証してセキュリティを抑えることができます.SSL_CTX_SET_VERIFY(CTX、SSL_VERIFY_NONE、0)。 ssl_new()を呼び出す前に。お勧めできませんが。
  7984. \return SSL_SUCCESS 成功した場合
  7985. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  7986. _Example_
  7987. \code
  7988. int ret = 0;
  7989. int err = 0;
  7990. WOLFSSL* ssl;
  7991. char buffer[80];
  7992. ...
  7993. ret = wolfSSL_connect(ssl);
  7994. if (ret != SSL_SUCCESS) {
  7995. err = wolfSSL_get_error(ssl, ret);
  7996. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  7997. }
  7998. \endcode
  7999. \sa wolfSSL_get_error
  8000. \sa wolfSSL_accept
  8001. */
  8002. int wolfSSL_connect(WOLFSSL* ssl);
  8003. /*!
  8004. \ingroup Setup
  8005. \brief この関数はサーバー側で呼び出されて、HellORetryRequestメッセージにCookieを含める必要があることを示します。Cookieは現在のトランスクリプトのハッシュを保持しているので、別のサーバープロセスは応答でClientHelloを処理できます。秘密はCookieデータの整合性チェックをGenertingするときに使用されます。
  8006. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8007. \param [in] 秘密を保持しているバッファへのポインタを秘密にします。渡すNULLは、新しいランダムシークレットを生成することを示します。
  8008. \param [in] シークスのサイズをバイト単位でサイズ。0を渡すと、デフォルトのサイズを使用することを示します.WC_SHA256_DIGEST_SIZE(またはSHA-256が使用できない場合はWC_SHA_DIGEST_SIZE)。
  8009. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8010. \return SIDE_ERROR クライアントで呼び出された場合。
  8011. \return WOLFSSL_SUCCESS 成功した場合
  8012. \return MEMORY_ERROR 秘密を保存するために動的メモリを割り当てる場合に失敗しました。
  8013. _Example_
  8014. \code
  8015. int ret;
  8016. WOLFSSL* ssl;
  8017. char secret[32];
  8018. ...
  8019. ret = wolfSSL__send_hrr_cookie(ssl, secret, sizeof(secret));
  8020. if (ret != WOLFSSL_SUCCESS) {
  8021. // failed to set use of Cookie and secret
  8022. }
  8023. \endcode
  8024. \sa wolfSSL_new
  8025. */
  8026. int wolfSSL_send_hrr_cookie(WOLFSSL* ssl,
  8027. const unsigned char* secret, unsigned int secretSz);
  8028. /*!
  8029. \ingroup Setup
  8030. \brief ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。
  8031. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8032. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8033. \return SIDE_ERROR クライアントで呼び出された場合。
  8034. _Example_
  8035. \code
  8036. int ret;
  8037. WOLFSSL_CTX* ctx;
  8038. ...
  8039. ret = wolfSSL_CTX_no_ticket_TLSv13(ctx);
  8040. if (ret != 0) {
  8041. // failed to set no ticket
  8042. }
  8043. \endcode
  8044. \sa wolfSSL_no_ticket_TLSv13
  8045. */
  8046. int wolfSSL_CTX_no_ticket_TLSv13(WOLFSSL_CTX* ctx);
  8047. /*!
  8048. \ingroup Setup
  8049. \brief ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。
  8050. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8051. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8052. \return SIDE_ERROR クライアントで呼び出された場合。
  8053. _Example_
  8054. \code
  8055. int ret;
  8056. WOLFSSL* ssl;
  8057. ...
  8058. ret = wolfSSL_no_ticket_TLSv13(ssl);
  8059. if (ret != 0) {
  8060. // failed to set no ticket
  8061. }
  8062. \endcode
  8063. \sa wolfSSL_CTX_no_ticket_TLSv13
  8064. */
  8065. int wolfSSL_no_ticket_TLSv13(WOLFSSL* ssl);
  8066. /*!
  8067. \ingroup Setup
  8068. \brief この関数は、Authenticationにプリシェアキーを使用している場合、DIFFIE-HELLMAN(DH)スタイルのキー交換を許可するTLS V1.3 WolfSSLコンテキストで呼び出されます。
  8069. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8070. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8071. _Example_
  8072. \code
  8073. int ret;
  8074. WOLFSSL_CTX* ctx;
  8075. ...
  8076. ret = wolfSSL_CTX_no_dhe_psk(ctx);
  8077. if (ret != 0) {
  8078. // failed to set no DHE for PSK handshakes
  8079. }
  8080. \endcode
  8081. \sa wolfSSL_no_dhe_psk
  8082. */
  8083. int wolfSSL_CTX_no_dhe_psk(WOLFSSL_CTX* ctx);
  8084. /*!
  8085. \ingroup Setup
  8086. \brief この関数は、Authenticationのためにプリシェアキーを使用しているときにDiffie-Hellman(DH)スタイルのキー交換を許可するTLS V1.3クライアントまたはサーバーのWolfSSLで呼び出されます。
  8087. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8088. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8089. _Example_
  8090. \code
  8091. int ret;
  8092. WOLFSSL* ssl;
  8093. ...
  8094. ret = wolfSSL_no_dhe_psk(ssl);
  8095. if (ret != 0) {
  8096. // failed to set no DHE for PSK handshakes
  8097. }
  8098. \endcode
  8099. \sa wolfSSL_CTX_no_dhe_psk
  8100. */
  8101. int wolfSSL_no_dhe_psk(WOLFSSL* ssl);
  8102. /*!
  8103. \ingroup IO
  8104. \brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出されて、キーのロールオーバーを強制します。KeyUpdateメッセージがピアに送信され、新しいキーが暗号化のために計算されます。ピアはKeyUpdateメッセージを送り、新しい復号化キーWILを計算します。この機能は、ハンドシェイクが完了した後にのみ呼び出すことができます。
  8105. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8106. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8107. \return WANT_WRITE 書き込みが準備ができていない場合
  8108. _Example_
  8109. \code
  8110. int ret;
  8111. WOLFSSL* ssl;
  8112. ...
  8113. ret = wolfSSL_update_keys(ssl);
  8114. if (ret == WANT_WRITE) {
  8115. // need to call again when I/O ready
  8116. }
  8117. else if (ret != WOLFSSL_SUCCESS) {
  8118. // failed to send key update
  8119. }
  8120. \endcode
  8121. \sa wolfSSL_write
  8122. */
  8123. int wolfSSL_update_keys(WOLFSSL* ssl);
  8124. /*!
  8125. \ingroup IO
  8126. \brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出され、キーのロールオーバーが進行中かどうかを判断します。wolfssl_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化キーが更新されます。復号化キーは、応答が受信されたときに更新されます。
  8127. \param [in] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8128. \param [out] キー更新応答が必要ない場合は必須0。1キー更新応答が必要ない場合。
  8129. \return 0 成功した。
  8130. _Example_
  8131. \code
  8132. int ret;
  8133. WOLFSSL* ssl;
  8134. int required;
  8135. ...
  8136. ret = wolfSSL_key_update_response(ssl, &required);
  8137. if (ret != 0) {
  8138. // bad parameters
  8139. }
  8140. if (required) {
  8141. // encrypt Key updated, awaiting response to change decrypt key
  8142. }
  8143. \endcode
  8144. \sa wolfSSL_update_keys
  8145. */
  8146. int wolfSSL_key_update_response(WOLFSSL* ssl, int* required);
  8147. /*!
  8148. \ingroup Setup
  8149. \brief この関数は、TLS v1.3クライアントのWolfSSLコンテキストで呼び出され、クライアントはサーバーからの要求に応じてPost Handshakeを送信できるようにします。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
  8150. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8151. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8152. \return SIDE_ERROR サーバーで呼び出された場合。
  8153. _Example_
  8154. \code
  8155. int ret;
  8156. WOLFSSL_CTX* ctx;
  8157. ...
  8158. ret = wolfSSL_allow_post_handshake_auth(ctx);
  8159. if (ret != 0) {
  8160. // failed to allow post handshake authentication
  8161. }
  8162. \endcode
  8163. \sa wolfSSL_allow_post_handshake_auth
  8164. \sa wolfSSL_request_certificate
  8165. */
  8166. int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX* ctx);
  8167. /*!
  8168. \ingroup Setup
  8169. \brief この関数は、TLS V1.3クライアントWolfSSLで呼び出され、クライアントはサーバーからの要求に応じてハンドシェイクを送ります。handshakeクライアント認証拡張機能はClientHelloで送信されます。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
  8170. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8171. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8172. \return SIDE_ERROR サーバーで呼び出された場合。
  8173. _Example_
  8174. \code
  8175. int ret;
  8176. WOLFSSL* ssl;
  8177. ...
  8178. ret = wolfSSL_allow_post_handshake_auth(ssl);
  8179. if (ret != 0) {
  8180. // failed to allow post handshake authentication
  8181. }
  8182. \endcode
  8183. \sa wolfSSL_CTX_allow_post_handshake_auth
  8184. \sa wolfSSL_request_certificate
  8185. */
  8186. int wolfSSL_allow_post_handshake_auth(WOLFSSL* ssl);
  8187. /*!
  8188. \ingroup IO
  8189. \brief この関数は、TLS v1.3クライアントからクライアント証明書を要求します。これは、Webサーバーがクライアント認証やその他のものを必要とするページにサービスを提供している場合に役立ちます。接続で最大256の要求を送信できます。
  8190. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8191. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8192. \return WANT_WRITE 書き込みが準備ができていない場合
  8193. \return SIDE_ERROR クライアントで呼び出された場合。
  8194. \return NOT_READY_ERROR ハンドシェイクが終了していないときに呼び出された場合。
  8195. \return POST_HAND_AUTH_ERROR 送付後認証が許可されていない場合。
  8196. \return MEMORY_E 動的メモリ割り当てが失敗した場合
  8197. _Example_
  8198. \code
  8199. int ret;
  8200. WOLFSSL* ssl;
  8201. ...
  8202. ret = wolfSSL_request_certificate(ssl);
  8203. if (ret == WANT_WRITE) {
  8204. // need to call again when I/O ready
  8205. }
  8206. else if (ret != WOLFSSL_SUCCESS) {
  8207. // failed to request a client certificate
  8208. }
  8209. \endcode
  8210. \sa wolfSSL_allow_post_handshake_auth
  8211. \sa wolfSSL_write
  8212. */
  8213. int wolfSSL_request_certificate(WOLFSSL* ssl);
  8214. /*!
  8215. \ingroup Setup
  8216. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8217. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8218. \param [in] 楕円曲線グループのコロン区切りリストである文字列をリストします。
  8219. \return WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。
  8220. _Example_
  8221. \code
  8222. int ret;
  8223. WOLFSSL_CTX* ctx;
  8224. const char* list = "P-384:P-256";
  8225. ...
  8226. ret = wolfSSL_CTX_set1_groups_list(ctx, list);
  8227. if (ret != WOLFSSL_SUCCESS) {
  8228. // failed to set group list
  8229. }
  8230. \endcode
  8231. \sa wolfSSL_set1_groups_list
  8232. \sa wolfSSL_CTX_set_groups
  8233. \sa wolfSSL_set_groups
  8234. \sa wolfSSL_UseKeyShare
  8235. \sa wolfSSL_preferred_group
  8236. */
  8237. int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX *ctx, char *list);
  8238. /*!
  8239. \ingroup Setup
  8240. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8241. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8242. \param [in] 鍵交換グループのコロン区切りリストである文字列をリストします。
  8243. \return WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。
  8244. _Example_
  8245. \code
  8246. int ret;
  8247. WOLFSSL* ssl;
  8248. const char* list = "P-384:P-256";
  8249. ...
  8250. ret = wolfSSL_CTX_set1_groups_list(ssl, list);
  8251. if (ret != WOLFSSL_SUCCESS) {
  8252. // failed to set group list
  8253. }
  8254. \endcode
  8255. \sa wolfSSL_CTX_set1_groups_list
  8256. \sa wolfSSL_CTX_set_groups
  8257. \sa wolfSSL_set_groups
  8258. \sa wolfSSL_UseKeyShare
  8259. \sa wolfSSL_preferred_group
  8260. */
  8261. int wolfSSL_set1_groups_list(WOLFSSL *ssl, char *list);
  8262. /*!
  8263. \ingroup TLS
  8264. \brief この関数は、クライアントがTLS v1.3ハンドシェイクで使用することを好むキー交換グループを返します。この情報を完了した後にこの機能を呼び出して、サーバーがどのグループが予想されるようにこの情報が将来の接続で使用できるようになるかを決定するために、この情報が将来の接続で鍵交換のための鍵ペアを事前生成することができます。
  8265. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8266. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8267. \return SIDE_ERROR サーバーで呼び出された場合。
  8268. \return NOT_READY_ERROR ハンドシェイクが完了する前に呼び出された場合。
  8269. _Example_
  8270. \code
  8271. int ret;
  8272. int group;
  8273. WOLFSSL* ssl;
  8274. ...
  8275. ret = wolfSSL_CTX_set1_groups_list(ssl)
  8276. if (ret < 0) {
  8277. // failed to get group
  8278. }
  8279. group = ret;
  8280. \endcode
  8281. \sa wolfSSL_UseKeyShare
  8282. \sa wolfSSL_CTX_set_groups
  8283. \sa wolfSSL_set_groups
  8284. \sa wolfSSL_CTX_set1_groups_list
  8285. \sa wolfSSL_set1_groups_list
  8286. */
  8287. int wolfSSL_preferred_group(WOLFSSL* ssl);
  8288. /*!
  8289. \ingroup Setup
  8290. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8291. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8292. \param [in] 識別子によって鍵交換グループのリストをグループ化します。
  8293. \param [in] グループ内の鍵交換グループの数を数えます。
  8294. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数はwolfssl_max_group_countを超えているか、TLS v1.3を使用していません。
  8295. _Example_
  8296. \code
  8297. int ret;
  8298. WOLFSSL_CTX* ctx;
  8299. int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
  8300. int count = 2;
  8301. ...
  8302. ret = wolfSSL_CTX_set1_groups_list(ctx, groups, count);
  8303. if (ret != WOLFSSL_SUCCESS) {
  8304. // failed to set group list
  8305. }
  8306. \endcode
  8307. \sa wolfSSL_set_groups
  8308. \sa wolfSSL_UseKeyShare
  8309. \sa wolfSSL_CTX_set_groups
  8310. \sa wolfSSL_set_groups
  8311. \sa wolfSSL_CTX_set1_groups_list
  8312. \sa wolfSSL_set1_groups_list
  8313. \sa wolfSSL_preferred_group
  8314. */
  8315. int wolfSSL_CTX_set_groups(WOLFSSL_CTX* ctx, int* groups,
  8316. int count);
  8317. /*!
  8318. \ingroup Setup
  8319. \brief この関数は、wolfsslを許すために楕円曲線グループのリストを設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8320. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8321. \param [in] 識別子によって鍵交換グループのリストをグループ化します。
  8322. \param [in] グループ内の鍵交換グループの数を数えます。
  8323. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数がWolfSSL_MAX_GROUP_COUNTを超えている場合、任意の識別子は認識されないか、TLS v1.3を使用していません。
  8324. _Example_
  8325. \code
  8326. int ret;
  8327. WOLFSSL* ssl;
  8328. int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
  8329. int count = 2;
  8330. ...
  8331. ret = wolfSSL_set_groups(ssl, groups, count);
  8332. if (ret != WOLFSSL_SUCCESS) {
  8333. // failed to set group list
  8334. }
  8335. \endcode
  8336. \sa wolfSSL_CTX_set_groups
  8337. \sa wolfSSL_UseKeyShare
  8338. \sa wolfSSL_CTX_set_groups
  8339. \sa wolfSSL_set_groups
  8340. \sa wolfSSL_CTX_set1_groups_list
  8341. \sa wolfSSL_set1_groups_list
  8342. \sa wolfSSL_preferred_group
  8343. */
  8344. int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count);
  8345. /*!
  8346. \ingroup IO
  8347. \brief この関数はクライアント側で呼び出され、サーバーとのTLS v1.3ハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfssl_connect()は、基になるI / Oがwolfssl_connectのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / OがREADYおよびWOLFSSLが停止したときにwolfssl_connect()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect()はハンドシェイクが終了したら、またはエラーが発生したらのみ戻る。 WolfSSLはOpenSSLよりも証明書検証に異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバーを確認することです。これは、CASを読み込まない場合、サーバーを確認することができ、確認できません(-155)。 SSL_CONNECTを持つことのOpenSSLの動作が成功した場合は、サーバーを検証してセキュリティを抑えることができます.SSL_CTX_SET_VERIFY(CTX、SSL_VERIFY_NONE、0)。 ssl_new()を呼び出す前に。お勧めできませんが。
  8348. \return SSL_SUCCESS 成功すると。
  8349. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  8350. _Example_
  8351. \code
  8352. int ret = 0;
  8353. int err = 0;
  8354. WOLFSSL* ssl;
  8355. char buffer[80];
  8356. ...
  8357. ret = wolfSSL_connect_TLSv13(ssl);
  8358. if (ret != SSL_SUCCESS) {
  8359. err = wolfSSL_get_error(ssl, ret);
  8360. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8361. }
  8362. \endcode
  8363. \sa wolfSSL_get_error
  8364. \sa wolfSSL_connect
  8365. \sa wolfSSL_accept_TLSv13
  8366. \sa wolfSSL_accept
  8367. */
  8368. int wolfSSL_connect_TLSv13(WOLFSSL*);
  8369. /*!
  8370. \ingroup IO
  8371. \brief この関数はサーバー側で呼び出され、SSL / TLSクライアントがSSL / TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_accept()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がノンブロッキングである場合、wolfssl_accept()は、基礎となるI / Oがwolfssl_acceptのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、読み取り可能なデータが使用可能であり、wolfsslが停止した場所を拾うときに、wolfssl_acceptの呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となるI / Oがブロックされている場合、wolfssl_accept()はハンドシェイクが終了したら、またはエラーが発生したら戻ります。古いバージョンのClientHelloメッセージがサポートされていますが、TLS v1.3接続を期待するときにこの関数を呼び出します。
  8372. \return SSL_SUCCESS 成功すると。
  8373. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  8374. _Example_
  8375. \code
  8376. int ret = 0;
  8377. int err = 0;
  8378. WOLFSSL* ssl;
  8379. char buffer[80];
  8380. ...
  8381. ret = wolfSSL_accept_TLSv13(ssl);
  8382. if (ret != SSL_SUCCESS) {
  8383. err = wolfSSL_get_error(ssl, ret);
  8384. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8385. }
  8386. \endcode
  8387. \sa wolfSSL_get_error
  8388. \sa wolfSSL_connect_TLSv13
  8389. \sa wolfSSL_connect
  8390. \sa wolfSSL_accept_TLSv13
  8391. \sa wolfSSL_accept
  8392. */
  8393. wolfSSL_accept_TLSv13(WOLFSSL* ssl);
  8394. /*!
  8395. \ingroup Setup
  8396. \brief この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられる早期データの最大量を設定します。この関数を呼び出して、再生攻撃を軽減するためのプロセスへの早期データの量を制限します。初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続のキーから派生したキーによって保護されます。値は再開のためにセッションチケットに含まれています。ゼロの値は、セッションチケットを使用してクライアントによって早期データを送信することを示します。早期データバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
  8397. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8398. \param [in] SZバイト単位で受け入れる早期データの量。
  8399. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8400. \return SIDE_ERROR クライアントで呼び出された場合。
  8401. _Example_
  8402. \code
  8403. int ret;
  8404. WOLFSSL_CTX* ctx;
  8405. ...
  8406. ret = wolfSSL_CTX_set_max_early_data(ctx, 128);
  8407. if (ret != WOLFSSL_SUCCESS) {
  8408. // failed to set group list
  8409. }
  8410. \endcode
  8411. \sa wolfSSL_set_max_early_data
  8412. \sa wolfSSL_write_early_data
  8413. \sa wolfSSL_read_early_data
  8414. */
  8415. int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX* ctx,
  8416. unsigned int sz);
  8417. /*!
  8418. \ingroup Setup
  8419. \brief この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられる早期データの最大量を設定します。この関数を呼び出して、再生攻撃を軽減するためのプロセスへの早期データの量を制限します。初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続のキーから派生したキーによって保護されます。値は再開のためにセッションチケットに含まれています。ゼロの値は、セッションチケットを使用してクライアントによって早期データを送信することを示します。早期データバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
  8420. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8421. \param [in] SZクライアントからバイト単位で受け入れる早期データの量。
  8422. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8423. \return SIDE_ERROR クライアントで呼び出された場合。
  8424. _Example_
  8425. \code
  8426. int ret;
  8427. WOLFSSL* ssl;
  8428. ...
  8429. ret = wolfSSL_set_max_early_data(ssl, 128);
  8430. if (ret != WOLFSSL_SUCCESS) {
  8431. // failed to set group list
  8432. }
  8433. \endcode
  8434. \sa wolfSSL_CTX_set_max_early_data
  8435. \sa wolfSSL_write_early_data
  8436. \sa wolfSSL_read_early_data
  8437. */
  8438. int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz);
  8439. /*!
  8440. \ingroup IO
  8441. \brief この関数は、再開時にサーバーに早期データを書き込みます。wolfssl_connect()またはwolfssl_connect_tlsv13()の代わりにこの関数を呼び出して、サーバーに接続してハンドシェイクにデータを送ります。この機能はクライアントでのみ使用されます。
  8442. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8443. \param [in] データ早期データを保持してサーバーに書き込むバッファ。
  8444. \param [in] SZバイト単位で書き込む早期データの量。
  8445. \param [out] OUTSZバイト単位で書かれた早期データの量。
  8446. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、SZは0未満またはTLSV1.3を使用しない。
  8447. \return SIDE_ERROR サーバーで呼び出された場合。
  8448. \return WOLFSSL_FATAL_ERROR 接続が行われていない場合。
  8449. _Example_
  8450. \code
  8451. int ret = 0;
  8452. int err = 0;
  8453. WOLFSSL* ssl;
  8454. byte earlyData[] = { early data };
  8455. int outSz;
  8456. char buffer[80];
  8457. ...
  8458. ret = wolfSSL_write_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
  8459. if (ret != WOLFSSL_SUCCESS) {
  8460. err = wolfSSL_get_error(ssl, ret);
  8461. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8462. goto err_label;
  8463. }
  8464. if (outSz < sizeof(earlyData)) {
  8465. // not all early data was sent
  8466. }
  8467. ret = wolfSSL_connect_TLSv13(ssl);
  8468. if (ret != SSL_SUCCESS) {
  8469. err = wolfSSL_get_error(ssl, ret);
  8470. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8471. }
  8472. \endcode
  8473. \sa wolfSSL_read_early_data
  8474. \sa wolfSSL_connect
  8475. \sa wolfSSL_connect_TLSv13
  8476. */
  8477. int wolfSSL_write_early_data(OLFSSL* ssl, const void* data,
  8478. int sz, int* outSz);
  8479. /*!
  8480. \ingroup IO
  8481. \brief この関数は、再開時にクライアントからの早期データを読み取ります。wolfssl_accept()またはwolfssl_accept_tlsv13()の代わりにこの関数を呼び出して、クライアントを受け入れ、ハンドシェイク内の早期データを読み取ります。ハンドシェイクよりも早期データがない場合は、通常として処理されます。この機能はサーバーでのみ使用されます。
  8482. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8483. \param [out] データはクライアントから読み込まれた早期データを保持するためのバッファ。
  8484. \param [in] バッファのSZサイズバイト数。
  8485. \param [out] OUTSZ初期データのバイト数。
  8486. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、SZは0未満またはTLSV1.3を使用しない。
  8487. \return SIDE_ERROR クライアントで呼び出された場合。
  8488. \return WOLFSSL_FATAL_ERROR 接続を受け入れると失敗した場合
  8489. _Example_
  8490. \code
  8491. int ret = 0;
  8492. int err = 0;
  8493. WOLFSSL* ssl;
  8494. byte earlyData[128];
  8495. int outSz;
  8496. char buffer[80];
  8497. ...
  8498. ret = wolfSSL_read_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
  8499. if (ret != SSL_SUCCESS) {
  8500. err = wolfSSL_get_error(ssl, ret);
  8501. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8502. }
  8503. if (outSz > 0) {
  8504. // early data available
  8505. }
  8506. ret = wolfSSL_accept_TLSv13(ssl);
  8507. if (ret != SSL_SUCCESS) {
  8508. err = wolfSSL_get_error(ssl, ret);
  8509. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8510. }
  8511. \endcode
  8512. \sa wolfSSL_write_early_data
  8513. \sa wolfSSL_accept
  8514. \sa wolfSSL_accept_TLSv13
  8515. */
  8516. int wolfSSL_read_early_data(WOLFSSL* ssl, void* data, int sz,
  8517. int* outSz);
  8518. /*!
  8519. \ingroup Setup
  8520. \brief この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のclient_psk_tls13_cbメンバーを設定します。
  8521. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8522. _Example_
  8523. \code
  8524. WOLFSSL_CTX* ctx;
  8525. ...
  8526. wolfSSL_CTX_set_psk_client_tls13_callback(ctx, my_psk_client_tls13_cb);
  8527. \endcode
  8528. \sa wolfSSL_set_psk_client_tls13_callback
  8529. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8530. \sa wolfSSL_set_psk_server_tls13_callback
  8531. */
  8532. void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX* ctx,
  8533. wc_psk_client_tls13_callback cb);
  8534. /*!
  8535. \ingroup Setup
  8536. \brief この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のOptionsフィールドのclient_psk_tls13_cbメンバーを設定します。
  8537. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8538. _Example_
  8539. \code
  8540. WOLFSSL* ssl;
  8541. ...
  8542. wolfSSL_set_psk_client_tls13_callback(ssl, my_psk_client_tls13_cb);
  8543. \endcode
  8544. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8545. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8546. \sa wolfSSL_set_psk_server_tls13_callback
  8547. */
  8548. void wolfSSL_set_psk_client_tls13_callback(WOLFSSL* ssl,
  8549. wc_psk_client_tls13_callback cb);
  8550. /*!
  8551. \ingroup Setup
  8552. \brief この関数は、TLS v1.3接続用の事前共有キー(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のserver_psk_tls13_cbメンバーを設定します。
  8553. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8554. _Example_
  8555. \code
  8556. WOLFSSL_CTX* ctx;
  8557. ...
  8558. wolfSSL_CTX_set_psk_server_tls13_callback(ctx, my_psk_client_tls13_cb);
  8559. \endcode
  8560. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8561. \sa wolfSSL_set_psk_client_tls13_callback
  8562. \sa wolfSSL_set_psk_server_tls13_callback
  8563. */
  8564. void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX* ctx,
  8565. wc_psk_server_tls13_callback cb);
  8566. /*!
  8567. \ingroup Setup
  8568. \brief この関数は、TLS v1.3接続用の事前共有キー(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のオプションフィールドのserver_psk_tls13_cbメンバーを設定します。
  8569. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8570. _Example_
  8571. \code
  8572. WOLFSSL* ssl;
  8573. ...
  8574. wolfSSL_set_psk_server_tls13_callback(ssl, my_psk_server_tls13_cb);
  8575. \endcode
  8576. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8577. \sa wolfSSL_set_psk_client_tls13_callback
  8578. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8579. */
  8580. void wolfSSL_set_psk_server_tls13_callback(WOLFSSL* ssl,
  8581. wc_psk_server_tls13_callback cb);
  8582. /*!
  8583. \ingroup Setup
  8584. \brief この関数は、キーペアの生成を含むグループからキーシェアエントリを作成します。Keyshareエクステンションには、鍵交換のための生成されたすべての公開鍵が含まれています。この関数が呼び出されると、指定されたグループのみが含まれます。優先グループがサーバーに対して以前に確立されているときにこの関数を呼び出します。
  8585. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8586. \param [in] キー交換グループ識別子をグループ化します。
  8587. \return BAD_FUNC_ARG SSLがNULLの場合
  8588. \return MEMORY_E 動的メモリ割り当てが失敗すると失敗すると。
  8589. _Example_
  8590. \code
  8591. int ret;
  8592. WOLFSSL* ssl;
  8593. ...
  8594. ret = wolfSSL_UseKeyShare(ssl, WOLFSSL_ECC_X25519);
  8595. if (ret != WOLFSSL_SUCCESS) {
  8596. // failed to set key share
  8597. }
  8598. \endcode
  8599. \sa wolfSSL_preferred_group
  8600. \sa wolfSSL_CTX_set1_groups_list
  8601. \sa wolfSSL_set1_groups_list
  8602. \sa wolfSSL_CTX_set_groups
  8603. \sa wolfSSL_set_groups
  8604. \sa wolfSSL_NoKeyShares
  8605. */
  8606. int wolfSSL_UseKeyShare(WOLFSSL* ssl, word16 group);
  8607. /*!
  8608. \ingroup Setup
  8609. \brief この関数は、ClientHelloで鍵共有が送信されないように呼び出されます。これにより、ハンドシェイクに鍵交換が必要な場合は、サーバーがHelloretryRequestで応答するように強制します。予想される鍵交換グループが知られておらず、キーの生成を不必要に回避するときにこの機能を呼び出します。鍵交換が必要なときにハンドシェイクを完了するために追加の往復が必要になることに注意してください。
  8610. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8611. \return BAD_FUNC_ARG SSLがNULLの場合
  8612. \return SIDE_ERROR サーバーで呼び出された場合。
  8613. _Example_
  8614. \code
  8615. int ret;
  8616. WOLFSSL* ssl;
  8617. ...
  8618. ret = wolfSSL_NoKeyShares(ssl);
  8619. if (ret != WOLFSSL_SUCCESS) {
  8620. // failed to set no key shares
  8621. }
  8622. \endcode
  8623. \sa wolfSSL_UseKeyShare
  8624. */
  8625. int wolfSSL_NoKeyShares(WOLFSSL* ssl);
  8626. /*!
  8627. \ingroup Setup
  8628. \brief この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8629. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8630. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8631. _Example_
  8632. \code
  8633. #include <wolfssl/ssl.h>
  8634. WOLFSSL_METHOD* method;
  8635. WOLFSSL_CTX* ctx;
  8636. method = wolfTLSv1_3_server_method_ex(NULL);
  8637. if (method == NULL) {
  8638. // unable to get method
  8639. }
  8640. ctx = wolfSSL_CTX_new(method);
  8641. ...
  8642. \endcode
  8643. \sa wolfSSLv3_server_method
  8644. \sa wolfTLSv1_server_method
  8645. \sa wolfTLSv1_1_server_method
  8646. \sa wolfTLSv1_2_server_method
  8647. \sa wolfTLSv1_3_server_method
  8648. \sa wolfDTLSv1_server_method
  8649. \sa wolfSSLv23_server_method
  8650. \sa wolfSSL_CTX_new
  8651. */
  8652. WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap);
  8653. /*!
  8654. \ingroup Setup
  8655. \brief この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8656. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8657. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8658. _Example_
  8659. \code
  8660. #include <wolfssl/ssl.h>
  8661. WOLFSSL_METHOD* method;
  8662. WOLFSSL_CTX* ctx;
  8663. method = wolfTLSv1_3_client_method_ex(NULL);
  8664. if (method == NULL) {
  8665. // unable to get method
  8666. }
  8667. ctx = wolfSSL_CTX_new(method);
  8668. ...
  8669. \endcode
  8670. \sa wolfSSLv3_client_method
  8671. \sa wolfTLSv1_client_method
  8672. \sa wolfTLSv1_1_client_method
  8673. \sa wolfTLSv1_2_client_method
  8674. \sa wolfTLSv1_3_client_method
  8675. \sa wolfDTLSv1_client_method
  8676. \sa wolfSSLv23_client_method
  8677. \sa wolfSSL_CTX_new
  8678. */
  8679. WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap);
  8680. /*!
  8681. \ingroup Setup
  8682. \brief この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8683. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8684. _Example_
  8685. \code
  8686. #include <wolfssl/ssl.h>
  8687. WOLFSSL_METHOD* method;
  8688. WOLFSSL_CTX* ctx;
  8689. method = wolfTLSv1_3_server_method();
  8690. if (method == NULL) {
  8691. // unable to get method
  8692. }
  8693. ctx = wolfSSL_CTX_new(method);
  8694. ...
  8695. \endcode
  8696. \sa wolfSSLv3_server_method
  8697. \sa wolfTLSv1_server_method
  8698. \sa wolfTLSv1_1_server_method
  8699. \sa wolfTLSv1_2_server_method
  8700. \sa wolfTLSv1_3_server_method_ex
  8701. \sa wolfDTLSv1_server_method
  8702. \sa wolfSSLv23_server_method
  8703. \sa wolfSSL_CTX_new
  8704. */
  8705. WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);
  8706. /*!
  8707. \ingroup Setup
  8708. \brief この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8709. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8710. _Example_
  8711. \code
  8712. #include <wolfssl/ssl.h>
  8713. WOLFSSL_METHOD* method;
  8714. WOLFSSL_CTX* ctx;
  8715. method = wolfTLSv1_3_client_method();
  8716. if (method == NULL) {
  8717. // unable to get method
  8718. }
  8719. ctx = wolfSSL_CTX_new(method);
  8720. ...
  8721. \endcode
  8722. \sa wolfSSLv3_client_method
  8723. \sa wolfTLSv1_client_method
  8724. \sa wolfTLSv1_1_client_method
  8725. \sa wolfTLSv1_2_client_method
  8726. \sa wolfTLSv1_3_client_method_ex
  8727. \sa wolfDTLSv1_client_method
  8728. \sa wolfSSLv23_client_method
  8729. \sa wolfSSL_CTX_new
  8730. */
  8731. WOLFSSL_METHOD *wolfTLSv1_3_client_method(void);
  8732. /*!
  8733. \ingroup Setup
  8734. \brief この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
  8735. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8736. \return WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します
  8737. _Example_
  8738. \code
  8739. WOLFSSL* ctx;
  8740. ctx = wolfSSL_CTX_new(wolfTLSv1_3_method_ex(NULL));
  8741. // check ret value
  8742. \endcode
  8743. \sa wolfSSL_new
  8744. \sa wolfSSL_free
  8745. */
  8746. WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap);
  8747. /*!
  8748. \ingroup Setup
  8749. \brief この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
  8750. \return WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します
  8751. _Example_
  8752. \code
  8753. WOLFSSL* ctx;
  8754. ctx = wolfSSL_CTX_new(wolfTLSv1_3_method());
  8755. // check ret value
  8756. \endcode
  8757. \sa wolfSSL_new
  8758. \sa wolfSSL_free
  8759. */
  8760. WOLFSSL_METHOD *wolfTLSv1_3_method(void);
  8761. /*!
  8762. \ingroup SSL
  8763. \brief この関数はテストのための固定/静的なエフェラルキーを設定します。
  8764. \return 0 キーが正常にロードされました
  8765. \param ctx wolfssl_ctxコンテキストポインタ
  8766. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8767. \param key キーファイルパス(Keysz == 0)または実際のキーバッファ(PEMまたはASN.1)
  8768. \param keySz キーサイズ(「キー」argはファイルパスの場合は0になります)
  8769. \sa wolfSSL_CTX_get_ephemeral_key
  8770. */
  8771. int wolfSSL_CTX_set_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo, const char* key, unsigned int keySz, int format);
  8772. /*!
  8773. \ingroup SSL
  8774. \brief この関数はテストのための固定/静的なエフェラルキーを設定します。
  8775. \return 0 キーが正常にロードされました
  8776. \param ssl wolfsslオブジェクトポインタ
  8777. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8778. \param key キーファイルパス(Keysz == 0)または実際のキーバッファ(PEMまたはASN.1)
  8779. \param keySz キーサイズ(「キー」argはファイルパスの場合は0になります)
  8780. \sa wolfSSL_get_ephemeral_key
  8781. */
  8782. int wolfSSL_set_ephemeral_key(WOLFSSL* ssl, int keyAlgo, const char* key, unsigned int keySz, int format);
  8783. /*!
  8784. \ingroup SSL
  8785. \brief この関数はasn.1 / derとしてロードされたキーへのポインタを返します
  8786. \return 0 キーが正常に戻りました
  8787. \param ctx wolfssl_ctxコンテキストポインタ
  8788. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8789. \param key キーバッファポインタ
  8790. \sa wolfSSL_CTX_set_ephemeral_key
  8791. */
  8792. int wolfSSL_CTX_get_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo,
  8793. const unsigned char** key, unsigned int* keySz);
  8794. /*!
  8795. \ingroup SSL
  8796. \brief この関数はasn.1 / derとしてロードされたキーへのポインタを返します
  8797. \return 0 キーが正常に戻りました
  8798. \param ssl wolfsslオブジェクトポインタ
  8799. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8800. \param key キーバッファポインタ
  8801. \sa wolfSSL_set_ephemeral_key
  8802. */
  8803. int wolfSSL_get_ephemeral_key(WOLFSSL* ssl, int keyAlgo,
  8804. const unsigned char** key, unsigned int* keySz);
  8805. /*!
  8806. \ingroup SSL
  8807. \brief 選択したメッセージダイジェスト、パディング、およびRSAキーを使用してメッセージに署名する
  8808. \return WOLFSSL_SUCCESS Errorの成功とwolfssl_failureについて
  8809. \param type ハッシュNID
  8810. \param m 署名するメッセージ。これは署名するメッセージのダイジェストになる可能性が高い
  8811. \param mLen 署名するメッセージの長さ
  8812. \param sigRet 出力バッファ
  8813. \param sigLen オン入力:出力時のSigretバッファの長さ:Sigretに書き込まれたデータの長さ
  8814. \param rsa RSAキー入力に署名するために使用されます
  8815. \param flag 1:シグニチャ0:未パワード署名を比較する値を出力します。注:RSA_PKCS1_PSS_PADDINGの場合は、wc_rsapss_checkpadding_ex関数を使用して* VERIFY *関数の出力を確認する必要があります。
  8816. */
  8817. int wolfSSL_RSA_sign_generic_padding(int type, const unsigned char* m,
  8818. unsigned int mLen, unsigned char* sigRet,
  8819. unsigned int* sigLen, WOLFSSL_RSA* rsa,
  8820. int flag, int padding);